insite-http 2.0.0 → 2.0.2

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/bun.lockb CHANGED
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"AACA,OAAO,IAA8B,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EACN,WAAW,EACX,OAAO,EAKP,MAAM,EACN,UAAU,EACV,OAAO,EACP,cAAc,EACd,MAAM,SAAS,CAAC;AASjB,qBAAa,gBAAgB;;gBAChB,EACX,IAAI,EACJ,GAAG,EACH,KAAK,EAAE,OAAe,EACtB,SAAS,EACT,MAAM,EACN,MAAW,EACX,QAAQ,EACR,EAAE,OAAO,EAAE,WAAW,GAAE,UAAU,EAAO;IA4D1C,OAAO,UAAS;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IA+DnC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAmBxF,kBAAkB,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAanF,aAAa,CAAC,UAAU,EAAE,UAAU;IAsBpC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM7C,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM5C,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM5C,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM9C,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;CAM/C"}
1
+ {"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"AACA,OAAO,IAA8B,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EACN,WAAW,EACX,OAAO,EAKP,MAAM,EACN,UAAU,EACV,OAAO,EACP,cAAc,EACd,MAAM,SAAS,CAAC;AASjB,qBAAa,gBAAgB;;gBAChB,EACX,IAAI,EACJ,GAAG,EACH,KAAK,EAAE,OAAe,EACtB,SAAS,EACT,MAAM,EACN,MAAW,EACX,QAAQ,EACR,EAAE,OAAO,EAAE,WAAW,GAAE,UAAU,EAAO;IA2D1C,OAAO,UAAS;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IA+DnC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM;IAmBxF,kBAAkB,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAanF,aAAa,CAAC,UAAU,EAAE,UAAU;IAsBpC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM7C,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM5C,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM5C,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAM9C,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;CAM/C"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- var h=class{listeners};var X=void 0;import S from"node:fs";import l from"node:path";import d from"node:zlib";var z={params:{[d.constants.BROTLI_PARAM_MODE]:d.constants.BROTLI_MODE_TEXT,[d.constants.BROTLI_PARAM_QUALITY]:11}},M={params:{[d.constants.BROTLI_PARAM_MODE]:d.constants.BROTLI_MODE_TEXT,[d.constants.BROTLI_PARAM_QUALITY]:4}},D={level:9},x={level:3};function y(n){return d.brotliCompressSync(n,z)}function R(n){return d.gzipSync(n,D)}function O(n){return n==="br"?d.createBrotliCompress(M):d.createGzip(x)}function v(n,e,t,r){let i=/\bbr\b/.test(n.headers["accept-encoding"]);t["Content-Encoding"]=i?"br":"gzip",e.writeHead(200,t).end(i?d.brotliCompressSync(r,M):d.gzipSync(r,x))}var I=[["js",{isText:!0,mimeType:"text/javascript"}],["css",{isText:!0,mimeType:"text/css"}],["ico",{mimeType:"image/x-icon"}],process.env.NODE_ENV==="development"?["css.map",{isText:!0,mimeType:"application/json"}]:null,process.env.NODE_ENV==="development"?["js.map",{isText:!0,mimeType:"application/json"}]:null,["jpg",{mimeType:"image/jpeg"}],["jpeg",{mimeType:"image/jpeg"}]].filter(Boolean);var P=[...process.env.NODE_ENV==="production"?["/index.js","/favicon.ico"]:[]];var G={mimeType:"application/octet-stream"},T=class extends h{constructor({src:e="",urlPrefix:t="",requestRegExp:r,extensions:i=I,resolved:s,restricted:a,preloaded:c}={}){if(super(),!l.isAbsolute(e)){let[,o]=process.argv;e=l.resolve(S.statSync(o).isDirectory()?o:l.dirname(o),e)}if(this.#e=e,this.#i=t,this.#r=new RegExp(`^${l.join("/",t,"/")}`),i)for(let o of i)o&&this.#p(...o);if(s)for(let o of s)o&&this.#d(...o);if(a)for(let o of a)o&&this.#c(o);if(c){c==="default"&&(c=P);for(let o of c)o&&this.#l(o)}this.listeners={GET:[[r??new RegExp(`^${l.join("/",this.#i,"/")}(\\w[^\\/]*/)*[^\\/]+\\.[^\\/]`),this.#m]]}}#e;#i;#r;#t=new Map;#n=new Map;#s=new Set;#o=new Map;#a(e){return this.#t.get(e.slice(Math.max(0,e.lastIndexOf(".")+1)))??G}#p(e,t){this.#t.set(e,{...t,name:e})}#d(e,t){this.#n.set(e,l.isAbsolute(t)?t:l.join(this.#e,t))}#c(e){this.#s.add(l.join(this.#e,e))}#l(e){e=this.#n.get(e)??l.join(this.#e,e);try{let{isText:t}=this.#a(e),r=S.readFileSync(e,t?"utf8":null);this.#o.set(e,t?{br:y(r),gzip:R(r)}:r)}catch(t){console.warn(`\u26A0\uFE0F inSite Static Server: Unable to preload ${e}`,`
2
- `,t)}}#m=(e,t)=>{let r=decodeURI(e.url).replace(this.#r,"").replaceAll("../","");if(r=this.#n.get(r)??l.join(this.#e,r),this.#s.has(r))return!1;if(!S.existsSync(r))return t.notFound();let{mimeType:i,isText:s}=this.#a(r),a=s?/\bbr\b/.test(e.headers["accept-encoding"])?"br":"gzip":null;t.writeHead(200,{"Content-Type":i+(s?"; charset=utf-8":""),...a&&{"Content-Encoding":a}});let c=this.#o.get(r);return c?t.end(s&&a?c[a]:c):new Promise(o=>{let p=S.createReadStream(r).on("error",()=>o(!1));a&&(p=p.pipe(O(a))),p.on("end",o),p.pipe(t)})}};import{isEmpty as N}from"@nesvet/n";var{INSITE_TITLE:$}=process.env,w={};for(let n in process.env)n.startsWith("INSITE_CLIENT_")&&(w[n.replace(/INSITE_CLIENT_/,"").toLowerCase()]=process.env[n]);var U={"Content-Type":"text/html; charset=utf-8"},b=class extends h{constructor({requestRegExp:e=/.*/,globals:t={},title:r=$??"inSite",css:i=[],rootId:s="root"}={}){super(),this.listeners={GET:[[e,this.#n]]},this.#e=r,this.#i=Array.isArray(i)?i:[i],this.#r=s,Object.assign(t,w),this.#t=`<!DOCTYPE html><html lang="ru"><head><meta charset="utf-8" /><meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width" /><title>${this.#e}</title>${this.#i.map(a=>`<link rel="stylesheet" href="${a}" />`).join("")}${N(t)?"":`<script>globalThis.__insite=${JSON.stringify(t)};</script>`}<script type="text/javascript" src="/index.js" defer></script></head><body><div id="${this.#r}"></div></body></html>`}#e;#i;#r;#t;#n=(e,t)=>v(e,t,U,this.#t)};import _ from"node:fs";import Y from"node:http";import V from"node:https";import{ServerResponse as F}from"node:http";var f=Symbol("inSiteServer"),u=Symbol("inSiteRequest");var g=class extends F{[f];[u];error(e,t){return this[f]._throw(this,e,t)}badRequest(e){return this.error(400,e)}unauthorized(e){return this.error(401,e)}forbidden(e){return this.error(403,e)}notFound(e){return this.error(404,e)}requestTimeout(e){return this.error(408,e)}gone(e){return this.error(410,e)}internalServerError(e){return this.error(500,e)}serviceUnavailable(e){return this.error(503,e)}};function H(n){return typeof Object.values(n)[0]=="object"}function L(n){return typeof Object.values(n)[0]=="function"}function j(n){return Array.isArray(n)}function A(n){return!Array.isArray(n)}var{INSITE_HTTP_SSL_CERT:q,INSITE_HTTP_SSL_KEY:C}=process.env,E=class{constructor({port:e,ssl:t,https:r=!!t,listeners:i,errors:s,server:a={},onListen:c},o=[]){if(this.isHTTPS=r,this.isHTTPS&&!t&&q&&C&&(t={cert:q,key:C}),t){if(!/^-{3,}BEGIN/.test(t.cert))try{t.cert=_.readFileSync(t.cert,"utf8")}catch{}if(!/^-{3,}BEGIN/.test(t.key))try{t.key=_.readFileSync(t.key,"utf8")}catch{}}else this.isHTTPS&&console.warn("\u26A0\uFE0F HTTPS server requires ssl.cert & ssl.key options");if(this.port=e??(this.isHTTPS?443:80),i)for(let p of Object.keys(i))for(let[m,B]of i[p])this.addRequestListener(p,m,B);if(s)for(let p of Object.keys(s)){let m=Number.parseInt(p);m&&(this.#t[m]?Object.assign(this.#t[m],s[m]):this.#t[m]=s[m])}if(o)for(let p of o)p&&this.addMiddleware(p);this.server=this.isHTTPS?V.createServer({...a,...t,ServerResponse:g},this.#r):Y.createServer({...a,ServerResponse:g},this.#r),this.server.listen(e,()=>c?c():this.#i())}isHTTPS=!1;port;server;#e={POST:[],GET:[],PUT:[],PATCH:[],DELETE:[]};#i(){console.info(`\u{1F310} inSite HTTP${this.isHTTPS?"S":""} Server is listening on`,this.port)}#r=async(e,t)=>{if(t[f]=this,t[u]=e,!("status"in e)){for(let[r,i]of this.#e[e.method])if(r.test(e.url)&&await i(e,t)!==!1)return}t.notFound()};#t={400:{content:"Bad Request"},401:{content:"Unauthorized"},403:{content:"Forbidden"},404:{content:"Not Found"},408:{content:"Request Timeout"},410:{content:"Gone"},500:{content:"Internal Server Error"},503:{content:"Service Unavailable"},default:{headers:{"Content-Type":"text/plain; charset=utf-8"},content:"",handler(e,t,{statusCode:r,headers:i,content:s}){return t.writeHead(r,i).end(s)}}};_throw(e,t,r){typeof r=="string"&&(r={content:r});let{handler:i,...s}={...this.#t.default,...this.#t[t],...r};return i?i(e[u],e,{...s,statusCode:t}):e}addRequestListener(e,t,r){if(typeof t=="string"&&(t=new RegExp(t)),e&&e!=="ALL")this.#e[e]?.push([t,r]);else for(let i of Object.keys(this.#e))this.addRequestListener(i,t,r);return this}addMiddleware(e){if(e instanceof h){for(let[t,r]of Object.entries(e.listeners))for(let[i,s]of r)this.addRequestListener(t,i,s);e.bindTo?.(this)}else if(j(e)){A(e)&&(e=[e]);for(let t of e)this.addRequestListener(...t.length===2?["GET",...t]:t)}else if(L(e))for(let[t,r]of Object.entries(e))this.addRequestListener("GET",t,r);else if(H(e))for(let[t,r]of Object.entries(e))for(let[i,s]of Object.entries(r))this.addRequestListener(t,i,s);return this}post(e,t){return this.addRequestListener("POST",e,t),this}get(e,t){return this.addRequestListener("GET",e,t),this}put(e,t){return this.addRequestListener("PUT",e,t),this}patch(e,t){return this.addRequestListener("PATCH",e,t),this}delete(e,t){return this.addRequestListener("DELETE",e,t),this}};var k=class extends E{constructor(e,t,r=[]){super(t,[new T(e),...r])}handleListen(){console.info(`\u{1F6D2} inSite Static HTTP${this.isHTTPS?"S":""} Server is listening on`,this.port)}};export{E as InSiteHTTPServer,X as InSiteInitialsMiddleware,h as InSiteServerMiddleware,T as InSiteStaticMiddleware,k as InSiteStaticServer,b as InSiteTemplateMiddleware};
1
+ var h=class{listeners};var X=void 0;import S from"node:fs";import l from"node:path";import p from"node:zlib";var z={params:{[p.constants.BROTLI_PARAM_MODE]:p.constants.BROTLI_MODE_TEXT,[p.constants.BROTLI_PARAM_QUALITY]:11}},M={params:{[p.constants.BROTLI_PARAM_MODE]:p.constants.BROTLI_MODE_TEXT,[p.constants.BROTLI_PARAM_QUALITY]:4}},D={level:9},x={level:3};function y(n){return p.brotliCompressSync(n,z)}function R(n){return p.gzipSync(n,D)}function O(n){return n==="br"?p.createBrotliCompress(M):p.createGzip(x)}function v(n,e,t,r){let i=/\bbr\b/.test(n.headers["accept-encoding"]);t["Content-Encoding"]=i?"br":"gzip",e.writeHead(200,t).end(i?p.brotliCompressSync(r,M):p.gzipSync(r,x))}var I=[["js",{isText:!0,mimeType:"text/javascript"}],["css",{isText:!0,mimeType:"text/css"}],["ico",{mimeType:"image/x-icon"}],process.env.NODE_ENV==="development"?["css.map",{isText:!0,mimeType:"application/json"}]:null,process.env.NODE_ENV==="development"?["js.map",{isText:!0,mimeType:"application/json"}]:null,["jpg",{mimeType:"image/jpeg"}],["jpeg",{mimeType:"image/jpeg"}]].filter(Boolean);var P=[...process.env.NODE_ENV==="production"?["/index.js","/favicon.ico"]:[]];var G={mimeType:"application/octet-stream"},T=class extends h{constructor({src:e="public",urlPrefix:t="",requestRegExp:r,extensions:i=I,resolved:s,restricted:a,preloaded:d="default"}={}){if(super(),!l.isAbsolute(e)){let[,o]=process.argv;e=l.resolve(S.statSync(o).isDirectory()?o:l.dirname(o),e)}if(this.#e=e,this.#i=t,this.#r=new RegExp(`^${l.join("/",t,"/")}`),i)for(let o of i)o&&this.#p(...o);if(s)for(let o of s)o&&this.#d(...o);if(a)for(let o of a)o&&this.#c(o);if(d){d==="default"&&(d=P);for(let o of d)o&&this.#l(o)}this.listeners={GET:[[r??new RegExp(`^${l.join("/",this.#i,"/")}(\\w[^\\/]*/)*[^\\/]+\\.[^\\/]`),this.#m]]}}#e;#i;#r;#t=new Map;#n=new Map;#s=new Set;#o=new Map;#a(e){return this.#t.get(e.slice(Math.max(0,e.lastIndexOf(".")+1)))??G}#p(e,t){this.#t.set(e,{...t,name:e})}#d(e,t){this.#n.set(e,l.isAbsolute(t)?t:l.join(this.#e,t))}#c(e){this.#s.add(l.join(this.#e,e))}#l(e){e=this.#n.get(e)??l.join(this.#e,e);try{let{isText:t}=this.#a(e),r=S.readFileSync(e,t?"utf8":null);this.#o.set(e,t?{br:y(r),gzip:R(r)}:r)}catch(t){console.warn(`\u26A0\uFE0F inSite Static Server: Unable to preload ${e}`,`
2
+ `,t)}}#m=(e,t)=>{let r=decodeURI(e.url).replace(this.#r,"").replaceAll("../","");if(r=this.#n.get(r)??l.join(this.#e,r),this.#s.has(r))return!1;if(!S.existsSync(r))return t.notFound();let{mimeType:i,isText:s}=this.#a(r),a=s?/\bbr\b/.test(e.headers["accept-encoding"])?"br":"gzip":null;t.writeHead(200,{"Content-Type":i+(s?"; charset=utf-8":""),...a&&{"Content-Encoding":a}});let d=this.#o.get(r);return d?t.end(s&&a?d[a]:d):new Promise(o=>{let c=S.createReadStream(r).on("error",()=>o(!1));a&&(c=c.pipe(O(a))),c.on("end",o),c.pipe(t)})}};import{isEmpty as N}from"@nesvet/n";var{INSITE_TITLE:$}=process.env,w={};for(let n in process.env)n.startsWith("INSITE_CLIENT_")&&(w[n.replace(/INSITE_CLIENT_/,"").toLowerCase()]=process.env[n]);var U={"Content-Type":"text/html; charset=utf-8"},b=class extends h{constructor({requestRegExp:e=/.*/,globals:t={},title:r=$??"inSite",css:i=[],rootId:s="root"}={}){super(),this.listeners={GET:[[e,this.#n]]},this.#e=r,this.#i=Array.isArray(i)?i:[i],this.#r=s,Object.assign(t,w),this.#t=`<!DOCTYPE html><html lang="ru"><head><meta charset="utf-8" /><meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width" /><title>${this.#e}</title>${this.#i.map(a=>`<link rel="stylesheet" href="${a}" />`).join("")}${N(t)?"":`<script>globalThis.__insite=${JSON.stringify(t)};</script>`}<script type="text/javascript" src="/index.js" defer></script></head><body><div id="${this.#r}"></div></body></html>`}#e;#i;#r;#t;#n=(e,t)=>v(e,t,U,this.#t)};import _ from"node:fs";import Y from"node:http";import V from"node:https";import{ServerResponse as F}from"node:http";var f=Symbol("inSiteServer"),u=Symbol("inSiteRequest");var g=class extends F{[f];[u];error(e,t){return this[f]._throw(this,e,t)}badRequest(e){return this.error(400,e)}unauthorized(e){return this.error(401,e)}forbidden(e){return this.error(403,e)}notFound(e){return this.error(404,e)}requestTimeout(e){return this.error(408,e)}gone(e){return this.error(410,e)}internalServerError(e){return this.error(500,e)}serviceUnavailable(e){return this.error(503,e)}};function H(n){return typeof Object.values(n)[0]=="object"}function L(n){return typeof Object.values(n)[0]=="function"}function j(n){return Array.isArray(n)}function A(n){return!Array.isArray(n)}var{INSITE_HTTP_SSL_CERT:q,INSITE_HTTP_SSL_KEY:C}=process.env,E=class{constructor({port:e,ssl:t,https:r=!!t,listeners:i,errors:s,server:a={},onListen:d},o=[]){if(this.isHTTPS=r,this.isHTTPS&&!t&&q&&C&&(t={cert:q,key:C}),t){if(!/^-{3,}BEGIN/.test(t.cert))try{t.cert=_.readFileSync(t.cert,"utf8")}catch{}if(!/^-{3,}BEGIN/.test(t.key))try{t.key=_.readFileSync(t.key,"utf8")}catch{}}else this.isHTTPS&&console.warn("\u26A0\uFE0F HTTPS server requires ssl.cert & ssl.key options");if(this.port=e??(this.isHTTPS?443:80),i)for(let c of Object.keys(i))for(let[m,B]of i[c])this.addRequestListener(c,m,B);if(s)for(let c of Object.keys(s)){let m=Number.parseInt(c);m&&(this.#t[m]?Object.assign(this.#t[m],s[m]):this.#t[m]=s[m])}if(o)for(let c of o)this.addMiddleware(c);this.server=this.isHTTPS?V.createServer({...a,...t,ServerResponse:g},this.#r):Y.createServer({...a,ServerResponse:g},this.#r),this.server.listen(e,()=>d?d():this.#i())}isHTTPS=!1;port;server;#e={POST:[],GET:[],PUT:[],PATCH:[],DELETE:[]};#i(){console.info(`\u{1F310} inSite HTTP${this.isHTTPS?"S":""} Server is listening on`,this.port)}#r=async(e,t)=>{if(t[f]=this,t[u]=e,!("status"in e)){for(let[r,i]of this.#e[e.method])if(r.test(e.url)&&await i(e,t)!==!1)return}t.notFound()};#t={400:{content:"Bad Request"},401:{content:"Unauthorized"},403:{content:"Forbidden"},404:{content:"Not Found"},408:{content:"Request Timeout"},410:{content:"Gone"},500:{content:"Internal Server Error"},503:{content:"Service Unavailable"},default:{headers:{"Content-Type":"text/plain; charset=utf-8"},content:"",handler(e,t,{statusCode:r,headers:i,content:s}){return t.writeHead(r,i).end(s)}}};_throw(e,t,r){typeof r=="string"&&(r={content:r});let{handler:i,...s}={...this.#t.default,...this.#t[t],...r};return i?i(e[u],e,{...s,statusCode:t}):e}addRequestListener(e,t,r){if(typeof t=="string"&&(t=new RegExp(t)),e&&e!=="ALL")this.#e[e]?.push([t,r]);else for(let i of Object.keys(this.#e))this.addRequestListener(i,t,r);return this}addMiddleware(e){if(e instanceof h){for(let[t,r]of Object.entries(e.listeners))for(let[i,s]of r)this.addRequestListener(t,i,s);e.bindTo?.(this)}else if(j(e)){A(e)&&(e=[e]);for(let t of e)this.addRequestListener(...t.length===2?["GET",...t]:t)}else if(L(e))for(let[t,r]of Object.entries(e))this.addRequestListener("GET",t,r);else if(H(e))for(let[t,r]of Object.entries(e))for(let[i,s]of Object.entries(r))this.addRequestListener(t,i,s);return this}post(e,t){return this.addRequestListener("POST",e,t),this}get(e,t){return this.addRequestListener("GET",e,t),this}put(e,t){return this.addRequestListener("PUT",e,t),this}patch(e,t){return this.addRequestListener("PATCH",e,t),this}delete(e,t){return this.addRequestListener("DELETE",e,t),this}};var k=class extends E{constructor(e,t,r=[]){super(t,[new T(e),...r])}handleListen(){console.info(`\u{1F6D2} inSite Static HTTP${this.isHTTPS?"S":""} Server is listening on`,this.port)}};export{E as InSiteHTTPServer,X as InSiteInitialsMiddleware,h as InSiteServerMiddleware,T as InSiteStaticMiddleware,k as InSiteStaticServer,b as InSiteTemplateMiddleware};
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/Middleware.ts", "../src/middlewares/Initials.ts", "../src/middlewares/Static/Static.ts", "../src/compression.ts", "../src/middlewares/Static/extensions.ts", "../src/middlewares/Static/preloaded.ts", "../src/middlewares/Template.ts", "../src/Server.ts", "../src/Response.ts", "../src/symbols.ts", "../src/types.ts", "../src/StaticServer.ts"],
4
- "sourcesContent": ["import { InSiteHTTPServer } from \"./Server\";\nimport { Handler, Method, RegExpOrString } from \"./types\";\n\n\nexport class InSiteServerMiddleware {\n\tlisteners!: Partial<Record<Method, [ RegExpOrString, Handler ][]>>;\n\tbindTo?(server: InSiteHTTPServer): void;\n}\n", "//#if _SERVER && _SSR\n// import { initialsMap } from \"@insite/subscriptions\";\n// import { handleRequestCompressed } from \"../compression\";\n// import { InSiteServerMiddleware } from \"../Middleware\";\n\n\n// const headers = { \"Content-Type\": \"text/javascript; charset=utf-8\" };\n\n\n// export class InSiteInitialsMiddleware extends InSiteServerMiddleware {\n// \tconstructor(options = {}) {\n// \t\tsuper();\n// \t\tconst {\n// \t\t\trequestRegExp = /^\\/initials\\/?\\?/\n// \t\t} = options;\n\n// \t\tthis.listeners = { GET: [\n// \t\t\t[ requestRegExp, this.handler ]\n// \t\t] };\n\n// \t}\n\n// \thandler = (request, response) => {\n// \t\tconst initials = initialsMap.getWithTimeout(request.url.split(\"?\")[1]);\n\n// \t\tif (initials)\n// \t\t\thandleRequestCompressed(request, response, headers, `window.__initials = [${initials.join()}];\\ndocument.currentScript.remove();`);\n// \t\telse\n// \t\t\treturn false;\n// \t};\n\n// }\n\n\n//#else\nexport const InSiteInitialsMiddleware = undefined;\n\n\n//#endif\n", "import fs from \"node:fs\";\nimport { IncomingMessage } from \"node:http\";\nimport path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { brotliPreloadSync, getCompressionStreamByEncoding, gzipPreloadSync } from \"../../compression\";\nimport { InSiteServerMiddleware } from \"../../Middleware\";\nimport { InSiteServerResponse } from \"../../Response\";\nimport { defaultExtensions } from \"./extensions\";\nimport { defaultPreloaded } from \"./preloaded\";\nimport { Extension, Options } from \"./types\";\n\n\nconst nullExtension = {\n\tmimeType: \"application/octet-stream\"\n};\n\n\nexport class InSiteStaticMiddleware extends InSiteServerMiddleware {\n\tconstructor({\n\t\tsrc = \"\",\n\t\turlPrefix = \"\",\n\t\trequestRegExp,\n\t\textensions = defaultExtensions,\n\t\tresolved,\n\t\trestricted,\n\t\tpreloaded\n\t}: Options = {}) {\n\t\tsuper();\n\t\t\n\t\tif (!path.isAbsolute(src)) {\n\t\t\tconst [ ,entryPoint ] = process.argv;\n\t\t\tsrc = path.resolve(fs.statSync(entryPoint).isDirectory() ? entryPoint : path.dirname(entryPoint), src);\n\t\t}\n\t\t\n\t\tthis.#src = src;\n\t\tthis.#urlPrefix = urlPrefix;\n\t\tthis.#urlPrefixRegExp = new RegExp(`^${path.join(\"/\", urlPrefix, \"/\")}`);\n\t\t\n\t\tif (extensions)\n\t\t\tfor (const extension of extensions)\n\t\t\t\tif (extension)\n\t\t\t\t\tthis.#addExtension(...extension);\n\t\t\n\t\tif (resolved)\n\t\t\tfor (const resolvee of resolved)\n\t\t\t\tif (resolvee)\n\t\t\t\t\tthis.#resolve(...resolvee);\n\t\t\n\t\tif (restricted)\n\t\t\tfor (const fileName of restricted)\n\t\t\t\tif (fileName)\n\t\t\t\t\tthis.#restrict(fileName);\n\t\t\n\t\tif (preloaded) {\n\t\t\tif (preloaded === \"default\")\n\t\t\t\tpreloaded = defaultPreloaded;\n\t\t\t\n\t\t\tfor (const fileName of preloaded)\n\t\t\t\tif (fileName)\n\t\t\t\t\tthis.#preload(fileName);\n\t\t}\n\t\t\n\t\tthis.listeners = { GET: [\n\t\t\t[ requestRegExp ?? new RegExp(`^${path.join(\"/\", this.#urlPrefix, \"/\")}(\\\\w[^\\\\/]*/)*[^\\\\/]+\\\\.[^\\\\/]`), this.#handler ]\n\t\t] };\n\t\t\n\t}\n\t\n\t#src;\n\t#urlPrefix;\n\t#urlPrefixRegExp;\n\t\n\t#extensions = new Map();\n\t\n\t#resolved = new Map();\n\t\n\t#restricted = new Set();\n\t\n\t#preloaded = new Map();\n\t\n\t#getExtensionBy(fileName: string) {\n\t\treturn this.#extensions.get(fileName.slice(Math.max(0, fileName.lastIndexOf(\".\") + 1))) ?? nullExtension;\n\t}\n\t\n\t#addExtension(name: string, extension: Extension[1]) {\n\t\tthis.#extensions.set(name, { ...extension, name });\n\t\t\n\t}\n\t\n\t#resolve(url: string, fileName: string) {\n\t\tthis.#resolved.set(url, path.isAbsolute(fileName) ? fileName : path.join(this.#src, fileName));\n\t\t\n\t}\n\t\n\t#restrict(fileName: string) {\n\t\tthis.#restricted.add(path.join(this.#src, fileName));\n\t\t\n\t}\n\t\n\t#preload(fileName: string) {\n\t\tfileName = this.#resolved.get(fileName) ?? path.join(this.#src, fileName);\n\t\t\n\t\ttry {\n\t\t\tconst { isText } = this.#getExtensionBy(fileName);\n\t\t\tconst fileData = fs.readFileSync(fileName, isText ? \"utf8\" : null);\n\t\t\tthis.#preloaded.set(fileName, isText ? {\n\t\t\t\tbr: brotliPreloadSync(fileData),\n\t\t\t\tgzip: gzipPreloadSync(fileData)\n\t\t\t} : fileData);\n\t\t} catch (error) {\n\t\t\tconsole.warn(`\u26A0\uFE0F inSite Static Server: Unable to preload ${fileName}`, \"\\n\", error);\n\t\t}\n\t\t\n\t}\n\t\n\t#handler = (request: IncomingMessage, response: InSiteServerResponse) => {\n\t\tlet fileName = decodeURI(request.url!).replace(this.#urlPrefixRegExp, \"\").replaceAll(\"../\", \"\");\n\t\tfileName = this.#resolved.get(fileName) ?? path.join(this.#src, fileName);\n\t\t\n\t\tif (this.#restricted.has(fileName))\n\t\t\treturn false;\n\t\t\n\t\tif (!fs.existsSync(fileName))\n\t\t\treturn response.notFound();\n\t\t\n\t\tconst { mimeType, isText } = this.#getExtensionBy(fileName);\n\t\tconst contentEncoding = isText ? /\\bbr\\b/.test(request.headers[\"accept-encoding\"] as string) ? \"br\" : \"gzip\" : null;\n\t\t\n\t\tresponse.writeHead(200, {\n\t\t\t\"Content-Type\": mimeType + (isText ? \"; charset=utf-8\" : \"\"),\n\t\t\t...contentEncoding && { \"Content-Encoding\": contentEncoding }\n\t\t});\n\t\t\n\t\tconst preloaded = this.#preloaded.get(fileName);\n\t\t\n\t\tif (preloaded)\n\t\t\treturn response.end(isText && contentEncoding ? preloaded[contentEncoding] : preloaded);\n\t\t\n\t\treturn new Promise(resolve => {\n\t\t\tlet stream: Readable = fs.createReadStream(fileName).on(\"error\", () => resolve(false));\n\t\t\t\n\t\t\tif (contentEncoding)\n\t\t\t\tstream = stream.pipe(getCompressionStreamByEncoding(contentEncoding));\n\t\t\t\n\t\t\tstream.on(\"end\", resolve);\n\t\t\t\n\t\t\tstream.pipe(response);\n\t\t\t\n\t\t});\n\t};\n\t\n}\n", "import { IncomingMessage, OutgoingHttpHeaders } from \"node:http\";\nimport zlib, { InputType } from \"node:zlib\";\nimport { InSiteServerResponse } from \"./Response\";\n\n\nconst brotliPreloadOptions = {\n\tparams: {\n\t\t[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,\n\t\t[zlib.constants.BROTLI_PARAM_QUALITY]: 11\n\t}\n};\n\nconst brotliRuntimeOptions = {\n\tparams: {\n\t\t[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,\n\t\t[zlib.constants.BROTLI_PARAM_QUALITY]: 4\n\t}\n};\n\nconst gzipPreloadOptions = {\n\tlevel: 9\n};\n\nconst gzipRuntimeOptions = {\n\tlevel: 3\n};\n\n\nexport function brotliPreloadSync(data: InputType) {\n\treturn zlib.brotliCompressSync(data, brotliPreloadOptions);\n}\n\nexport function gzipPreloadSync(data: InputType) {\n\treturn zlib.gzipSync(data, gzipPreloadOptions);\n}\n\nexport function getCompressionStreamByEncoding(contentEncoding: \"br\" | \"gzip\") {\n\treturn contentEncoding === \"br\" ? zlib.createBrotliCompress(brotliRuntimeOptions) : zlib.createGzip(gzipRuntimeOptions);\n}\n\nexport function handleRequestCompressed(request: IncomingMessage, response: InSiteServerResponse, headers: OutgoingHttpHeaders, data: InputType) {\n\tconst isBrotliAccepted = /\\bbr\\b/.test(request.headers[\"accept-encoding\"] as string);\n\theaders[\"Content-Encoding\"] = isBrotliAccepted ? \"br\" : \"gzip\";\n\tresponse.writeHead(200, headers).end(isBrotliAccepted ? zlib.brotliCompressSync(data, brotliRuntimeOptions) : zlib.gzipSync(data, gzipRuntimeOptions));\n\t\n}\n", "import { Extension } from \"./types\";\n\n\nexport const defaultExtensions = [\n\t\n\t[ \"js\", {\n\t\tisText: true,\n\t\tmimeType: \"text/javascript\"\n\t} ],\n\t\n\t[ \"css\", {\n\t\tisText: true,\n\t\tmimeType: \"text/css\"\n\t} ],\n\t\n\t[ \"ico\", {\n\t\tmimeType: \"image/x-icon\"\n\t} ],\n\t\n\tprocess.env.NODE_ENV === \"development\" ? [ \"css.map\", {\n\t\tisText: true,\n\t\tmimeType: \"application/json\"\n\t} ] : null,\n\t\n\tprocess.env.NODE_ENV === \"development\" ? [ \"js.map\", {\n\t\tisText: true,\n\t\tmimeType: \"application/json\"\n\t} ] : null,\n\t\n\t[ \"jpg\", {\n\t\tmimeType: \"image/jpeg\"\n\t} ],\n\t\n\t[ \"jpeg\", {\n\t\tmimeType: \"image/jpeg\"\n\t} ]\n\t\n].filter(Boolean) as Extension[];\n", "export const defaultPreloaded = [\n\t...process.env.NODE_ENV === \"production\" ? [\n\t\t//#if _SSR\n\t\t// \"/index.css\",\n\t\t//#endif\n\t\t\"/index.js\",\n\t\t\"/favicon.ico\"\n\t] : []\n];\n", "import { IncomingMessage } from \"node:http\";\nimport { isEmpty } from \"@nesvet/n\";\nimport { handleRequestCompressed } from \"../compression\";\nimport { InSiteServerMiddleware } from \"../Middleware\";\nimport { InSiteServerResponse } from \"../Response\";\n\n\nconst { INSITE_TITLE } = process.env;\n\nconst envGlobals: Record<string, unknown> = {};\nfor (const key in process.env)\n\tif (key.startsWith(\"INSITE_CLIENT_\"))\n\t\tenvGlobals[key.replace(/INSITE_CLIENT_/, \"\").toLowerCase()] = process.env[key];\n\nconst headers = { \"Content-Type\": \"text/html; charset=utf-8\" };\n\n\ntype Options = {\n\trequestRegExp?: RegExp;\n\tglobals?: Record<string, unknown>;\n\ttitle?: string;\n\tcss?: string | string[];\n\trootId?: string;\n};\n\nexport type { Options as TemplateMiddlewareOptions };\n\n\nexport class InSiteTemplateMiddleware extends InSiteServerMiddleware {\n\tconstructor({\n\t\trequestRegExp = /.*/,\n\t\tglobals = {},\n\t\ttitle = INSITE_TITLE ?? \"inSite\",\n\t\tcss = [],\n\t\trootId = \"root\"\n\t}: Options = {}) {\n\t\tsuper();\n\t\t\n\t\tthis.listeners = { GET: [\n\t\t\t[ requestRegExp, this.#handler ]\n\t\t] };\n\t\t\n\t\tthis.#title = title;\n\t\tthis.#css = Array.isArray(css) ? css : [ css ];\n\t\tthis.#rootId = rootId;\n\t\t\n\t\tObject.assign(globals, envGlobals);\n\t\t\n\t\tthis.#html =\n\t\t\t\"<!DOCTYPE html>\" +\n\t\t\t\"<html lang=\\\"ru\\\">\" +\n\t\t\t\"<head>\" +\n\t\t\t\"<meta charset=\\\"utf-8\\\" />\" +\n\t\t\t\"<meta name=\\\"viewport\\\" content=\\\"minimum-scale=1, initial-scale=1, width=device-width\\\" />\" +\n\t\t\t`<title>${this.#title}</title>` +\n\t\t\t`${this.#css.map(fileName => `<link rel=\"stylesheet\" href=\"${fileName}\" />`).join(\"\")}` +\n\t\t\t`${isEmpty(globals) ? \"\" : `<script>globalThis.__insite=${JSON.stringify(globals)};</script>`}` +\n\t\t\t\"<script type=\\\"text/javascript\\\" src=\\\"/index.js\\\" defer></script>\" +\n\t\t\t\"</head>\" +\n\t\t\t\"<body>\" +\n\t\t\t`<div id=\"${this.#rootId}\">` +\n\t\t\t\"</div>\" +\n\t\t\t\"</body>\" +\n\t\t\t\"</html>\";\n\t\t\n\t}\n\t\n\t#title;\n\t#css;\n\t#rootId;\n\t#html;\n\t\n\t#handler = (request: IncomingMessage, response: InSiteServerResponse) =>\n\t\thandleRequestCompressed(request, response, headers, this.#html);\n\t\n}\n", "import fs from \"node:fs\";\nimport http, { type IncomingMessage } from \"node:http\";\nimport https from \"node:https\";\nimport { InSiteServerMiddleware } from \"./Middleware\";\nimport { InSiteServerResponse } from \"./Response\";\nimport { inSiteRequestSymbol, inSiteServerSymbol } from \"./symbols\";\nimport {\n\tErrorParams,\n\tHandler,\n\tisMiddlewareMethodMap,\n\tisMiddlewareRegExpStringMap,\n\tisMiddlewareTuple,\n\tisMiddlewareTupleOrArray,\n\tMethod,\n\tMiddleware,\n\tOptions,\n\tRegExpOrString\n} from \"./types\";\n\n\nconst {\n\tINSITE_HTTP_SSL_CERT,\n\tINSITE_HTTP_SSL_KEY\n} = process.env;\n\n\nexport class InSiteHTTPServer {\n\tconstructor({\n\t\tport,\n\t\tssl,\n\t\thttps: isHTTPS = !!ssl,\n\t\tlisteners,\n\t\terrors,\n\t\tserver = {},\n\t\tonListen\n\t}: Options, middlewares: Middleware[] = []) {\n\t\t\n\t\tthis.isHTTPS = isHTTPS;\n\t\t\n\t\tif (this.isHTTPS && !ssl && INSITE_HTTP_SSL_CERT && INSITE_HTTP_SSL_KEY)\n\t\t\tssl = {\n\t\t\t\tcert: INSITE_HTTP_SSL_CERT,\n\t\t\t\tkey: INSITE_HTTP_SSL_KEY\n\t\t\t};\n\t\t\n\t\tif (ssl) {\n\t\t\tif (!/^-{3,}BEGIN/.test(ssl.cert))\n\t\t\t\ttry {\n\t\t\t\t\tssl.cert = fs.readFileSync(ssl.cert, \"utf8\");\n\t\t\t\t} catch {}\n\t\t\tif (!/^-{3,}BEGIN/.test(ssl.key))\n\t\t\t\ttry {\n\t\t\t\t\tssl.key = fs.readFileSync(ssl.key, \"utf8\");\n\t\t\t\t} catch {}\n\t\t} else if (this.isHTTPS)\n\t\t\tconsole.warn(\"\u26A0\uFE0F HTTPS server requires ssl.cert & ssl.key options\");\n\t\t\n\t\tthis.port = port ?? (this.isHTTPS ? 443 : 80);\n\t\t\n\t\tif (listeners)\n\t\t\tfor (const method of Object.keys(listeners) as (\"ALL\" | Method)[])\n\t\t\t\tfor (const [ regExp, handler ] of listeners[method])\n\t\t\t\t\tthis.addRequestListener(method, regExp, handler);\n\t\t\n\t\tif (errors)\n\t\t\tfor (const statusCodeString of Object.keys(errors)) {\n\t\t\t\tconst statusCode = Number.parseInt(statusCodeString);\n\t\t\t\tif (statusCode)\n\t\t\t\t\tif (this.#errors[statusCode])\n\t\t\t\t\t\tObject.assign(this.#errors[statusCode], errors[statusCode]);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.#errors[statusCode] = errors[statusCode];\n\t\t\t}\n\t\t\n\t\tif (middlewares)\n\t\t\tfor (const middleware of middlewares)\n\t\t\t\tif (middleware)\n\t\t\t\t\tthis.addMiddleware(middleware);\n\t\t\n\t\tthis.server =\n\t\t\tthis.isHTTPS ?\n\t\t\t\thttps.createServer({\n\t\t\t\t\t...server,\n\t\t\t\t\t...ssl,\n\t\t\t\t\tServerResponse: InSiteServerResponse\n\t\t\t\t}, this.#requestListener) :\n\t\t\t\thttp.createServer({\n\t\t\t\t\t...server,\n\t\t\t\t\tServerResponse: InSiteServerResponse\n\t\t\t\t}, this.#requestListener);\n\t\t\n\t\tthis.server.listen(port, () => onListen ? onListen() : this.#handleListen());\n\t\t\n\t}\n\t\n\tisHTTPS = false;\n\tport: number;\n\tserver: http.Server | https.Server;\n\t\n\t#listeners: Record<Method, [ RegExp, Handler ][]> = {\n\t\tPOST: [],\n\t\tGET: [],\n\t\tPUT: [],\n\t\tPATCH: [],\n\t\tDELETE: []\n\t};\n\t\n\t#handleListen() {\n\t\t\n\t\tconsole.info(`\uD83C\uDF10 inSite HTTP${this.isHTTPS ? \"S\" : \"\"} Server is listening on`, this.port);\n\t\t\n\t}\n\t\n\t#requestListener = async (request: IncomingMessage, response: InSiteServerResponse) => {\n\t\tresponse[inSiteServerSymbol] = this;\n\t\tresponse[inSiteRequestSymbol] = request;\n\t\t\n\t\tif (!(\"status\" in request))\n\t\t\tfor (const [ regExp, handler ] of this.#listeners[request.method as Method])\n\t\t\t\tif (regExp.test(request.url!) && await handler(request, response) !== false)\n\t\t\t\t\treturn;\n\t\t\n\t\tresponse.notFound();\n\t\t\n\t};\n\t\n\t#errors: Record<\"default\" | number, ErrorParams> = {\n\t\t400: {\n\t\t\tcontent: \"Bad Request\"\n\t\t},\n\t\t401: {\n\t\t\tcontent: \"Unauthorized\"\n\t\t},\n\t\t403: {\n\t\t\tcontent: \"Forbidden\"\n\t\t},\n\t\t404: {\n\t\t\tcontent: \"Not Found\"\n\t\t},\n\t\t408: {\n\t\t\tcontent: \"Request Timeout\"\n\t\t},\n\t\t410: {\n\t\t\tcontent: \"Gone\"\n\t\t},\n\t\t500: {\n\t\t\tcontent: \"Internal Server Error\"\n\t\t},\n\t\t503: {\n\t\t\tcontent: \"Service Unavailable\"\n\t\t},\n\t\tdefault: {\n\t\t\theaders: { \"Content-Type\": \"text/plain; charset=utf-8\" },\n\t\t\tcontent: \"\",\n\t\t\thandler(request, response, { statusCode, headers, content }) {\n\t\t\t\treturn response.writeHead(statusCode, headers).end(content);\n\t\t\t}\n\t\t}\n\t};\n\t\n\t_throw(response: InSiteServerResponse, statusCode: number, params?: ErrorParams | string) {\n\t\tif (typeof params == \"string\")\n\t\t\tparams = { content: params };\n\t\t\n\t\tconst {\n\t\t\thandler,\n\t\t\t...restParams\n\t\t} = {\n\t\t\t...this.#errors.default,\n\t\t\t...this.#errors[statusCode],\n\t\t\t...params\n\t\t};\n\t\t\n\t\treturn handler ? handler(response[inSiteRequestSymbol], response, {\n\t\t\t...restParams,\n\t\t\tstatusCode\n\t\t}) : response;\n\t}\n\t\n\taddRequestListener(method: \"ALL\" | Method, regExp: RegExpOrString, handler: Handler) {\n\t\tif (typeof regExp == \"string\")\n\t\t\tregExp = new RegExp(regExp);\n\t\t\n\t\tif (method && method !== \"ALL\")\n\t\t\tthis.#listeners[method]?.push([ regExp, handler ]);\n\t\telse\n\t\t\tfor (const specificMethod of Object.keys(this.#listeners) as Method[])\n\t\t\t\tthis.addRequestListener(specificMethod, regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\taddMiddleware(middleware: Middleware) {\n\t\tif (middleware instanceof InSiteServerMiddleware) {\n\t\t\tfor (const [ method, regExpOrStringArrayMap ] of Object.entries(middleware.listeners))\n\t\t\t\tfor (const [ regExpOrString, handler ] of regExpOrStringArrayMap)\n\t\t\t\t\tthis.addRequestListener(method as Method, regExpOrString, handler);\n\t\t\tmiddleware.bindTo?.(this);\n\t\t} else if (isMiddlewareTupleOrArray(middleware)) {\n\t\t\tif (isMiddlewareTuple(middleware))\n\t\t\t\tmiddleware = [ middleware ];\n\t\t\tfor (const params of middleware)\n\t\t\t\tthis.addRequestListener(...params.length === 2 ? [ \"GET\", ...params ] as const : params);\n\t\t} else if (isMiddlewareRegExpStringMap(middleware))\n\t\t\tfor (const [ key, value ] of Object.entries(middleware))\n\t\t\t\tthis.addRequestListener(\"GET\", key, value);\n\t\telse if (isMiddlewareMethodMap(middleware))\n\t\t\tfor (const [ method, regExpStringMap ] of Object.entries(middleware))\n\t\t\t\tfor (const [ regExpString, handler ] of Object.entries(regExpStringMap))\n\t\t\t\t\tthis.addRequestListener(method as Method, regExpString, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tpost(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"POST\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tget(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"GET\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tput(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"PUT\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tpatch(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"PATCH\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tdelete(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"DELETE\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n}\n", "import { type IncomingMessage, ServerResponse } from \"node:http\";\nimport { inSiteRequestSymbol, inSiteServerSymbol } from \"./symbols\";\nimport type { InSiteHTTPServer } from \"./Server\";\nimport type { ErrorParams } from \"./types\";\n\n\nexport class InSiteServerResponse<Request extends IncomingMessage = IncomingMessage> extends ServerResponse<Request> {\n\t\n\t[inSiteServerSymbol]!: InSiteHTTPServer;\n\t[inSiteRequestSymbol]!: IncomingMessage;\n\t\n\terror(statusCode: number, params?: ErrorParams) {\n\t\treturn this[inSiteServerSymbol]._throw(this, statusCode, params);\n\t}\n\t\n\tbadRequest(params?: ErrorParams) {\n\t\treturn this.error(400, params);\n\t}\n\t\n\tunauthorized(params?: ErrorParams) {\n\t\treturn this.error(401, params);\n\t}\n\t\n\tforbidden(params?: ErrorParams) {\n\t\treturn this.error(403, params);\n\t}\n\t\n\tnotFound(params?: ErrorParams) {\n\t\treturn this.error(404, params);\n\t}\n\t\n\trequestTimeout(params?: ErrorParams) {\n\t\treturn this.error(408, params);\n\t}\n\t\n\tgone(params?: ErrorParams) {\n\t\treturn this.error(410, params);\n\t}\n\t\n\tinternalServerError(params?: ErrorParams) {\n\t\treturn this.error(500, params);\n\t}\n\t\n\tserviceUnavailable(params?: ErrorParams) {\n\t\treturn this.error(503, params);\n\t}\n\t\n}\n", "export const inSiteServerSymbol = Symbol(\"inSiteServer\");\nexport const inSiteRequestSymbol = Symbol(\"inSiteRequest\");\n", "import type {\n\tServerOptions as HTTPServerOptions,\n\tIncomingMessage,\n\tOutgoingHttpHeader,\n\tOutgoingHttpHeaders\n} from \"node:http\";\nimport type { ServerOptions as HTTPSServerOptions } from \"node:https\";\nimport { InSiteServerMiddleware } from \"./Middleware\";\nimport type { InSiteServerResponse } from \"./Response\";\n\n\nexport type ErrorParams = {\n\theaders?: OutgoingHttpHeader[] | OutgoingHttpHeaders;\n\tcontent: string;\n\thandler?(request: IncomingMessage, response: InSiteServerResponse, errorParams: { statusCode: number } & Omit<ErrorParams, \"handler\">): InSiteServerResponse;\n};\n\nexport type Method = \"DELETE\" | \"GET\" | \"PATCH\" | \"POST\" | \"PUT\";\n\nexport type Handler = (request: IncomingMessage, response: InSiteServerResponse) => unknown;\n\nexport type Options = {\n\tport?: number;\n\tssl?: {\n\t\tcert: string;\n\t\tkey: string;\n\t};\n\thttps?: boolean;\n\tlisteners?: Record<\"ALL\" | Method, [ RegExp, Handler ][]>;\n\terrors?: Record<\"default\" | number, ErrorParams>;\n\tserver?: HTTPServerOptions | HTTPSServerOptions;\n\tonListen?: () => void;\n};\n\nexport type RegExpOrString = RegExp | string;\n\ntype MiddlewareTuple = readonly [ Method, RegExpOrString, Handler ] | readonly [ RegExpOrString, Handler ];\n\ntype MiddlewareRegExpStringMap = Record<string, Handler>;\n\ntype MiddlewareMethodMap = Record<Method, Record<string, Handler>>;\n\nexport type Middleware =\n\tInSiteServerMiddleware |\n\tMiddlewareMethodMap |\n\tMiddlewareRegExpStringMap |\n\tMiddlewareTuple |\n\tMiddlewareTuple[];\n\nexport function isMiddlewareMethodMap(middleware: Middleware): middleware is MiddlewareMethodMap {\n\treturn typeof Object.values(middleware)[0] == \"object\";\n}\n\nexport function isMiddlewareRegExpStringMap(middleware: Middleware): middleware is MiddlewareRegExpStringMap {\n\treturn typeof Object.values(middleware)[0] == \"function\";\n}\n\nexport function isMiddlewareTupleOrArray(middleware: Middleware): middleware is MiddlewareTuple | MiddlewareTuple[] {\n\treturn Array.isArray(middleware);\n}\n\nexport function isMiddlewareTuple(middleware: MiddlewareTuple | MiddlewareTuple[]): middleware is MiddlewareTuple {\n\treturn !Array.isArray(middleware);\n}\n", "import { InSiteStaticMiddleware, StaticMiddlewareOptions } from \"./middlewares/Static\";\nimport { InSiteHTTPServer } from \"./Server\";\nimport { Middleware, Options } from \"./types\";\n\n\nexport class InSiteStaticServer extends InSiteHTTPServer {\n\tconstructor(options: StaticMiddlewareOptions, serverOptions: Options, middlewares: Middleware[] = []) {\n\t\tsuper(serverOptions, [\n\t\t\tnew InSiteStaticMiddleware(options),\n\t\t\t...middlewares\n\t\t]);\n\t\t\n\t}\n\t\n\thandleListen() {\n\t\t\n\t\tconsole.info(`\uD83D\uDED2 inSite Static HTTP${this.isHTTPS ? \"S\" : \"\"} Server is listening on`, this.port);\n\t\t\n\t}\n\t\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { InSiteHTTPServer } from \"./Server\";\nimport { Handler, Method, RegExpOrString } from \"./types\";\n\n\nexport class InSiteServerMiddleware {\n\tlisteners!: Partial<Record<Method, [ RegExpOrString, Handler ][]>>;\n\tbindTo?(server: InSiteHTTPServer): void;\n}\n", "//#if _SERVER && _SSR\n// import { initialsMap } from \"@insite/subscriptions\";\n// import { handleRequestCompressed } from \"../compression\";\n// import { InSiteServerMiddleware } from \"../Middleware\";\n\n\n// const headers = { \"Content-Type\": \"text/javascript; charset=utf-8\" };\n\n\n// export class InSiteInitialsMiddleware extends InSiteServerMiddleware {\n// \tconstructor(options = {}) {\n// \t\tsuper();\n// \t\tconst {\n// \t\t\trequestRegExp = /^\\/initials\\/?\\?/\n// \t\t} = options;\n\n// \t\tthis.listeners = { GET: [\n// \t\t\t[ requestRegExp, this.handler ]\n// \t\t] };\n\n// \t}\n\n// \thandler = (request, response) => {\n// \t\tconst initials = initialsMap.getWithTimeout(request.url.split(\"?\")[1]);\n\n// \t\tif (initials)\n// \t\t\thandleRequestCompressed(request, response, headers, `window.__initials = [${initials.join()}];\\ndocument.currentScript.remove();`);\n// \t\telse\n// \t\t\treturn false;\n// \t};\n\n// }\n\n\n//#else\nexport const InSiteInitialsMiddleware = undefined;\n\n\n//#endif\n", "import fs from \"node:fs\";\nimport { IncomingMessage } from \"node:http\";\nimport path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { brotliPreloadSync, getCompressionStreamByEncoding, gzipPreloadSync } from \"../../compression\";\nimport { InSiteServerMiddleware } from \"../../Middleware\";\nimport { InSiteServerResponse } from \"../../Response\";\nimport { defaultExtensions } from \"./extensions\";\nimport { defaultPreloaded } from \"./preloaded\";\nimport { Extension, Options } from \"./types\";\n\n\nconst nullExtension = {\n\tmimeType: \"application/octet-stream\"\n};\n\n\nexport class InSiteStaticMiddleware extends InSiteServerMiddleware {\n\tconstructor({\n\t\tsrc = \"public\",\n\t\turlPrefix = \"\",\n\t\trequestRegExp,\n\t\textensions = defaultExtensions,\n\t\tresolved,\n\t\trestricted,\n\t\tpreloaded = \"default\"\n\t}: Options = {}) {\n\t\tsuper();\n\t\t\n\t\tif (!path.isAbsolute(src)) {\n\t\t\tconst [ , entryPoint ] = process.argv;\n\t\t\tsrc = path.resolve(fs.statSync(entryPoint).isDirectory() ? entryPoint : path.dirname(entryPoint), src);\n\t\t}\n\t\t\n\t\tthis.#src = src;\n\t\tthis.#urlPrefix = urlPrefix;\n\t\tthis.#urlPrefixRegExp = new RegExp(`^${path.join(\"/\", urlPrefix, \"/\")}`);\n\t\t\n\t\tif (extensions)\n\t\t\tfor (const extension of extensions)\n\t\t\t\tif (extension)\n\t\t\t\t\tthis.#addExtension(...extension);\n\t\t\n\t\tif (resolved)\n\t\t\tfor (const resolvee of resolved)\n\t\t\t\tif (resolvee)\n\t\t\t\t\tthis.#resolve(...resolvee);\n\t\t\n\t\tif (restricted)\n\t\t\tfor (const fileName of restricted)\n\t\t\t\tif (fileName)\n\t\t\t\t\tthis.#restrict(fileName);\n\t\t\n\t\tif (preloaded) {\n\t\t\tif (preloaded === \"default\")\n\t\t\t\tpreloaded = defaultPreloaded;\n\t\t\t\n\t\t\tfor (const fileName of preloaded)\n\t\t\t\tif (fileName)\n\t\t\t\t\tthis.#preload(fileName);\n\t\t}\n\t\t\n\t\tthis.listeners = { GET: [\n\t\t\t[ requestRegExp ?? new RegExp(`^${path.join(\"/\", this.#urlPrefix, \"/\")}(\\\\w[^\\\\/]*/)*[^\\\\/]+\\\\.[^\\\\/]`), this.#handler ]\n\t\t] };\n\t\t\n\t}\n\t\n\t#src;\n\t#urlPrefix;\n\t#urlPrefixRegExp;\n\t\n\t#extensions = new Map();\n\t\n\t#resolved = new Map();\n\t\n\t#restricted = new Set();\n\t\n\t#preloaded = new Map();\n\t\n\t#getExtensionBy(fileName: string) {\n\t\treturn this.#extensions.get(fileName.slice(Math.max(0, fileName.lastIndexOf(\".\") + 1))) ?? nullExtension;\n\t}\n\t\n\t#addExtension(name: string, extension: Extension[1]) {\n\t\tthis.#extensions.set(name, { ...extension, name });\n\t\t\n\t}\n\t\n\t#resolve(url: string, fileName: string) {\n\t\tthis.#resolved.set(url, path.isAbsolute(fileName) ? fileName : path.join(this.#src, fileName));\n\t\t\n\t}\n\t\n\t#restrict(fileName: string) {\n\t\tthis.#restricted.add(path.join(this.#src, fileName));\n\t\t\n\t}\n\t\n\t#preload(fileName: string) {\n\t\tfileName = this.#resolved.get(fileName) ?? path.join(this.#src, fileName);\n\t\t\n\t\ttry {\n\t\t\tconst { isText } = this.#getExtensionBy(fileName);\n\t\t\tconst fileData = fs.readFileSync(fileName, isText ? \"utf8\" : null);\n\t\t\tthis.#preloaded.set(fileName, isText ? {\n\t\t\t\tbr: brotliPreloadSync(fileData),\n\t\t\t\tgzip: gzipPreloadSync(fileData)\n\t\t\t} : fileData);\n\t\t} catch (error) {\n\t\t\tconsole.warn(`\u26A0\uFE0F inSite Static Server: Unable to preload ${fileName}`, \"\\n\", error);\n\t\t}\n\t\t\n\t}\n\t\n\t#handler = (request: IncomingMessage, response: InSiteServerResponse) => {\n\t\tlet fileName = decodeURI(request.url!).replace(this.#urlPrefixRegExp, \"\").replaceAll(\"../\", \"\");\n\t\tfileName = this.#resolved.get(fileName) ?? path.join(this.#src, fileName);\n\t\t\n\t\tif (this.#restricted.has(fileName))\n\t\t\treturn false;\n\t\t\n\t\tif (!fs.existsSync(fileName))\n\t\t\treturn response.notFound();\n\t\t\n\t\tconst { mimeType, isText } = this.#getExtensionBy(fileName);\n\t\tconst contentEncoding = isText ? /\\bbr\\b/.test(request.headers[\"accept-encoding\"] as string) ? \"br\" : \"gzip\" : null;\n\t\t\n\t\tresponse.writeHead(200, {\n\t\t\t\"Content-Type\": mimeType + (isText ? \"; charset=utf-8\" : \"\"),\n\t\t\t...contentEncoding && { \"Content-Encoding\": contentEncoding }\n\t\t});\n\t\t\n\t\tconst preloaded = this.#preloaded.get(fileName);\n\t\t\n\t\tif (preloaded)\n\t\t\treturn response.end(isText && contentEncoding ? preloaded[contentEncoding] : preloaded);\n\t\t\n\t\treturn new Promise(resolve => {\n\t\t\tlet stream: Readable = fs.createReadStream(fileName).on(\"error\", () => resolve(false));\n\t\t\t\n\t\t\tif (contentEncoding)\n\t\t\t\tstream = stream.pipe(getCompressionStreamByEncoding(contentEncoding));\n\t\t\t\n\t\t\tstream.on(\"end\", resolve);\n\t\t\t\n\t\t\tstream.pipe(response);\n\t\t\t\n\t\t});\n\t};\n\t\n}\n", "import { IncomingMessage, OutgoingHttpHeaders } from \"node:http\";\nimport zlib, { InputType } from \"node:zlib\";\nimport { InSiteServerResponse } from \"./Response\";\n\n\nconst brotliPreloadOptions = {\n\tparams: {\n\t\t[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,\n\t\t[zlib.constants.BROTLI_PARAM_QUALITY]: 11\n\t}\n};\n\nconst brotliRuntimeOptions = {\n\tparams: {\n\t\t[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,\n\t\t[zlib.constants.BROTLI_PARAM_QUALITY]: 4\n\t}\n};\n\nconst gzipPreloadOptions = {\n\tlevel: 9\n};\n\nconst gzipRuntimeOptions = {\n\tlevel: 3\n};\n\n\nexport function brotliPreloadSync(data: InputType) {\n\treturn zlib.brotliCompressSync(data, brotliPreloadOptions);\n}\n\nexport function gzipPreloadSync(data: InputType) {\n\treturn zlib.gzipSync(data, gzipPreloadOptions);\n}\n\nexport function getCompressionStreamByEncoding(contentEncoding: \"br\" | \"gzip\") {\n\treturn contentEncoding === \"br\" ? zlib.createBrotliCompress(brotliRuntimeOptions) : zlib.createGzip(gzipRuntimeOptions);\n}\n\nexport function handleRequestCompressed(request: IncomingMessage, response: InSiteServerResponse, headers: OutgoingHttpHeaders, data: InputType) {\n\tconst isBrotliAccepted = /\\bbr\\b/.test(request.headers[\"accept-encoding\"] as string);\n\theaders[\"Content-Encoding\"] = isBrotliAccepted ? \"br\" : \"gzip\";\n\tresponse.writeHead(200, headers).end(isBrotliAccepted ? zlib.brotliCompressSync(data, brotliRuntimeOptions) : zlib.gzipSync(data, gzipRuntimeOptions));\n\t\n}\n", "import { Extension } from \"./types\";\n\n\nexport const defaultExtensions = [\n\t\n\t[ \"js\", {\n\t\tisText: true,\n\t\tmimeType: \"text/javascript\"\n\t} ],\n\t\n\t[ \"css\", {\n\t\tisText: true,\n\t\tmimeType: \"text/css\"\n\t} ],\n\t\n\t[ \"ico\", {\n\t\tmimeType: \"image/x-icon\"\n\t} ],\n\t\n\tprocess.env.NODE_ENV === \"development\" ? [ \"css.map\", {\n\t\tisText: true,\n\t\tmimeType: \"application/json\"\n\t} ] : null,\n\t\n\tprocess.env.NODE_ENV === \"development\" ? [ \"js.map\", {\n\t\tisText: true,\n\t\tmimeType: \"application/json\"\n\t} ] : null,\n\t\n\t[ \"jpg\", {\n\t\tmimeType: \"image/jpeg\"\n\t} ],\n\t\n\t[ \"jpeg\", {\n\t\tmimeType: \"image/jpeg\"\n\t} ]\n\t\n].filter(Boolean) as Extension[];\n", "export const defaultPreloaded = [\n\t...process.env.NODE_ENV === \"production\" ? [\n\t\t//#if _SSR\n\t\t// \"/index.css\",\n\t\t//#endif\n\t\t\"/index.js\",\n\t\t\"/favicon.ico\"\n\t] : []\n];\n", "import { IncomingMessage } from \"node:http\";\nimport { isEmpty } from \"@nesvet/n\";\nimport { handleRequestCompressed } from \"../compression\";\nimport { InSiteServerMiddleware } from \"../Middleware\";\nimport { InSiteServerResponse } from \"../Response\";\n\n\nconst { INSITE_TITLE } = process.env;\n\nconst envGlobals: Record<string, unknown> = {};\nfor (const key in process.env)\n\tif (key.startsWith(\"INSITE_CLIENT_\"))\n\t\tenvGlobals[key.replace(/INSITE_CLIENT_/, \"\").toLowerCase()] = process.env[key];\n\nconst headers = { \"Content-Type\": \"text/html; charset=utf-8\" };\n\n\ntype Options = {\n\trequestRegExp?: RegExp;\n\tglobals?: Record<string, unknown>;\n\ttitle?: string;\n\tcss?: string | string[];\n\trootId?: string;\n};\n\nexport type { Options as TemplateMiddlewareOptions };\n\n\nexport class InSiteTemplateMiddleware extends InSiteServerMiddleware {\n\tconstructor({\n\t\trequestRegExp = /.*/,\n\t\tglobals = {},\n\t\ttitle = INSITE_TITLE ?? \"inSite\",\n\t\tcss = [],\n\t\trootId = \"root\"\n\t}: Options = {}) {\n\t\tsuper();\n\t\t\n\t\tthis.listeners = { GET: [\n\t\t\t[ requestRegExp, this.#handler ]\n\t\t] };\n\t\t\n\t\tthis.#title = title;\n\t\tthis.#css = Array.isArray(css) ? css : [ css ];\n\t\tthis.#rootId = rootId;\n\t\t\n\t\tObject.assign(globals, envGlobals);\n\t\t\n\t\tthis.#html =\n\t\t\t\"<!DOCTYPE html>\" +\n\t\t\t\"<html lang=\\\"ru\\\">\" +\n\t\t\t\"<head>\" +\n\t\t\t\"<meta charset=\\\"utf-8\\\" />\" +\n\t\t\t\"<meta name=\\\"viewport\\\" content=\\\"minimum-scale=1, initial-scale=1, width=device-width\\\" />\" +\n\t\t\t`<title>${this.#title}</title>` +\n\t\t\t`${this.#css.map(fileName => `<link rel=\"stylesheet\" href=\"${fileName}\" />`).join(\"\")}` +\n\t\t\t`${isEmpty(globals) ? \"\" : `<script>globalThis.__insite=${JSON.stringify(globals)};</script>`}` +\n\t\t\t\"<script type=\\\"text/javascript\\\" src=\\\"/index.js\\\" defer></script>\" +\n\t\t\t\"</head>\" +\n\t\t\t\"<body>\" +\n\t\t\t`<div id=\"${this.#rootId}\">` +\n\t\t\t\"</div>\" +\n\t\t\t\"</body>\" +\n\t\t\t\"</html>\";\n\t\t\n\t}\n\t\n\t#title;\n\t#css;\n\t#rootId;\n\t#html;\n\t\n\t#handler = (request: IncomingMessage, response: InSiteServerResponse) =>\n\t\thandleRequestCompressed(request, response, headers, this.#html);\n\t\n}\n", "import fs from \"node:fs\";\nimport http, { type IncomingMessage } from \"node:http\";\nimport https from \"node:https\";\nimport { InSiteServerMiddleware } from \"./Middleware\";\nimport { InSiteServerResponse } from \"./Response\";\nimport { inSiteRequestSymbol, inSiteServerSymbol } from \"./symbols\";\nimport {\n\tErrorParams,\n\tHandler,\n\tisMiddlewareMethodMap,\n\tisMiddlewareRegExpStringMap,\n\tisMiddlewareTuple,\n\tisMiddlewareTupleOrArray,\n\tMethod,\n\tMiddleware,\n\tOptions,\n\tRegExpOrString\n} from \"./types\";\n\n\nconst {\n\tINSITE_HTTP_SSL_CERT,\n\tINSITE_HTTP_SSL_KEY\n} = process.env;\n\n\nexport class InSiteHTTPServer {\n\tconstructor({\n\t\tport,\n\t\tssl,\n\t\thttps: isHTTPS = !!ssl,\n\t\tlisteners,\n\t\terrors,\n\t\tserver = {},\n\t\tonListen\n\t}: Options, middlewares: Middleware[] = []) {\n\t\t\n\t\tthis.isHTTPS = isHTTPS;\n\t\t\n\t\tif (this.isHTTPS && !ssl && INSITE_HTTP_SSL_CERT && INSITE_HTTP_SSL_KEY)\n\t\t\tssl = {\n\t\t\t\tcert: INSITE_HTTP_SSL_CERT,\n\t\t\t\tkey: INSITE_HTTP_SSL_KEY\n\t\t\t};\n\t\t\n\t\tif (ssl) {\n\t\t\tif (!/^-{3,}BEGIN/.test(ssl.cert))\n\t\t\t\ttry {\n\t\t\t\t\tssl.cert = fs.readFileSync(ssl.cert, \"utf8\");\n\t\t\t\t} catch {}\n\t\t\tif (!/^-{3,}BEGIN/.test(ssl.key))\n\t\t\t\ttry {\n\t\t\t\t\tssl.key = fs.readFileSync(ssl.key, \"utf8\");\n\t\t\t\t} catch {}\n\t\t} else if (this.isHTTPS)\n\t\t\tconsole.warn(\"\u26A0\uFE0F HTTPS server requires ssl.cert & ssl.key options\");\n\t\t\n\t\tthis.port = port ?? (this.isHTTPS ? 443 : 80);\n\t\t\n\t\tif (listeners)\n\t\t\tfor (const method of Object.keys(listeners) as (\"ALL\" | Method)[])\n\t\t\t\tfor (const [ regExp, handler ] of listeners[method])\n\t\t\t\t\tthis.addRequestListener(method, regExp, handler);\n\t\t\n\t\tif (errors)\n\t\t\tfor (const statusCodeString of Object.keys(errors)) {\n\t\t\t\tconst statusCode = Number.parseInt(statusCodeString);\n\t\t\t\tif (statusCode)\n\t\t\t\t\tif (this.#errors[statusCode])\n\t\t\t\t\t\tObject.assign(this.#errors[statusCode], errors[statusCode]);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.#errors[statusCode] = errors[statusCode];\n\t\t\t}\n\t\t\n\t\tif (middlewares)\n\t\t\tfor (const middleware of middlewares)\n\t\t\t\tthis.addMiddleware(middleware);\n\t\t\n\t\tthis.server =\n\t\t\tthis.isHTTPS ?\n\t\t\t\thttps.createServer({\n\t\t\t\t\t...server,\n\t\t\t\t\t...ssl,\n\t\t\t\t\tServerResponse: InSiteServerResponse\n\t\t\t\t}, this.#requestListener) :\n\t\t\t\thttp.createServer({\n\t\t\t\t\t...server,\n\t\t\t\t\tServerResponse: InSiteServerResponse\n\t\t\t\t}, this.#requestListener);\n\t\t\n\t\tthis.server.listen(port, () => onListen ? onListen() : this.#handleListen());\n\t\t\n\t}\n\t\n\tisHTTPS = false;\n\tport: number;\n\tserver: http.Server | https.Server;\n\t\n\t#listeners: Record<Method, [ RegExp, Handler ][]> = {\n\t\tPOST: [],\n\t\tGET: [],\n\t\tPUT: [],\n\t\tPATCH: [],\n\t\tDELETE: []\n\t};\n\t\n\t#handleListen() {\n\t\t\n\t\tconsole.info(`\uD83C\uDF10 inSite HTTP${this.isHTTPS ? \"S\" : \"\"} Server is listening on`, this.port);\n\t\t\n\t}\n\t\n\t#requestListener = async (request: IncomingMessage, response: InSiteServerResponse) => {\n\t\tresponse[inSiteServerSymbol] = this;\n\t\tresponse[inSiteRequestSymbol] = request;\n\t\t\n\t\tif (!(\"status\" in request))\n\t\t\tfor (const [ regExp, handler ] of this.#listeners[request.method as Method])\n\t\t\t\tif (regExp.test(request.url!) && await handler(request, response) !== false)\n\t\t\t\t\treturn;\n\t\t\n\t\tresponse.notFound();\n\t\t\n\t};\n\t\n\t#errors: Record<\"default\" | number, ErrorParams> = {\n\t\t400: {\n\t\t\tcontent: \"Bad Request\"\n\t\t},\n\t\t401: {\n\t\t\tcontent: \"Unauthorized\"\n\t\t},\n\t\t403: {\n\t\t\tcontent: \"Forbidden\"\n\t\t},\n\t\t404: {\n\t\t\tcontent: \"Not Found\"\n\t\t},\n\t\t408: {\n\t\t\tcontent: \"Request Timeout\"\n\t\t},\n\t\t410: {\n\t\t\tcontent: \"Gone\"\n\t\t},\n\t\t500: {\n\t\t\tcontent: \"Internal Server Error\"\n\t\t},\n\t\t503: {\n\t\t\tcontent: \"Service Unavailable\"\n\t\t},\n\t\tdefault: {\n\t\t\theaders: { \"Content-Type\": \"text/plain; charset=utf-8\" },\n\t\t\tcontent: \"\",\n\t\t\thandler(request, response, { statusCode, headers, content }) {\n\t\t\t\treturn response.writeHead(statusCode, headers).end(content);\n\t\t\t}\n\t\t}\n\t};\n\t\n\t_throw(response: InSiteServerResponse, statusCode: number, params?: ErrorParams | string) {\n\t\tif (typeof params == \"string\")\n\t\t\tparams = { content: params };\n\t\t\n\t\tconst {\n\t\t\thandler,\n\t\t\t...restParams\n\t\t} = {\n\t\t\t...this.#errors.default,\n\t\t\t...this.#errors[statusCode],\n\t\t\t...params\n\t\t};\n\t\t\n\t\treturn handler ? handler(response[inSiteRequestSymbol], response, {\n\t\t\t...restParams,\n\t\t\tstatusCode\n\t\t}) : response;\n\t}\n\t\n\taddRequestListener(method: \"ALL\" | Method, regExp: RegExpOrString, handler: Handler) {\n\t\tif (typeof regExp == \"string\")\n\t\t\tregExp = new RegExp(regExp);\n\t\t\n\t\tif (method && method !== \"ALL\")\n\t\t\tthis.#listeners[method]?.push([ regExp, handler ]);\n\t\telse\n\t\t\tfor (const specificMethod of Object.keys(this.#listeners) as Method[])\n\t\t\t\tthis.addRequestListener(specificMethod, regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\taddMiddleware(middleware: Middleware) {\n\t\tif (middleware instanceof InSiteServerMiddleware) {\n\t\t\tfor (const [ method, regExpOrStringArrayMap ] of Object.entries(middleware.listeners))\n\t\t\t\tfor (const [ regExpOrString, handler ] of regExpOrStringArrayMap)\n\t\t\t\t\tthis.addRequestListener(method as Method, regExpOrString, handler);\n\t\t\tmiddleware.bindTo?.(this);\n\t\t} else if (isMiddlewareTupleOrArray(middleware)) {\n\t\t\tif (isMiddlewareTuple(middleware))\n\t\t\t\tmiddleware = [ middleware ];\n\t\t\tfor (const params of middleware)\n\t\t\t\tthis.addRequestListener(...params.length === 2 ? [ \"GET\", ...params ] as const : params);\n\t\t} else if (isMiddlewareRegExpStringMap(middleware))\n\t\t\tfor (const [ key, value ] of Object.entries(middleware))\n\t\t\t\tthis.addRequestListener(\"GET\", key, value);\n\t\telse if (isMiddlewareMethodMap(middleware))\n\t\t\tfor (const [ method, regExpStringMap ] of Object.entries(middleware))\n\t\t\t\tfor (const [ regExpString, handler ] of Object.entries(regExpStringMap))\n\t\t\t\t\tthis.addRequestListener(method as Method, regExpString, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tpost(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"POST\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tget(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"GET\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tput(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"PUT\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tpatch(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"PATCH\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n\tdelete(regExp: RegExpOrString, handler: Handler) {\n\t\tthis.addRequestListener(\"DELETE\", regExp, handler);\n\t\t\n\t\treturn this;\n\t}\n\t\n}\n", "import { type IncomingMessage, ServerResponse } from \"node:http\";\nimport { inSiteRequestSymbol, inSiteServerSymbol } from \"./symbols\";\nimport type { InSiteHTTPServer } from \"./Server\";\nimport type { ErrorParams } from \"./types\";\n\n\nexport class InSiteServerResponse<Request extends IncomingMessage = IncomingMessage> extends ServerResponse<Request> {\n\t\n\t[inSiteServerSymbol]!: InSiteHTTPServer;\n\t[inSiteRequestSymbol]!: IncomingMessage;\n\t\n\terror(statusCode: number, params?: ErrorParams) {\n\t\treturn this[inSiteServerSymbol]._throw(this, statusCode, params);\n\t}\n\t\n\tbadRequest(params?: ErrorParams) {\n\t\treturn this.error(400, params);\n\t}\n\t\n\tunauthorized(params?: ErrorParams) {\n\t\treturn this.error(401, params);\n\t}\n\t\n\tforbidden(params?: ErrorParams) {\n\t\treturn this.error(403, params);\n\t}\n\t\n\tnotFound(params?: ErrorParams) {\n\t\treturn this.error(404, params);\n\t}\n\t\n\trequestTimeout(params?: ErrorParams) {\n\t\treturn this.error(408, params);\n\t}\n\t\n\tgone(params?: ErrorParams) {\n\t\treturn this.error(410, params);\n\t}\n\t\n\tinternalServerError(params?: ErrorParams) {\n\t\treturn this.error(500, params);\n\t}\n\t\n\tserviceUnavailable(params?: ErrorParams) {\n\t\treturn this.error(503, params);\n\t}\n\t\n}\n", "export const inSiteServerSymbol = Symbol(\"inSiteServer\");\nexport const inSiteRequestSymbol = Symbol(\"inSiteRequest\");\n", "import type {\n\tServerOptions as HTTPServerOptions,\n\tIncomingMessage,\n\tOutgoingHttpHeader,\n\tOutgoingHttpHeaders\n} from \"node:http\";\nimport type { ServerOptions as HTTPSServerOptions } from \"node:https\";\nimport { InSiteServerMiddleware } from \"./Middleware\";\nimport type { InSiteServerResponse } from \"./Response\";\n\n\nexport type ErrorParams = {\n\theaders?: OutgoingHttpHeader[] | OutgoingHttpHeaders;\n\tcontent: string;\n\thandler?(request: IncomingMessage, response: InSiteServerResponse, errorParams: { statusCode: number } & Omit<ErrorParams, \"handler\">): InSiteServerResponse;\n};\n\nexport type Method = \"DELETE\" | \"GET\" | \"PATCH\" | \"POST\" | \"PUT\";\n\nexport type Handler = (request: IncomingMessage, response: InSiteServerResponse) => unknown;\n\nexport type Options = {\n\tport?: number;\n\tssl?: {\n\t\tcert: string;\n\t\tkey: string;\n\t};\n\thttps?: boolean;\n\tlisteners?: Record<\"ALL\" | Method, [ RegExp, Handler ][]>;\n\terrors?: Record<\"default\" | number, ErrorParams>;\n\tserver?: HTTPServerOptions | HTTPSServerOptions;\n\tonListen?: () => void;\n};\n\nexport type RegExpOrString = RegExp | string;\n\ntype MiddlewareTuple = readonly [ Method, RegExpOrString, Handler ] | readonly [ RegExpOrString, Handler ];\n\ntype MiddlewareRegExpStringMap = Record<string, Handler>;\n\ntype MiddlewareMethodMap = Record<Method, Record<string, Handler>>;\n\nexport type Middleware =\n\tInSiteServerMiddleware |\n\tMiddlewareMethodMap |\n\tMiddlewareRegExpStringMap |\n\tMiddlewareTuple |\n\tMiddlewareTuple[];\n\nexport function isMiddlewareMethodMap(middleware: Middleware): middleware is MiddlewareMethodMap {\n\treturn typeof Object.values(middleware)[0] == \"object\";\n}\n\nexport function isMiddlewareRegExpStringMap(middleware: Middleware): middleware is MiddlewareRegExpStringMap {\n\treturn typeof Object.values(middleware)[0] == \"function\";\n}\n\nexport function isMiddlewareTupleOrArray(middleware: Middleware): middleware is MiddlewareTuple | MiddlewareTuple[] {\n\treturn Array.isArray(middleware);\n}\n\nexport function isMiddlewareTuple(middleware: MiddlewareTuple | MiddlewareTuple[]): middleware is MiddlewareTuple {\n\treturn !Array.isArray(middleware);\n}\n", "import { InSiteStaticMiddleware, StaticMiddlewareOptions } from \"./middlewares/Static\";\nimport { InSiteHTTPServer } from \"./Server\";\nimport { Middleware, Options } from \"./types\";\n\n\nexport class InSiteStaticServer extends InSiteHTTPServer {\n\tconstructor(options: StaticMiddlewareOptions, serverOptions: Options, middlewares: Middleware[] = []) {\n\t\tsuper(serverOptions, [\n\t\t\tnew InSiteStaticMiddleware(options),\n\t\t\t...middlewares\n\t\t]);\n\t\t\n\t}\n\t\n\thandleListen() {\n\t\t\n\t\tconsole.info(`\uD83D\uDED2 inSite Static HTTP${this.isHTTPS ? \"S\" : \"\"} Server is listening on`, this.port);\n\t\t\n\t}\n\t\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["InSiteServerMiddleware", "InSiteInitialsMiddleware", "fs", "path", "zlib", "brotliPreloadOptions", "brotliRuntimeOptions", "gzipPreloadOptions", "gzipRuntimeOptions", "brotliPreloadSync", "data", "gzipPreloadSync", "getCompressionStreamByEncoding", "contentEncoding", "handleRequestCompressed", "request", "response", "headers", "isBrotliAccepted", "defaultExtensions", "defaultPreloaded", "nullExtension", "InSiteStaticMiddleware", "InSiteServerMiddleware", "src", "urlPrefix", "requestRegExp", "extensions", "defaultExtensions", "resolved", "restricted", "preloaded", "path", "entryPoint", "fs", "#src", "#urlPrefix", "#urlPrefixRegExp", "extension", "#addExtension", "resolvee", "#resolve", "fileName", "#restrict", "defaultPreloaded", "#preload", "#handler", "#extensions", "#resolved", "#restricted", "#preloaded", "#getExtensionBy", "name", "url", "isText", "fileData", "brotliPreloadSync", "gzipPreloadSync", "error", "request", "response", "mimeType", "contentEncoding", "resolve", "stream", "getCompressionStreamByEncoding", "isEmpty", "INSITE_TITLE", "envGlobals", "key", "headers", "InSiteTemplateMiddleware", "InSiteServerMiddleware", "requestRegExp", "globals", "title", "css", "rootId", "#handler", "#title", "#css", "#rootId", "#html", "fileName", "isEmpty", "request", "response", "handleRequestCompressed", "fs", "http", "https", "ServerResponse", "inSiteServerSymbol", "inSiteRequestSymbol", "InSiteServerResponse", "ServerResponse", "inSiteServerSymbol", "inSiteRequestSymbol", "statusCode", "params", "isMiddlewareMethodMap", "middleware", "isMiddlewareRegExpStringMap", "isMiddlewareTupleOrArray", "isMiddlewareTuple", "INSITE_HTTP_SSL_CERT", "INSITE_HTTP_SSL_KEY", "InSiteHTTPServer", "port", "ssl", "isHTTPS", "listeners", "errors", "server", "onListen", "middlewares", "fs", "method", "regExp", "handler", "statusCodeString", "statusCode", "#errors", "middleware", "https", "InSiteServerResponse", "#requestListener", "http", "#handleListen", "#listeners", "request", "response", "inSiteServerSymbol", "inSiteRequestSymbol", "headers", "content", "params", "restParams", "specificMethod", "InSiteServerMiddleware", "regExpOrStringArrayMap", "regExpOrString", "isMiddlewareTupleOrArray", "isMiddlewareTuple", "isMiddlewareRegExpStringMap", "key", "value", "isMiddlewareMethodMap", "regExpStringMap", "regExpString", "InSiteStaticServer", "InSiteHTTPServer", "options", "serverOptions", "middlewares", "InSiteStaticMiddleware"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Static.d.ts","sourceRoot":"","sources":["../../../src/middlewares/Static/Static.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,OAAO,EAAa,OAAO,EAAE,MAAM,SAAS,CAAC;AAQ7C,qBAAa,sBAAuB,SAAQ,sBAAsB;;gBACrD,EACX,GAAQ,EACR,SAAc,EACd,aAAa,EACb,UAA8B,EAC9B,QAAQ,EACR,UAAU,EACV,SAAS,EACT,GAAE,OAAY;CA6Hf"}
1
+ {"version":3,"file":"Static.d.ts","sourceRoot":"","sources":["../../../src/middlewares/Static/Static.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,OAAO,EAAa,OAAO,EAAE,MAAM,SAAS,CAAC;AAQ7C,qBAAa,sBAAuB,SAAQ,sBAAsB;;gBACrD,EACX,GAAc,EACd,SAAc,EACd,aAAa,EACb,UAA8B,EAC9B,QAAQ,EACR,UAAU,EACV,SAAqB,EACrB,GAAE,OAAY;CA6Hf"}
@@ -10,6 +10,6 @@ export type Options = {
10
10
  extensions?: Extension[];
11
11
  resolved?: Resolvee[];
12
12
  restricted?: string[];
13
- preloaded?: "default" | string[];
13
+ preloaded?: "default" | null | string[];
14
14
  };
15
15
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middlewares/Static/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,CAAE,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAE,CAAC;AAC3E,MAAM,MAAM,QAAQ,GAAG,CAAE,MAAM,EAAE,MAAM,CAAE,CAAC;AAC1C,MAAM,MAAM,OAAO,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,EAAE,CAAC;CACjC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middlewares/Static/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,CAAE,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAE,CAAC;AAC3E,MAAM,MAAM,QAAQ,GAAG,CAAE,MAAM,EAAE,MAAM,CAAE,CAAC;AAC1C,MAAM,MAAM,OAAO,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;CACxC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "insite-http",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "inSite HTTPS server",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -24,12 +24,12 @@
24
24
  "author": "Eugene Nesvetaev <dev@nesvet.dev> (https://nesvet.dev/)",
25
25
  "license": "MIT",
26
26
  "dependencies": {
27
- "@nesvet/n": "^1.0.75"
27
+ "@nesvet/n": "^1.1.1"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@nesvet/conveyer": "^2.2.1",
31
31
  "@nesvet/eslint-config": "^2.0.24",
32
- "@types/node": "^22.0.0",
32
+ "@types/node": "^22.0.2",
33
33
  "typescript": "^5.5.4"
34
34
  }
35
35
  }