@gjsify/http2 0.3.20 → 0.3.21

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.
@@ -1 +1 @@
1
- import{constants as e,getDefaultSettings as t}from"./protocol.js";import n from"@girs/soup-3.0";import r from"@girs/gio-2.0";import i from"@girs/glib-2.0";import{EventEmitter as a}from"node:events";import{Duplex as o}from"node:stream";import{Buffer as s}from"node:buffer";import{readBytesAsync as c}from"@gjsify/utils";var l=class extends a{type=e.NGHTTP2_SESSION_CLIENT;alpnProtocol=void 0;encrypted=!1;_closed=!1;_destroyed=!1;_settings;constructor(){super(),this._settings=t()}get closed(){return this._closed}get destroyed(){return this._destroyed}get connecting(){return!1}get pendingSettingsAck(){return!1}get localSettings(){return{...this._settings}}get remoteSettings(){return t()}get originSet(){return new Set}settings(e,t){Object.assign(this._settings,e),t&&Promise.resolve().then(t)}goaway(t,n,r){this.emit(`goaway`,t??e.NGHTTP2_NO_ERROR),this.destroy()}ping(e,t){let n=e||new Uint8Array(8);return t&&Promise.resolve().then(()=>t(null,0,n)),!0}close(e){this._closed||(this._closed=!0,this.emit(`close`),e&&e())}destroy(e,t){this._destroyed||(this._destroyed=!0,this._closed=!0,e&&this.emit(`error`,e),t!==void 0&&this.emit(`goaway`,t),this.emit(`close`))}ref(){}unref(){}},u=class extends o{id=1;pending=!1;aborted=!1;bufferSize=0;endAfterHeaders=!1;_session;_requestHeaders;_requestChunks=[];_cancellable;_state=e.NGHTTP2_STREAM_STATE_OPEN;_responseHeaders={};get state(){return this._state}get rstCode(){return e.NGHTTP2_NO_ERROR}get session(){return this._session}get sentHeaders(){return this._requestHeaders}constructor(e,t){super(),this._session=e,this._requestHeaders=t,this._cancellable=new r.Cancellable}_read(e){}_write(e,t,n){let r=s.isBuffer(e)?e:s.from(e,t);this._requestChunks.push(r),n()}_final(e){this._sendRequest().then(()=>e()).catch(t=>e(t instanceof Error?t:Error(String(t))))}async _sendRequest(){let t=this._session._getSoupSession(),r=this._session._getAuthority(),a=this._requestHeaders[`:method`]||`GET`,o=this._requestHeaders[`:path`]||`/`,l=`${this._requestHeaders[`:scheme`]||(r.startsWith(`https`)?`https`:`http`)}://${this._requestHeaders[`:authority`]||r.replace(/^https?:\/\//,``)}${o}`,u;try{u=i.Uri.parse(l,i.UriFlags.NONE)}catch{throw Error(`Invalid HTTP/2 request URL: ${l}`)}let d=new n.Message({method:a,uri:u}),f=d.get_request_headers();for(let[e,t]of Object.entries(this._requestHeaders))if(!e.startsWith(`:`))if(Array.isArray(t))for(let n of t)f.append(e,n);else f.replace(e,t);let p=s.concat(this._requestChunks);if(p.length>0){let e=this._requestHeaders[`content-type`]||`application/octet-stream`;d.set_request_body_from_bytes(e,new i.Bytes(p))}try{let n=await new Promise((e,n)=>{t.send_async(d,i.PRIORITY_DEFAULT,this._cancellable,(r,i)=>{try{e(t.send_finish(i))}catch(e){n(e)}})}),r=d.status_code,a=d.get_response_headers(),o={":status":String(r)};a.foreach((e,t)=>{let n=e.toLowerCase();if(n in o){let e=o[n];Array.isArray(e)?e.push(t):o[n]=[e,t]}else o[n]=t}),this._responseHeaders=o,this._state=e.NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL,this.emit(`response`,o,0);try{let e;for(;(e=await c(n,16384,i.PRIORITY_DEFAULT,this._cancellable))!==null;)e.length>0&&this.push(s.from(e))}catch{}this.push(null),this._state=e.NGHTTP2_STREAM_STATE_CLOSED}catch(t){this._state=e.NGHTTP2_STREAM_STATE_CLOSED,this._cancellable.is_cancelled()||this.destroy(t instanceof Error?t:Error(String(t)))}}close(t,n){this._cancellable.cancel(),this._state=e.NGHTTP2_STREAM_STATE_CLOSED,this.emit(`close`,t??e.NGHTTP2_NO_ERROR),n&&n()}priority(e){}sendTrailers(e){}setTimeout(e,t){return this}},d=class extends l{type=e.NGHTTP2_SESSION_CLIENT;_authority;_soupSession;_streams=new Set;constructor(e,t={}){super(),this._authority=e,this.encrypted=e.startsWith(`https:`),this._soupSession=new n.Session,t.rejectUnauthorized===!1&&this._soupSession.connect(`accept-certificate`,(e,t,n)=>!0),Promise.resolve().then(()=>{this.destroyed||(this.alpnProtocol=this.encrypted?`h2`:void 0,this.emit(`connect`,this,null))})}_getSoupSession(){return this._soupSession}_getAuthority(){return this._authority}request(e,t){if(this.destroyed||this.closed)throw Error(`Session is closed`);let n={...e};n[`:scheme`]||=this.encrypted?`https`:`http`,n[`:authority`]||=this._authority.replace(/^https?:\/\//,``),n[`:method`]||=`GET`,n[`:path`]||=`/`;let r=new u(this,n);return this._streams.add(r),r.once(`close`,()=>this._streams.delete(r)),t?.endStream&&r.end(),r}close(e){for(let e of this._streams)e.close();this._streams.clear(),super.close(e)}destroy(e,t){for(let e of this._streams)e.close();this._streams.clear(),super.destroy(e,t)}};export{d as ClientHttp2Session,u as ClientHttp2Stream,l as Http2Session};
1
+ import{constants as e,getDefaultSettings as t}from"./protocol.js";import n from"@girs/soup-3.0";import r from"@girs/gio-2.0";import i from"@girs/glib-2.0";import{EventEmitter as a}from"node:events";import{Duplex as o}from"node:stream";import{Buffer as s}from"node:buffer";import{readBytesAsync as c}from"@gjsify/utils";var Http2Session=class extends a{type=e.NGHTTP2_SESSION_CLIENT;alpnProtocol=void 0;encrypted=!1;_closed=!1;_destroyed=!1;_settings;constructor(){super(),this._settings=t()}get closed(){return this._closed}get destroyed(){return this._destroyed}get connecting(){return!1}get pendingSettingsAck(){return!1}get localSettings(){return{...this._settings}}get remoteSettings(){return t()}get originSet(){return new Set}settings(e,t){Object.assign(this._settings,e),t&&Promise.resolve().then(t)}goaway(t,n,r){this.emit(`goaway`,t??e.NGHTTP2_NO_ERROR),this.destroy()}ping(e,t){let n=e||new Uint8Array(8);return t&&Promise.resolve().then(()=>t(null,0,n)),!0}close(e){this._closed||(this._closed=!0,this.emit(`close`),e&&e())}destroy(e,t){this._destroyed||(this._destroyed=!0,this._closed=!0,e&&this.emit(`error`,e),t!==void 0&&this.emit(`goaway`,t),this.emit(`close`))}ref(){}unref(){}},ClientHttp2Stream=class extends o{id=1;pending=!1;aborted=!1;bufferSize=0;endAfterHeaders=!1;_session;_requestHeaders;_requestChunks=[];_cancellable;_state=e.NGHTTP2_STREAM_STATE_OPEN;_responseHeaders={};get state(){return this._state}get rstCode(){return e.NGHTTP2_NO_ERROR}get session(){return this._session}get sentHeaders(){return this._requestHeaders}constructor(e,t){super(),this._session=e,this._requestHeaders=t,this._cancellable=new r.Cancellable}_read(e){}_write(e,t,n){let r=s.isBuffer(e)?e:s.from(e,t);this._requestChunks.push(r),n()}_final(e){this._sendRequest().then(()=>e()).catch(t=>e(t instanceof Error?t:Error(String(t))))}async _sendRequest(){let t=this._session._getSoupSession(),r=this._session._getAuthority(),a=this._requestHeaders[`:method`]||`GET`,o=this._requestHeaders[`:path`]||`/`,l=`${this._requestHeaders[`:scheme`]||(r.startsWith(`https`)?`https`:`http`)}://${this._requestHeaders[`:authority`]||r.replace(/^https?:\/\//,``)}${o}`,u;try{u=i.Uri.parse(l,i.UriFlags.NONE)}catch{throw Error(`Invalid HTTP/2 request URL: ${l}`)}let d=new n.Message({method:a,uri:u}),f=d.get_request_headers();for(let[e,t]of Object.entries(this._requestHeaders))if(!e.startsWith(`:`))if(Array.isArray(t))for(let n of t)f.append(e,n);else f.replace(e,t);let p=s.concat(this._requestChunks);if(p.length>0){let e=this._requestHeaders[`content-type`]||`application/octet-stream`;d.set_request_body_from_bytes(e,new i.Bytes(p))}try{let n=await new Promise((e,n)=>{t.send_async(d,i.PRIORITY_DEFAULT,this._cancellable,(r,i)=>{try{e(t.send_finish(i))}catch(e){n(e)}})}),r=d.status_code,a=d.get_response_headers(),o={":status":String(r)};a.foreach((e,t)=>{let n=e.toLowerCase();if(n in o){let e=o[n];Array.isArray(e)?e.push(t):o[n]=[e,t]}else o[n]=t}),this._responseHeaders=o,this._state=e.NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL,this.emit(`response`,o,0);try{let e;for(;(e=await c(n,16384,i.PRIORITY_DEFAULT,this._cancellable))!==null;)e.length>0&&this.push(s.from(e))}catch{}this.push(null),this._state=e.NGHTTP2_STREAM_STATE_CLOSED}catch(t){this._state=e.NGHTTP2_STREAM_STATE_CLOSED,this._cancellable.is_cancelled()||this.destroy(t instanceof Error?t:Error(String(t)))}}close(t,n){this._cancellable.cancel(),this._state=e.NGHTTP2_STREAM_STATE_CLOSED,this.emit(`close`,t??e.NGHTTP2_NO_ERROR),n&&n()}priority(e){}sendTrailers(e){}setTimeout(e,t){return this}},ClientHttp2Session=class extends Http2Session{type=e.NGHTTP2_SESSION_CLIENT;_authority;_soupSession;_streams=new Set;constructor(e,t={}){super(),this._authority=e,this.encrypted=e.startsWith(`https:`),this._soupSession=new n.Session,t.rejectUnauthorized===!1&&this._soupSession.connect(`accept-certificate`,(e,t,n)=>!0),Promise.resolve().then(()=>{this.destroyed||(this.alpnProtocol=this.encrypted?`h2`:void 0,this.emit(`connect`,this,null))})}_getSoupSession(){return this._soupSession}_getAuthority(){return this._authority}request(e,t){if(this.destroyed||this.closed)throw Error(`Session is closed`);let n={...e};n[`:scheme`]||=this.encrypted?`https`:`http`,n[`:authority`]||=this._authority.replace(/^https?:\/\//,``),n[`:method`]||=`GET`,n[`:path`]||=`/`;let r=new ClientHttp2Stream(this,n);return this._streams.add(r),r.once(`close`,()=>this._streams.delete(r)),t?.endStream&&r.end(),r}close(e){for(let e of this._streams)e.close();this._streams.clear(),super.close(e)}destroy(e,t){for(let e of this._streams)e.close();this._streams.clear(),super.destroy(e,t)}};export{ClientHttp2Session,ClientHttp2Stream,Http2Session};
package/lib/esm/index.js CHANGED
@@ -1 +1 @@
1
- import{constants as e,getDefaultSettings as t,getPackedSettings as n,getUnpackedSettings as r}from"./protocol.js";import{ClientHttp2Session as i,ClientHttp2Stream as a,Http2Session as o}from"./client-session.js";import{Http2SecureServer as s,Http2Server as c,Http2ServerRequest as l,Http2ServerResponse as u,ServerHttp2Session as d,ServerHttp2Stream as f}from"./server.js";function p(e,t){return new c(e,t)}function m(e,t){return new s(e,t)}function h(e,t,n){let r=typeof e==`string`?e:e.toString();typeof t==`function`&&(n=t,t={});let a=new i(r,t??{});return n&&a.once(`connect`,n),a}const g=Symbol.for(`nodejs.http2.sensitiveHeaders`);function _(e){throw Error(`http2.performServerHandshake() is not yet implemented in GJS`)}var v={constants:e,createServer:p,createSecureServer:m,connect:h,getDefaultSettings:t,getPackedSettings:n,getUnpackedSettings:r,sensitiveHeaders:g,performServerHandshake:_,Http2Session:o,Http2Server:c,Http2SecureServer:s,Http2ServerRequest:l,Http2ServerResponse:u,ServerHttp2Session:d,ServerHttp2Stream:f,ClientHttp2Session:i,ClientHttp2Stream:a};export{i as ClientHttp2Session,a as ClientHttp2Stream,s as Http2SecureServer,c as Http2Server,l as Http2ServerRequest,u as Http2ServerResponse,o as Http2Session,d as ServerHttp2Session,f as ServerHttp2Stream,h as connect,e as constants,m as createSecureServer,p as createServer,v as default,t as getDefaultSettings,n as getPackedSettings,r as getUnpackedSettings,_ as performServerHandshake,g as sensitiveHeaders};
1
+ import{constants as e,getDefaultSettings as t,getPackedSettings as n,getUnpackedSettings as r}from"./protocol.js";import{ClientHttp2Session as i,ClientHttp2Stream as a,Http2Session as o}from"./client-session.js";import{Http2SecureServer as s,Http2Server as c,Http2ServerRequest as l,Http2ServerResponse as u,ServerHttp2Session as d,ServerHttp2Stream as f}from"./server.js";function createServer(e,t){return new c(e,t)}function createSecureServer(e,t){return new s(e,t)}function connect(e,t,n){let r=typeof e==`string`?e:e.toString();typeof t==`function`&&(n=t,t={});let a=new i(r,t??{});return n&&a.once(`connect`,n),a}const p=Symbol.for(`nodejs.http2.sensitiveHeaders`);function performServerHandshake(e){throw Error(`http2.performServerHandshake() is not yet implemented in GJS`)}var m={constants:e,createServer,createSecureServer,connect,getDefaultSettings:t,getPackedSettings:n,getUnpackedSettings:r,sensitiveHeaders:p,performServerHandshake,Http2Session:o,Http2Server:c,Http2SecureServer:s,Http2ServerRequest:l,Http2ServerResponse:u,ServerHttp2Session:d,ServerHttp2Stream:f,ClientHttp2Session:i,ClientHttp2Stream:a};export{i as ClientHttp2Session,a as ClientHttp2Stream,s as Http2SecureServer,c as Http2Server,l as Http2ServerRequest,u as Http2ServerResponse,o as Http2Session,d as ServerHttp2Session,f as ServerHttp2Stream,connect,e as constants,createSecureServer,createServer,m as default,t as getDefaultSettings,n as getPackedSettings,r as getUnpackedSettings,performServerHandshake,p as sensitiveHeaders};
@@ -1 +1 @@
1
- const e={NGHTTP2_NO_ERROR:0,NGHTTP2_PROTOCOL_ERROR:1,NGHTTP2_INTERNAL_ERROR:2,NGHTTP2_FLOW_CONTROL_ERROR:3,NGHTTP2_SETTINGS_TIMEOUT:4,NGHTTP2_STREAM_CLOSED:5,NGHTTP2_FRAME_SIZE_ERROR:6,NGHTTP2_REFUSED_STREAM:7,NGHTTP2_CANCEL:8,NGHTTP2_COMPRESSION_ERROR:9,NGHTTP2_CONNECT_ERROR:10,NGHTTP2_ENHANCE_YOUR_CALM:11,NGHTTP2_INADEQUATE_SECURITY:12,NGHTTP2_HTTP_1_1_REQUIRED:13,NGHTTP2_ERR_FRAME_SIZE_ERROR:-522,NGHTTP2_ERR_DEFERRED:-508,NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE:-509,NGHTTP2_ERR_INVALID_ARGUMENT:-501,NGHTTP2_ERR_STREAM_CLOSED:-510,NGHTTP2_ERR_NOMEM:-901,NGHTTP2_SESSION_SERVER:0,NGHTTP2_SESSION_CLIENT:1,NGHTTP2_STREAM_STATE_IDLE:1,NGHTTP2_STREAM_STATE_OPEN:2,NGHTTP2_STREAM_STATE_RESERVED_LOCAL:3,NGHTTP2_STREAM_STATE_RESERVED_REMOTE:4,NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL:5,NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE:6,NGHTTP2_STREAM_STATE_CLOSED:7,NGHTTP2_FLAG_NONE:0,NGHTTP2_FLAG_END_STREAM:1,NGHTTP2_FLAG_END_HEADERS:4,NGHTTP2_FLAG_ACK:1,NGHTTP2_FLAG_PADDED:8,NGHTTP2_FLAG_PRIORITY:32,NGHTTP2_HCAT_REQUEST:0,NGHTTP2_HCAT_RESPONSE:1,NGHTTP2_HCAT_PUSH_RESPONSE:2,NGHTTP2_HCAT_HEADERS:3,NGHTTP2_NV_FLAG_NONE:0,NGHTTP2_NV_FLAG_NO_INDEX:1,NGHTTP2_SETTINGS_HEADER_TABLE_SIZE:1,NGHTTP2_SETTINGS_ENABLE_PUSH:2,NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS:3,NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE:4,NGHTTP2_SETTINGS_MAX_FRAME_SIZE:5,NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE:6,NGHTTP2_SETTINGS_ENABLE_CONNECT_PROTOCOL:8,DEFAULT_SETTINGS_HEADER_TABLE_SIZE:4096,DEFAULT_SETTINGS_ENABLE_PUSH:1,DEFAULT_SETTINGS_MAX_CONCURRENT_STREAMS:4294967295,DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE:65535,DEFAULT_SETTINGS_MAX_FRAME_SIZE:16384,DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE:65535,DEFAULT_SETTINGS_ENABLE_CONNECT_PROTOCOL:0,MAX_MAX_FRAME_SIZE:16777215,MIN_MAX_FRAME_SIZE:16384,MAX_INITIAL_WINDOW_SIZE:2147483647,NGHTTP2_DEFAULT_WEIGHT:16,PADDING_STRATEGY_NONE:0,PADDING_STRATEGY_ALIGNED:1,PADDING_STRATEGY_MAX:2,PADDING_STRATEGY_CALLBACK:1,HTTP2_HEADER_STATUS:`:status`,HTTP2_HEADER_METHOD:`:method`,HTTP2_HEADER_AUTHORITY:`:authority`,HTTP2_HEADER_SCHEME:`:scheme`,HTTP2_HEADER_PATH:`:path`,HTTP2_HEADER_PROTOCOL:`:protocol`,HTTP2_HEADER_ACCEPT:`accept`,HTTP2_HEADER_ACCEPT_CHARSET:`accept-charset`,HTTP2_HEADER_ACCEPT_ENCODING:`accept-encoding`,HTTP2_HEADER_ACCEPT_LANGUAGE:`accept-language`,HTTP2_HEADER_ACCEPT_RANGES:`accept-ranges`,HTTP2_HEADER_ACCESS_CONTROL_ALLOW_CREDENTIALS:`access-control-allow-credentials`,HTTP2_HEADER_ACCESS_CONTROL_ALLOW_HEADERS:`access-control-allow-headers`,HTTP2_HEADER_ACCESS_CONTROL_ALLOW_METHODS:`access-control-allow-methods`,HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN:`access-control-allow-origin`,HTTP2_HEADER_ACCESS_CONTROL_EXPOSE_HEADERS:`access-control-expose-headers`,HTTP2_HEADER_ACCESS_CONTROL_MAX_AGE:`access-control-max-age`,HTTP2_HEADER_ACCESS_CONTROL_REQUEST_HEADERS:`access-control-request-headers`,HTTP2_HEADER_ACCESS_CONTROL_REQUEST_METHOD:`access-control-request-method`,HTTP2_HEADER_AGE:`age`,HTTP2_HEADER_ALLOW:`allow`,HTTP2_HEADER_ALT_SVC:`alt-svc`,HTTP2_HEADER_AUTHORIZATION:`authorization`,HTTP2_HEADER_CACHE_CONTROL:`cache-control`,HTTP2_HEADER_CONNECTION:`connection`,HTTP2_HEADER_CONTENT_DISPOSITION:`content-disposition`,HTTP2_HEADER_CONTENT_ENCODING:`content-encoding`,HTTP2_HEADER_CONTENT_LANGUAGE:`content-language`,HTTP2_HEADER_CONTENT_LENGTH:`content-length`,HTTP2_HEADER_CONTENT_LOCATION:`content-location`,HTTP2_HEADER_CONTENT_MD5:`content-md5`,HTTP2_HEADER_CONTENT_RANGE:`content-range`,HTTP2_HEADER_CONTENT_SECURITY_POLICY:`content-security-policy`,HTTP2_HEADER_CONTENT_TYPE:`content-type`,HTTP2_HEADER_COOKIE:`cookie`,HTTP2_HEADER_DATE:`date`,HTTP2_HEADER_DNT:`dnt`,HTTP2_HEADER_EARLY_DATA:`early-data`,HTTP2_HEADER_ETAG:`etag`,HTTP2_HEADER_EXPECT:`expect`,HTTP2_HEADER_EXPECT_CT:`expect-ct`,HTTP2_HEADER_EXPIRES:`expires`,HTTP2_HEADER_FORWARDED:`forwarded`,HTTP2_HEADER_FROM:`from`,HTTP2_HEADER_HOST:`host`,HTTP2_HEADER_HTTP2_SETTINGS:`http2-settings`,HTTP2_HEADER_IF_MATCH:`if-match`,HTTP2_HEADER_IF_MODIFIED_SINCE:`if-modified-since`,HTTP2_HEADER_IF_NONE_MATCH:`if-none-match`,HTTP2_HEADER_IF_RANGE:`if-range`,HTTP2_HEADER_IF_UNMODIFIED_SINCE:`if-unmodified-since`,HTTP2_HEADER_KEEP_ALIVE:`keep-alive`,HTTP2_HEADER_LAST_MODIFIED:`last-modified`,HTTP2_HEADER_LINK:`link`,HTTP2_HEADER_LOCATION:`location`,HTTP2_HEADER_MAX_FORWARDS:`max-forwards`,HTTP2_HEADER_ORIGIN:`origin`,HTTP2_HEADER_PREFER:`prefer`,HTTP2_HEADER_PRIORITY:`priority`,HTTP2_HEADER_PROXY_AUTHENTICATE:`proxy-authenticate`,HTTP2_HEADER_PROXY_AUTHORIZATION:`proxy-authorization`,HTTP2_HEADER_PROXY_CONNECTION:`proxy-connection`,HTTP2_HEADER_RANGE:`range`,HTTP2_HEADER_REFERER:`referer`,HTTP2_HEADER_REFRESH:`refresh`,HTTP2_HEADER_RETRY_AFTER:`retry-after`,HTTP2_HEADER_SERVER:`server`,HTTP2_HEADER_SET_COOKIE:`set-cookie`,HTTP2_HEADER_STRICT_TRANSPORT_SECURITY:`strict-transport-security`,HTTP2_HEADER_TE:`te`,HTTP2_HEADER_TIMING_ALLOW_ORIGIN:`timing-allow-origin`,HTTP2_HEADER_TRAILER:`trailer`,HTTP2_HEADER_TRANSFER_ENCODING:`transfer-encoding`,HTTP2_HEADER_TK:`tk`,HTTP2_HEADER_UPGRADE:`upgrade`,HTTP2_HEADER_UPGRADE_INSECURE_REQUESTS:`upgrade-insecure-requests`,HTTP2_HEADER_USER_AGENT:`user-agent`,HTTP2_HEADER_VARY:`vary`,HTTP2_HEADER_VIA:`via`,HTTP2_HEADER_WARNING:`warning`,HTTP2_HEADER_WWW_AUTHENTICATE:`www-authenticate`,HTTP2_HEADER_X_CONTENT_TYPE_OPTIONS:`x-content-type-options`,HTTP2_HEADER_X_FORWARDED_FOR:`x-forwarded-for`,HTTP2_HEADER_X_FRAME_OPTIONS:`x-frame-options`,HTTP2_HEADER_X_XSS_PROTECTION:`x-xss-protection`,HTTP2_HEADER_PURPOSE:`purpose`,HTTP2_METHOD_ACL:`ACL`,HTTP2_METHOD_BASELINE_CONTROL:`BASELINE-CONTROL`,HTTP2_METHOD_BIND:`BIND`,HTTP2_METHOD_CHECKIN:`CHECKIN`,HTTP2_METHOD_CHECKOUT:`CHECKOUT`,HTTP2_METHOD_CONNECT:`CONNECT`,HTTP2_METHOD_COPY:`COPY`,HTTP2_METHOD_DELETE:`DELETE`,HTTP2_METHOD_GET:`GET`,HTTP2_METHOD_HEAD:`HEAD`,HTTP2_METHOD_LABEL:`LABEL`,HTTP2_METHOD_LINK:`LINK`,HTTP2_METHOD_LOCK:`LOCK`,HTTP2_METHOD_MERGE:`MERGE`,HTTP2_METHOD_MKACTIVITY:`MKACTIVITY`,HTTP2_METHOD_MKCALENDAR:`MKCALENDAR`,HTTP2_METHOD_MKCOL:`MKCOL`,HTTP2_METHOD_MKREDIRECTREF:`MKREDIRECTREF`,HTTP2_METHOD_MKWORKSPACE:`MKWORKSPACE`,HTTP2_METHOD_MOVE:`MOVE`,HTTP2_METHOD_OPTIONS:`OPTIONS`,HTTP2_METHOD_ORDERPATCH:`ORDERPATCH`,HTTP2_METHOD_PATCH:`PATCH`,HTTP2_METHOD_POST:`POST`,HTTP2_METHOD_PRI:`PRI`,HTTP2_METHOD_PROPFIND:`PROPFIND`,HTTP2_METHOD_PROPPATCH:`PROPPATCH`,HTTP2_METHOD_PUT:`PUT`,HTTP2_METHOD_REBIND:`REBIND`,HTTP2_METHOD_REPORT:`REPORT`,HTTP2_METHOD_SEARCH:`SEARCH`,HTTP2_METHOD_TRACE:`TRACE`,HTTP2_METHOD_UNBIND:`UNBIND`,HTTP2_METHOD_UNCHECKOUT:`UNCHECKOUT`,HTTP2_METHOD_UNLINK:`UNLINK`,HTTP2_METHOD_UNLOCK:`UNLOCK`,HTTP2_METHOD_UPDATE:`UPDATE`,HTTP2_METHOD_UPDATEREDIRECTREF:`UPDATEREDIRECTREF`,HTTP2_METHOD_VERSION_CONTROL:`VERSION-CONTROL`,HTTP_STATUS_CONTINUE:100,HTTP_STATUS_SWITCHING_PROTOCOLS:101,HTTP_STATUS_PROCESSING:102,HTTP_STATUS_EARLY_HINTS:103,HTTP_STATUS_OK:200,HTTP_STATUS_CREATED:201,HTTP_STATUS_ACCEPTED:202,HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION:203,HTTP_STATUS_NO_CONTENT:204,HTTP_STATUS_RESET_CONTENT:205,HTTP_STATUS_PARTIAL_CONTENT:206,HTTP_STATUS_MULTI_STATUS:207,HTTP_STATUS_ALREADY_REPORTED:208,HTTP_STATUS_IM_USED:226,HTTP_STATUS_MULTIPLE_CHOICES:300,HTTP_STATUS_MOVED_PERMANENTLY:301,HTTP_STATUS_FOUND:302,HTTP_STATUS_SEE_OTHER:303,HTTP_STATUS_NOT_MODIFIED:304,HTTP_STATUS_USE_PROXY:305,HTTP_STATUS_TEMPORARY_REDIRECT:307,HTTP_STATUS_PERMANENT_REDIRECT:308,HTTP_STATUS_BAD_REQUEST:400,HTTP_STATUS_UNAUTHORIZED:401,HTTP_STATUS_PAYMENT_REQUIRED:402,HTTP_STATUS_FORBIDDEN:403,HTTP_STATUS_NOT_FOUND:404,HTTP_STATUS_METHOD_NOT_ALLOWED:405,HTTP_STATUS_NOT_ACCEPTABLE:406,HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED:407,HTTP_STATUS_REQUEST_TIMEOUT:408,HTTP_STATUS_CONFLICT:409,HTTP_STATUS_GONE:410,HTTP_STATUS_LENGTH_REQUIRED:411,HTTP_STATUS_PRECONDITION_FAILED:412,HTTP_STATUS_PAYLOAD_TOO_LARGE:413,HTTP_STATUS_URI_TOO_LONG:414,HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE:415,HTTP_STATUS_RANGE_NOT_SATISFIABLE:416,HTTP_STATUS_EXPECTATION_FAILED:417,HTTP_STATUS_TEAPOT:418,HTTP_STATUS_MISDIRECTED_REQUEST:421,HTTP_STATUS_UNPROCESSABLE_ENTITY:422,HTTP_STATUS_LOCKED:423,HTTP_STATUS_FAILED_DEPENDENCY:424,HTTP_STATUS_TOO_EARLY:425,HTTP_STATUS_UPGRADE_REQUIRED:426,HTTP_STATUS_PRECONDITION_REQUIRED:428,HTTP_STATUS_TOO_MANY_REQUESTS:429,HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE:431,HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS:451,HTTP_STATUS_INTERNAL_SERVER_ERROR:500,HTTP_STATUS_NOT_IMPLEMENTED:501,HTTP_STATUS_BAD_GATEWAY:502,HTTP_STATUS_SERVICE_UNAVAILABLE:503,HTTP_STATUS_GATEWAY_TIMEOUT:504,HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED:505,HTTP_STATUS_VARIANT_ALSO_NEGOTIATES:506,HTTP_STATUS_INSUFFICIENT_STORAGE:507,HTTP_STATUS_LOOP_DETECTED:508,HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED:509,HTTP_STATUS_NOT_EXTENDED:510,HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED:511},t=[[1,`headerTableSize`,!1],[2,`enablePush`,!0],[3,`maxConcurrentStreams`,!1],[4,`initialWindowSize`,!1],[5,`maxFrameSize`,!1],[6,`maxHeaderListSize`,!1],[8,`enableConnectProtocol`,!0]];function n(){return{headerTableSize:4096,enablePush:!0,maxConcurrentStreams:4294967295,initialWindowSize:65535,maxFrameSize:16384,maxHeaderListSize:65535,enableConnectProtocol:!1}}function r(e){if(!e)return new Uint8Array;let n=[];for(let[r,i,a]of t){let t=e[i];t!==void 0&&n.push([r,a?+!!t:t])}let r=new Uint8Array(n.length*6),i=new DataView(r.buffer);for(let e=0;e<n.length;e++){let t=e*6;i.setUint16(t,n[e][0],!1),i.setUint32(t+2,n[e][1],!1)}return r}function i(e){let n=e instanceof ArrayBuffer?new Uint8Array(e):e;if(n.byteLength%6!=0)throw RangeError(`Invalid packed settings length`);let r={},i=new DataView(n.buffer,n.byteOffset,n.byteLength);for(let e=0;e<n.byteLength;e+=6){let n=i.getUint16(e,!1),a=i.getUint32(e+2,!1);for(let[e,i,o]of t)if(n===e){r[i]=o?a!==0:a;break}}return r}export{e as constants,n as getDefaultSettings,r as getPackedSettings,i as getUnpackedSettings};
1
+ const e={NGHTTP2_NO_ERROR:0,NGHTTP2_PROTOCOL_ERROR:1,NGHTTP2_INTERNAL_ERROR:2,NGHTTP2_FLOW_CONTROL_ERROR:3,NGHTTP2_SETTINGS_TIMEOUT:4,NGHTTP2_STREAM_CLOSED:5,NGHTTP2_FRAME_SIZE_ERROR:6,NGHTTP2_REFUSED_STREAM:7,NGHTTP2_CANCEL:8,NGHTTP2_COMPRESSION_ERROR:9,NGHTTP2_CONNECT_ERROR:10,NGHTTP2_ENHANCE_YOUR_CALM:11,NGHTTP2_INADEQUATE_SECURITY:12,NGHTTP2_HTTP_1_1_REQUIRED:13,NGHTTP2_ERR_FRAME_SIZE_ERROR:-522,NGHTTP2_ERR_DEFERRED:-508,NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE:-509,NGHTTP2_ERR_INVALID_ARGUMENT:-501,NGHTTP2_ERR_STREAM_CLOSED:-510,NGHTTP2_ERR_NOMEM:-901,NGHTTP2_SESSION_SERVER:0,NGHTTP2_SESSION_CLIENT:1,NGHTTP2_STREAM_STATE_IDLE:1,NGHTTP2_STREAM_STATE_OPEN:2,NGHTTP2_STREAM_STATE_RESERVED_LOCAL:3,NGHTTP2_STREAM_STATE_RESERVED_REMOTE:4,NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL:5,NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE:6,NGHTTP2_STREAM_STATE_CLOSED:7,NGHTTP2_FLAG_NONE:0,NGHTTP2_FLAG_END_STREAM:1,NGHTTP2_FLAG_END_HEADERS:4,NGHTTP2_FLAG_ACK:1,NGHTTP2_FLAG_PADDED:8,NGHTTP2_FLAG_PRIORITY:32,NGHTTP2_HCAT_REQUEST:0,NGHTTP2_HCAT_RESPONSE:1,NGHTTP2_HCAT_PUSH_RESPONSE:2,NGHTTP2_HCAT_HEADERS:3,NGHTTP2_NV_FLAG_NONE:0,NGHTTP2_NV_FLAG_NO_INDEX:1,NGHTTP2_SETTINGS_HEADER_TABLE_SIZE:1,NGHTTP2_SETTINGS_ENABLE_PUSH:2,NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS:3,NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE:4,NGHTTP2_SETTINGS_MAX_FRAME_SIZE:5,NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE:6,NGHTTP2_SETTINGS_ENABLE_CONNECT_PROTOCOL:8,DEFAULT_SETTINGS_HEADER_TABLE_SIZE:4096,DEFAULT_SETTINGS_ENABLE_PUSH:1,DEFAULT_SETTINGS_MAX_CONCURRENT_STREAMS:4294967295,DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE:65535,DEFAULT_SETTINGS_MAX_FRAME_SIZE:16384,DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE:65535,DEFAULT_SETTINGS_ENABLE_CONNECT_PROTOCOL:0,MAX_MAX_FRAME_SIZE:16777215,MIN_MAX_FRAME_SIZE:16384,MAX_INITIAL_WINDOW_SIZE:2147483647,NGHTTP2_DEFAULT_WEIGHT:16,PADDING_STRATEGY_NONE:0,PADDING_STRATEGY_ALIGNED:1,PADDING_STRATEGY_MAX:2,PADDING_STRATEGY_CALLBACK:1,HTTP2_HEADER_STATUS:`:status`,HTTP2_HEADER_METHOD:`:method`,HTTP2_HEADER_AUTHORITY:`:authority`,HTTP2_HEADER_SCHEME:`:scheme`,HTTP2_HEADER_PATH:`:path`,HTTP2_HEADER_PROTOCOL:`:protocol`,HTTP2_HEADER_ACCEPT:`accept`,HTTP2_HEADER_ACCEPT_CHARSET:`accept-charset`,HTTP2_HEADER_ACCEPT_ENCODING:`accept-encoding`,HTTP2_HEADER_ACCEPT_LANGUAGE:`accept-language`,HTTP2_HEADER_ACCEPT_RANGES:`accept-ranges`,HTTP2_HEADER_ACCESS_CONTROL_ALLOW_CREDENTIALS:`access-control-allow-credentials`,HTTP2_HEADER_ACCESS_CONTROL_ALLOW_HEADERS:`access-control-allow-headers`,HTTP2_HEADER_ACCESS_CONTROL_ALLOW_METHODS:`access-control-allow-methods`,HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN:`access-control-allow-origin`,HTTP2_HEADER_ACCESS_CONTROL_EXPOSE_HEADERS:`access-control-expose-headers`,HTTP2_HEADER_ACCESS_CONTROL_MAX_AGE:`access-control-max-age`,HTTP2_HEADER_ACCESS_CONTROL_REQUEST_HEADERS:`access-control-request-headers`,HTTP2_HEADER_ACCESS_CONTROL_REQUEST_METHOD:`access-control-request-method`,HTTP2_HEADER_AGE:`age`,HTTP2_HEADER_ALLOW:`allow`,HTTP2_HEADER_ALT_SVC:`alt-svc`,HTTP2_HEADER_AUTHORIZATION:`authorization`,HTTP2_HEADER_CACHE_CONTROL:`cache-control`,HTTP2_HEADER_CONNECTION:`connection`,HTTP2_HEADER_CONTENT_DISPOSITION:`content-disposition`,HTTP2_HEADER_CONTENT_ENCODING:`content-encoding`,HTTP2_HEADER_CONTENT_LANGUAGE:`content-language`,HTTP2_HEADER_CONTENT_LENGTH:`content-length`,HTTP2_HEADER_CONTENT_LOCATION:`content-location`,HTTP2_HEADER_CONTENT_MD5:`content-md5`,HTTP2_HEADER_CONTENT_RANGE:`content-range`,HTTP2_HEADER_CONTENT_SECURITY_POLICY:`content-security-policy`,HTTP2_HEADER_CONTENT_TYPE:`content-type`,HTTP2_HEADER_COOKIE:`cookie`,HTTP2_HEADER_DATE:`date`,HTTP2_HEADER_DNT:`dnt`,HTTP2_HEADER_EARLY_DATA:`early-data`,HTTP2_HEADER_ETAG:`etag`,HTTP2_HEADER_EXPECT:`expect`,HTTP2_HEADER_EXPECT_CT:`expect-ct`,HTTP2_HEADER_EXPIRES:`expires`,HTTP2_HEADER_FORWARDED:`forwarded`,HTTP2_HEADER_FROM:`from`,HTTP2_HEADER_HOST:`host`,HTTP2_HEADER_HTTP2_SETTINGS:`http2-settings`,HTTP2_HEADER_IF_MATCH:`if-match`,HTTP2_HEADER_IF_MODIFIED_SINCE:`if-modified-since`,HTTP2_HEADER_IF_NONE_MATCH:`if-none-match`,HTTP2_HEADER_IF_RANGE:`if-range`,HTTP2_HEADER_IF_UNMODIFIED_SINCE:`if-unmodified-since`,HTTP2_HEADER_KEEP_ALIVE:`keep-alive`,HTTP2_HEADER_LAST_MODIFIED:`last-modified`,HTTP2_HEADER_LINK:`link`,HTTP2_HEADER_LOCATION:`location`,HTTP2_HEADER_MAX_FORWARDS:`max-forwards`,HTTP2_HEADER_ORIGIN:`origin`,HTTP2_HEADER_PREFER:`prefer`,HTTP2_HEADER_PRIORITY:`priority`,HTTP2_HEADER_PROXY_AUTHENTICATE:`proxy-authenticate`,HTTP2_HEADER_PROXY_AUTHORIZATION:`proxy-authorization`,HTTP2_HEADER_PROXY_CONNECTION:`proxy-connection`,HTTP2_HEADER_RANGE:`range`,HTTP2_HEADER_REFERER:`referer`,HTTP2_HEADER_REFRESH:`refresh`,HTTP2_HEADER_RETRY_AFTER:`retry-after`,HTTP2_HEADER_SERVER:`server`,HTTP2_HEADER_SET_COOKIE:`set-cookie`,HTTP2_HEADER_STRICT_TRANSPORT_SECURITY:`strict-transport-security`,HTTP2_HEADER_TE:`te`,HTTP2_HEADER_TIMING_ALLOW_ORIGIN:`timing-allow-origin`,HTTP2_HEADER_TRAILER:`trailer`,HTTP2_HEADER_TRANSFER_ENCODING:`transfer-encoding`,HTTP2_HEADER_TK:`tk`,HTTP2_HEADER_UPGRADE:`upgrade`,HTTP2_HEADER_UPGRADE_INSECURE_REQUESTS:`upgrade-insecure-requests`,HTTP2_HEADER_USER_AGENT:`user-agent`,HTTP2_HEADER_VARY:`vary`,HTTP2_HEADER_VIA:`via`,HTTP2_HEADER_WARNING:`warning`,HTTP2_HEADER_WWW_AUTHENTICATE:`www-authenticate`,HTTP2_HEADER_X_CONTENT_TYPE_OPTIONS:`x-content-type-options`,HTTP2_HEADER_X_FORWARDED_FOR:`x-forwarded-for`,HTTP2_HEADER_X_FRAME_OPTIONS:`x-frame-options`,HTTP2_HEADER_X_XSS_PROTECTION:`x-xss-protection`,HTTP2_HEADER_PURPOSE:`purpose`,HTTP2_METHOD_ACL:`ACL`,HTTP2_METHOD_BASELINE_CONTROL:`BASELINE-CONTROL`,HTTP2_METHOD_BIND:`BIND`,HTTP2_METHOD_CHECKIN:`CHECKIN`,HTTP2_METHOD_CHECKOUT:`CHECKOUT`,HTTP2_METHOD_CONNECT:`CONNECT`,HTTP2_METHOD_COPY:`COPY`,HTTP2_METHOD_DELETE:`DELETE`,HTTP2_METHOD_GET:`GET`,HTTP2_METHOD_HEAD:`HEAD`,HTTP2_METHOD_LABEL:`LABEL`,HTTP2_METHOD_LINK:`LINK`,HTTP2_METHOD_LOCK:`LOCK`,HTTP2_METHOD_MERGE:`MERGE`,HTTP2_METHOD_MKACTIVITY:`MKACTIVITY`,HTTP2_METHOD_MKCALENDAR:`MKCALENDAR`,HTTP2_METHOD_MKCOL:`MKCOL`,HTTP2_METHOD_MKREDIRECTREF:`MKREDIRECTREF`,HTTP2_METHOD_MKWORKSPACE:`MKWORKSPACE`,HTTP2_METHOD_MOVE:`MOVE`,HTTP2_METHOD_OPTIONS:`OPTIONS`,HTTP2_METHOD_ORDERPATCH:`ORDERPATCH`,HTTP2_METHOD_PATCH:`PATCH`,HTTP2_METHOD_POST:`POST`,HTTP2_METHOD_PRI:`PRI`,HTTP2_METHOD_PROPFIND:`PROPFIND`,HTTP2_METHOD_PROPPATCH:`PROPPATCH`,HTTP2_METHOD_PUT:`PUT`,HTTP2_METHOD_REBIND:`REBIND`,HTTP2_METHOD_REPORT:`REPORT`,HTTP2_METHOD_SEARCH:`SEARCH`,HTTP2_METHOD_TRACE:`TRACE`,HTTP2_METHOD_UNBIND:`UNBIND`,HTTP2_METHOD_UNCHECKOUT:`UNCHECKOUT`,HTTP2_METHOD_UNLINK:`UNLINK`,HTTP2_METHOD_UNLOCK:`UNLOCK`,HTTP2_METHOD_UPDATE:`UPDATE`,HTTP2_METHOD_UPDATEREDIRECTREF:`UPDATEREDIRECTREF`,HTTP2_METHOD_VERSION_CONTROL:`VERSION-CONTROL`,HTTP_STATUS_CONTINUE:100,HTTP_STATUS_SWITCHING_PROTOCOLS:101,HTTP_STATUS_PROCESSING:102,HTTP_STATUS_EARLY_HINTS:103,HTTP_STATUS_OK:200,HTTP_STATUS_CREATED:201,HTTP_STATUS_ACCEPTED:202,HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION:203,HTTP_STATUS_NO_CONTENT:204,HTTP_STATUS_RESET_CONTENT:205,HTTP_STATUS_PARTIAL_CONTENT:206,HTTP_STATUS_MULTI_STATUS:207,HTTP_STATUS_ALREADY_REPORTED:208,HTTP_STATUS_IM_USED:226,HTTP_STATUS_MULTIPLE_CHOICES:300,HTTP_STATUS_MOVED_PERMANENTLY:301,HTTP_STATUS_FOUND:302,HTTP_STATUS_SEE_OTHER:303,HTTP_STATUS_NOT_MODIFIED:304,HTTP_STATUS_USE_PROXY:305,HTTP_STATUS_TEMPORARY_REDIRECT:307,HTTP_STATUS_PERMANENT_REDIRECT:308,HTTP_STATUS_BAD_REQUEST:400,HTTP_STATUS_UNAUTHORIZED:401,HTTP_STATUS_PAYMENT_REQUIRED:402,HTTP_STATUS_FORBIDDEN:403,HTTP_STATUS_NOT_FOUND:404,HTTP_STATUS_METHOD_NOT_ALLOWED:405,HTTP_STATUS_NOT_ACCEPTABLE:406,HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED:407,HTTP_STATUS_REQUEST_TIMEOUT:408,HTTP_STATUS_CONFLICT:409,HTTP_STATUS_GONE:410,HTTP_STATUS_LENGTH_REQUIRED:411,HTTP_STATUS_PRECONDITION_FAILED:412,HTTP_STATUS_PAYLOAD_TOO_LARGE:413,HTTP_STATUS_URI_TOO_LONG:414,HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE:415,HTTP_STATUS_RANGE_NOT_SATISFIABLE:416,HTTP_STATUS_EXPECTATION_FAILED:417,HTTP_STATUS_TEAPOT:418,HTTP_STATUS_MISDIRECTED_REQUEST:421,HTTP_STATUS_UNPROCESSABLE_ENTITY:422,HTTP_STATUS_LOCKED:423,HTTP_STATUS_FAILED_DEPENDENCY:424,HTTP_STATUS_TOO_EARLY:425,HTTP_STATUS_UPGRADE_REQUIRED:426,HTTP_STATUS_PRECONDITION_REQUIRED:428,HTTP_STATUS_TOO_MANY_REQUESTS:429,HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE:431,HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS:451,HTTP_STATUS_INTERNAL_SERVER_ERROR:500,HTTP_STATUS_NOT_IMPLEMENTED:501,HTTP_STATUS_BAD_GATEWAY:502,HTTP_STATUS_SERVICE_UNAVAILABLE:503,HTTP_STATUS_GATEWAY_TIMEOUT:504,HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED:505,HTTP_STATUS_VARIANT_ALSO_NEGOTIATES:506,HTTP_STATUS_INSUFFICIENT_STORAGE:507,HTTP_STATUS_LOOP_DETECTED:508,HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED:509,HTTP_STATUS_NOT_EXTENDED:510,HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED:511},t=[[1,`headerTableSize`,!1],[2,`enablePush`,!0],[3,`maxConcurrentStreams`,!1],[4,`initialWindowSize`,!1],[5,`maxFrameSize`,!1],[6,`maxHeaderListSize`,!1],[8,`enableConnectProtocol`,!0]];function getDefaultSettings(){return{headerTableSize:4096,enablePush:!0,maxConcurrentStreams:4294967295,initialWindowSize:65535,maxFrameSize:16384,maxHeaderListSize:65535,enableConnectProtocol:!1}}function getPackedSettings(e){if(!e)return new Uint8Array;let n=[];for(let[r,i,a]of t){let t=e[i];t!==void 0&&n.push([r,a?+!!t:t])}let r=new Uint8Array(n.length*6),i=new DataView(r.buffer);for(let e=0;e<n.length;e++){let t=e*6;i.setUint16(t,n[e][0],!1),i.setUint32(t+2,n[e][1],!1)}return r}function getUnpackedSettings(e){let n=e instanceof ArrayBuffer?new Uint8Array(e):e;if(n.byteLength%6!=0)throw RangeError(`Invalid packed settings length`);let r={},i=new DataView(n.buffer,n.byteOffset,n.byteLength);for(let e=0;e<n.byteLength;e+=6){let n=i.getUint16(e,!1),a=i.getUint32(e+2,!1);for(let[e,i,o]of t)if(n===e){r[i]=o?a!==0:a;break}}return r}export{e as constants,getDefaultSettings,getPackedSettings,getUnpackedSettings};
package/lib/esm/server.js CHANGED
@@ -1,4 +1,4 @@
1
- import{constants as e,getDefaultSettings as t}from"./protocol.js";import n from"@girs/soup-3.0";import r from"@girs/gio-2.0";import i from"@girs/glib-2.0";import{EventEmitter as a}from"node:events";import{Readable as o,Writable as s}from"node:stream";import{Buffer as c}from"node:buffer";import{deferEmit as l,ensureMainLoop as u}from"@gjsify/utils";var d=class extends o{method=`GET`;url=`/`;headers={};rawHeaders=[];authority=``;scheme=`https`;httpVersion=`2.0`;httpVersionMajor=2;httpVersionMinor=0;complete=!1;socket=null;trailers={};rawTrailers=[];_stream=null;_timeoutTimer=null;get stream(){return this._stream}_setStream(e){this._stream=e}constructor(){super()}_read(e){}_autoClose(){}_pushBody(e){e&&e.length>0&&this.push(c.from(e)),this.push(null),this.complete=!0,this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null)}setTimeout(e,t){return this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null),t&&this.once(`timeout`,t),e>0&&(this._timeoutTimer=setTimeout(()=>{this._timeoutTimer=null,this.emit(`timeout`)},e)),this}destroy(e){return this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null),super.destroy(e)}},f=class extends s{statusCode=200;statusMessage=``;headersSent=!1;finished=!1;sendDate=!0;_soupMsg;_headers=new Map;_streaming=!1;_timeoutTimer=null;_stream=null;get stream(){return this._stream}get socket(){return null}_setStream(e){this._stream=e}constructor(e){super(),this._soupMsg=e}setHeader(e,t){return this._headers.set(e.toLowerCase(),typeof t==`number`?String(t):t),this}getHeader(e){return this._headers.get(e.toLowerCase())}removeHeader(e){this._headers.delete(e.toLowerCase())}hasHeader(e){return this._headers.has(e.toLowerCase())}getHeaderNames(){return Array.from(this._headers.keys())}getHeaders(){let e={};for(let[t,n]of this._headers)e[t]=n;return e}appendHeader(e,t){let n=e.toLowerCase(),r=this._headers.get(n);return r===void 0?this._headers.set(n,t):Array.isArray(r)?Array.isArray(t)?r.push(...t):r.push(t):this._headers.set(n,Array.isArray(t)?[r,...t]:[r,t]),this}flushHeaders(){this.headersSent||=!0}writeHead(e,t,n){if(this.statusCode=e,typeof t==`object`&&(n=t,t=void 0),typeof t==`string`&&(this.statusMessage=t),n)for(let[e,t]of Object.entries(n))this.setHeader(e,t);return this}respond(e,t){let n=Number(e[`:status`]??200),r={};for(let[t,n]of Object.entries(e))t!==`:status`&&(r[t]=typeof n==`number`?String(n):n);this.writeHead(n,r),t?.endStream&&this.end()}writeContinue(e){e&&Promise.resolve().then(e)}writeEarlyHints(e,t){t&&Promise.resolve().then(t)}addTrailers(e){}setTimeout(e,t){return this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null),t&&this.once(`timeout`,t),e>0&&(this._timeoutTimer=setTimeout(()=>{this._timeoutTimer=null,this.emit(`timeout`)},e)),this}_startStreaming(){if(this._streaming)return;this._streaming=!0,this.headersSent=!0,this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null),this._soupMsg.set_status(this.statusCode,this.statusMessage||null);let e=this._soupMsg.get_response_headers();this._headers.has(`content-length`)?e.set_encoding(n.Encoding.CONTENT_LENGTH):e.set_encoding(n.Encoding.CHUNKED);for(let[t,n]of this._headers)if(Array.isArray(n))for(let r of n)e.append(t,r);else e.replace(t,n)}_write(e,t,n){let r=c.isBuffer(e)?e:c.from(e,t);this._startStreaming(),this._soupMsg.get_response_body().append(new Uint8Array(r.buffer,r.byteOffset,r.byteLength)),this._soupMsg.unpause(),n()}_final(e){this._streaming?(this._soupMsg.get_response_body().complete(),this._soupMsg.unpause()):this._sendBatchResponse(),this.finished=!0,e()}_sendBatchResponse(){if(this.headersSent)return;this.headersSent=!0,this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null),this._soupMsg.set_status(this.statusCode,this.statusMessage||null);let e=this._soupMsg.get_response_headers();for(let[t,n]of this._headers)if(Array.isArray(n))for(let r of n)e.append(t,r);else e.replace(t,n);let t=this._headers.get(`content-type`)||`text/plain`;this._soupMsg.set_response(t,n.MemoryUse.COPY,new Uint8Array)}end(e,t,n){return typeof e==`function`?(n=e,e=void 0):typeof t==`function`&&(n=t,t=void 0),e!=null&&this.write(e,t),super.end(n),this}respondWithFD(e,t,n){throw Error(`http2 respondWithFD is not yet implemented in GJS (Phase 2)`)}respondWithFile(e,t,n){throw Error(`http2 respondWithFile is not yet implemented in GJS (Phase 2)`)}pushStream(e,t,n){throw Error(`http2 server push is not yet implemented in GJS (Phase 2)`)}createPushResponse(e,t){throw Error(`http2 server push is not yet implemented in GJS (Phase 2)`)}},p=class extends a{id=1;pushAllowed=!1;sentHeaders={};_res;_session;get session(){return this._session}get headersSent(){return this._res.headersSent}get closed(){return this._res.writableEnded}get destroyed(){return this._res.destroyed}get pending(){return!1}get state(){return this.closed?e.NGHTTP2_STREAM_STATE_CLOSED:e.NGHTTP2_STREAM_STATE_OPEN}constructor(e,t=null){super(),this._res=e,this._session=t,e.on(`finish`,()=>this.emit(`close`)),e.on(`error`,e=>this.emit(`error`,e))}respond(e,t){this._res.respond(e,t)}write(e,t,n){return this._res.write(e,t,n)}end(e,t,n){return this._res.end(e,t,n),this}destroy(e){return this._res.destroy(e),this}close(e,t){t&&this.once(`close`,t),this._res.end()}priority(e){}setTimeout(e,t){return this._res.setTimeout(e,t),this}sendTrailers(e){}additionalHeaders(e){}respondWithFD(e,t,n){throw Error(`http2 respondWithFD is not yet implemented in GJS (Phase 2)`)}respondWithFile(e,t,n){throw Error(`http2 respondWithFile is not yet implemented in GJS (Phase 2)`)}pushStream(e,t,n){throw Error(`http2 server push is not yet implemented in GJS (Phase 2)`)}},m=class extends a{type=e.NGHTTP2_SESSION_SERVER;alpnProtocol=`h2`;encrypted=!0;_closed=!1;_destroyed=!1;_settings;constructor(){super(),this._settings=t()}get closed(){return this._closed}get destroyed(){return this._destroyed}get pendingSettingsAck(){return!1}get localSettings(){return{...this._settings}}get remoteSettings(){return t()}get originSet(){return[]}settings(e,t){Object.assign(this._settings,e),t&&Promise.resolve().then(t)}goaway(t,n,r){this.emit(`goaway`,t??e.NGHTTP2_NO_ERROR),this.destroy()}ping(e,t){let n=new Uint8Array(8);return t&&Promise.resolve().then(()=>t(null,0,n)),!0}close(e){this._closed||(this._closed=!0,this.emit(`close`),e&&e())}destroy(e,t){this._destroyed||(this._destroyed=!0,this._closed=!0,e&&this.emit(`error`,e),t!==void 0&&this.emit(`goaway`,t),this.emit(`close`))}altsvc(e,t){}origin(...e){}ref(){}unref(){}};const h=new Set;var g=class extends a{listening=!1;maxHeadersCount=2e3;timeout=0;_soupServer=null;_address=null;_options;get soupServer(){return this._soupServer}constructor(e,t){super(),typeof e==`function`&&(t=e,e={}),this._options=e??{},t&&this.on(`request`,t)}listen(...e){let t=0,r=`0.0.0.0`,i;for(let n of e)typeof n==`number`?t=n:typeof n==`string`?r=n:typeof n==`function`&&(i=n);i&&this.once(`listening`,i);try{this._soupServer=new n.Server({}),this._configureSoupServer(this._soupServer),this._soupServer.add_handler(null,(e,t,n)=>{this._handleRequest(t)}),this._soupServer.listen_local(t,n.ServerListenOptions.IPV4_ONLY),u();let e=this._soupServer.get_listeners(),i=t;if(e&&e.length>0){let t=e[0].get_local_address();t&&typeof t.get_port==`function`&&(i=t.get_port())}this.listening=!0,this._address={port:i,family:`IPv4`,address:r},h.add(this),l(this,`listening`)}catch(e){let t=e instanceof Error?e:Error(String(e));if(this.listenerCount(`error`)===0)throw t;l(this,`error`,t)}return this}_configureSoupServer(e){}_handleRequest(e){let t=new d,i=new f(e);t.method=e.get_method();let a=e.get_uri(),o=a.get_path(),s=a.get_query();t.url=s?o+`?`+s:o,t.authority=a.get_host()??``,t.scheme=a.get_scheme()??`http`,e.get_http_version()===n.HTTPVersion.HTTP_2_0?(t.httpVersion=`2.0`,t.httpVersionMajor=2,t.httpVersionMinor=0):(t.httpVersion=`1.1`,t.httpVersionMajor=1,t.httpVersionMinor=1),e.get_request_headers().foreach((e,n)=>{let r=e.toLowerCase();if(t.rawHeaders.push(e,n),r in t.headers){let e=t.headers[r];Array.isArray(e)?e.push(n):t.headers[r]=[e,n]}else t.headers[r]=n});let c=e.get_remote_host()??`127.0.0.1`,l=e.get_remote_address();t.socket={remoteAddress:c,remotePort:l instanceof r.InetSocketAddress?l.get_port():0,localAddress:this._address?.address??`127.0.0.1`,localPort:this._address?.port??0,encrypted:this instanceof _};let u=e.get_request_body();u?.data&&u.data.length>0?t._pushBody(u.data):t._pushBody(null);let h={":method":t.method,":path":t.url,":authority":t.authority,":scheme":t.scheme,...t.headers};e.pause(),i.on(`finish`,()=>e.unpause());let g=new p(i,new m);t._setStream(g),i._setStream(g),this.emit(`stream`,g,h),this.emit(`request`,t,i)}address(){return this._address}close(e){return e&&this.once(`close`,e),this._soupServer&&=(this._soupServer.disconnect(),null),this.listening=!1,h.delete(this),l(this,`close`),this}setTimeout(e,t){return this.timeout=e,t&&this.on(`timeout`,t),this}},_=class extends g{_tlsCert=null;constructor(e,t){if(super(e,t),e.cert&&e.key){let t=v(e.cert),n=v(e.key);this._tlsCert=y(t,n)}else e.pfx}_configureSoupServer(e){this._tlsCert&&e.set_tls_certificate(this._tlsCert)}setSecureContext(e){if(e.cert&&e.key){let t=v(e.cert),n=v(e.key);this._tlsCert=y(t,n),this._soupServer&&this._tlsCert&&this._soupServer.set_tls_certificate(this._tlsCert)}}};function v(e){return Array.isArray(e)?e.map(v).join(`
2
- `):c.isBuffer(e)?e.toString(`utf8`):e}function y(e,t){let n=e.trimEnd()+`
1
+ import{constants as e,getDefaultSettings as t}from"./protocol.js";import n from"@girs/soup-3.0";import r from"@girs/gio-2.0";import i from"@girs/glib-2.0";import{EventEmitter as a}from"node:events";import{Readable as o,Writable as s}from"node:stream";import{Buffer as c}from"node:buffer";import{deferEmit as l,ensureMainLoop as u}from"@gjsify/utils";var Http2ServerRequest=class extends o{method=`GET`;url=`/`;headers={};rawHeaders=[];authority=``;scheme=`https`;httpVersion=`2.0`;httpVersionMajor=2;httpVersionMinor=0;complete=!1;socket=null;trailers={};rawTrailers=[];_stream=null;_timeoutTimer=null;get stream(){return this._stream}_setStream(e){this._stream=e}constructor(){super()}_read(e){}_autoClose(){}_pushBody(e){e&&e.length>0&&this.push(c.from(e)),this.push(null),this.complete=!0,this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null)}setTimeout(e,t){return this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null),t&&this.once(`timeout`,t),e>0&&(this._timeoutTimer=setTimeout(()=>{this._timeoutTimer=null,this.emit(`timeout`)},e)),this}destroy(e){return this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null),super.destroy(e)}},Http2ServerResponse=class extends s{statusCode=200;statusMessage=``;headersSent=!1;finished=!1;sendDate=!0;_soupMsg;_headers=new Map;_streaming=!1;_timeoutTimer=null;_stream=null;get stream(){return this._stream}get socket(){return null}_setStream(e){this._stream=e}constructor(e){super(),this._soupMsg=e}setHeader(e,t){return this._headers.set(e.toLowerCase(),typeof t==`number`?String(t):t),this}getHeader(e){return this._headers.get(e.toLowerCase())}removeHeader(e){this._headers.delete(e.toLowerCase())}hasHeader(e){return this._headers.has(e.toLowerCase())}getHeaderNames(){return Array.from(this._headers.keys())}getHeaders(){let e={};for(let[t,n]of this._headers)e[t]=n;return e}appendHeader(e,t){let n=e.toLowerCase(),r=this._headers.get(n);return r===void 0?this._headers.set(n,t):Array.isArray(r)?Array.isArray(t)?r.push(...t):r.push(t):this._headers.set(n,Array.isArray(t)?[r,...t]:[r,t]),this}flushHeaders(){this.headersSent||=!0}writeHead(e,t,n){if(this.statusCode=e,typeof t==`object`&&(n=t,t=void 0),typeof t==`string`&&(this.statusMessage=t),n)for(let[e,t]of Object.entries(n))this.setHeader(e,t);return this}respond(e,t){let n=Number(e[`:status`]??200),r={};for(let[t,n]of Object.entries(e))t!==`:status`&&(r[t]=typeof n==`number`?String(n):n);this.writeHead(n,r),t?.endStream&&this.end()}writeContinue(e){e&&Promise.resolve().then(e)}writeEarlyHints(e,t){t&&Promise.resolve().then(t)}addTrailers(e){}setTimeout(e,t){return this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null),t&&this.once(`timeout`,t),e>0&&(this._timeoutTimer=setTimeout(()=>{this._timeoutTimer=null,this.emit(`timeout`)},e)),this}_startStreaming(){if(this._streaming)return;this._streaming=!0,this.headersSent=!0,this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null),this._soupMsg.set_status(this.statusCode,this.statusMessage||null);let e=this._soupMsg.get_response_headers();this._headers.has(`content-length`)?e.set_encoding(n.Encoding.CONTENT_LENGTH):e.set_encoding(n.Encoding.CHUNKED);for(let[t,n]of this._headers)if(Array.isArray(n))for(let r of n)e.append(t,r);else e.replace(t,n)}_write(e,t,n){let r=c.isBuffer(e)?e:c.from(e,t);this._startStreaming(),this._soupMsg.get_response_body().append(new Uint8Array(r.buffer,r.byteOffset,r.byteLength)),this._soupMsg.unpause(),n()}_final(e){this._streaming?(this._soupMsg.get_response_body().complete(),this._soupMsg.unpause()):this._sendBatchResponse(),this.finished=!0,e()}_sendBatchResponse(){if(this.headersSent)return;this.headersSent=!0,this._timeoutTimer&&=(clearTimeout(this._timeoutTimer),null),this._soupMsg.set_status(this.statusCode,this.statusMessage||null);let e=this._soupMsg.get_response_headers();for(let[t,n]of this._headers)if(Array.isArray(n))for(let r of n)e.append(t,r);else e.replace(t,n);let t=this._headers.get(`content-type`)||`text/plain`;this._soupMsg.set_response(t,n.MemoryUse.COPY,new Uint8Array)}end(e,t,n){return typeof e==`function`?(n=e,e=void 0):typeof t==`function`&&(n=t,t=void 0),e!=null&&this.write(e,t),super.end(n),this}respondWithFD(e,t,n){throw Error(`http2 respondWithFD is not yet implemented in GJS (Phase 2)`)}respondWithFile(e,t,n){throw Error(`http2 respondWithFile is not yet implemented in GJS (Phase 2)`)}pushStream(e,t,n){throw Error(`http2 server push is not yet implemented in GJS (Phase 2)`)}createPushResponse(e,t){throw Error(`http2 server push is not yet implemented in GJS (Phase 2)`)}},ServerHttp2Stream=class extends a{id=1;pushAllowed=!1;sentHeaders={};_res;_session;get session(){return this._session}get headersSent(){return this._res.headersSent}get closed(){return this._res.writableEnded}get destroyed(){return this._res.destroyed}get pending(){return!1}get state(){return this.closed?e.NGHTTP2_STREAM_STATE_CLOSED:e.NGHTTP2_STREAM_STATE_OPEN}constructor(e,t=null){super(),this._res=e,this._session=t,e.on(`finish`,()=>this.emit(`close`)),e.on(`error`,e=>this.emit(`error`,e))}respond(e,t){this._res.respond(e,t)}write(e,t,n){return this._res.write(e,t,n)}end(e,t,n){return this._res.end(e,t,n),this}destroy(e){return this._res.destroy(e),this}close(e,t){t&&this.once(`close`,t),this._res.end()}priority(e){}setTimeout(e,t){return this._res.setTimeout(e,t),this}sendTrailers(e){}additionalHeaders(e){}respondWithFD(e,t,n){throw Error(`http2 respondWithFD is not yet implemented in GJS (Phase 2)`)}respondWithFile(e,t,n){throw Error(`http2 respondWithFile is not yet implemented in GJS (Phase 2)`)}pushStream(e,t,n){throw Error(`http2 server push is not yet implemented in GJS (Phase 2)`)}},ServerHttp2Session=class extends a{type=e.NGHTTP2_SESSION_SERVER;alpnProtocol=`h2`;encrypted=!0;_closed=!1;_destroyed=!1;_settings;constructor(){super(),this._settings=t()}get closed(){return this._closed}get destroyed(){return this._destroyed}get pendingSettingsAck(){return!1}get localSettings(){return{...this._settings}}get remoteSettings(){return t()}get originSet(){return[]}settings(e,t){Object.assign(this._settings,e),t&&Promise.resolve().then(t)}goaway(t,n,r){this.emit(`goaway`,t??e.NGHTTP2_NO_ERROR),this.destroy()}ping(e,t){let n=new Uint8Array(8);return t&&Promise.resolve().then(()=>t(null,0,n)),!0}close(e){this._closed||(this._closed=!0,this.emit(`close`),e&&e())}destroy(e,t){this._destroyed||(this._destroyed=!0,this._closed=!0,e&&this.emit(`error`,e),t!==void 0&&this.emit(`goaway`,t),this.emit(`close`))}altsvc(e,t){}origin(...e){}ref(){}unref(){}};const d=new Set;var Http2Server=class extends a{listening=!1;maxHeadersCount=2e3;timeout=0;_soupServer=null;_address=null;_options;get soupServer(){return this._soupServer}constructor(e,t){super(),typeof e==`function`&&(t=e,e={}),this._options=e??{},t&&this.on(`request`,t)}listen(...e){let t=0,r=`0.0.0.0`,i;for(let n of e)typeof n==`number`?t=n:typeof n==`string`?r=n:typeof n==`function`&&(i=n);i&&this.once(`listening`,i);try{this._soupServer=new n.Server({}),this._configureSoupServer(this._soupServer),this._soupServer.add_handler(null,(e,t,n)=>{this._handleRequest(t)}),this._soupServer.listen_local(t,n.ServerListenOptions.IPV4_ONLY),u();let e=this._soupServer.get_listeners(),i=t;if(e&&e.length>0){let t=e[0].get_local_address();t&&typeof t.get_port==`function`&&(i=t.get_port())}this.listening=!0,this._address={port:i,family:`IPv4`,address:r},d.add(this),l(this,`listening`)}catch(e){let t=e instanceof Error?e:Error(String(e));if(this.listenerCount(`error`)===0)throw t;l(this,`error`,t)}return this}_configureSoupServer(e){}_handleRequest(e){let t=new Http2ServerRequest,i=new Http2ServerResponse(e);t.method=e.get_method();let a=e.get_uri(),o=a.get_path(),s=a.get_query();t.url=s?o+`?`+s:o,t.authority=a.get_host()??``,t.scheme=a.get_scheme()??`http`,e.get_http_version()===n.HTTPVersion.HTTP_2_0?(t.httpVersion=`2.0`,t.httpVersionMajor=2,t.httpVersionMinor=0):(t.httpVersion=`1.1`,t.httpVersionMajor=1,t.httpVersionMinor=1),e.get_request_headers().foreach((e,n)=>{let r=e.toLowerCase();if(t.rawHeaders.push(e,n),r in t.headers){let e=t.headers[r];Array.isArray(e)?e.push(n):t.headers[r]=[e,n]}else t.headers[r]=n});let c=e.get_remote_host()??`127.0.0.1`,l=e.get_remote_address();t.socket={remoteAddress:c,remotePort:l instanceof r.InetSocketAddress?l.get_port():0,localAddress:this._address?.address??`127.0.0.1`,localPort:this._address?.port??0,encrypted:this instanceof Http2SecureServer};let u=e.get_request_body();u?.data&&u.data.length>0?t._pushBody(u.data):t._pushBody(null);let d={":method":t.method,":path":t.url,":authority":t.authority,":scheme":t.scheme,...t.headers};e.pause(),i.on(`finish`,()=>e.unpause());let f=new ServerHttp2Stream(i,new ServerHttp2Session);t._setStream(f),i._setStream(f),this.emit(`stream`,f,d),this.emit(`request`,t,i)}address(){return this._address}close(e){return e&&this.once(`close`,e),this._soupServer&&=(this._soupServer.disconnect(),null),this.listening=!1,d.delete(this),l(this,`close`),this}setTimeout(e,t){return this.timeout=e,t&&this.on(`timeout`,t),this}},Http2SecureServer=class extends Http2Server{_tlsCert=null;constructor(e,t){if(super(e,t),e.cert&&e.key){let t=_toPemString(e.cert),n=_toPemString(e.key);this._tlsCert=_createTlsCertificate(t,n)}else e.pfx}_configureSoupServer(e){this._tlsCert&&e.set_tls_certificate(this._tlsCert)}setSecureContext(e){if(e.cert&&e.key){let t=_toPemString(e.cert),n=_toPemString(e.key);this._tlsCert=_createTlsCertificate(t,n),this._soupServer&&this._tlsCert&&this._soupServer.set_tls_certificate(this._tlsCert)}}};function _toPemString(e){return Array.isArray(e)?e.map(_toPemString).join(`
2
+ `):c.isBuffer(e)?e.toString(`utf8`):e}function _createTlsCertificate(e,t){let n=e.trimEnd()+`
3
3
  `+t.trimEnd()+`
4
- `;try{return r.TlsCertificate.new_from_pem(n,-1)}catch{let n=i.get_tmp_dir(),a=i.build_filenamev([n,`gjsify-http2-cert.pem`]),o=i.build_filenamev([n,`gjsify-http2-key.pem`]);try{return i.file_set_contents(a,e),i.file_set_contents(o,t),r.TlsCertificate.new_from_files(a,o)}finally{try{r.File.new_for_path(a).delete(null)}catch{}try{r.File.new_for_path(o).delete(null)}catch{}}}}export{_ as Http2SecureServer,g as Http2Server,d as Http2ServerRequest,f as Http2ServerResponse,m as ServerHttp2Session,p as ServerHttp2Stream};
4
+ `;try{return r.TlsCertificate.new_from_pem(n,-1)}catch{let n=i.get_tmp_dir(),a=i.build_filenamev([n,`gjsify-http2-cert.pem`]),o=i.build_filenamev([n,`gjsify-http2-key.pem`]);try{return i.file_set_contents(a,e),i.file_set_contents(o,t),r.TlsCertificate.new_from_files(a,o)}finally{try{r.File.new_for_path(a).delete(null)}catch{}try{r.File.new_for_path(o).delete(null)}catch{}}}}export{Http2SecureServer,Http2Server,Http2ServerRequest,Http2ServerResponse,ServerHttp2Session,ServerHttp2Stream};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/http2",
3
- "version": "0.3.20",
3
+ "version": "0.3.21",
4
4
  "description": "Node.js http2 module for Gjs",
5
5
  "type": "module",
6
6
  "module": "lib/esm/index.js",
@@ -30,8 +30,8 @@
30
30
  "http2"
31
31
  ],
32
32
  "devDependencies": {
33
- "@gjsify/cli": "^0.3.20",
34
- "@gjsify/unit": "^0.3.20",
33
+ "@gjsify/cli": "^0.3.21",
34
+ "@gjsify/unit": "^0.3.21",
35
35
  "@types/node": "^25.6.2",
36
36
  "typescript": "^6.0.3"
37
37
  },
@@ -40,7 +40,7 @@
40
40
  "@girs/glib-2.0": "2.88.0-4.0.0-rc.14",
41
41
  "@girs/gobject-2.0": "2.88.0-4.0.0-rc.14",
42
42
  "@girs/soup-3.0": "3.6.6-4.0.0-rc.14",
43
- "@gjsify/events": "^0.3.20",
44
- "@gjsify/utils": "^0.3.20"
43
+ "@gjsify/events": "^0.3.21",
44
+ "@gjsify/utils": "^0.3.21"
45
45
  }
46
46
  }