securequ 1.0.8 → 1.0.9
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 +11 -27
- 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
package/client/index.js
CHANGED
|
@@ -1,2 +1,213 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib_es6=require('../node_modules/tslib/tslib.es6.js'),crypto=require('../include/lib/crypto.js'),signeture=require('../include/signeture.js'),urlpath=require('../include/lib/urlpath.js'),xanFetch=require('xanfetch'),responseValue=require('../include/responseValue.js'),cache=require('../include/lib/cache.js');var SecurequClient = /** @class */ (function () {
|
|
2
|
+
function SecurequClient(config) {
|
|
3
|
+
this.token = '';
|
|
4
|
+
this.tokenLoading = false;
|
|
5
|
+
this.Cache = new cache({ ttl: 1000 * 60 * 60, limit: 100 });
|
|
6
|
+
this.reqkey = '';
|
|
7
|
+
this.PATH_CACHE = new cache({ ttl: 1000 * 60 * 60, limit: 100 });
|
|
8
|
+
this.config = tslib_es6.__assign({}, config);
|
|
9
|
+
var secret = crypto.makeSecret(config.secret);
|
|
10
|
+
this.config.secret = secret;
|
|
11
|
+
this.secret_length = secret.length - (Math.floor(Math.random() * 11) + 5);
|
|
12
|
+
this.secret = crypto.makeSecret(secret.substring(0, this.secret_length));
|
|
13
|
+
this.signerure = signeture.make(this.secret, this.secret);
|
|
14
|
+
}
|
|
15
|
+
SecurequClient.prototype.setCache = function (path, method, response) {
|
|
16
|
+
var cacheKey = "".concat(method, ":").concat(path);
|
|
17
|
+
if (this.config.cache === true) {
|
|
18
|
+
this.Cache.set(cacheKey, response);
|
|
19
|
+
}
|
|
20
|
+
else if (this.config.cache) {
|
|
21
|
+
this.config.cache.set(cacheKey, response);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
SecurequClient.prototype.getCache = function (path, method) {
|
|
25
|
+
var cacheKey = "".concat(method, ":").concat(path);
|
|
26
|
+
if (this.config.cache === true) {
|
|
27
|
+
return this.Cache.get(cacheKey);
|
|
28
|
+
}
|
|
29
|
+
else if (this.config.cache) {
|
|
30
|
+
return this.config.cache.get(cacheKey);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
SecurequClient.prototype.path = function (path) {
|
|
34
|
+
var pathKey = path;
|
|
35
|
+
var has = this.PATH_CACHE.get(pathKey);
|
|
36
|
+
if (!has) {
|
|
37
|
+
var _a = new URL(path, window.location.origin), search = _a.search, pathname = _a.pathname;
|
|
38
|
+
var params = new URLSearchParams(search);
|
|
39
|
+
var paramsObject = Object.fromEntries(params.entries());
|
|
40
|
+
var split = pathname.split("/").map(function (s) { return urlpath.encrypt(s); }).filter(function (s) { return s.length > 0; });
|
|
41
|
+
path = "".concat(this.config.path, "/").concat(split.join("/"));
|
|
42
|
+
if (Object.keys(paramsObject).length) {
|
|
43
|
+
for (var key in paramsObject) {
|
|
44
|
+
paramsObject[urlpath.encrypt(key)] = paramsObject[key];
|
|
45
|
+
delete paramsObject[key];
|
|
46
|
+
}
|
|
47
|
+
var string = JSON.stringify(paramsObject);
|
|
48
|
+
var text = encodeURIComponent(crypto.encrypt(string, this.token));
|
|
49
|
+
path += "?".concat(this.reqkey, "=").concat(text);
|
|
50
|
+
}
|
|
51
|
+
this.PATH_CACHE.set(pathKey, path);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
path = has;
|
|
55
|
+
}
|
|
56
|
+
return path;
|
|
57
|
+
};
|
|
58
|
+
SecurequClient.prototype.handshake = function () {
|
|
59
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
60
|
+
var res, value, _a, _b, token;
|
|
61
|
+
var _c;
|
|
62
|
+
return tslib_es6.__generator(this, function (_d) {
|
|
63
|
+
switch (_d.label) {
|
|
64
|
+
case 0:
|
|
65
|
+
this.tokenLoading = true;
|
|
66
|
+
return [4 /*yield*/, xanFetch(this.path("/handshake"), {
|
|
67
|
+
method: "GET",
|
|
68
|
+
headers: tslib_es6.__assign(tslib_es6.__assign({}, this.config.headers), (_c = {}, _c[signeture.key] = this.signerure, _c)),
|
|
69
|
+
})];
|
|
70
|
+
case 1:
|
|
71
|
+
res = _d.sent();
|
|
72
|
+
_b = (_a = responseValue).decrypt;
|
|
73
|
+
return [4 /*yield*/, res.text()];
|
|
74
|
+
case 2:
|
|
75
|
+
value = _b.apply(_a, [_d.sent(), this.signerure]);
|
|
76
|
+
token = crypto.decrypt(value, this.secret);
|
|
77
|
+
this.token = token;
|
|
78
|
+
this.reqkey = token.substring(0, token.length / 2);
|
|
79
|
+
this.tokenLoading = false;
|
|
80
|
+
return [2 /*return*/];
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
SecurequClient.prototype.send = function (path, init) {
|
|
86
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
87
|
+
var info, cache_res, body, _data, hasFile, key, ukey, response, res, text, value;
|
|
88
|
+
var _a;
|
|
89
|
+
var _this = this;
|
|
90
|
+
return tslib_es6.__generator(this, function (_b) {
|
|
91
|
+
switch (_b.label) {
|
|
92
|
+
case 0:
|
|
93
|
+
if (path === '/handshake') {
|
|
94
|
+
throw new Error("Path is not allowed");
|
|
95
|
+
}
|
|
96
|
+
if (!this.tokenLoading) return [3 /*break*/, 2];
|
|
97
|
+
return [4 /*yield*/, new Promise(function (resolve) {
|
|
98
|
+
var interval = setInterval(function () {
|
|
99
|
+
if (!_this.tokenLoading) {
|
|
100
|
+
clearInterval(interval);
|
|
101
|
+
resolve(null);
|
|
102
|
+
}
|
|
103
|
+
}, 100);
|
|
104
|
+
})];
|
|
105
|
+
case 1:
|
|
106
|
+
_b.sent();
|
|
107
|
+
_b.label = 2;
|
|
108
|
+
case 2:
|
|
109
|
+
if (!!this.token) return [3 /*break*/, 4];
|
|
110
|
+
return [4 /*yield*/, this.handshake()];
|
|
111
|
+
case 3:
|
|
112
|
+
_b.sent();
|
|
113
|
+
_b.label = 4;
|
|
114
|
+
case 4:
|
|
115
|
+
info = tslib_es6.__assign(tslib_es6.__assign({ method: "GET" }, init), { headers: tslib_es6.__assign(tslib_es6.__assign(tslib_es6.__assign({}, this.config.headers), init === null || init === void 0 ? void 0 : init.headers), (_a = {}, _a[signeture.key] = this.signerure, _a)) });
|
|
116
|
+
cache_res = this.getCache(path, info.method);
|
|
117
|
+
if (cache_res) {
|
|
118
|
+
return [2 /*return*/, cache_res.clone()];
|
|
119
|
+
}
|
|
120
|
+
if (info.body) {
|
|
121
|
+
if (!this.token)
|
|
122
|
+
throw new Error("Token not loaded");
|
|
123
|
+
body = new FormData();
|
|
124
|
+
_data = {};
|
|
125
|
+
hasFile = false;
|
|
126
|
+
for (key in info.body) {
|
|
127
|
+
ukey = urlpath.encrypt(key);
|
|
128
|
+
if (info.body[key] instanceof File) {
|
|
129
|
+
body.append(ukey, info.body[key]);
|
|
130
|
+
hasFile = true;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
_data[ukey] = info.body[key];
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
body.append(this.reqkey, crypto.encrypt(_data, this.token));
|
|
137
|
+
if (!hasFile) {
|
|
138
|
+
info.body = new URLSearchParams(body);
|
|
139
|
+
if (!info.headers['Content-Type']) {
|
|
140
|
+
info.headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
if (info.method === "GET") {
|
|
145
|
+
info.method = "POST";
|
|
146
|
+
}
|
|
147
|
+
info.body = body;
|
|
148
|
+
if (!info.headers['Content-Type']) {
|
|
149
|
+
info.headers['Content-Type'] = 'multipart/form-data';
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return [4 /*yield*/, xanFetch(this.path(path), info)];
|
|
154
|
+
case 5:
|
|
155
|
+
response = _b.sent();
|
|
156
|
+
res = response.clone();
|
|
157
|
+
return [4 /*yield*/, response.text()];
|
|
158
|
+
case 6:
|
|
159
|
+
text = _b.sent();
|
|
160
|
+
value = responseValue.decrypt(text, this.signerure);
|
|
161
|
+
res.text = function () { return tslib_es6.__awaiter(_this, void 0, void 0, function () { return tslib_es6.__generator(this, function (_a) {
|
|
162
|
+
return [2 /*return*/, value];
|
|
163
|
+
}); }); };
|
|
164
|
+
if (this.config.cache === true && res.ok) {
|
|
165
|
+
this.setCache(path, info.method, res.clone());
|
|
166
|
+
}
|
|
167
|
+
return [2 /*return*/, res];
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
SecurequClient.prototype.get = function (path, init) {
|
|
173
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
174
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
175
|
+
switch (_a.label) {
|
|
176
|
+
case 0: return [4 /*yield*/, this.send(path, init)];
|
|
177
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
SecurequClient.prototype.post = function (path, body, init) {
|
|
183
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
184
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
185
|
+
switch (_a.label) {
|
|
186
|
+
case 0: return [4 /*yield*/, this.send(path, tslib_es6.__assign(tslib_es6.__assign({}, init), { method: "POST", body: body }))];
|
|
187
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
};
|
|
192
|
+
SecurequClient.prototype.put = function (path, body, init) {
|
|
193
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
194
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
195
|
+
switch (_a.label) {
|
|
196
|
+
case 0: return [4 /*yield*/, this.send(path, tslib_es6.__assign(tslib_es6.__assign({}, init), { method: "PUT", body: body }))];
|
|
197
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
};
|
|
202
|
+
SecurequClient.prototype.delete = function (path, init) {
|
|
203
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
204
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
205
|
+
switch (_a.label) {
|
|
206
|
+
case 0: return [4 /*yield*/, this.send(path, tslib_es6.__assign(tslib_es6.__assign({}, init), { method: "DELETE" }))];
|
|
207
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
};
|
|
212
|
+
return SecurequClient;
|
|
213
|
+
}());exports.SecurequClient=SecurequClient;//# sourceMappingURL=index.js.map
|
package/client/index.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/client/index.ts"],
|
|
4
|
-
"sourcesContent": ["import crypto from \"../include/lib/crypto\";\nimport signeture from \"../include/signeture\";\nimport urlpath from \"../include/lib/urlpath\";\nimport { HttpRequestInit, RequestBody, SecurequClientConfig } from \"./types\";\nimport xanFetch from 'xanFetch'\nimport responseValue from \"../include/responseValue\";\nimport SecurequCache from \"../include/lib/cache\";\n\nclass SecurequClient {\n private config: SecurequClientConfig;\n private token: string = '';\n private tokenLoading: boolean = false;\n private Cache = new SecurequCache<Response>({ ttl: 1000 * 60 * 60, limit: 100 });\n\n private secret: string;\n private secret_length: number;\n private signerure: string;\n private reqkey: string = '';\n\n constructor(config: SecurequClientConfig) {\n this.config = { ...config }\n const secret = crypto.makeSecret(config.secret)\n this.config.secret = secret;\n this.secret_length = secret.length - (Math.floor(Math.random() * 11) + 5);\n this.secret = crypto.makeSecret(secret.substring(0, this.secret_length))\n this.signerure = signeture.make(this.secret, this.secret);\n }\n\n private setCache(path: string, method: string, response: any) {\n const cacheKey = `${method}:${path}`;\n if (this.config.cache === true) {\n this.Cache.set(cacheKey, response);\n } else if (this.config.cache) {\n this.config.cache.set(cacheKey, response);\n }\n }\n\n private getCache(path: string, method: string,) {\n const cacheKey = `${method}:${path}`;\n if (this.config.cache === true) {\n return this.Cache.get(cacheKey);\n } else if (this.config.cache) {\n return this.config.cache.get(cacheKey);\n }\n }\n\n private PATH_CACHE = new SecurequCache<string>({ ttl: 1000 * 60 * 60, limit: 100 });\n private path(path: string) {\n let pathKey = path\n let has = this.PATH_CACHE.get(pathKey)\n if (!has) {\n const { search, pathname } = new URL(path, window.location.origin);\n const params = new URLSearchParams(search);\n const paramsObject = Object.fromEntries(params.entries());\n let split = pathname.split(\"/\").map((s) => urlpath.encrypt(s)).filter((s) => s.length > 0);\n path = `${this.config.path}/${split.join(\"/\")}`;\n if (Object.keys(paramsObject).length) {\n for (let key in paramsObject) {\n paramsObject[urlpath.encrypt(key)] = paramsObject[key]\n delete paramsObject[key]\n }\n const string = JSON.stringify(paramsObject)\n const text = encodeURIComponent(crypto.encrypt(string, this.token));\n path += `?${this.reqkey}=${text}`;\n }\n this.PATH_CACHE.set(pathKey, path);\n } else {\n path = has\n }\n return path\n }\n\n private async handshake() {\n this.tokenLoading = true;\n const res = await xanFetch(this.path(`/handshake`), {\n method: \"GET\",\n headers: {\n ...this.config.headers,\n [signeture.key]: this.signerure\n },\n })\n\n const value: any = responseValue.decrypt(await res.text(), this.signerure)\n const token = crypto.decrypt(value, this.secret)\n this.token = token;\n this.reqkey = token.substring(0, token.length / 2);\n this.tokenLoading = false;\n }\n\n async send(path: string, init?: HttpRequestInit): Promise<Response> {\n if (path === '/handshake') {\n throw new Error(\"Path is not allowed\")\n }\n if (this.tokenLoading) {\n await new Promise((resolve) => {\n const interval = setInterval(() => {\n if (!this.tokenLoading) {\n clearInterval(interval);\n resolve(null);\n }\n }, 100);\n })\n }\n\n if (!this.token) {\n await this.handshake();\n }\n\n const info: any = {\n method: \"GET\",\n ...init,\n headers: {\n ...this.config.headers,\n ...init?.headers,\n [signeture.key]: this.signerure\n },\n }\n\n const cache_res = this.getCache(path, info.method);\n if (cache_res) {\n return cache_res.clone();\n }\n\n if (info.body) {\n if (!this.token) throw new Error(\"Token not loaded\")\n const body = new FormData();\n let _data: any = {}\n let hasFile = false;\n for (let key in info.body) {\n let ukey = urlpath.encrypt(key);\n if (info.body[key] instanceof File) {\n body.append(ukey, info.body[key]);\n hasFile = true;\n } else {\n _data[ukey] = info.body[key];\n }\n }\n\n body.append(this.reqkey, crypto.encrypt(_data, this.token));\n\n if (!hasFile) {\n info.body = new URLSearchParams(body as any);\n if (!info.headers['Content-Type']) {\n info.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n } else {\n if (info.method === \"GET\") {\n info.method = \"POST\"\n }\n info.body = body\n if (!info.headers['Content-Type']) {\n info.headers['Content-Type'] = 'multipart/form-data';\n }\n }\n }\n\n const response = await xanFetch(this.path(path), info);\n const res = response.clone();\n const text = await response.text();\n const value: any = responseValue.decrypt(text, this.signerure)\n res.text = async () => value;\n if (this.config.cache === true && res.ok) {\n this.setCache(path, info.method, res.clone());\n }\n return res\n }\n\n async get(path: string, init?: HttpRequestInit) {\n return await this.send(path, init);\n }\n\n async post(path: string, body: RequestBody, init?: HttpRequestInit) {\n return await this.send(path, {\n ...init,\n method: \"POST\",\n body: body\n });\n }\n\n async put(path: string, body: RequestBody, init?: HttpRequestInit) {\n return await this.send(path, {\n ...init,\n method: \"PUT\",\n body: body\n });\n }\n\n async delete(path: string, init?: HttpRequestInit) {\n return await this.send(path, {\n ...init,\n method: \"DELETE\",\n });\n }\n}\n\nexport default SecurequClient"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["crypto", "signeture", "urlpath", "xanFetch", "responseValue", "SecurequCache", "SecurequClient", "config", "secret", "path", "method", "response", "cacheKey", "pathKey", "has", "search", "pathname", "params", "paramsObject", "split", "s", "key", "string", "text", "res", "value", "token", "init", "resolve", "interval", "info", "cache_res", "body", "_data", "hasFile", "ukey", "client_default"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/client/index.ts"],"sourcesContent":["import crypto from \"../include/lib/crypto\";\nimport signeture from \"../include/signeture\";\nimport urlpath from \"../include/lib/urlpath\";\nimport { HttpRequestInit, RequestBody, SecurequClientConfig } from \"./types\";\nimport xanFetch from 'xanfetch'\nimport responseValue from \"../include/responseValue\";\nimport SecurequCache from \"../include/lib/cache\";\n\nexport class SecurequClient {\n private config: SecurequClientConfig;\n private token: string = '';\n private tokenLoading: boolean = false;\n private Cache = new SecurequCache<Response>({ ttl: 1000 * 60 * 60, limit: 100 });\n\n private secret: string;\n private secret_length: number;\n private signerure: string;\n private reqkey: string = '';\n\n constructor(config: SecurequClientConfig) {\n this.config = { ...config }\n const secret = crypto.makeSecret(config.secret)\n this.config.secret = secret;\n this.secret_length = secret.length - (Math.floor(Math.random() * 11) + 5);\n this.secret = crypto.makeSecret(secret.substring(0, this.secret_length))\n this.signerure = signeture.make(this.secret, this.secret);\n }\n\n private setCache(path: string, method: string, response: any) {\n const cacheKey = `${method}:${path}`;\n if (this.config.cache === true) {\n this.Cache.set(cacheKey, response);\n } else if (this.config.cache) {\n this.config.cache.set(cacheKey, response);\n }\n }\n\n private getCache(path: string, method: string,) {\n const cacheKey = `${method}:${path}`;\n if (this.config.cache === true) {\n return this.Cache.get(cacheKey);\n } else if (this.config.cache) {\n return this.config.cache.get(cacheKey);\n }\n }\n\n private PATH_CACHE = new SecurequCache<string>({ ttl: 1000 * 60 * 60, limit: 100 });\n private path(path: string) {\n let pathKey = path\n let has = this.PATH_CACHE.get(pathKey)\n if (!has) {\n const { search, pathname } = new URL(path, window.location.origin);\n const params = new URLSearchParams(search);\n const paramsObject = Object.fromEntries(params.entries());\n let split = pathname.split(\"/\").map((s) => urlpath.encrypt(s)).filter((s) => s.length > 0);\n path = `${this.config.path}/${split.join(\"/\")}`;\n if (Object.keys(paramsObject).length) {\n for (let key in paramsObject) {\n paramsObject[urlpath.encrypt(key)] = paramsObject[key]\n delete paramsObject[key]\n }\n const string = JSON.stringify(paramsObject)\n const text = encodeURIComponent(crypto.encrypt(string, this.token));\n path += `?${this.reqkey}=${text}`;\n }\n this.PATH_CACHE.set(pathKey, path);\n } else {\n path = has\n }\n return path\n }\n\n private async handshake() {\n this.tokenLoading = true;\n const res = await xanFetch(this.path(`/handshake`), {\n method: \"GET\",\n headers: {\n ...this.config.headers,\n [signeture.key]: this.signerure\n },\n })\n\n const value: any = responseValue.decrypt(await res.text(), this.signerure)\n const token = crypto.decrypt(value, this.secret)\n this.token = token;\n this.reqkey = token.substring(0, token.length / 2);\n this.tokenLoading = false;\n }\n\n async send(path: string, init?: HttpRequestInit): Promise<Response> {\n if (path === '/handshake') {\n throw new Error(\"Path is not allowed\")\n }\n if (this.tokenLoading) {\n await new Promise((resolve) => {\n const interval = setInterval(() => {\n if (!this.tokenLoading) {\n clearInterval(interval);\n resolve(null);\n }\n }, 100);\n })\n }\n\n if (!this.token) {\n await this.handshake();\n }\n\n const info: any = {\n method: \"GET\",\n ...init,\n headers: {\n ...this.config.headers,\n ...init?.headers,\n [signeture.key]: this.signerure\n },\n }\n\n const cache_res = this.getCache(path, info.method);\n if (cache_res) {\n return cache_res.clone();\n }\n\n if (info.body) {\n if (!this.token) throw new Error(\"Token not loaded\")\n const body = new FormData();\n let _data: any = {}\n let hasFile = false;\n for (let key in info.body) {\n let ukey = urlpath.encrypt(key);\n if (info.body[key] instanceof File) {\n body.append(ukey, info.body[key]);\n hasFile = true;\n } else {\n _data[ukey] = info.body[key];\n }\n }\n\n body.append(this.reqkey, crypto.encrypt(_data, this.token));\n\n if (!hasFile) {\n info.body = new URLSearchParams(body as any);\n if (!info.headers['Content-Type']) {\n info.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n } else {\n if (info.method === \"GET\") {\n info.method = \"POST\"\n }\n info.body = body\n if (!info.headers['Content-Type']) {\n info.headers['Content-Type'] = 'multipart/form-data';\n }\n }\n }\n\n const response = await xanFetch(this.path(path), info);\n const res = response.clone();\n const text = await response.text();\n const value: any = responseValue.decrypt(text, this.signerure)\n res.text = async () => value;\n if (this.config.cache === true && res.ok) {\n this.setCache(path, info.method, res.clone());\n }\n return res\n }\n\n async get(path: string, init?: HttpRequestInit) {\n return await this.send(path, init);\n }\n\n async post(path: string, body: RequestBody, init?: HttpRequestInit) {\n return await this.send(path, {\n ...init,\n method: \"POST\",\n body: body\n });\n }\n\n async put(path: string, body: RequestBody, init?: HttpRequestInit) {\n return await this.send(path, {\n ...init,\n method: \"PUT\",\n body: body\n });\n }\n\n async delete(path: string, init?: HttpRequestInit) {\n return await this.send(path, {\n ...init,\n method: \"DELETE\",\n });\n }\n}\n"],"names":["SecurequCache","__assign","__awaiter","__generator"],"mappings":"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"}
|
package/client/index.mjs
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import {__awaiter,__assign,__generator}from'../node_modules/tslib/tslib.es6.mjs';import crypto from'../include/lib/crypto.mjs';import signeture from'../include/signeture.mjs';import urlpath from'../include/lib/urlpath.mjs';import xanFetch from'xanfetch';import responseValue from'../include/responseValue.mjs';import SecurequCache from'../include/lib/cache.mjs';var SecurequClient = /** @class */ (function () {
|
|
2
|
+
function SecurequClient(config) {
|
|
3
|
+
this.token = '';
|
|
4
|
+
this.tokenLoading = false;
|
|
5
|
+
this.Cache = new SecurequCache({ ttl: 1000 * 60 * 60, limit: 100 });
|
|
6
|
+
this.reqkey = '';
|
|
7
|
+
this.PATH_CACHE = new SecurequCache({ ttl: 1000 * 60 * 60, limit: 100 });
|
|
8
|
+
this.config = __assign({}, config);
|
|
9
|
+
var secret = crypto.makeSecret(config.secret);
|
|
10
|
+
this.config.secret = secret;
|
|
11
|
+
this.secret_length = secret.length - (Math.floor(Math.random() * 11) + 5);
|
|
12
|
+
this.secret = crypto.makeSecret(secret.substring(0, this.secret_length));
|
|
13
|
+
this.signerure = signeture.make(this.secret, this.secret);
|
|
14
|
+
}
|
|
15
|
+
SecurequClient.prototype.setCache = function (path, method, response) {
|
|
16
|
+
var cacheKey = "".concat(method, ":").concat(path);
|
|
17
|
+
if (this.config.cache === true) {
|
|
18
|
+
this.Cache.set(cacheKey, response);
|
|
19
|
+
}
|
|
20
|
+
else if (this.config.cache) {
|
|
21
|
+
this.config.cache.set(cacheKey, response);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
SecurequClient.prototype.getCache = function (path, method) {
|
|
25
|
+
var cacheKey = "".concat(method, ":").concat(path);
|
|
26
|
+
if (this.config.cache === true) {
|
|
27
|
+
return this.Cache.get(cacheKey);
|
|
28
|
+
}
|
|
29
|
+
else if (this.config.cache) {
|
|
30
|
+
return this.config.cache.get(cacheKey);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
SecurequClient.prototype.path = function (path) {
|
|
34
|
+
var pathKey = path;
|
|
35
|
+
var has = this.PATH_CACHE.get(pathKey);
|
|
36
|
+
if (!has) {
|
|
37
|
+
var _a = new URL(path, window.location.origin), search = _a.search, pathname = _a.pathname;
|
|
38
|
+
var params = new URLSearchParams(search);
|
|
39
|
+
var paramsObject = Object.fromEntries(params.entries());
|
|
40
|
+
var split = pathname.split("/").map(function (s) { return urlpath.encrypt(s); }).filter(function (s) { return s.length > 0; });
|
|
41
|
+
path = "".concat(this.config.path, "/").concat(split.join("/"));
|
|
42
|
+
if (Object.keys(paramsObject).length) {
|
|
43
|
+
for (var key in paramsObject) {
|
|
44
|
+
paramsObject[urlpath.encrypt(key)] = paramsObject[key];
|
|
45
|
+
delete paramsObject[key];
|
|
46
|
+
}
|
|
47
|
+
var string = JSON.stringify(paramsObject);
|
|
48
|
+
var text = encodeURIComponent(crypto.encrypt(string, this.token));
|
|
49
|
+
path += "?".concat(this.reqkey, "=").concat(text);
|
|
50
|
+
}
|
|
51
|
+
this.PATH_CACHE.set(pathKey, path);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
path = has;
|
|
55
|
+
}
|
|
56
|
+
return path;
|
|
57
|
+
};
|
|
58
|
+
SecurequClient.prototype.handshake = function () {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
60
|
+
var res, value, _a, _b, token;
|
|
61
|
+
var _c;
|
|
62
|
+
return __generator(this, function (_d) {
|
|
63
|
+
switch (_d.label) {
|
|
64
|
+
case 0:
|
|
65
|
+
this.tokenLoading = true;
|
|
66
|
+
return [4 /*yield*/, xanFetch(this.path("/handshake"), {
|
|
67
|
+
method: "GET",
|
|
68
|
+
headers: __assign(__assign({}, this.config.headers), (_c = {}, _c[signeture.key] = this.signerure, _c)),
|
|
69
|
+
})];
|
|
70
|
+
case 1:
|
|
71
|
+
res = _d.sent();
|
|
72
|
+
_b = (_a = responseValue).decrypt;
|
|
73
|
+
return [4 /*yield*/, res.text()];
|
|
74
|
+
case 2:
|
|
75
|
+
value = _b.apply(_a, [_d.sent(), this.signerure]);
|
|
76
|
+
token = crypto.decrypt(value, this.secret);
|
|
77
|
+
this.token = token;
|
|
78
|
+
this.reqkey = token.substring(0, token.length / 2);
|
|
79
|
+
this.tokenLoading = false;
|
|
80
|
+
return [2 /*return*/];
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
SecurequClient.prototype.send = function (path, init) {
|
|
86
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
87
|
+
var info, cache_res, body, _data, hasFile, key, ukey, response, res, text, value;
|
|
88
|
+
var _a;
|
|
89
|
+
var _this = this;
|
|
90
|
+
return __generator(this, function (_b) {
|
|
91
|
+
switch (_b.label) {
|
|
92
|
+
case 0:
|
|
93
|
+
if (path === '/handshake') {
|
|
94
|
+
throw new Error("Path is not allowed");
|
|
95
|
+
}
|
|
96
|
+
if (!this.tokenLoading) return [3 /*break*/, 2];
|
|
97
|
+
return [4 /*yield*/, new Promise(function (resolve) {
|
|
98
|
+
var interval = setInterval(function () {
|
|
99
|
+
if (!_this.tokenLoading) {
|
|
100
|
+
clearInterval(interval);
|
|
101
|
+
resolve(null);
|
|
102
|
+
}
|
|
103
|
+
}, 100);
|
|
104
|
+
})];
|
|
105
|
+
case 1:
|
|
106
|
+
_b.sent();
|
|
107
|
+
_b.label = 2;
|
|
108
|
+
case 2:
|
|
109
|
+
if (!!this.token) return [3 /*break*/, 4];
|
|
110
|
+
return [4 /*yield*/, this.handshake()];
|
|
111
|
+
case 3:
|
|
112
|
+
_b.sent();
|
|
113
|
+
_b.label = 4;
|
|
114
|
+
case 4:
|
|
115
|
+
info = __assign(__assign({ method: "GET" }, init), { headers: __assign(__assign(__assign({}, this.config.headers), init === null || init === void 0 ? void 0 : init.headers), (_a = {}, _a[signeture.key] = this.signerure, _a)) });
|
|
116
|
+
cache_res = this.getCache(path, info.method);
|
|
117
|
+
if (cache_res) {
|
|
118
|
+
return [2 /*return*/, cache_res.clone()];
|
|
119
|
+
}
|
|
120
|
+
if (info.body) {
|
|
121
|
+
if (!this.token)
|
|
122
|
+
throw new Error("Token not loaded");
|
|
123
|
+
body = new FormData();
|
|
124
|
+
_data = {};
|
|
125
|
+
hasFile = false;
|
|
126
|
+
for (key in info.body) {
|
|
127
|
+
ukey = urlpath.encrypt(key);
|
|
128
|
+
if (info.body[key] instanceof File) {
|
|
129
|
+
body.append(ukey, info.body[key]);
|
|
130
|
+
hasFile = true;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
_data[ukey] = info.body[key];
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
body.append(this.reqkey, crypto.encrypt(_data, this.token));
|
|
137
|
+
if (!hasFile) {
|
|
138
|
+
info.body = new URLSearchParams(body);
|
|
139
|
+
if (!info.headers['Content-Type']) {
|
|
140
|
+
info.headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
if (info.method === "GET") {
|
|
145
|
+
info.method = "POST";
|
|
146
|
+
}
|
|
147
|
+
info.body = body;
|
|
148
|
+
if (!info.headers['Content-Type']) {
|
|
149
|
+
info.headers['Content-Type'] = 'multipart/form-data';
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return [4 /*yield*/, xanFetch(this.path(path), info)];
|
|
154
|
+
case 5:
|
|
155
|
+
response = _b.sent();
|
|
156
|
+
res = response.clone();
|
|
157
|
+
return [4 /*yield*/, response.text()];
|
|
158
|
+
case 6:
|
|
159
|
+
text = _b.sent();
|
|
160
|
+
value = responseValue.decrypt(text, this.signerure);
|
|
161
|
+
res.text = function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
162
|
+
return [2 /*return*/, value];
|
|
163
|
+
}); }); };
|
|
164
|
+
if (this.config.cache === true && res.ok) {
|
|
165
|
+
this.setCache(path, info.method, res.clone());
|
|
166
|
+
}
|
|
167
|
+
return [2 /*return*/, res];
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
SecurequClient.prototype.get = function (path, init) {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
174
|
+
return __generator(this, function (_a) {
|
|
175
|
+
switch (_a.label) {
|
|
176
|
+
case 0: return [4 /*yield*/, this.send(path, init)];
|
|
177
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
SecurequClient.prototype.post = function (path, body, init) {
|
|
183
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
184
|
+
return __generator(this, function (_a) {
|
|
185
|
+
switch (_a.label) {
|
|
186
|
+
case 0: return [4 /*yield*/, this.send(path, __assign(__assign({}, init), { method: "POST", body: body }))];
|
|
187
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
};
|
|
192
|
+
SecurequClient.prototype.put = function (path, body, init) {
|
|
193
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
194
|
+
return __generator(this, function (_a) {
|
|
195
|
+
switch (_a.label) {
|
|
196
|
+
case 0: return [4 /*yield*/, this.send(path, __assign(__assign({}, init), { method: "PUT", body: body }))];
|
|
197
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
};
|
|
202
|
+
SecurequClient.prototype.delete = function (path, init) {
|
|
203
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
204
|
+
return __generator(this, function (_a) {
|
|
205
|
+
switch (_a.label) {
|
|
206
|
+
case 0: return [4 /*yield*/, this.send(path, __assign(__assign({}, init), { method: "DELETE" }))];
|
|
207
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
};
|
|
212
|
+
return SecurequClient;
|
|
213
|
+
}());export{SecurequClient};//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/client/index.ts"],"sourcesContent":["import crypto from \"../include/lib/crypto\";\nimport signeture from \"../include/signeture\";\nimport urlpath from \"../include/lib/urlpath\";\nimport { HttpRequestInit, RequestBody, SecurequClientConfig } from \"./types\";\nimport xanFetch from 'xanfetch'\nimport responseValue from \"../include/responseValue\";\nimport SecurequCache from \"../include/lib/cache\";\n\nexport class SecurequClient {\n private config: SecurequClientConfig;\n private token: string = '';\n private tokenLoading: boolean = false;\n private Cache = new SecurequCache<Response>({ ttl: 1000 * 60 * 60, limit: 100 });\n\n private secret: string;\n private secret_length: number;\n private signerure: string;\n private reqkey: string = '';\n\n constructor(config: SecurequClientConfig) {\n this.config = { ...config }\n const secret = crypto.makeSecret(config.secret)\n this.config.secret = secret;\n this.secret_length = secret.length - (Math.floor(Math.random() * 11) + 5);\n this.secret = crypto.makeSecret(secret.substring(0, this.secret_length))\n this.signerure = signeture.make(this.secret, this.secret);\n }\n\n private setCache(path: string, method: string, response: any) {\n const cacheKey = `${method}:${path}`;\n if (this.config.cache === true) {\n this.Cache.set(cacheKey, response);\n } else if (this.config.cache) {\n this.config.cache.set(cacheKey, response);\n }\n }\n\n private getCache(path: string, method: string,) {\n const cacheKey = `${method}:${path}`;\n if (this.config.cache === true) {\n return this.Cache.get(cacheKey);\n } else if (this.config.cache) {\n return this.config.cache.get(cacheKey);\n }\n }\n\n private PATH_CACHE = new SecurequCache<string>({ ttl: 1000 * 60 * 60, limit: 100 });\n private path(path: string) {\n let pathKey = path\n let has = this.PATH_CACHE.get(pathKey)\n if (!has) {\n const { search, pathname } = new URL(path, window.location.origin);\n const params = new URLSearchParams(search);\n const paramsObject = Object.fromEntries(params.entries());\n let split = pathname.split(\"/\").map((s) => urlpath.encrypt(s)).filter((s) => s.length > 0);\n path = `${this.config.path}/${split.join(\"/\")}`;\n if (Object.keys(paramsObject).length) {\n for (let key in paramsObject) {\n paramsObject[urlpath.encrypt(key)] = paramsObject[key]\n delete paramsObject[key]\n }\n const string = JSON.stringify(paramsObject)\n const text = encodeURIComponent(crypto.encrypt(string, this.token));\n path += `?${this.reqkey}=${text}`;\n }\n this.PATH_CACHE.set(pathKey, path);\n } else {\n path = has\n }\n return path\n }\n\n private async handshake() {\n this.tokenLoading = true;\n const res = await xanFetch(this.path(`/handshake`), {\n method: \"GET\",\n headers: {\n ...this.config.headers,\n [signeture.key]: this.signerure\n },\n })\n\n const value: any = responseValue.decrypt(await res.text(), this.signerure)\n const token = crypto.decrypt(value, this.secret)\n this.token = token;\n this.reqkey = token.substring(0, token.length / 2);\n this.tokenLoading = false;\n }\n\n async send(path: string, init?: HttpRequestInit): Promise<Response> {\n if (path === '/handshake') {\n throw new Error(\"Path is not allowed\")\n }\n if (this.tokenLoading) {\n await new Promise((resolve) => {\n const interval = setInterval(() => {\n if (!this.tokenLoading) {\n clearInterval(interval);\n resolve(null);\n }\n }, 100);\n })\n }\n\n if (!this.token) {\n await this.handshake();\n }\n\n const info: any = {\n method: \"GET\",\n ...init,\n headers: {\n ...this.config.headers,\n ...init?.headers,\n [signeture.key]: this.signerure\n },\n }\n\n const cache_res = this.getCache(path, info.method);\n if (cache_res) {\n return cache_res.clone();\n }\n\n if (info.body) {\n if (!this.token) throw new Error(\"Token not loaded\")\n const body = new FormData();\n let _data: any = {}\n let hasFile = false;\n for (let key in info.body) {\n let ukey = urlpath.encrypt(key);\n if (info.body[key] instanceof File) {\n body.append(ukey, info.body[key]);\n hasFile = true;\n } else {\n _data[ukey] = info.body[key];\n }\n }\n\n body.append(this.reqkey, crypto.encrypt(_data, this.token));\n\n if (!hasFile) {\n info.body = new URLSearchParams(body as any);\n if (!info.headers['Content-Type']) {\n info.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n } else {\n if (info.method === \"GET\") {\n info.method = \"POST\"\n }\n info.body = body\n if (!info.headers['Content-Type']) {\n info.headers['Content-Type'] = 'multipart/form-data';\n }\n }\n }\n\n const response = await xanFetch(this.path(path), info);\n const res = response.clone();\n const text = await response.text();\n const value: any = responseValue.decrypt(text, this.signerure)\n res.text = async () => value;\n if (this.config.cache === true && res.ok) {\n this.setCache(path, info.method, res.clone());\n }\n return res\n }\n\n async get(path: string, init?: HttpRequestInit) {\n return await this.send(path, init);\n }\n\n async post(path: string, body: RequestBody, init?: HttpRequestInit) {\n return await this.send(path, {\n ...init,\n method: \"POST\",\n body: body\n });\n }\n\n async put(path: string, body: RequestBody, init?: HttpRequestInit) {\n return await this.send(path, {\n ...init,\n method: \"PUT\",\n body: body\n });\n }\n\n async delete(path: string, init?: HttpRequestInit) {\n return await this.send(path, {\n ...init,\n method: \"DELETE\",\n });\n }\n}\n"],"names":[],"mappings":"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"}
|
package/include/lib/base64.js
CHANGED
|
@@ -1,2 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';var tslib_es6=require('../../node_modules/tslib/tslib.es6.js');/**
|
|
2
|
+
* Encodes a Uint8Array to Base64 (for browser or Node.js).
|
|
3
|
+
* @param data - The Uint8Array data to encode.
|
|
4
|
+
* @returns The Base64-encoded string.
|
|
5
|
+
*/
|
|
6
|
+
function encode(data) {
|
|
7
|
+
var base64 = "";
|
|
8
|
+
if (typeof window !== "undefined") {
|
|
9
|
+
base64 = btoa(String.fromCharCode.apply(String, tslib_es6.__spreadArray([], tslib_es6.__read(Array.from(data)), false)));
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
base64 = Buffer.from(data).toString("base64");
|
|
13
|
+
}
|
|
14
|
+
var paddingCount = (base64.match(/=+$/) || [''])[0].length;
|
|
15
|
+
if (paddingCount > 0) {
|
|
16
|
+
base64 = base64.replace(/=+$/, function () { return "$".concat(paddingCount); });
|
|
17
|
+
}
|
|
18
|
+
return base64;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Decodes a Base64 string to a Uint8Array (for browser or Node.js).
|
|
22
|
+
* @param base64String - The Base64 string to decode.
|
|
23
|
+
* @returns The decoded Uint8Array.
|
|
24
|
+
*/
|
|
25
|
+
function decode(base64) {
|
|
26
|
+
try {
|
|
27
|
+
base64 = base64.replace(/\$(\d)/, function (_match, count) { return '='.repeat(parseInt(count)); });
|
|
28
|
+
if (typeof window !== "undefined") {
|
|
29
|
+
var binaryString = atob(base64);
|
|
30
|
+
var byteArray = new Uint8Array(binaryString.length);
|
|
31
|
+
for (var i = 0; i < binaryString.length; i++) {
|
|
32
|
+
byteArray[i] = binaryString.charCodeAt(i);
|
|
33
|
+
}
|
|
34
|
+
return byteArray;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return Uint8Array.from(Buffer.from(base64, "base64"));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
throw new Error("Invalid Base64 string.");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
var base64 = {
|
|
45
|
+
encode: encode,
|
|
46
|
+
decode: decode
|
|
47
|
+
};module.exports=base64;//# sourceMappingURL=base64.js.map
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/include/lib/base64.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Encodes a Uint8Array to Base64 (for browser or Node.js).\n * @param data - The Uint8Array data to encode.\n * @returns The Base64-encoded string.\n */\nfunction encode(data: Uint8Array): string {\n let base64 = \"\";\n if (typeof window !== \"undefined\") {\n base64 = btoa(String.fromCharCode(...Array.from(data)));\n } else {\n base64 = Buffer.from(data).toString(\"base64\");\n }\n let paddingCount = (base64.match(/=+$/) || [''])[0].length;\n if (paddingCount > 0) {\n base64 = base64.replace(/=+$/, () => `$${paddingCount}`);\n }\n return base64\n}\n\n/**\n * Decodes a Base64 string to a Uint8Array (for browser or Node.js).\n * @param base64String - The Base64 string to decode.\n * @returns The decoded Uint8Array.\n */\nfunction decode(base64: string): Uint8Array {\n try {\n base64 = base64.replace(/\\$(\\d)/, (_match, count) => '='.repeat(parseInt(count)));\n if (typeof window !== \"undefined\") {\n const binaryString = atob(base64);\n const byteArray = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n byteArray[i] = binaryString.charCodeAt(i);\n }\n return byteArray;\n } else {\n return Uint8Array.from(Buffer.from(base64, \"base64\"));\n }\n } catch (error) {\n throw new Error(\"Invalid Base64 string.\");\n }\n}\n\nconst base64 = {\n encode,\n decode\n}\n\nexport default base64;"],
|
|
5
|
-
"mappings": "AAKA,SAASA,EAAOC,EAA0B,CACvC,IAAIC,EAAS,GACT,OAAO,OAAW,IACnBA,EAAS,KAAK,OAAO,aAAa,GAAG,MAAM,KAAKD,CAAI,CAAC,CAAC,EAEtDC,EAAS,OAAO,KAAKD,CAAI,EAAE,SAAS,QAAQ,EAE/C,IAAIE,GAAgBD,EAAO,MAAM,KAAK,GAAK,CAAC,EAAE,GAAG,CAAC,EAAE,OACpD,OAAIC,EAAe,IAChBD,EAASA,EAAO,QAAQ,MAAO,IAAM,IAAIC,CAAY,EAAE,GAEnDD,CACV,CAOA,SAASE,EAAOF,EAA4B,CACzC,GAAI,CAED,GADAA,EAASA,EAAO,QAAQ,SAAU,CAACG,EAAQC,IAAU,IAAI,OAAO,SAASA,CAAK,CAAC,CAAC,EAC5E,OAAO,OAAW,IAAa,CAChC,MAAMC,EAAe,KAAKL,CAAM,EAC1BM,EAAY,IAAI,WAAWD,EAAa,MAAM,EACpD,QAASE,EAAI,EAAGA,EAAIF,EAAa,OAAQE,IACtCD,EAAUC,CAAC,EAAIF,EAAa,WAAWE,CAAC,EAE3C,OAAOD,CACV,KACG,QAAO,WAAW,KAAK,OAAO,KAAKN,EAAQ,QAAQ,CAAC,CAE1D,MAAgB,CACb,MAAM,IAAI,MAAM,wBAAwB,CAC3C,CACH,CAEA,MAAMA,EAAS,CACZ,OAAAF,EACA,OAAAI,CACH,EAEA,IAAOM,EAAQR",
|
|
6
|
-
"names": ["encode", "data", "base64", "paddingCount", "decode", "_match", "count", "binaryString", "byteArray", "i", "base64_default"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"base64.js","sources":["../../../src/include/lib/base64.ts"],"sourcesContent":["/**\n * Encodes a Uint8Array to Base64 (for browser or Node.js).\n * @param data - The Uint8Array data to encode.\n * @returns The Base64-encoded string.\n */\nfunction encode(data: Uint8Array): string {\n let base64 = \"\";\n if (typeof window !== \"undefined\") {\n base64 = btoa(String.fromCharCode(...Array.from(data)));\n } else {\n base64 = Buffer.from(data).toString(\"base64\");\n }\n let paddingCount = (base64.match(/=+$/) || [''])[0].length;\n if (paddingCount > 0) {\n base64 = base64.replace(/=+$/, () => `$${paddingCount}`);\n }\n return base64\n}\n\n/**\n * Decodes a Base64 string to a Uint8Array (for browser or Node.js).\n * @param base64String - The Base64 string to decode.\n * @returns The decoded Uint8Array.\n */\nfunction decode(base64: string): Uint8Array {\n try {\n base64 = base64.replace(/\\$(\\d)/, (_match, count) => '='.repeat(parseInt(count)));\n if (typeof window !== \"undefined\") {\n const binaryString = atob(base64);\n const byteArray = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n byteArray[i] = binaryString.charCodeAt(i);\n }\n return byteArray;\n } else {\n return Uint8Array.from(Buffer.from(base64, \"base64\"));\n }\n } catch (error) {\n throw new Error(\"Invalid Base64 string.\");\n }\n}\n\nconst base64 = {\n encode,\n decode\n}\n\nexport default base64;"],"names":["__spreadArray","__read"],"mappings":"4EAAA;;;;AAIG;AACH,SAAS,MAAM,CAAC,IAAgB,EAAA;IAC7B,IAAI,MAAM,GAAG,EAAE;AACf,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAChC,QAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAnB,KAAA,CAAA,MAAM,EAAiBA,uBAAA,CAAA,EAAA,EAAAC,gBAAA,CAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAE;AACzD;AAAM,SAAA;AACJ,QAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC/C;AACD,IAAA,IAAI,YAAY,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;IAC1D,IAAI,YAAY,GAAG,CAAC,EAAE;AACnB,QAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,YAAM,EAAA,OAAA,WAAI,YAAY,CAAE,CAAlB,EAAkB,CAAC;AAC1D;AACD,IAAA,OAAO,MAAM;AAChB;AAEA;;;;AAIG;AACH,SAAS,MAAM,CAAC,MAAc,EAAA;IAC3B,IAAI;QACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAC,MAAM,EAAE,KAAK,EAAA,EAAK,OAAA,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA,EAAA,CAAC;AACjF,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAChC,YAAA,IAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;YACjC,IAAM,SAAS,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC;AACrD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,SAAS,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C;AACD,YAAA,OAAO,SAAS;AAClB;AAAM,aAAA;AACJ,YAAA,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACvD;AACH;AAAC,IAAA,OAAO,KAAK,EAAE;AACb,QAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AAC3C;AACJ;AAEA,IAAM,MAAM,GAAG;AACZ,IAAA,MAAM,EAAA,MAAA;AACN,IAAA,MAAM,EAAA;"}
|