securequ 1.0.9 → 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 CHANGED
@@ -210,4 +210,4 @@
210
210
  });
211
211
  };
212
212
  return SecurequClient;
213
- }());exports.SecurequClient=SecurequClient;//# sourceMappingURL=index.js.map
213
+ }());exports.SecurequClient=SecurequClient;exports.default=SecurequClient;//# sourceMappingURL=index.js.map
@@ -1 +1 @@
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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"}
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\nexport default SecurequClient;"],"names":["SecurequCache","__assign","__awaiter","__generator"],"mappings":"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"}
package/client/index.mjs CHANGED
@@ -210,4 +210,4 @@ import {__awaiter,__assign,__generator}from'../node_modules/tslib/tslib.es6.mjs'
210
210
  });
211
211
  };
212
212
  return SecurequClient;
213
- }());export{SecurequClient};//# sourceMappingURL=index.mjs.map
213
+ }());export{SecurequClient,SecurequClient as default};//# sourceMappingURL=index.mjs.map
@@ -1 +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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"}
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\nexport default SecurequClient;"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "securequ",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "main": "./index.js",
5
5
  "module": "./index.mjs",
6
6
  "types": "./index.d.ts",
@@ -28,6 +28,16 @@
28
28
  "import": "./index.mjs",
29
29
  "require": "./index.js",
30
30
  "types": "./index.d.ts"
31
+ },
32
+ "./server": {
33
+ "import": "./server/index.mjs",
34
+ "require": "./server/index.js",
35
+ "types": "./server/index.d.ts"
36
+ },
37
+ "./client": {
38
+ "import": "./client/index.mjs",
39
+ "require": "./client/index.js",
40
+ "types": "./client/index.d.ts"
31
41
  }
32
42
  }
33
43
  }
package/server/index.js CHANGED
@@ -184,4 +184,4 @@
184
184
  });
185
185
  };
186
186
  return SecurequServer;
187
- }());exports.SecurequServer=SecurequServer;//# sourceMappingURL=index.js.map
187
+ }());exports.SecurequServer=SecurequServer;exports.default=SecurequServer;//# sourceMappingURL=index.js.map
@@ -1 +1 @@
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}"],"names":["SecurequCache","__assign","match","__values"],"mappings":"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"}
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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"}
package/server/index.mjs CHANGED
@@ -184,4 +184,4 @@ import {__awaiter,__assign,__generator,__values}from'../node_modules/tslib/tslib
184
184
  });
185
185
  };
186
186
  return SecurequServer;
187
- }());export{SecurequServer};//# sourceMappingURL=index.mjs.map
187
+ }());export{SecurequServer,SecurequServer as default};//# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","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}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","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":[],"mappings":"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"}