@visulima/api-platform
Version:
Visulima API platform is a set of tools to build and consume web APIs
3 lines • 11.7 kB
JavaScript
var chunkUPRO35MO_js=require('./chunk-UPRO35MO.js'),chunkYG667K32_js=require('./chunk-YG667K32.js');require('./chunk-4C666HHU.js');var connect=require('@visulima/connect'),q=require('http-errors'),httpStatusCodes=require('http-status-codes'),x=require('ts-japi'),ee=require('debug'),Q=require('accepts'),jstoxml=require('jstoxml'),ie=require('cors');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var q__default=/*#__PURE__*/_interopDefault(q);var x__default=/*#__PURE__*/_interopDefault(x);var ee__default=/*#__PURE__*/_interopDefault(ee);var Q__default=/*#__PURE__*/_interopDefault(Q);var ie__default=/*#__PURE__*/_interopDefault(ie);var u=(e,o)=>{let t=o.headers??{};Object.keys(t).forEach(r=>{e.setHeader(r,t[r]);});},l=(e,o)=>{e.setHeader("content-type","application/json; charset=utf-8"),e.end(JSON.stringify(o));},R=(e,o)=>{o.statusCode!==void 0&&(e.statusCode=o.statusCode),o.status!==void 0&&(e.statusCode=o.status),e.statusCode<400&&(e.statusCode=httpStatusCodes.StatusCodes.INTERNAL_SERVER_ERROR);};var z="An error occurred",U=(e,o,t)=>{if(R(t,e),u(t,e),e instanceof x__default.default.JapiError||x__default.default.JapiError.isLikeJapiError(e)){let r=new x__default.default.ErrorSerializer;l(t,r.serialize(e));}else if(e instanceof q.HttpError){let{message:r,statusCode:n,title:a}=e;l(t,{errors:[{code:n,title:a||httpStatusCodes.getReasonPhrase(n)||z,detail:r}]});}else {let{message:r}=e;l(t,{errors:[{code:"500",title:httpStatusCodes.getReasonPhrase(t.statusCode)||z,detail:r}]});}},T=U;var M="https://tools.ietf.org/html/rfc2616#section-10",C="An error occurred",F=(e,o,t)=>{let{message:r,stack:n}=e;if(e instanceof q.HttpError){let{expose:a,statusCode:s,title:i,type:d}=e;t.statusCode=s,u(t,e),l(t,{type:d||M,title:i||httpStatusCodes.getReasonPhrase(s)||C,details:r,...a?{trace:n}:{}});}else R(t,e),l(t,{type:M,title:httpStatusCodes.getReasonPhrase(t.statusCode)||C,details:r,...e.expose?{trace:n}:{}});},I=F;var h=(e,o)=>async(t,r,n)=>{let a=r.headers.accept,s=I;a==="application/vnd.api+json"&&(s=T);for(let{handler:i,regex:d}of e)if(d.test(a)){s=i;break}t.expose=o,s(t,r,n);},H=async(e,o,t)=>{let r=[...new Set(t.map(n=>n.method))].join(", ");throw o.setHeader("Allow",r),o.statusCode=405,q__default.default(405,`No route with [${e.method}] method found.`)};var O={alpn:"ALPN","c-pep":"C-PEP","c-pep-info":"C-PEP-Info","caldav-timezones":"CalDAV-Timezones","content-id":"Content-ID","content-md5":"Content-MD5",dasl:"DASL",dav:"DAV",dnt:"DNT",etag:"ETag",getprofile:"GetProfile","http2-settings":"HTTP2-Settings","last-event-id":"Last-Event-ID","mime-version":"MIME-Version","optional-www-authenticate":"Optional-WWW-Authenticate","sec-webSocket-key":"Sec-WebSocket-Key","sec-webSocket-protocol":"Sec-WebSocket-Protocol","sec-webSocket-version":"Sec-WebSocket-Version","sec-websocket-accept":"Sec-WebSocket-Accept","sec-websocket-extensions":"Sec-WebSocket-Extensions",slug:"SLUG",tcn:"TCN",te:"TE",ttl:"TTL","www-authenticate":"WWW-Authenticate","x-att-deviceid":"X-ATT-DeviceId","x-dnsprefetch-control":"X-DNSPrefetch-Control","x-uidh":"X-UIDH"},K=(e,o)=>{let t=e.toLowerCase();return o?O[t]?O[t]:t.split("-").map(r=>r[0]?.toUpperCase()+r.slice(1)).join("-"):t},Z={canonical:false,normalizeHeaderKey:K},B=e=>{let o={...Z,...e};return async(t,r,n)=>{let a={},s={};return Object.keys(t.headers).forEach(i=>{a[i]=t.headers[i];let d=o.normalizeHeaderKey(i,o.canonical);d&&(s[d]=t.headers[i]);}),t.headers=s,t.rawHeaders=a,n()}},S=B;var G=e=>{if(typeof e!="string")return false;try{let o=JSON.parse(e),t=Object.prototype.toString.call(o);return t==="[object Object]"||t==="[object Array]"}catch{return false}},E=G;var $=e=>jstoxml.toXML(e,{header:true,indent:" "}),y=$;var g="Content-Type",Y=(e,o,t,r,n)=>{if(typeof t.getHeader(g)=="string")return r;let i=[...Q__default.default(o).types(),n.defaultContentType],d=r,N=false;return i.forEach(c=>{e.forEach(({regex:P,serializer:k})=>{P.test(c)&&(t.setHeader(g,c),d=k(d),N=true);}),N||(/yaml|yml/.test(c)?(t.setHeader(g,c),d=chunkYG667K32_js.b(E(r)?JSON.parse(r):r)):c.includes("xml")&&(t.setHeader(g,c),d=y({[chunkYG667K32_js.a(`${o.url?.replace("/api/","")}`.trim())]:E(r)?JSON.parse(r):r})));}),d},m=Y;var te=ee__default.default("api-platform:connect:serializers-middleware"),re=(e=[],o="application/json; charset=utf-8")=>async(t,r,n)=>{if(typeof r.send=="function"){let a=r.send;r.send=s=>{r.send=a,s=m(e,t,r,s,{defaultContentType:o}),r.send(s);};}else if(typeof r.json=="function")te("response.json() is not supported by @visulima/api-platform serializer. Use response.send() or response.end() instead.");else {let a=r.end;r.end=(s,...i)=>(r.end=a,s=m(e,t,r,s,{defaultContentType:o}),r.end(s,...i));}return n()},w=re;var se=(e={})=>new connect.NodeRouter({onError:h(e.errorHandlers??[],e.showTrace??false),onNoMatch:H}).use(S(e.middlewares?.["http-header-normalizer"]??{})).use(w(e.middlewares?.serializers?.serializers??[],e.middlewares?.serializers?.defaultContentType??"application/json; charset=utf-8")),ne=se;var de=e=>connect.expressWrapper(ie__default.default(e)),pe=de;var le=e=>e.ip??e.headers["x-forwarded-for"]??e.headers["x-real-ip"]??e.socket.remoteAddress,ce=(e,o)=>async(t,r,n)=>{let a=le(t);if(a===void 0)throw q__default.default(400,"Missing IP");try{let s=await e.consume(a),i={"Retry-After":Math.round(s.msBeforeNext/1e3)||1,"X-RateLimit-Remaining":s.remainingPoints,"X-RateLimit-Reset":new Date(Date.now()+s.msBeforeNext).toISOString(),...o};Object.keys(i).forEach(d=>{r.setHeader(d,i[d]);}),await n();}catch{throw q__default.default(429,"Too Many Requests")}},me=ce;
Object.defineProperty(exports,"dateIn",{enumerable:true,get:function(){return chunkUPRO35MO_js.a}});Object.defineProperty(exports,"dateOut",{enumerable:true,get:function(){return chunkUPRO35MO_js.b}});Object.defineProperty(exports,"zod",{enumerable:true,get:function(){return chunkUPRO35MO_js.c}});Object.defineProperty(exports,"swaggerHandler",{enumerable:true,get:function(){return chunkYG667K32_js.c}});Object.defineProperty(exports,"yamlTransformer",{enumerable:true,get:function(){return chunkYG667K32_js.b}});Object.defineProperty(exports,"EdgeRouter",{enumerable:true,get:function(){return connect.EdgeRouter}});Object.defineProperty(exports,"NodeRouter",{enumerable:true,get:function(){return connect.NodeRouter}});Object.defineProperty(exports,"Router",{enumerable:true,get:function(){return connect.Router}});Object.defineProperty(exports,"createEdgeRouter",{enumerable:true,get:function(){return connect.createEdgeRouter}});Object.defineProperty(exports,"expressWrapper",{enumerable:true,get:function(){return connect.expressWrapper}});Object.defineProperty(exports,"sendJson",{enumerable:true,get:function(){return connect.sendJson}});Object.defineProperty(exports,"withZod",{enumerable:true,get:function(){return connect.withZod}});Object.defineProperty(exports,"BadGateway",{enumerable:true,get:function(){return q.BadGateway}});Object.defineProperty(exports,"BadRequest",{enumerable:true,get:function(){return q.BadRequest}});Object.defineProperty(exports,"BandwidthLimitExceeded",{enumerable:true,get:function(){return q.BandwidthLimitExceeded}});Object.defineProperty(exports,"Conflict",{enumerable:true,get:function(){return q.Conflict}});Object.defineProperty(exports,"ExpectationFailed",{enumerable:true,get:function(){return q.ExpectationFailed}});Object.defineProperty(exports,"FailedDependency",{enumerable:true,get:function(){return q.FailedDependency}});Object.defineProperty(exports,"Forbidden",{enumerable:true,get:function(){return q.Forbidden}});Object.defineProperty(exports,"GatewayTimeout",{enumerable:true,get:function(){return q.GatewayTimeout}});Object.defineProperty(exports,"Gone",{enumerable:true,get:function(){return q.Gone}});Object.defineProperty(exports,"HTTPVersionNotSupported",{enumerable:true,get:function(){return q.HTTPVersionNotSupported}});Object.defineProperty(exports,"ImATeapot",{enumerable:true,get:function(){return q.ImATeapot}});Object.defineProperty(exports,"InsufficientStorage",{enumerable:true,get:function(){return q.InsufficientStorage}});Object.defineProperty(exports,"InternalServerError",{enumerable:true,get:function(){return q.InternalServerError}});Object.defineProperty(exports,"LengthRequired",{enumerable:true,get:function(){return q.LengthRequired}});Object.defineProperty(exports,"Locked",{enumerable:true,get:function(){return q.Locked}});Object.defineProperty(exports,"LoopDetected",{enumerable:true,get:function(){return q.LoopDetected}});Object.defineProperty(exports,"MethodNotAllowed",{enumerable:true,get:function(){return q.MethodNotAllowed}});Object.defineProperty(exports,"MisdirectedRequest",{enumerable:true,get:function(){return q.MisdirectedRequest}});Object.defineProperty(exports,"NetworkAuthenticationRequire",{enumerable:true,get:function(){return q.NetworkAuthenticationRequire}});Object.defineProperty(exports,"NotAcceptable",{enumerable:true,get:function(){return q.NotAcceptable}});Object.defineProperty(exports,"NotExtended",{enumerable:true,get:function(){return q.NotExtended}});Object.defineProperty(exports,"NotFound",{enumerable:true,get:function(){return q.NotFound}});Object.defineProperty(exports,"NotImplemented",{enumerable:true,get:function(){return q.NotImplemented}});Object.defineProperty(exports,"PayloadTooLarge",{enumerable:true,get:function(){return q.PayloadTooLarge}});Object.defineProperty(exports,"PaymentRequired",{enumerable:true,get:function(){return q.PaymentRequired}});Object.defineProperty(exports,"PreconditionFailed",{enumerable:true,get:function(){return q.PreconditionFailed}});Object.defineProperty(exports,"PreconditionRequired",{enumerable:true,get:function(){return q.PreconditionRequired}});Object.defineProperty(exports,"ProxyAuthenticationRequired",{enumerable:true,get:function(){return q.ProxyAuthenticationRequired}});Object.defineProperty(exports,"RangeNotSatisfiable",{enumerable:true,get:function(){return q.RangeNotSatisfiable}});Object.defineProperty(exports,"RequestHeaderFieldsTooLarge",{enumerable:true,get:function(){return q.RequestHeaderFieldsTooLarge}});Object.defineProperty(exports,"RequestTimeout",{enumerable:true,get:function(){return q.RequestTimeout}});Object.defineProperty(exports,"ServiceUnavailable",{enumerable:true,get:function(){return q.ServiceUnavailable}});Object.defineProperty(exports,"TooManyRequests",{enumerable:true,get:function(){return q.TooManyRequests}});Object.defineProperty(exports,"URITooLong",{enumerable:true,get:function(){return q.URITooLong}});Object.defineProperty(exports,"Unauthorized",{enumerable:true,get:function(){return q.Unauthorized}});Object.defineProperty(exports,"UnavailableForLegalReasons",{enumerable:true,get:function(){return q.UnavailableForLegalReasons}});Object.defineProperty(exports,"UnprocessableEntity",{enumerable:true,get:function(){return q.UnprocessableEntity}});Object.defineProperty(exports,"UnsupportedMediaType",{enumerable:true,get:function(){return q.UnsupportedMediaType}});Object.defineProperty(exports,"UpgradeRequired",{enumerable:true,get:function(){return q.UpgradeRequired}});Object.defineProperty(exports,"VariantAlsoNegotiates",{enumerable:true,get:function(){return q.VariantAlsoNegotiates}});Object.defineProperty(exports,"createHttpError",{enumerable:true,get:function(){return q__default.default}});exports.corsMiddleware=pe;exports.createNodeRouter=ne;exports.httpHeaderNormalizerMiddleware=S;exports.onError=h;exports.onNoMatch=H;exports.rateLimiterMiddleware=me;exports.serialize=m;exports.serializersMiddleware=w;exports.xmlTransformer=y;//# sourceMappingURL=index-server.js.map
//# sourceMappingURL=index-server.js.map
;