securequ 1.0.8 → 1.0.10
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/client/index.js +213 -2
- package/client/index.js.map +1 -7
- package/client/index.mjs +213 -0
- package/client/index.mjs.map +1 -0
- package/include/lib/base64.js +47 -2
- package/include/lib/base64.js.map +1 -7
- package/include/lib/base64.mjs +47 -0
- package/include/lib/base64.mjs.map +1 -0
- package/include/lib/cache.js +74 -2
- package/include/lib/cache.js.map +1 -7
- package/include/lib/cache.mjs +74 -0
- package/include/lib/cache.mjs.map +1 -0
- package/include/lib/crypto.js +69 -2
- package/include/lib/crypto.js.map +1 -7
- package/include/lib/crypto.mjs +69 -0
- package/include/lib/crypto.mjs.map +1 -0
- package/include/lib/pako.js +28 -2
- package/include/lib/pako.js.map +1 -7
- package/include/lib/pako.mjs +28 -0
- package/include/lib/pako.mjs.map +1 -0
- package/include/lib/reverser.js +25 -2
- package/include/lib/reverser.js.map +1 -7
- package/include/lib/reverser.mjs +25 -0
- package/include/lib/reverser.mjs.map +1 -0
- package/include/lib/urlpath.js +10 -2
- package/include/lib/urlpath.js.map +1 -7
- package/include/lib/urlpath.mjs +10 -0
- package/include/lib/urlpath.mjs.map +1 -0
- package/include/responseValue.js +10 -2
- package/include/responseValue.js.map +1 -7
- package/include/responseValue.mjs +10 -0
- package/include/responseValue.mjs.map +1 -0
- package/include/signeture.js +20 -2
- package/include/signeture.js.map +1 -7
- package/include/signeture.mjs +20 -0
- package/include/signeture.mjs.map +1 -0
- package/index.d.ts +81 -3
- package/index.js +1 -2
- package/index.js.map +1 -7
- package/index.mjs +1 -0
- package/index.mjs.map +1 -0
- package/package.json +19 -25
- package/server/index.js +187 -2
- package/server/index.js.map +1 -7
- package/server/index.mjs +187 -0
- package/server/index.mjs.map +1 -0
- package/cjs/client/index.js +0 -2
- package/cjs/client/index.js.map +0 -7
- package/cjs/client/types.js +0 -2
- package/cjs/client/types.js.map +0 -7
- package/cjs/include/lib/base64.js +0 -2
- package/cjs/include/lib/base64.js.map +0 -7
- package/cjs/include/lib/cache.js +0 -2
- package/cjs/include/lib/cache.js.map +0 -7
- package/cjs/include/lib/crypto.js +0 -2
- package/cjs/include/lib/crypto.js.map +0 -7
- package/cjs/include/lib/pako.js +0 -2
- package/cjs/include/lib/pako.js.map +0 -7
- package/cjs/include/lib/reverser.js +0 -2
- package/cjs/include/lib/reverser.js.map +0 -7
- package/cjs/include/lib/urlpath.js +0 -2
- package/cjs/include/lib/urlpath.js.map +0 -7
- package/cjs/include/responseValue.js +0 -2
- package/cjs/include/responseValue.js.map +0 -7
- package/cjs/include/signeture.js +0 -2
- package/cjs/include/signeture.js.map +0 -7
- package/cjs/index.js +0 -2
- package/cjs/index.js.map +0 -7
- package/cjs/server/index.js +0 -2
- package/cjs/server/index.js.map +0 -7
- package/cjs/server/types.js +0 -2
- package/cjs/server/types.js.map +0 -7
- package/client/index.d.ts +0 -23
- package/client/types.d.ts +0 -20
- package/client/types.js +0 -1
- package/client/types.js.map +0 -7
- package/include/lib/base64.d.ts +0 -17
- package/include/lib/cache.d.ts +0 -36
- package/include/lib/crypto.d.ts +0 -22
- package/include/lib/pako.d.ts +0 -17
- package/include/lib/reverser.d.ts +0 -5
- package/include/lib/urlpath.d.ts +0 -7
- package/include/responseValue.d.ts +0 -5
- package/include/signeture.d.ts +0 -6
- package/server/index.d.ts +0 -16
- package/server/types.d.ts +0 -37
- package/server/types.js +0 -1
- package/server/types.js.map +0 -7
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import reverser from'./reverser.mjs';function encrypt(input) {
|
|
2
|
+
return encodeURIComponent(reverser.encrypt(input.toLowerCase()));
|
|
3
|
+
}
|
|
4
|
+
function decrypt(encryptedString) {
|
|
5
|
+
return reverser.decrypt(decodeURIComponent(encryptedString));
|
|
6
|
+
}
|
|
7
|
+
var urlpath = {
|
|
8
|
+
encrypt: encrypt,
|
|
9
|
+
decrypt: decrypt
|
|
10
|
+
};export{urlpath as default};//# sourceMappingURL=urlpath.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlpath.mjs","sources":["../../../src/include/lib/urlpath.ts"],"sourcesContent":["import reverser from \"./reverser\"\n\nfunction encrypt(input: string): string {\n return encodeURIComponent(reverser.encrypt(input.toLowerCase()))\n}\n\nfunction decrypt(encryptedString: string): string {\n return reverser.decrypt(decodeURIComponent(encryptedString))\n}\n\nexport default {\n encrypt,\n decrypt\n}"],"names":[],"mappings":"qCAEA,SAAS,OAAO,CAAC,KAAa,EAAA;AAC3B,IAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE;AAEA,SAAS,OAAO,CAAC,eAAuB,EAAA;IACrC,OAAO,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAC/D;AAEA,cAAe;AACZ,IAAA,OAAO,EAAA,OAAA;AACP,IAAA,OAAO,EAAA;CACT"}
|
package/include/responseValue.js
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';var crypto=require('./lib/crypto.js');var encrypt = function (data, signerure) {
|
|
2
|
+
return crypto.encrypt(data, crypto.makeSecret(signerure));
|
|
3
|
+
};
|
|
4
|
+
var decrypt = function (value, signerure) {
|
|
5
|
+
return crypto.decrypt(value, crypto.makeSecret(signerure));
|
|
6
|
+
};
|
|
7
|
+
var responseValue = {
|
|
8
|
+
encrypt: encrypt,
|
|
9
|
+
decrypt: decrypt
|
|
10
|
+
};module.exports=responseValue;//# sourceMappingURL=responseValue.js.map
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/include/responseValue.ts"],
|
|
4
|
-
"sourcesContent": ["import crypto from \"./lib/crypto\";\n\nconst encrypt = (data: any, signerure: string): string => {\n return crypto.encrypt(data, crypto.makeSecret(signerure))\n}\n\nconst decrypt = (value: string, signerure: string) => {\n return crypto.decrypt(value, crypto.makeSecret(signerure))\n}\n\nexport default {\n encrypt,\n decrypt\n}"],
|
|
5
|
-
"mappings": "AAAA,OAAOA,MAAY,eAEnB,MAAMC,EAAU,CAACC,EAAWC,IAClBH,EAAO,QAAQE,EAAMF,EAAO,WAAWG,CAAS,CAAC,EAGrDC,EAAU,CAACC,EAAeF,IACtBH,EAAO,QAAQK,EAAOL,EAAO,WAAWG,CAAS,CAAC,EAG5D,IAAOG,EAAQ,CACZ,QAAAL,EACA,QAAAG,CACH",
|
|
6
|
-
"names": ["crypto", "encrypt", "data", "signerure", "decrypt", "value", "responseValue_default"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"responseValue.js","sources":["../../src/include/responseValue.ts"],"sourcesContent":["import crypto from \"./lib/crypto\";\n\nconst encrypt = (data: any, signerure: string): string => {\n return crypto.encrypt(data, crypto.makeSecret(signerure))\n}\n\nconst decrypt = (value: string, signerure: string) => {\n return crypto.decrypt(value, crypto.makeSecret(signerure))\n}\n\nexport default {\n encrypt,\n decrypt\n}"],"names":[],"mappings":"mDAEA,IAAM,OAAO,GAAG,UAAC,IAAS,EAAE,SAAiB,EAAA;AAC1C,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,IAAM,OAAO,GAAG,UAAC,KAAa,EAAE,SAAiB,EAAA;AAC9C,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC7D,CAAC;AAED,oBAAe;AACZ,IAAA,OAAO,EAAA,OAAA;AACP,IAAA,OAAO,EAAA;CACT"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import crypto from'./lib/crypto.mjs';var encrypt = function (data, signerure) {
|
|
2
|
+
return crypto.encrypt(data, crypto.makeSecret(signerure));
|
|
3
|
+
};
|
|
4
|
+
var decrypt = function (value, signerure) {
|
|
5
|
+
return crypto.decrypt(value, crypto.makeSecret(signerure));
|
|
6
|
+
};
|
|
7
|
+
var responseValue = {
|
|
8
|
+
encrypt: encrypt,
|
|
9
|
+
decrypt: decrypt
|
|
10
|
+
};export{responseValue as default};//# sourceMappingURL=responseValue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseValue.mjs","sources":["../../src/include/responseValue.ts"],"sourcesContent":["import crypto from \"./lib/crypto\";\n\nconst encrypt = (data: any, signerure: string): string => {\n return crypto.encrypt(data, crypto.makeSecret(signerure))\n}\n\nconst decrypt = (value: string, signerure: string) => {\n return crypto.decrypt(value, crypto.makeSecret(signerure))\n}\n\nexport default {\n encrypt,\n decrypt\n}"],"names":[],"mappings":"qCAEA,IAAM,OAAO,GAAG,UAAC,IAAS,EAAE,SAAiB,EAAA;AAC1C,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,IAAM,OAAO,GAAG,UAAC,KAAa,EAAE,SAAiB,EAAA;AAC9C,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC7D,CAAC;AAED,oBAAe;AACZ,IAAA,OAAO,EAAA,OAAA;AACP,IAAA,OAAO,EAAA;CACT"}
|
package/include/signeture.js
CHANGED
|
@@ -1,2 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';var tslib_es6=require('../node_modules/tslib/tslib.es6.js'),crypto=require('./lib/crypto.js');var make = function (val, secret) {
|
|
2
|
+
var signeture = crypto.encrypt(val, secret);
|
|
3
|
+
var signetureHash = crypto.hash(signeture);
|
|
4
|
+
var secretEncript = crypto.encrypt(secret, signetureHash);
|
|
5
|
+
return "".concat(signeture, ".").concat(secretEncript);
|
|
6
|
+
};
|
|
7
|
+
var verify = function (signerure) {
|
|
8
|
+
var _a = tslib_es6.__read(signerure.split("."), 2), signeture = _a[0], secretEncript = _a[1];
|
|
9
|
+
var signetureHash = crypto.hash(signeture);
|
|
10
|
+
var secret = crypto.decrypt(secretEncript, signetureHash);
|
|
11
|
+
var secretVal = crypto.decrypt(signeture, secret);
|
|
12
|
+
if (secretVal !== secret)
|
|
13
|
+
throw new Error("Invalid Signeture");
|
|
14
|
+
return secretVal;
|
|
15
|
+
};
|
|
16
|
+
var signeture = {
|
|
17
|
+
make: make,
|
|
18
|
+
verify: verify,
|
|
19
|
+
key: "x-signeture"
|
|
20
|
+
};module.exports=signeture;//# sourceMappingURL=signeture.js.map
|
package/include/signeture.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/include/signeture.ts"],
|
|
4
|
-
"sourcesContent": ["import crypto from \"./lib/crypto\";\n\nconst make = (val: string, secret: string) => {\n const signeture = crypto.encrypt(val, secret);\n const signetureHash = crypto.hash(signeture)\n const secretEncript = crypto.encrypt(secret, signetureHash);\n return `${signeture}.${secretEncript}`;\n}\n\nconst verify = (signerure: string) => {\n const [signeture, secretEncript] = signerure.split(\".\");\n const signetureHash = crypto.hash(signeture);\n const secret = crypto.decrypt(secretEncript, signetureHash);\n const secretVal = crypto.decrypt(signeture, secret);\n if (secretVal !== secret) throw new Error(\"Invalid Signeture\");\n return secretVal;\n}\n\nexport default {\n make,\n verify,\n key: \"x-signeture\"\n}"],
|
|
5
|
-
"mappings": "AAAA,OAAOA,MAAY,eAEnB,MAAMC,EAAO,CAACC,EAAaC,IAAmB,CAC3C,MAAMC,EAAYJ,EAAO,QAAQE,EAAKC,CAAM,EACtCE,EAAgBL,EAAO,KAAKI,CAAS,EACrCE,EAAgBN,EAAO,QAAQG,EAAQE,CAAa,EAC1D,MAAO,GAAGD,CAAS,IAAIE,CAAa,EACvC,EAEMC,EAAUC,GAAsB,CACnC,KAAM,CAACJ,EAAWE,CAAa,EAAIE,EAAU,MAAM,GAAG,EAChDH,EAAgBL,EAAO,KAAKI,CAAS,EACrCD,EAASH,EAAO,QAAQM,EAAeD,CAAa,EACpDI,EAAYT,EAAO,QAAQI,EAAWD,CAAM,EAClD,GAAIM,IAAcN,EAAQ,MAAM,IAAI,MAAM,mBAAmB,EAC7D,OAAOM,CACV,EAEA,IAAOC,EAAQ,CACZ,KAAAT,EACA,OAAAM,EACA,IAAK,aACR",
|
|
6
|
-
"names": ["crypto", "make", "val", "secret", "signeture", "signetureHash", "secretEncript", "verify", "signerure", "secretVal", "signeture_default"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"signeture.js","sources":["../../src/include/signeture.ts"],"sourcesContent":["import crypto from \"./lib/crypto\";\n\nconst make = (val: string, secret: string) => {\n const signeture = crypto.encrypt(val, secret);\n const signetureHash = crypto.hash(signeture)\n const secretEncript = crypto.encrypt(secret, signetureHash);\n return `${signeture}.${secretEncript}`;\n}\n\nconst verify = (signerure: string) => {\n const [signeture, secretEncript] = signerure.split(\".\");\n const signetureHash = crypto.hash(signeture);\n const secret = crypto.decrypt(secretEncript, signetureHash);\n const secretVal = crypto.decrypt(signeture, secret);\n if (secretVal !== secret) throw new Error(\"Invalid Signeture\");\n return secretVal;\n}\n\nexport default {\n make,\n verify,\n key: \"x-signeture\"\n}"],"names":["__read"],"mappings":"2GAEA,IAAM,IAAI,GAAG,UAAC,GAAW,EAAE,MAAc,EAAA;IACtC,IAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;IAC7C,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5C,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;AAC3D,IAAA,OAAO,EAAG,CAAA,MAAA,CAAA,SAAS,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,aAAa,CAAE;AACzC,CAAC;AAED,IAAM,MAAM,GAAG,UAAC,SAAiB,EAAA;AACxB,IAAA,IAAA,EAAA,GAAAA,gBAAA,CAA6B,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAA,CAAA,CAAA,EAAhD,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,QAAwB;IACvD,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5C,IAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC;IAC3D,IAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;IACnD,IAAI,SAAS,KAAK,MAAM;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;AAC9D,IAAA,OAAO,SAAS;AACnB,CAAC;AAED,gBAAe;AACZ,IAAA,IAAI,EAAA,IAAA;AACJ,IAAA,MAAM,EAAA,MAAA;AACN,IAAA,GAAG,EAAE;CACP"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {__read}from'../node_modules/tslib/tslib.es6.mjs';import crypto from'./lib/crypto.mjs';var make = function (val, secret) {
|
|
2
|
+
var signeture = crypto.encrypt(val, secret);
|
|
3
|
+
var signetureHash = crypto.hash(signeture);
|
|
4
|
+
var secretEncript = crypto.encrypt(secret, signetureHash);
|
|
5
|
+
return "".concat(signeture, ".").concat(secretEncript);
|
|
6
|
+
};
|
|
7
|
+
var verify = function (signerure) {
|
|
8
|
+
var _a = __read(signerure.split("."), 2), signeture = _a[0], secretEncript = _a[1];
|
|
9
|
+
var signetureHash = crypto.hash(signeture);
|
|
10
|
+
var secret = crypto.decrypt(secretEncript, signetureHash);
|
|
11
|
+
var secretVal = crypto.decrypt(signeture, secret);
|
|
12
|
+
if (secretVal !== secret)
|
|
13
|
+
throw new Error("Invalid Signeture");
|
|
14
|
+
return secretVal;
|
|
15
|
+
};
|
|
16
|
+
var signeture = {
|
|
17
|
+
make: make,
|
|
18
|
+
verify: verify,
|
|
19
|
+
key: "x-signeture"
|
|
20
|
+
};export{signeture as default};//# sourceMappingURL=signeture.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signeture.mjs","sources":["../../src/include/signeture.ts"],"sourcesContent":["import crypto from \"./lib/crypto\";\n\nconst make = (val: string, secret: string) => {\n const signeture = crypto.encrypt(val, secret);\n const signetureHash = crypto.hash(signeture)\n const secretEncript = crypto.encrypt(secret, signetureHash);\n return `${signeture}.${secretEncript}`;\n}\n\nconst verify = (signerure: string) => {\n const [signeture, secretEncript] = signerure.split(\".\");\n const signetureHash = crypto.hash(signeture);\n const secret = crypto.decrypt(secretEncript, signetureHash);\n const secretVal = crypto.decrypt(signeture, secret);\n if (secretVal !== secret) throw new Error(\"Invalid Signeture\");\n return secretVal;\n}\n\nexport default {\n make,\n verify,\n key: \"x-signeture\"\n}"],"names":[],"mappings":"8FAEA,IAAM,IAAI,GAAG,UAAC,GAAW,EAAE,MAAc,EAAA;IACtC,IAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;IAC7C,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5C,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;AAC3D,IAAA,OAAO,EAAG,CAAA,MAAA,CAAA,SAAS,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,aAAa,CAAE;AACzC,CAAC;AAED,IAAM,MAAM,GAAG,UAAC,SAAiB,EAAA;AACxB,IAAA,IAAA,EAAA,GAAA,MAAA,CAA6B,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAA,CAAA,CAAA,EAAhD,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,QAAwB;IACvD,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5C,IAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC;IAC3D,IAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;IACnD,IAAI,SAAS,KAAK,MAAM;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;AAC9D,IAAA,OAAO,SAAS;AACnB,CAAC;AAED,gBAAe;AACZ,IAAA,IAAI,EAAA,IAAA;AACJ,IAAA,MAAM,EAAA,MAAA;AACN,IAAA,GAAG,EAAE;CACP"}
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,81 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
type SecurequServerConfig = {
|
|
2
|
+
basepath: string;
|
|
3
|
+
cache?: boolean | {
|
|
4
|
+
get: (key: string) => any;
|
|
5
|
+
set: (key: string, response: Response) => void;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
type HTTPMethods = "GET" | "POST" | "PUT" | "DELETE";
|
|
9
|
+
type ListenerInfo = {
|
|
10
|
+
signeture: string;
|
|
11
|
+
path: string;
|
|
12
|
+
body: any;
|
|
13
|
+
method: HTTPMethods;
|
|
14
|
+
};
|
|
15
|
+
type HandlerInfo = {
|
|
16
|
+
path: string;
|
|
17
|
+
body: object;
|
|
18
|
+
searchParams: Object;
|
|
19
|
+
params: Object;
|
|
20
|
+
method: HTTPMethods;
|
|
21
|
+
};
|
|
22
|
+
type ServerResponse = {
|
|
23
|
+
value: string;
|
|
24
|
+
status: number;
|
|
25
|
+
};
|
|
26
|
+
type HandlerFunction = (info: HandlerInfo, args?: any) => (any | void) | Promise<Partial<any> | void>;
|
|
27
|
+
|
|
28
|
+
declare class SecurequServer {
|
|
29
|
+
private HandlerCache;
|
|
30
|
+
private routes;
|
|
31
|
+
private config;
|
|
32
|
+
private secret;
|
|
33
|
+
constructor(config: SecurequServerConfig);
|
|
34
|
+
addRoute(path: string, method: HTTPMethods, handler: HandlerFunction): Promise<void>;
|
|
35
|
+
get(path: string, handler: HandlerFunction): Promise<void>;
|
|
36
|
+
post(path: string, handler: HandlerFunction): Promise<void>;
|
|
37
|
+
put(path: string, handler: HandlerFunction): Promise<void>;
|
|
38
|
+
delete(path: string, handler: HandlerFunction): Promise<void>;
|
|
39
|
+
handleRequest(info: HandlerInfo, args?: any): Promise<void>;
|
|
40
|
+
listen(listenerInfo: ListenerInfo, args?: any): Promise<ServerResponse>;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
type SecurequClientConfig = {
|
|
44
|
+
secret: string;
|
|
45
|
+
path?: string;
|
|
46
|
+
headers?: Record<string, string>;
|
|
47
|
+
cache?: boolean | {
|
|
48
|
+
get: (key: string) => any;
|
|
49
|
+
set: (key: string, response: Response) => void;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
type RequestBody = {
|
|
53
|
+
[key: string]: any;
|
|
54
|
+
};
|
|
55
|
+
type HttpRequestInit = Omit<RequestInit, 'body'> & {
|
|
56
|
+
body?: RequestBody;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
declare class SecurequClient {
|
|
60
|
+
private config;
|
|
61
|
+
private token;
|
|
62
|
+
private tokenLoading;
|
|
63
|
+
private Cache;
|
|
64
|
+
private secret;
|
|
65
|
+
private secret_length;
|
|
66
|
+
private signerure;
|
|
67
|
+
private reqkey;
|
|
68
|
+
constructor(config: SecurequClientConfig);
|
|
69
|
+
private setCache;
|
|
70
|
+
private getCache;
|
|
71
|
+
private PATH_CACHE;
|
|
72
|
+
private path;
|
|
73
|
+
private handshake;
|
|
74
|
+
send(path: string, init?: HttpRequestInit): Promise<Response>;
|
|
75
|
+
get(path: string, init?: HttpRequestInit): Promise<Response>;
|
|
76
|
+
post(path: string, body: RequestBody, init?: HttpRequestInit): Promise<Response>;
|
|
77
|
+
put(path: string, body: RequestBody, init?: HttpRequestInit): Promise<Response>;
|
|
78
|
+
delete(path: string, init?: HttpRequestInit): Promise<Response>;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export { SecurequClient, SecurequServer };
|
package/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var index=require('./server/index.js'),index$1=require('./client/index.js');exports.SecurequServer=index.SecurequServer;exports.SecurequClient=index$1.SecurequClient;//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["import SecurequServer from './server';\nimport SecurequClient from './client';\n\nexport { SecurequServer, SecurequClient };"],
|
|
5
|
-
"mappings": "AAAA,OAAOA,MAAoB,WAC3B,OAAOC,MAAoB",
|
|
6
|
-
"names": ["SecurequServer", "SecurequClient"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{SecurequServer}from'./server/index.mjs';export{SecurequClient}from'./client/index.mjs';//# sourceMappingURL=index.mjs.map
|
package/index.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,49 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "securequ",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"main": "./
|
|
5
|
-
"module": "./index.
|
|
3
|
+
"version": "1.0.10",
|
|
4
|
+
"main": "./index.js",
|
|
5
|
+
"module": "./index.mjs",
|
|
6
6
|
"types": "./index.d.ts",
|
|
7
|
-
"sideEffects": false,
|
|
8
7
|
"description": "",
|
|
9
8
|
"keywords": [],
|
|
10
9
|
"dependencies": {
|
|
11
|
-
"@types/pako": "^2.0.3",
|
|
12
10
|
"pako": "^2.1.0",
|
|
13
11
|
"path-to-regexp": "^8.2.0",
|
|
14
12
|
"tweetnacl": "^1.0.3",
|
|
15
|
-
"xanfetch": "^1.0.
|
|
13
|
+
"xanfetch": "^1.0.5"
|
|
16
14
|
},
|
|
17
15
|
"devDependencies": {
|
|
16
|
+
"@types/pako": "^2.0.3",
|
|
18
17
|
"@types/node": "^22.15.24",
|
|
19
18
|
"@types/react": "^19.0.2",
|
|
20
19
|
"@types/react-dom": "^19.0.2",
|
|
21
|
-
"
|
|
20
|
+
"express": "^5.1.0",
|
|
21
|
+
"makepack": "^1.7.3",
|
|
22
22
|
"react": "^19.0.0",
|
|
23
23
|
"react-dom": "^19.0.0",
|
|
24
24
|
"typescript": "^4.4.2"
|
|
25
25
|
},
|
|
26
26
|
"exports": {
|
|
27
27
|
".": {
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
},
|
|
32
|
-
"import": {
|
|
33
|
-
"types": "./index.d.ts",
|
|
34
|
-
"default": "./index.js"
|
|
35
|
-
}
|
|
28
|
+
"import": "./index.mjs",
|
|
29
|
+
"require": "./index.js",
|
|
30
|
+
"types": "./index.d.ts"
|
|
36
31
|
},
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
},
|
|
42
|
-
"import": {
|
|
43
|
-
"types": "./*.d.ts",
|
|
44
|
-
"default": "./*.js"
|
|
45
|
-
}
|
|
32
|
+
"./server": {
|
|
33
|
+
"import": "./server/index.mjs",
|
|
34
|
+
"require": "./server/index.js",
|
|
35
|
+
"types": "./server/index.d.ts"
|
|
46
36
|
},
|
|
47
|
-
"./
|
|
37
|
+
"./client": {
|
|
38
|
+
"import": "./client/index.mjs",
|
|
39
|
+
"require": "./client/index.js",
|
|
40
|
+
"types": "./client/index.d.ts"
|
|
41
|
+
}
|
|
48
42
|
}
|
|
49
43
|
}
|
package/server/index.js
CHANGED
|
@@ -1,2 +1,187 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib_es6=require('../node_modules/tslib/tslib.es6.js'),pathToRegexp=require('path-to-regexp'),crypto=require('../include/lib/crypto.js'),reverser=require('../include/lib/reverser.js'),responseValue=require('../include/responseValue.js'),signeture=require('../include/signeture.js'),cache=require('../include/lib/cache.js');var SecurequServer = /** @class */ (function () {
|
|
2
|
+
function SecurequServer(config) {
|
|
3
|
+
this.HandlerCache = new cache({ ttl: 1000 * 60 * 60, limit: 100 });
|
|
4
|
+
this.routes = {
|
|
5
|
+
GET: {},
|
|
6
|
+
POST: {},
|
|
7
|
+
PUT: {},
|
|
8
|
+
DELETE: {}
|
|
9
|
+
};
|
|
10
|
+
this.secret = crypto.makeSecret(Math.random().toString(36).substring(7));
|
|
11
|
+
this.config = tslib_es6.__assign({}, config);
|
|
12
|
+
}
|
|
13
|
+
SecurequServer.prototype.addRoute = function (path, method, handler) {
|
|
14
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
15
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
16
|
+
if (this.routes[method][path])
|
|
17
|
+
return [2 /*return*/];
|
|
18
|
+
this.routes[method][path] = {
|
|
19
|
+
handler: handler,
|
|
20
|
+
test: pathToRegexp.match(path)
|
|
21
|
+
};
|
|
22
|
+
return [2 /*return*/];
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
SecurequServer.prototype.get = function (path, handler) {
|
|
27
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
28
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
29
|
+
this.addRoute(path, 'GET', handler);
|
|
30
|
+
return [2 /*return*/];
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
SecurequServer.prototype.post = function (path, handler) {
|
|
35
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
36
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
37
|
+
this.addRoute(path, 'POST', handler);
|
|
38
|
+
return [2 /*return*/];
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
SecurequServer.prototype.put = function (path, handler) {
|
|
43
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
44
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
45
|
+
this.addRoute(path, 'PUT', handler);
|
|
46
|
+
return [2 /*return*/];
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
SecurequServer.prototype.delete = function (path, handler) {
|
|
51
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
52
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
53
|
+
this.addRoute(path, 'DELETE', handler);
|
|
54
|
+
return [2 /*return*/];
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
SecurequServer.prototype.handleRequest = function (info, args) {
|
|
59
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
60
|
+
var path, method, cacheHandler, values, values_1, values_1_1, value, test, handler, match_1, e_1_1;
|
|
61
|
+
var e_1, _a;
|
|
62
|
+
return tslib_es6.__generator(this, function (_b) {
|
|
63
|
+
switch (_b.label) {
|
|
64
|
+
case 0:
|
|
65
|
+
path = info.path, method = info.method;
|
|
66
|
+
cacheHandler = this.HandlerCache.get("".concat(method, ":").concat(path));
|
|
67
|
+
if (!cacheHandler) return [3 /*break*/, 2];
|
|
68
|
+
return [4 /*yield*/, cacheHandler(info, args)];
|
|
69
|
+
case 1:
|
|
70
|
+
_b.sent();
|
|
71
|
+
return [2 /*return*/];
|
|
72
|
+
case 2:
|
|
73
|
+
values = Object.values(this.routes[method]);
|
|
74
|
+
_b.label = 3;
|
|
75
|
+
case 3:
|
|
76
|
+
_b.trys.push([3, 8, 9, 10]);
|
|
77
|
+
values_1 = tslib_es6.__values(values), values_1_1 = values_1.next();
|
|
78
|
+
_b.label = 4;
|
|
79
|
+
case 4:
|
|
80
|
+
if (!!values_1_1.done) return [3 /*break*/, 7];
|
|
81
|
+
value = values_1_1.value;
|
|
82
|
+
test = value.test, handler = value.handler;
|
|
83
|
+
match_1 = test(path);
|
|
84
|
+
if (!match_1) return [3 /*break*/, 6];
|
|
85
|
+
info.params = match_1.params;
|
|
86
|
+
return [4 /*yield*/, handler(info, args)];
|
|
87
|
+
case 5:
|
|
88
|
+
_b.sent();
|
|
89
|
+
this.HandlerCache.set("".concat(method, ":").concat(path), handler);
|
|
90
|
+
_b.label = 6;
|
|
91
|
+
case 6:
|
|
92
|
+
values_1_1 = values_1.next();
|
|
93
|
+
return [3 /*break*/, 4];
|
|
94
|
+
case 7: return [3 /*break*/, 10];
|
|
95
|
+
case 8:
|
|
96
|
+
e_1_1 = _b.sent();
|
|
97
|
+
e_1 = { error: e_1_1 };
|
|
98
|
+
return [3 /*break*/, 10];
|
|
99
|
+
case 9:
|
|
100
|
+
try {
|
|
101
|
+
if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);
|
|
102
|
+
}
|
|
103
|
+
finally { if (e_1) throw e_1.error; }
|
|
104
|
+
return [7 /*endfinally*/];
|
|
105
|
+
case 10: return [2 /*return*/];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
SecurequServer.prototype.listen = function (listenerInfo, args) {
|
|
111
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
112
|
+
var clientSecret, path, body, method, url, split, handshakeSecret, reqkey, data, searchParams, decripted, key, ukey, decripted, key, ukey, info_1, text;
|
|
113
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
114
|
+
switch (_a.label) {
|
|
115
|
+
case 0:
|
|
116
|
+
_a.trys.push([0, 2, , 6]);
|
|
117
|
+
if (!listenerInfo.signeture || !listenerInfo.path || !listenerInfo.method)
|
|
118
|
+
throw new Error("Invalid Request");
|
|
119
|
+
clientSecret = signeture.verify(listenerInfo.signeture);
|
|
120
|
+
path = listenerInfo.path, body = listenerInfo.body, method = listenerInfo.method;
|
|
121
|
+
url = new URL(path, "http://localhost");
|
|
122
|
+
// format the path
|
|
123
|
+
url.pathname = url.pathname.replace(this.config.basepath, "/");
|
|
124
|
+
split = url.pathname.split("/").map(function (s) { return reverser.decrypt(s); }).filter(function (s) { return s.length > 0; });
|
|
125
|
+
url.pathname = "/".concat(split.join("/"));
|
|
126
|
+
handshakeSecret = crypto.makeSecret(this.secret + clientSecret);
|
|
127
|
+
reqkey = handshakeSecret.substring(0, handshakeSecret.length / 2);
|
|
128
|
+
if (method === 'GET' && url.pathname === "/handshake") {
|
|
129
|
+
throw crypto.encrypt(handshakeSecret, clientSecret);
|
|
130
|
+
}
|
|
131
|
+
data = {}, searchParams = {};
|
|
132
|
+
if (url.searchParams.has(reqkey)) {
|
|
133
|
+
decripted = crypto.decrypt(url.searchParams.get(reqkey), handshakeSecret);
|
|
134
|
+
for (key in decripted) {
|
|
135
|
+
ukey = reverser.decrypt(key);
|
|
136
|
+
searchParams[ukey] = decripted[key];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (body[reqkey]) {
|
|
140
|
+
decripted = crypto.decrypt(body[reqkey], handshakeSecret);
|
|
141
|
+
for (key in decripted) {
|
|
142
|
+
ukey = reverser.decrypt(key);
|
|
143
|
+
data[ukey] = decripted[key];
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// handle the request
|
|
147
|
+
return [4 /*yield*/, this.handleRequest({
|
|
148
|
+
method: method,
|
|
149
|
+
path: url.pathname,
|
|
150
|
+
body: data,
|
|
151
|
+
searchParams: searchParams,
|
|
152
|
+
params: {}
|
|
153
|
+
}, args)];
|
|
154
|
+
case 1:
|
|
155
|
+
// handle the request
|
|
156
|
+
_a.sent();
|
|
157
|
+
return [3 /*break*/, 6];
|
|
158
|
+
case 2:
|
|
159
|
+
info_1 = _a.sent();
|
|
160
|
+
if (!(info_1 instanceof Error)) return [3 /*break*/, 3];
|
|
161
|
+
return [2 /*return*/, {
|
|
162
|
+
status: 404,
|
|
163
|
+
value: responseValue.encrypt(info_1.message, listenerInfo.signeture)
|
|
164
|
+
}];
|
|
165
|
+
case 3:
|
|
166
|
+
if (!(info_1 instanceof Response)) return [3 /*break*/, 5];
|
|
167
|
+
return [4 /*yield*/, info_1.text()];
|
|
168
|
+
case 4:
|
|
169
|
+
text = _a.sent();
|
|
170
|
+
return [2 /*return*/, {
|
|
171
|
+
status: info_1.status,
|
|
172
|
+
value: responseValue.encrypt(text, listenerInfo.signeture)
|
|
173
|
+
}];
|
|
174
|
+
case 5: return [2 /*return*/, {
|
|
175
|
+
status: 200,
|
|
176
|
+
value: responseValue.encrypt(info_1, listenerInfo.signeture)
|
|
177
|
+
}];
|
|
178
|
+
case 6: return [2 /*return*/, {
|
|
179
|
+
status: 404,
|
|
180
|
+
value: 'Not Found'
|
|
181
|
+
}];
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
return SecurequServer;
|
|
187
|
+
}());exports.SecurequServer=SecurequServer;exports.default=SecurequServer;//# sourceMappingURL=index.js.map
|
package/server/index.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/server/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { match } from \"path-to-regexp\";\nimport crypto from \"../include/lib/crypto\";\nimport reverser from \"../include/lib/reverser\";\nimport responseValue from \"../include/responseValue\";\nimport signeture from \"../include/signeture\";\nimport { HandlerFunction, HandlerInfo, HTTPMethods, ListenerInfo, RouteFactory, ServerResponse, SecurequServerConfig } from \"./types\";\nimport SecurequCache from \"../include/lib/cache\";\n\n\nclass SecurequServer {\n private HandlerCache = new SecurequCache<HandlerFunction>({ ttl: 1000 * 60 * 60, limit: 100 });\n private routes: RouteFactory = {\n GET: {},\n POST: {},\n PUT: {},\n DELETE: {}\n };\n private config: SecurequServerConfig;\n private secret: string = crypto.makeSecret(Math.random().toString(36).substring(7));\n\n constructor(config: SecurequServerConfig) {\n this.config = { ...config }\n }\n\n async addRoute(path: string, method: HTTPMethods, handler: HandlerFunction) {\n if (this.routes[method][path]) return\n this.routes[method][path] = {\n handler,\n test: match(path)\n }\n }\n\n async get(path: string, handler: HandlerFunction) {\n this.addRoute(path, 'GET', handler)\n }\n\n async post(path: string, handler: HandlerFunction) {\n this.addRoute(path, 'POST', handler)\n }\n\n async put(path: string, handler: HandlerFunction) {\n this.addRoute(path, 'PUT', handler)\n }\n\n async delete(path: string, handler: HandlerFunction) {\n this.addRoute(path, 'DELETE', handler)\n }\n\n async handleRequest(info: HandlerInfo, args?: any) {\n const { path, method } = info;\n let cacheHandler = this.HandlerCache.get(`${method}:${path}`);\n if (cacheHandler) {\n await cacheHandler(info, args)\n return\n }\n let values: any = Object.values(this.routes[method]);\n for (let value of values) {\n let { test, handler } = value\n const match = test(path)\n if (match) {\n info.params = match.params;\n await handler(info, args)\n this.HandlerCache.set(`${method}:${path}`, handler)\n }\n }\n }\n\n async listen(listenerInfo: ListenerInfo, args?: any): Promise<ServerResponse> {\n try {\n if (!listenerInfo.signeture || !listenerInfo.path || !listenerInfo.method || !listenerInfo.body) throw new Error(\"Invalid Request\");\n\n const clientSecret = signeture.verify(listenerInfo.signeture);\n const { path, body, method } = listenerInfo;\n const url = new URL(path, \"http://localhost\");\n\n // format the path\n url.pathname = url.pathname.replace(this.config.basepath, \"/\")\n let split = url.pathname.split(\"/\").map((s) => reverser.decrypt(s)).filter((s) => s.length > 0);\n url.pathname = `/${split.join(\"/\")}`;\n\n // handle handshake \n const handshakeSecret = crypto.makeSecret(this.secret + clientSecret);\n const reqkey = handshakeSecret.substring(0, handshakeSecret.length / 2);\n\n if (method === 'GET' && url.pathname === \"/handshake\") {\n throw crypto.encrypt(handshakeSecret, clientSecret)\n }\n\n let data: any = {}, searchParams: any = {}\n\n if (url.searchParams.has(reqkey)) {\n let decripted: any = crypto.decrypt(url.searchParams.get(reqkey) as string, handshakeSecret)\n for (let key in decripted) {\n let ukey = reverser.decrypt(key)\n searchParams[ukey] = decripted[key]\n }\n }\n\n if (body[reqkey]) {\n let decripted: any = crypto.decrypt(body[reqkey], handshakeSecret)\n for (let key in decripted) {\n let ukey = reverser.decrypt(key)\n data[ukey] = decripted[key]\n }\n }\n\n // handle the request\n await this.handleRequest({\n method,\n path: url.pathname,\n body: data,\n searchParams,\n params: {}\n }, args);\n } catch (info: any) {\n if (info instanceof Error) {\n return {\n status: 404,\n value: responseValue.encrypt(info.message, listenerInfo.signeture)\n }\n } else if (info instanceof Response) {\n let text = await info.text();\n return {\n status: info.status,\n value: responseValue.encrypt(text, listenerInfo.signeture)\n }\n }\n return {\n status: 200,\n value: responseValue.encrypt(info, listenerInfo.signeture)\n };\n }\n\n return {\n status: 404,\n value: 'Not Found'\n };\n }\n}\n\nexport default SecurequServer;"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["match", "crypto", "reverser", "responseValue", "signeture", "SecurequCache", "SecurequServer", "config", "path", "method", "handler", "info", "args", "cacheHandler", "values", "value", "test", "listenerInfo", "clientSecret", "body", "url", "split", "s", "handshakeSecret", "reqkey", "data", "searchParams", "decripted", "key", "ukey", "text", "server_default"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/server/index.ts"],"sourcesContent":["import { match } from \"path-to-regexp\";\nimport crypto from \"../include/lib/crypto\";\nimport reverser from \"../include/lib/reverser\";\nimport responseValue from \"../include/responseValue\";\nimport signeture from \"../include/signeture\";\nimport { HandlerFunction, HandlerInfo, HTTPMethods, ListenerInfo, RouteFactory, ServerResponse, SecurequServerConfig } from \"./types\";\nimport SecurequCache from \"../include/lib/cache\";\n\nexport class SecurequServer {\n private HandlerCache = new SecurequCache<HandlerFunction>({ ttl: 1000 * 60 * 60, limit: 100 });\n private routes: RouteFactory = {\n GET: {},\n POST: {},\n PUT: {},\n DELETE: {}\n };\n private config: SecurequServerConfig;\n private secret: string = crypto.makeSecret(Math.random().toString(36).substring(7));\n\n constructor(config: SecurequServerConfig) {\n this.config = { ...config }\n }\n\n async addRoute(path: string, method: HTTPMethods, handler: HandlerFunction) {\n if (this.routes[method][path]) return\n this.routes[method][path] = {\n handler,\n test: match(path)\n }\n }\n\n async get(path: string, handler: HandlerFunction) {\n this.addRoute(path, 'GET', handler)\n }\n\n async post(path: string, handler: HandlerFunction) {\n this.addRoute(path, 'POST', handler)\n }\n\n async put(path: string, handler: HandlerFunction) {\n this.addRoute(path, 'PUT', handler)\n }\n\n async delete(path: string, handler: HandlerFunction) {\n this.addRoute(path, 'DELETE', handler)\n }\n\n async handleRequest(info: HandlerInfo, args?: any) {\n const { path, method } = info;\n let cacheHandler = this.HandlerCache.get(`${method}:${path}`);\n if (cacheHandler) {\n await cacheHandler(info, args)\n return\n }\n let values: any = Object.values(this.routes[method]);\n for (let value of values) {\n let { test, handler } = value\n const match = test(path)\n if (match) {\n info.params = match.params;\n await handler(info, args)\n this.HandlerCache.set(`${method}:${path}`, handler)\n }\n }\n }\n\n async listen(listenerInfo: ListenerInfo, args?: any): Promise<ServerResponse> {\n try {\n if (!listenerInfo.signeture || !listenerInfo.path || !listenerInfo.method) throw new Error(\"Invalid Request\");\n\n const clientSecret = signeture.verify(listenerInfo.signeture);\n const { path, body, method } = listenerInfo;\n const url = new URL(path, \"http://localhost\");\n\n // format the path\n url.pathname = url.pathname.replace(this.config.basepath, \"/\")\n let split = url.pathname.split(\"/\").map((s) => reverser.decrypt(s)).filter((s) => s.length > 0);\n url.pathname = `/${split.join(\"/\")}`;\n\n // handle handshake \n const handshakeSecret = crypto.makeSecret(this.secret + clientSecret);\n const reqkey = handshakeSecret.substring(0, handshakeSecret.length / 2);\n\n if (method === 'GET' && url.pathname === \"/handshake\") {\n throw crypto.encrypt(handshakeSecret, clientSecret)\n }\n\n let data: any = {}, searchParams: any = {}\n\n if (url.searchParams.has(reqkey)) {\n let decripted: any = crypto.decrypt(url.searchParams.get(reqkey) as string, handshakeSecret)\n for (let key in decripted) {\n let ukey = reverser.decrypt(key)\n searchParams[ukey] = decripted[key]\n }\n }\n\n if (body[reqkey]) {\n let decripted: any = crypto.decrypt(body[reqkey], handshakeSecret)\n for (let key in decripted) {\n let ukey = reverser.decrypt(key)\n data[ukey] = decripted[key]\n }\n }\n\n // handle the request\n await this.handleRequest({\n method,\n path: url.pathname,\n body: data,\n searchParams,\n params: {}\n }, args);\n } catch (info: any) {\n if (info instanceof Error) {\n return {\n status: 404,\n value: responseValue.encrypt(info.message, listenerInfo.signeture)\n }\n } else if (info instanceof Response) {\n let text = await info.text();\n return {\n status: info.status,\n value: responseValue.encrypt(text, listenerInfo.signeture)\n }\n }\n return {\n status: 200,\n value: responseValue.encrypt(info, listenerInfo.signeture)\n };\n }\n\n return {\n status: 404,\n value: 'Not Found'\n };\n }\n}\n\nexport default SecurequServer;"],"names":["SecurequCache","__assign","match","__values"],"mappings":"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"}
|