insite-http 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +13 -0
- package/bun.lockb +0 -0
- package/dist/Middleware.d.ts +7 -0
- package/dist/Middleware.d.ts.map +1 -0
- package/dist/Response.d.ts +18 -0
- package/dist/Response.d.ts.map +1 -0
- package/dist/Server.d.ts +20 -0
- package/dist/Server.d.ts.map +1 -0
- package/dist/StaticServer.d.ts +8 -0
- package/dist/StaticServer.d.ts.map +1 -0
- package/dist/compression.d.ts +8 -0
- package/dist/compression.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +7 -0
- package/dist/middlewares/Initials.d.ts +2 -0
- package/dist/middlewares/Initials.d.ts.map +1 -0
- package/dist/middlewares/Static/Static.d.ts +7 -0
- package/dist/middlewares/Static/Static.d.ts.map +1 -0
- package/dist/middlewares/Static/extensions.d.ts +3 -0
- package/dist/middlewares/Static/extensions.d.ts.map +1 -0
- package/dist/middlewares/Static/index.d.ts +3 -0
- package/dist/middlewares/Static/index.d.ts.map +1 -0
- package/dist/middlewares/Static/preloaded.d.ts +2 -0
- package/dist/middlewares/Static/preloaded.d.ts.map +1 -0
- package/dist/middlewares/Static/types.d.ts +15 -0
- package/dist/middlewares/Static/types.d.ts.map +1 -0
- package/dist/middlewares/Template.d.ts +14 -0
- package/dist/middlewares/Template.d.ts.map +1 -0
- package/dist/middlewares/index.d.ts +4 -0
- package/dist/middlewares/index.d.ts.map +1 -0
- package/dist/symbols.d.ts +3 -0
- package/dist/symbols.d.ts.map +1 -0
- package/dist/types.d.ts +36 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +35 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Eugene Nesvetaev
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
package/bun.lockb
ADDED
|
Binary file
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InSiteHTTPServer } from "./Server";
|
|
2
|
+
import { Handler, Method, RegExpOrString } from "./types";
|
|
3
|
+
export declare class InSiteServerMiddleware {
|
|
4
|
+
listeners: Partial<Record<Method, [RegExpOrString, Handler][]>>;
|
|
5
|
+
bindTo?(server: InSiteHTTPServer): void;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=Middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Middleware.d.ts","sourceRoot":"","sources":["../src/Middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG1D,qBAAa,sBAAsB;IAClC,SAAS,EAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAE,cAAc,EAAE,OAAO,CAAE,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;CACvC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import { inSiteRequestSymbol, inSiteServerSymbol } from "./symbols";
|
|
3
|
+
import type { InSiteHTTPServer } from "./Server";
|
|
4
|
+
import type { ErrorParams } from "./types";
|
|
5
|
+
export declare class InSiteServerResponse<Request extends IncomingMessage = IncomingMessage> extends ServerResponse<Request> {
|
|
6
|
+
[inSiteServerSymbol]: InSiteHTTPServer;
|
|
7
|
+
[inSiteRequestSymbol]: IncomingMessage;
|
|
8
|
+
error(statusCode: number, params?: ErrorParams): InSiteServerResponse<IncomingMessage>;
|
|
9
|
+
badRequest(params?: ErrorParams): InSiteServerResponse<IncomingMessage>;
|
|
10
|
+
unauthorized(params?: ErrorParams): InSiteServerResponse<IncomingMessage>;
|
|
11
|
+
forbidden(params?: ErrorParams): InSiteServerResponse<IncomingMessage>;
|
|
12
|
+
notFound(params?: ErrorParams): InSiteServerResponse<IncomingMessage>;
|
|
13
|
+
requestTimeout(params?: ErrorParams): InSiteServerResponse<IncomingMessage>;
|
|
14
|
+
gone(params?: ErrorParams): InSiteServerResponse<IncomingMessage>;
|
|
15
|
+
internalServerError(params?: ErrorParams): InSiteServerResponse<IncomingMessage>;
|
|
16
|
+
serviceUnavailable(params?: ErrorParams): InSiteServerResponse<IncomingMessage>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=Response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Response.d.ts","sourceRoot":"","sources":["../src/Response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,qBAAa,oBAAoB,CAAC,OAAO,SAAS,eAAe,GAAG,eAAe,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IAEnH,CAAC,kBAAkB,CAAC,EAAG,gBAAgB,CAAC;IACxC,CAAC,mBAAmB,CAAC,EAAG,eAAe,CAAC;IAExC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAI9C,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW;IAI/B,YAAY,CAAC,MAAM,CAAC,EAAE,WAAW;IAIjC,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW;IAI9B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW;IAI7B,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW;IAInC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW;IAIzB,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW;IAIxC,kBAAkB,CAAC,MAAM,CAAC,EAAE,WAAW;CAIvC"}
|
package/dist/Server.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import https from "node:https";
|
|
3
|
+
import { InSiteServerResponse } from "./Response";
|
|
4
|
+
import { ErrorParams, Handler, Method, Middleware, Options, RegExpOrString } from "./types";
|
|
5
|
+
export declare class InSiteHTTPServer {
|
|
6
|
+
#private;
|
|
7
|
+
constructor({ port, ssl, https: isHTTPS, listeners, errors, server, onListen }: Options, middlewares?: Middleware[]);
|
|
8
|
+
isHTTPS: boolean;
|
|
9
|
+
port: number;
|
|
10
|
+
server: http.Server | https.Server;
|
|
11
|
+
_throw(response: InSiteServerResponse, statusCode: number, params?: ErrorParams | string): InSiteServerResponse<http.IncomingMessage>;
|
|
12
|
+
addRequestListener(method: "ALL" | Method, regExp: RegExpOrString, handler: Handler): this;
|
|
13
|
+
addMiddleware(middleware: Middleware): this;
|
|
14
|
+
post(regExp: RegExpOrString, handler: Handler): this;
|
|
15
|
+
get(regExp: RegExpOrString, handler: Handler): this;
|
|
16
|
+
put(regExp: RegExpOrString, handler: Handler): this;
|
|
17
|
+
patch(regExp: RegExpOrString, handler: Handler): this;
|
|
18
|
+
delete(regExp: RegExpOrString, handler: Handler): this;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=Server.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { StaticMiddlewareOptions } from "./middlewares/Static";
|
|
2
|
+
import { InSiteHTTPServer } from "./Server";
|
|
3
|
+
import { Middleware, Options } from "./types";
|
|
4
|
+
export declare class InSiteStaticServer extends InSiteHTTPServer {
|
|
5
|
+
constructor(options: StaticMiddlewareOptions, serverOptions: Options, middlewares?: Middleware[]);
|
|
6
|
+
handleListen(): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=StaticServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticServer.d.ts","sourceRoot":"","sources":["../src/StaticServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAG9C,qBAAa,kBAAmB,SAAQ,gBAAgB;gBAC3C,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAE,UAAU,EAAO;IAQpG,YAAY;CAMZ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IncomingMessage, OutgoingHttpHeaders } from "node:http";
|
|
2
|
+
import zlib, { InputType } from "node:zlib";
|
|
3
|
+
import { InSiteServerResponse } from "./Response";
|
|
4
|
+
export declare function brotliPreloadSync(data: InputType): Buffer;
|
|
5
|
+
export declare function gzipPreloadSync(data: InputType): Buffer;
|
|
6
|
+
export declare function getCompressionStreamByEncoding(contentEncoding: "br" | "gzip"): zlib.BrotliCompress;
|
|
7
|
+
export declare function handleRequestCompressed(request: IncomingMessage, response: InSiteServerResponse, headers: OutgoingHttpHeaders, data: InputType): void;
|
|
8
|
+
//# sourceMappingURL=compression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../src/compression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA0BlD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,UAEhD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,UAE9C;AAED,wBAAgB,8BAA8B,CAAC,eAAe,EAAE,IAAI,GAAG,MAAM,uBAE5E;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,QAK9I"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +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};
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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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",
|
|
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
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Initials.d.ts","sourceRoot":"","sources":["../../src/middlewares/Initials.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,wBAAwB,WAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InSiteServerMiddleware } from "../../Middleware";
|
|
2
|
+
import { Options } from "./types";
|
|
3
|
+
export declare class InSiteStaticMiddleware extends InSiteServerMiddleware {
|
|
4
|
+
#private;
|
|
5
|
+
constructor({ src, urlPrefix, requestRegExp, extensions, resolved, restricted, preloaded }?: Options);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=Static.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../src/middlewares/Static/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,eAAO,MAAM,iBAAiB,EAkCT,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middlewares/Static/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preloaded.d.ts","sourceRoot":"","sources":["../../../src/middlewares/Static/preloaded.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,UAQ5B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type Extension = [string, {
|
|
2
|
+
mimeType: string;
|
|
3
|
+
isText?: boolean;
|
|
4
|
+
}];
|
|
5
|
+
export type Resolvee = [string, string];
|
|
6
|
+
export type Options = {
|
|
7
|
+
src?: string;
|
|
8
|
+
urlPrefix?: string;
|
|
9
|
+
requestRegExp?: RegExp;
|
|
10
|
+
extensions?: Extension[];
|
|
11
|
+
resolved?: Resolvee[];
|
|
12
|
+
restricted?: string[];
|
|
13
|
+
preloaded?: "default" | string[];
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InSiteServerMiddleware } from "../Middleware";
|
|
2
|
+
type Options = {
|
|
3
|
+
requestRegExp?: RegExp;
|
|
4
|
+
globals?: Record<string, unknown>;
|
|
5
|
+
title?: string;
|
|
6
|
+
css?: string | string[];
|
|
7
|
+
rootId?: string;
|
|
8
|
+
};
|
|
9
|
+
export type { Options as TemplateMiddlewareOptions };
|
|
10
|
+
export declare class InSiteTemplateMiddleware extends InSiteServerMiddleware {
|
|
11
|
+
#private;
|
|
12
|
+
constructor({ requestRegExp, globals, title, css, rootId }?: Options);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Template.d.ts","sourceRoot":"","sources":["../../src/middlewares/Template.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAcvD,KAAK,OAAO,GAAG;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,YAAY,EAAE,OAAO,IAAI,yBAAyB,EAAE,CAAC;AAGrD,qBAAa,wBAAyB,SAAQ,sBAAsB;;gBACvD,EACX,aAAoB,EACpB,OAAY,EACZ,KAAgC,EAChC,GAAQ,EACR,MAAe,EACf,GAAE,OAAY;CAwCf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,eAAyB,CAAC;AACzD,eAAO,MAAM,mBAAmB,eAA0B,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ServerOptions as HTTPServerOptions, IncomingMessage, OutgoingHttpHeader, OutgoingHttpHeaders } from "node:http";
|
|
2
|
+
import type { ServerOptions as HTTPSServerOptions } from "node:https";
|
|
3
|
+
import { InSiteServerMiddleware } from "./Middleware";
|
|
4
|
+
import type { InSiteServerResponse } from "./Response";
|
|
5
|
+
export type ErrorParams = {
|
|
6
|
+
headers?: OutgoingHttpHeader[] | OutgoingHttpHeaders;
|
|
7
|
+
content: string;
|
|
8
|
+
handler?(request: IncomingMessage, response: InSiteServerResponse, errorParams: {
|
|
9
|
+
statusCode: number;
|
|
10
|
+
} & Omit<ErrorParams, "handler">): InSiteServerResponse;
|
|
11
|
+
};
|
|
12
|
+
export type Method = "DELETE" | "GET" | "PATCH" | "POST" | "PUT";
|
|
13
|
+
export type Handler = (request: IncomingMessage, response: InSiteServerResponse) => unknown;
|
|
14
|
+
export type Options = {
|
|
15
|
+
port?: number;
|
|
16
|
+
ssl?: {
|
|
17
|
+
cert: string;
|
|
18
|
+
key: string;
|
|
19
|
+
};
|
|
20
|
+
https?: boolean;
|
|
21
|
+
listeners?: Record<"ALL" | Method, [RegExp, Handler][]>;
|
|
22
|
+
errors?: Record<"default" | number, ErrorParams>;
|
|
23
|
+
server?: HTTPServerOptions | HTTPSServerOptions;
|
|
24
|
+
onListen?: () => void;
|
|
25
|
+
};
|
|
26
|
+
export type RegExpOrString = RegExp | string;
|
|
27
|
+
type MiddlewareTuple = readonly [Method, RegExpOrString, Handler] | readonly [RegExpOrString, Handler];
|
|
28
|
+
type MiddlewareRegExpStringMap = Record<string, Handler>;
|
|
29
|
+
type MiddlewareMethodMap = Record<Method, Record<string, Handler>>;
|
|
30
|
+
export type Middleware = InSiteServerMiddleware | MiddlewareMethodMap | MiddlewareRegExpStringMap | MiddlewareTuple | MiddlewareTuple[];
|
|
31
|
+
export declare function isMiddlewareMethodMap(middleware: Middleware): middleware is MiddlewareMethodMap;
|
|
32
|
+
export declare function isMiddlewareRegExpStringMap(middleware: Middleware): middleware is MiddlewareRegExpStringMap;
|
|
33
|
+
export declare function isMiddlewareTupleOrArray(middleware: Middleware): middleware is MiddlewareTuple | MiddlewareTuple[];
|
|
34
|
+
export declare function isMiddlewareTuple(middleware: MiddlewareTuple | MiddlewareTuple[]): middleware is MiddlewareTuple;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,IAAI,iBAAiB,EAClC,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,MAAM,WAAW,GAAG;IACzB,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAAG,mBAAmB,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,oBAAoB,EAAE,WAAW,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,oBAAoB,CAAC;CAC7J,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAEjE,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,oBAAoB,KAAK,OAAO,CAAC;AAE5F,MAAM,MAAM,OAAO,GAAG;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,CAAE,MAAM,EAAE,OAAO,CAAE,EAAE,CAAC,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,iBAAiB,GAAG,kBAAkB,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7C,KAAK,eAAe,GAAG,SAAS,CAAE,MAAM,EAAE,cAAc,EAAE,OAAO,CAAE,GAAG,SAAS,CAAE,cAAc,EAAE,OAAO,CAAE,CAAC;AAE3G,KAAK,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzD,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnE,MAAM,MAAM,UAAU,GACrB,sBAAsB,GACtB,mBAAmB,GACnB,yBAAyB,GACzB,eAAe,GACf,eAAe,EAAE,CAAC;AAEnB,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,IAAI,mBAAmB,CAE/F;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,IAAI,yBAAyB,CAE3G;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,IAAI,eAAe,GAAG,eAAe,EAAE,CAElH;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,eAAe,GAAG,eAAe,EAAE,GAAG,UAAU,IAAI,eAAe,CAEhH"}
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "insite-http",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "inSite HTTPS server",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"packageManager": "bun@1.1.21",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
11
|
+
"build": "bun .conveyer.js",
|
|
12
|
+
"postbuild": "tsc -p ."
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/nesvet/insite-http.git"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"insite",
|
|
20
|
+
"http",
|
|
21
|
+
"https",
|
|
22
|
+
"server"
|
|
23
|
+
],
|
|
24
|
+
"author": "Eugene Nesvetaev <dev@nesvet.dev> (https://nesvet.dev/)",
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@nesvet/n": "^1.0.75"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@nesvet/conveyer": "^2.2.1",
|
|
31
|
+
"@nesvet/eslint-config": "^2.0.24",
|
|
32
|
+
"@types/node": "^22.0.0",
|
|
33
|
+
"typescript": "^5.5.4"
|
|
34
|
+
}
|
|
35
|
+
}
|