@gjsify/http2 0.1.13 → 0.2.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/lib/esm/client-session.js +280 -0
- package/lib/esm/index.js +62 -543
- package/lib/esm/protocol.js +317 -0
- package/lib/esm/server.js +620 -0
- package/lib/types/client-session.d.ts +100 -0
- package/lib/types/http2.gjs.spec.d.ts +2 -0
- package/lib/types/index.d.ts +14 -366
- package/lib/types/protocol.d.ts +265 -0
- package/lib/types/server.d.ts +186 -0
- package/package.json +11 -6
- package/src/client-session.ts +352 -0
- package/src/http2.gjs.spec.ts +303 -0
- package/src/index.ts +85 -592
- package/src/protocol.ts +347 -0
- package/src/server.ts +754 -0
- package/src/test.mts +2 -1
- package/tsconfig.tsbuildinfo +1 -1
package/lib/esm/index.js
CHANGED
|
@@ -1,565 +1,84 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
NGHTTP2_FLAG_ACK: 1,
|
|
37
|
-
NGHTTP2_FLAG_PADDED: 8,
|
|
38
|
-
NGHTTP2_FLAG_PRIORITY: 32,
|
|
39
|
-
NGHTTP2_HCAT_REQUEST: 0,
|
|
40
|
-
NGHTTP2_HCAT_RESPONSE: 1,
|
|
41
|
-
NGHTTP2_HCAT_PUSH_RESPONSE: 2,
|
|
42
|
-
NGHTTP2_HCAT_HEADERS: 3,
|
|
43
|
-
NGHTTP2_NV_FLAG_NONE: 0,
|
|
44
|
-
NGHTTP2_NV_FLAG_NO_INDEX: 1,
|
|
45
|
-
NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: 1,
|
|
46
|
-
NGHTTP2_SETTINGS_ENABLE_PUSH: 2,
|
|
47
|
-
NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: 3,
|
|
48
|
-
NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: 4,
|
|
49
|
-
NGHTTP2_SETTINGS_MAX_FRAME_SIZE: 5,
|
|
50
|
-
NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: 6,
|
|
51
|
-
NGHTTP2_SETTINGS_ENABLE_CONNECT_PROTOCOL: 8,
|
|
52
|
-
DEFAULT_SETTINGS_HEADER_TABLE_SIZE: 4096,
|
|
53
|
-
DEFAULT_SETTINGS_ENABLE_PUSH: 1,
|
|
54
|
-
DEFAULT_SETTINGS_MAX_CONCURRENT_STREAMS: 4294967295,
|
|
55
|
-
DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: 65535,
|
|
56
|
-
DEFAULT_SETTINGS_MAX_FRAME_SIZE: 16384,
|
|
57
|
-
DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE: 65535,
|
|
58
|
-
DEFAULT_SETTINGS_ENABLE_CONNECT_PROTOCOL: 0,
|
|
59
|
-
MAX_MAX_FRAME_SIZE: 16777215,
|
|
60
|
-
MIN_MAX_FRAME_SIZE: 16384,
|
|
61
|
-
MAX_INITIAL_WINDOW_SIZE: 2147483647,
|
|
62
|
-
NGHTTP2_DEFAULT_WEIGHT: 16,
|
|
63
|
-
PADDING_STRATEGY_NONE: 0,
|
|
64
|
-
PADDING_STRATEGY_ALIGNED: 1,
|
|
65
|
-
PADDING_STRATEGY_MAX: 2,
|
|
66
|
-
PADDING_STRATEGY_CALLBACK: 1,
|
|
67
|
-
HTTP2_HEADER_STATUS: ":status",
|
|
68
|
-
HTTP2_HEADER_METHOD: ":method",
|
|
69
|
-
HTTP2_HEADER_AUTHORITY: ":authority",
|
|
70
|
-
HTTP2_HEADER_SCHEME: ":scheme",
|
|
71
|
-
HTTP2_HEADER_PATH: ":path",
|
|
72
|
-
HTTP2_HEADER_PROTOCOL: ":protocol",
|
|
73
|
-
HTTP2_HEADER_ACCEPT: "accept",
|
|
74
|
-
HTTP2_HEADER_ACCEPT_CHARSET: "accept-charset",
|
|
75
|
-
HTTP2_HEADER_ACCEPT_ENCODING: "accept-encoding",
|
|
76
|
-
HTTP2_HEADER_ACCEPT_LANGUAGE: "accept-language",
|
|
77
|
-
HTTP2_HEADER_ACCEPT_RANGES: "accept-ranges",
|
|
78
|
-
HTTP2_HEADER_ACCESS_CONTROL_ALLOW_CREDENTIALS: "access-control-allow-credentials",
|
|
79
|
-
HTTP2_HEADER_ACCESS_CONTROL_ALLOW_HEADERS: "access-control-allow-headers",
|
|
80
|
-
HTTP2_HEADER_ACCESS_CONTROL_ALLOW_METHODS: "access-control-allow-methods",
|
|
81
|
-
HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: "access-control-allow-origin",
|
|
82
|
-
HTTP2_HEADER_ACCESS_CONTROL_EXPOSE_HEADERS: "access-control-expose-headers",
|
|
83
|
-
HTTP2_HEADER_ACCESS_CONTROL_MAX_AGE: "access-control-max-age",
|
|
84
|
-
HTTP2_HEADER_ACCESS_CONTROL_REQUEST_HEADERS: "access-control-request-headers",
|
|
85
|
-
HTTP2_HEADER_ACCESS_CONTROL_REQUEST_METHOD: "access-control-request-method",
|
|
86
|
-
HTTP2_HEADER_AGE: "age",
|
|
87
|
-
HTTP2_HEADER_ALLOW: "allow",
|
|
88
|
-
HTTP2_HEADER_ALT_SVC: "alt-svc",
|
|
89
|
-
HTTP2_HEADER_AUTHORIZATION: "authorization",
|
|
90
|
-
HTTP2_HEADER_CACHE_CONTROL: "cache-control",
|
|
91
|
-
HTTP2_HEADER_CONNECTION: "connection",
|
|
92
|
-
HTTP2_HEADER_CONTENT_DISPOSITION: "content-disposition",
|
|
93
|
-
HTTP2_HEADER_CONTENT_ENCODING: "content-encoding",
|
|
94
|
-
HTTP2_HEADER_CONTENT_LANGUAGE: "content-language",
|
|
95
|
-
HTTP2_HEADER_CONTENT_LENGTH: "content-length",
|
|
96
|
-
HTTP2_HEADER_CONTENT_LOCATION: "content-location",
|
|
97
|
-
HTTP2_HEADER_CONTENT_MD5: "content-md5",
|
|
98
|
-
HTTP2_HEADER_CONTENT_RANGE: "content-range",
|
|
99
|
-
HTTP2_HEADER_CONTENT_SECURITY_POLICY: "content-security-policy",
|
|
100
|
-
HTTP2_HEADER_CONTENT_TYPE: "content-type",
|
|
101
|
-
HTTP2_HEADER_COOKIE: "cookie",
|
|
102
|
-
HTTP2_HEADER_DATE: "date",
|
|
103
|
-
HTTP2_HEADER_DNT: "dnt",
|
|
104
|
-
HTTP2_HEADER_EARLY_DATA: "early-data",
|
|
105
|
-
HTTP2_HEADER_ETAG: "etag",
|
|
106
|
-
HTTP2_HEADER_EXPECT: "expect",
|
|
107
|
-
HTTP2_HEADER_EXPECT_CT: "expect-ct",
|
|
108
|
-
HTTP2_HEADER_EXPIRES: "expires",
|
|
109
|
-
HTTP2_HEADER_FORWARDED: "forwarded",
|
|
110
|
-
HTTP2_HEADER_FROM: "from",
|
|
111
|
-
HTTP2_HEADER_HOST: "host",
|
|
112
|
-
HTTP2_HEADER_HTTP2_SETTINGS: "http2-settings",
|
|
113
|
-
HTTP2_HEADER_IF_MATCH: "if-match",
|
|
114
|
-
HTTP2_HEADER_IF_MODIFIED_SINCE: "if-modified-since",
|
|
115
|
-
HTTP2_HEADER_IF_NONE_MATCH: "if-none-match",
|
|
116
|
-
HTTP2_HEADER_IF_RANGE: "if-range",
|
|
117
|
-
HTTP2_HEADER_IF_UNMODIFIED_SINCE: "if-unmodified-since",
|
|
118
|
-
HTTP2_HEADER_KEEP_ALIVE: "keep-alive",
|
|
119
|
-
HTTP2_HEADER_LAST_MODIFIED: "last-modified",
|
|
120
|
-
HTTP2_HEADER_LINK: "link",
|
|
121
|
-
HTTP2_HEADER_LOCATION: "location",
|
|
122
|
-
HTTP2_HEADER_MAX_FORWARDS: "max-forwards",
|
|
123
|
-
HTTP2_HEADER_ORIGIN: "origin",
|
|
124
|
-
HTTP2_HEADER_PREFER: "prefer",
|
|
125
|
-
HTTP2_HEADER_PRIORITY: "priority",
|
|
126
|
-
HTTP2_HEADER_PROXY_AUTHENTICATE: "proxy-authenticate",
|
|
127
|
-
HTTP2_HEADER_PROXY_AUTHORIZATION: "proxy-authorization",
|
|
128
|
-
HTTP2_HEADER_PROXY_CONNECTION: "proxy-connection",
|
|
129
|
-
HTTP2_HEADER_RANGE: "range",
|
|
130
|
-
HTTP2_HEADER_REFERER: "referer",
|
|
131
|
-
HTTP2_HEADER_REFRESH: "refresh",
|
|
132
|
-
HTTP2_HEADER_RETRY_AFTER: "retry-after",
|
|
133
|
-
HTTP2_HEADER_SERVER: "server",
|
|
134
|
-
HTTP2_HEADER_SET_COOKIE: "set-cookie",
|
|
135
|
-
HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: "strict-transport-security",
|
|
136
|
-
HTTP2_HEADER_TE: "te",
|
|
137
|
-
HTTP2_HEADER_TIMING_ALLOW_ORIGIN: "timing-allow-origin",
|
|
138
|
-
HTTP2_HEADER_TRAILER: "trailer",
|
|
139
|
-
HTTP2_HEADER_TRANSFER_ENCODING: "transfer-encoding",
|
|
140
|
-
HTTP2_HEADER_TK: "tk",
|
|
141
|
-
HTTP2_HEADER_UPGRADE: "upgrade",
|
|
142
|
-
HTTP2_HEADER_UPGRADE_INSECURE_REQUESTS: "upgrade-insecure-requests",
|
|
143
|
-
HTTP2_HEADER_USER_AGENT: "user-agent",
|
|
144
|
-
HTTP2_HEADER_VARY: "vary",
|
|
145
|
-
HTTP2_HEADER_VIA: "via",
|
|
146
|
-
HTTP2_HEADER_WARNING: "warning",
|
|
147
|
-
HTTP2_HEADER_WWW_AUTHENTICATE: "www-authenticate",
|
|
148
|
-
HTTP2_HEADER_X_CONTENT_TYPE_OPTIONS: "x-content-type-options",
|
|
149
|
-
HTTP2_HEADER_X_FORWARDED_FOR: "x-forwarded-for",
|
|
150
|
-
HTTP2_HEADER_X_FRAME_OPTIONS: "x-frame-options",
|
|
151
|
-
HTTP2_HEADER_X_XSS_PROTECTION: "x-xss-protection",
|
|
152
|
-
HTTP2_HEADER_PURPOSE: "purpose",
|
|
153
|
-
HTTP2_METHOD_ACL: "ACL",
|
|
154
|
-
HTTP2_METHOD_BASELINE_CONTROL: "BASELINE-CONTROL",
|
|
155
|
-
HTTP2_METHOD_BIND: "BIND",
|
|
156
|
-
HTTP2_METHOD_CHECKIN: "CHECKIN",
|
|
157
|
-
HTTP2_METHOD_CHECKOUT: "CHECKOUT",
|
|
158
|
-
HTTP2_METHOD_CONNECT: "CONNECT",
|
|
159
|
-
HTTP2_METHOD_COPY: "COPY",
|
|
160
|
-
HTTP2_METHOD_DELETE: "DELETE",
|
|
161
|
-
HTTP2_METHOD_GET: "GET",
|
|
162
|
-
HTTP2_METHOD_HEAD: "HEAD",
|
|
163
|
-
HTTP2_METHOD_LABEL: "LABEL",
|
|
164
|
-
HTTP2_METHOD_LINK: "LINK",
|
|
165
|
-
HTTP2_METHOD_LOCK: "LOCK",
|
|
166
|
-
HTTP2_METHOD_MERGE: "MERGE",
|
|
167
|
-
HTTP2_METHOD_MKACTIVITY: "MKACTIVITY",
|
|
168
|
-
HTTP2_METHOD_MKCALENDAR: "MKCALENDAR",
|
|
169
|
-
HTTP2_METHOD_MKCOL: "MKCOL",
|
|
170
|
-
HTTP2_METHOD_MKREDIRECTREF: "MKREDIRECTREF",
|
|
171
|
-
HTTP2_METHOD_MKWORKSPACE: "MKWORKSPACE",
|
|
172
|
-
HTTP2_METHOD_MOVE: "MOVE",
|
|
173
|
-
HTTP2_METHOD_OPTIONS: "OPTIONS",
|
|
174
|
-
HTTP2_METHOD_ORDERPATCH: "ORDERPATCH",
|
|
175
|
-
HTTP2_METHOD_PATCH: "PATCH",
|
|
176
|
-
HTTP2_METHOD_POST: "POST",
|
|
177
|
-
HTTP2_METHOD_PRI: "PRI",
|
|
178
|
-
HTTP2_METHOD_PROPFIND: "PROPFIND",
|
|
179
|
-
HTTP2_METHOD_PROPPATCH: "PROPPATCH",
|
|
180
|
-
HTTP2_METHOD_PUT: "PUT",
|
|
181
|
-
HTTP2_METHOD_REBIND: "REBIND",
|
|
182
|
-
HTTP2_METHOD_REPORT: "REPORT",
|
|
183
|
-
HTTP2_METHOD_SEARCH: "SEARCH",
|
|
184
|
-
HTTP2_METHOD_TRACE: "TRACE",
|
|
185
|
-
HTTP2_METHOD_UNBIND: "UNBIND",
|
|
186
|
-
HTTP2_METHOD_UNCHECKOUT: "UNCHECKOUT",
|
|
187
|
-
HTTP2_METHOD_UNLINK: "UNLINK",
|
|
188
|
-
HTTP2_METHOD_UNLOCK: "UNLOCK",
|
|
189
|
-
HTTP2_METHOD_UPDATE: "UPDATE",
|
|
190
|
-
HTTP2_METHOD_UPDATEREDIRECTREF: "UPDATEREDIRECTREF",
|
|
191
|
-
HTTP2_METHOD_VERSION_CONTROL: "VERSION-CONTROL",
|
|
192
|
-
HTTP_STATUS_CONTINUE: 100,
|
|
193
|
-
HTTP_STATUS_SWITCHING_PROTOCOLS: 101,
|
|
194
|
-
HTTP_STATUS_PROCESSING: 102,
|
|
195
|
-
HTTP_STATUS_EARLY_HINTS: 103,
|
|
196
|
-
HTTP_STATUS_OK: 200,
|
|
197
|
-
HTTP_STATUS_CREATED: 201,
|
|
198
|
-
HTTP_STATUS_ACCEPTED: 202,
|
|
199
|
-
HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: 203,
|
|
200
|
-
HTTP_STATUS_NO_CONTENT: 204,
|
|
201
|
-
HTTP_STATUS_RESET_CONTENT: 205,
|
|
202
|
-
HTTP_STATUS_PARTIAL_CONTENT: 206,
|
|
203
|
-
HTTP_STATUS_MULTI_STATUS: 207,
|
|
204
|
-
HTTP_STATUS_ALREADY_REPORTED: 208,
|
|
205
|
-
HTTP_STATUS_IM_USED: 226,
|
|
206
|
-
HTTP_STATUS_MULTIPLE_CHOICES: 300,
|
|
207
|
-
HTTP_STATUS_MOVED_PERMANENTLY: 301,
|
|
208
|
-
HTTP_STATUS_FOUND: 302,
|
|
209
|
-
HTTP_STATUS_SEE_OTHER: 303,
|
|
210
|
-
HTTP_STATUS_NOT_MODIFIED: 304,
|
|
211
|
-
HTTP_STATUS_USE_PROXY: 305,
|
|
212
|
-
HTTP_STATUS_TEMPORARY_REDIRECT: 307,
|
|
213
|
-
HTTP_STATUS_PERMANENT_REDIRECT: 308,
|
|
214
|
-
HTTP_STATUS_BAD_REQUEST: 400,
|
|
215
|
-
HTTP_STATUS_UNAUTHORIZED: 401,
|
|
216
|
-
HTTP_STATUS_PAYMENT_REQUIRED: 402,
|
|
217
|
-
HTTP_STATUS_FORBIDDEN: 403,
|
|
218
|
-
HTTP_STATUS_NOT_FOUND: 404,
|
|
219
|
-
HTTP_STATUS_METHOD_NOT_ALLOWED: 405,
|
|
220
|
-
HTTP_STATUS_NOT_ACCEPTABLE: 406,
|
|
221
|
-
HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: 407,
|
|
222
|
-
HTTP_STATUS_REQUEST_TIMEOUT: 408,
|
|
223
|
-
HTTP_STATUS_CONFLICT: 409,
|
|
224
|
-
HTTP_STATUS_GONE: 410,
|
|
225
|
-
HTTP_STATUS_LENGTH_REQUIRED: 411,
|
|
226
|
-
HTTP_STATUS_PRECONDITION_FAILED: 412,
|
|
227
|
-
HTTP_STATUS_PAYLOAD_TOO_LARGE: 413,
|
|
228
|
-
HTTP_STATUS_URI_TOO_LONG: 414,
|
|
229
|
-
HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: 415,
|
|
230
|
-
HTTP_STATUS_RANGE_NOT_SATISFIABLE: 416,
|
|
231
|
-
HTTP_STATUS_EXPECTATION_FAILED: 417,
|
|
232
|
-
HTTP_STATUS_TEAPOT: 418,
|
|
233
|
-
HTTP_STATUS_MISDIRECTED_REQUEST: 421,
|
|
234
|
-
HTTP_STATUS_UNPROCESSABLE_ENTITY: 422,
|
|
235
|
-
HTTP_STATUS_LOCKED: 423,
|
|
236
|
-
HTTP_STATUS_FAILED_DEPENDENCY: 424,
|
|
237
|
-
HTTP_STATUS_TOO_EARLY: 425,
|
|
238
|
-
HTTP_STATUS_UPGRADE_REQUIRED: 426,
|
|
239
|
-
HTTP_STATUS_PRECONDITION_REQUIRED: 428,
|
|
240
|
-
HTTP_STATUS_TOO_MANY_REQUESTS: 429,
|
|
241
|
-
HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: 431,
|
|
242
|
-
HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: 451,
|
|
243
|
-
HTTP_STATUS_INTERNAL_SERVER_ERROR: 500,
|
|
244
|
-
HTTP_STATUS_NOT_IMPLEMENTED: 501,
|
|
245
|
-
HTTP_STATUS_BAD_GATEWAY: 502,
|
|
246
|
-
HTTP_STATUS_SERVICE_UNAVAILABLE: 503,
|
|
247
|
-
HTTP_STATUS_GATEWAY_TIMEOUT: 504,
|
|
248
|
-
HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: 505,
|
|
249
|
-
HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: 506,
|
|
250
|
-
HTTP_STATUS_INSUFFICIENT_STORAGE: 507,
|
|
251
|
-
HTTP_STATUS_LOOP_DETECTED: 508,
|
|
252
|
-
HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: 509,
|
|
253
|
-
HTTP_STATUS_NOT_EXTENDED: 510,
|
|
254
|
-
HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: 511
|
|
255
|
-
};
|
|
256
|
-
const SETTINGS_MAP = [
|
|
257
|
-
[1, "headerTableSize", false],
|
|
258
|
-
[2, "enablePush", true],
|
|
259
|
-
[3, "maxConcurrentStreams", false],
|
|
260
|
-
[4, "initialWindowSize", false],
|
|
261
|
-
[5, "maxFrameSize", false],
|
|
262
|
-
[6, "maxHeaderListSize", false],
|
|
263
|
-
[8, "enableConnectProtocol", true]
|
|
264
|
-
];
|
|
265
|
-
function getDefaultSettings() {
|
|
266
|
-
return {
|
|
267
|
-
headerTableSize: 4096,
|
|
268
|
-
enablePush: true,
|
|
269
|
-
maxConcurrentStreams: 4294967295,
|
|
270
|
-
initialWindowSize: 65535,
|
|
271
|
-
maxFrameSize: 16384,
|
|
272
|
-
maxHeaderListSize: 65535,
|
|
273
|
-
enableConnectProtocol: false
|
|
274
|
-
};
|
|
275
|
-
}
|
|
276
|
-
function getPackedSettings(settings) {
|
|
277
|
-
if (!settings) return new Uint8Array(0);
|
|
278
|
-
const pairs = [];
|
|
279
|
-
for (const [id, key, isBool] of SETTINGS_MAP) {
|
|
280
|
-
const val = settings[key];
|
|
281
|
-
if (val !== void 0) {
|
|
282
|
-
pairs.push([id, isBool ? val ? 1 : 0 : val]);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
const buf = new Uint8Array(pairs.length * 6);
|
|
286
|
-
const view = new DataView(buf.buffer);
|
|
287
|
-
for (let i = 0; i < pairs.length; i++) {
|
|
288
|
-
const offset = i * 6;
|
|
289
|
-
view.setUint16(offset, pairs[i][0], false);
|
|
290
|
-
view.setUint32(offset + 2, pairs[i][1], false);
|
|
291
|
-
}
|
|
292
|
-
return buf;
|
|
293
|
-
}
|
|
294
|
-
function getUnpackedSettings(buf) {
|
|
295
|
-
const data = buf instanceof ArrayBuffer ? new Uint8Array(buf) : buf;
|
|
296
|
-
if (data.byteLength % 6 !== 0) {
|
|
297
|
-
throw new RangeError("Invalid packed settings length");
|
|
298
|
-
}
|
|
299
|
-
const result = {};
|
|
300
|
-
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
301
|
-
for (let i = 0; i < data.byteLength; i += 6) {
|
|
302
|
-
const id = view.getUint16(i, false);
|
|
303
|
-
const value = view.getUint32(i + 2, false);
|
|
304
|
-
for (const [settingId, key, isBool] of SETTINGS_MAP) {
|
|
305
|
-
if (id === settingId) {
|
|
306
|
-
result[key] = isBool ? value !== 0 : value;
|
|
307
|
-
break;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
return result;
|
|
312
|
-
}
|
|
313
|
-
class Http2Session extends EventEmitter {
|
|
314
|
-
alpnProtocol = void 0;
|
|
315
|
-
encrypted = false;
|
|
316
|
-
type = constants.NGHTTP2_SESSION_CLIENT;
|
|
317
|
-
_closed = false;
|
|
318
|
-
_destroyed = false;
|
|
319
|
-
_settings;
|
|
320
|
-
constructor() {
|
|
321
|
-
super();
|
|
322
|
-
this._settings = getDefaultSettings();
|
|
323
|
-
}
|
|
324
|
-
get closed() {
|
|
325
|
-
return this._closed;
|
|
326
|
-
}
|
|
327
|
-
get destroyed() {
|
|
328
|
-
return this._destroyed;
|
|
329
|
-
}
|
|
330
|
-
get connecting() {
|
|
331
|
-
return false;
|
|
332
|
-
}
|
|
333
|
-
get pendingSettingsAck() {
|
|
334
|
-
return false;
|
|
335
|
-
}
|
|
336
|
-
get localSettings() {
|
|
337
|
-
return { ...this._settings };
|
|
338
|
-
}
|
|
339
|
-
get remoteSettings() {
|
|
340
|
-
return getDefaultSettings();
|
|
341
|
-
}
|
|
342
|
-
settings(settings, callback) {
|
|
343
|
-
Object.assign(this._settings, settings);
|
|
344
|
-
if (callback) Promise.resolve().then(callback);
|
|
345
|
-
}
|
|
346
|
-
goaway(code, _lastStreamId, _data) {
|
|
347
|
-
this.emit("goaway", code ?? constants.NGHTTP2_NO_ERROR);
|
|
348
|
-
}
|
|
349
|
-
ping(payload, callback) {
|
|
350
|
-
const buf = payload || new Uint8Array(8);
|
|
351
|
-
if (callback) Promise.resolve().then(() => callback(null, 0, buf));
|
|
352
|
-
return true;
|
|
353
|
-
}
|
|
354
|
-
close(callback) {
|
|
355
|
-
if (this._closed) return;
|
|
356
|
-
this._closed = true;
|
|
357
|
-
this.emit("close");
|
|
358
|
-
if (callback) callback();
|
|
359
|
-
}
|
|
360
|
-
destroy(error, code) {
|
|
361
|
-
if (this._destroyed) return;
|
|
362
|
-
this._destroyed = true;
|
|
363
|
-
this._closed = true;
|
|
364
|
-
if (error) this.emit("error", error);
|
|
365
|
-
this.emit("close");
|
|
366
|
-
if (code !== void 0) {
|
|
367
|
-
this.goaway(code);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
ref() {
|
|
371
|
-
}
|
|
372
|
-
unref() {
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
class ServerHttp2Session extends Http2Session {
|
|
376
|
-
type = constants.NGHTTP2_SESSION_SERVER;
|
|
377
|
-
altsvc(_alt, _originOrStream) {
|
|
378
|
-
}
|
|
379
|
-
origin(..._origins) {
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
class ClientHttp2Session extends Http2Session {
|
|
383
|
-
request(_headers, _options) {
|
|
384
|
-
throw new Error("http2 client requests are not yet implemented in GJS");
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
class Http2Stream extends EventEmitter {
|
|
388
|
-
id = 0;
|
|
389
|
-
session = null;
|
|
390
|
-
sentHeaders = {};
|
|
391
|
-
sentInfoHeaders = [];
|
|
392
|
-
_closed = false;
|
|
393
|
-
_destroyed = false;
|
|
394
|
-
_state = constants.NGHTTP2_STREAM_STATE_IDLE;
|
|
395
|
-
get closed() {
|
|
396
|
-
return this._closed;
|
|
397
|
-
}
|
|
398
|
-
get destroyed() {
|
|
399
|
-
return this._destroyed;
|
|
400
|
-
}
|
|
401
|
-
get pending() {
|
|
402
|
-
return this.id === 0;
|
|
403
|
-
}
|
|
404
|
-
get state() {
|
|
405
|
-
return this._state;
|
|
406
|
-
}
|
|
407
|
-
get endAfterHeaders() {
|
|
408
|
-
return false;
|
|
409
|
-
}
|
|
410
|
-
get bufferSize() {
|
|
411
|
-
return 0;
|
|
412
|
-
}
|
|
413
|
-
get rstCode() {
|
|
414
|
-
return constants.NGHTTP2_NO_ERROR;
|
|
415
|
-
}
|
|
416
|
-
close(code, callback) {
|
|
417
|
-
if (this._closed) return;
|
|
418
|
-
this._closed = true;
|
|
419
|
-
this._state = constants.NGHTTP2_STREAM_STATE_CLOSED;
|
|
420
|
-
this.emit("close", code ?? constants.NGHTTP2_NO_ERROR);
|
|
421
|
-
if (callback) callback();
|
|
422
|
-
}
|
|
423
|
-
destroy(error) {
|
|
424
|
-
if (this._destroyed) return;
|
|
425
|
-
this._destroyed = true;
|
|
426
|
-
this._closed = true;
|
|
427
|
-
this._state = constants.NGHTTP2_STREAM_STATE_CLOSED;
|
|
428
|
-
if (error) this.emit("error", error);
|
|
429
|
-
this.emit("close");
|
|
430
|
-
}
|
|
431
|
-
priority(_options) {
|
|
432
|
-
}
|
|
433
|
-
setTimeout(msecs, callback) {
|
|
434
|
-
if (callback) setTimeout(callback, msecs);
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
class ServerHttp2Stream extends Http2Stream {
|
|
438
|
-
headersSent = false;
|
|
439
|
-
pushAllowed = false;
|
|
440
|
-
respond(_headers, _options) {
|
|
441
|
-
throw new Error("http2 server respond is not yet implemented in GJS");
|
|
442
|
-
}
|
|
443
|
-
respondWithFD(_fd, _headers, _options) {
|
|
444
|
-
throw new Error("http2 respondWithFD is not yet implemented in GJS");
|
|
445
|
-
}
|
|
446
|
-
respondWithFile(_path, _headers, _options) {
|
|
447
|
-
throw new Error("http2 respondWithFile is not yet implemented in GJS");
|
|
448
|
-
}
|
|
449
|
-
pushStream(_headers, _options, _callback) {
|
|
450
|
-
throw new Error("http2 server push is not yet implemented in GJS");
|
|
451
|
-
}
|
|
452
|
-
additionalHeaders(_headers) {
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
class ClientHttp2Stream extends Http2Stream {
|
|
456
|
-
}
|
|
457
|
-
class Http2ServerRequest extends EventEmitter {
|
|
458
|
-
headers = {};
|
|
459
|
-
httpVersion = "2.0";
|
|
460
|
-
method = "GET";
|
|
461
|
-
url = "/";
|
|
462
|
-
stream = null;
|
|
463
|
-
authority = "";
|
|
464
|
-
scheme = "https";
|
|
465
|
-
get complete() {
|
|
466
|
-
return true;
|
|
467
|
-
}
|
|
468
|
-
setTimeout(msecs, callback) {
|
|
469
|
-
if (callback) setTimeout(callback, msecs);
|
|
470
|
-
return this;
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
class Http2ServerResponse extends EventEmitter {
|
|
474
|
-
statusCode = 200;
|
|
475
|
-
stream = null;
|
|
476
|
-
headersSent = false;
|
|
477
|
-
_headers = {};
|
|
478
|
-
setHeader(name, value) {
|
|
479
|
-
this._headers[name.toLowerCase()] = value;
|
|
480
|
-
return this;
|
|
481
|
-
}
|
|
482
|
-
getHeader(name) {
|
|
483
|
-
return this._headers[name.toLowerCase()];
|
|
484
|
-
}
|
|
485
|
-
getHeaders() {
|
|
486
|
-
return { ...this._headers };
|
|
487
|
-
}
|
|
488
|
-
removeHeader(name) {
|
|
489
|
-
delete this._headers[name.toLowerCase()];
|
|
490
|
-
}
|
|
491
|
-
hasHeader(name) {
|
|
492
|
-
return name.toLowerCase() in this._headers;
|
|
493
|
-
}
|
|
494
|
-
writeHead(statusCode, headers) {
|
|
495
|
-
this.statusCode = statusCode;
|
|
496
|
-
if (headers) {
|
|
497
|
-
for (const [name, value] of Object.entries(headers)) {
|
|
498
|
-
this._headers[name.toLowerCase()] = value;
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
return this;
|
|
502
|
-
}
|
|
503
|
-
end(_data, _encoding, _callback) {
|
|
504
|
-
this.emit("finish");
|
|
505
|
-
return this;
|
|
506
|
-
}
|
|
507
|
-
write(_chunk, _encoding, _callback) {
|
|
508
|
-
return true;
|
|
509
|
-
}
|
|
510
|
-
createPushResponse(_headers, _callback) {
|
|
511
|
-
throw new Error("http2 server push is not yet implemented in GJS");
|
|
512
|
-
}
|
|
513
|
-
setTimeout(msecs, callback) {
|
|
514
|
-
if (callback) setTimeout(callback, msecs);
|
|
515
|
-
return this;
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
function createServer(_options, _onRequestHandler) {
|
|
519
|
-
throw new Error(
|
|
520
|
-
"http2.createServer() is not yet implemented in GJS. Soup 3.0 handles HTTP/2 transparently but does not expose multiplexed streams. Use http.createServer() for HTTP/1.1 or consider a future nghttp2-based implementation."
|
|
521
|
-
);
|
|
1
|
+
import {
|
|
2
|
+
constants,
|
|
3
|
+
getDefaultSettings,
|
|
4
|
+
getPackedSettings,
|
|
5
|
+
getUnpackedSettings
|
|
6
|
+
} from "./protocol.js";
|
|
7
|
+
import { constants as constants2, getDefaultSettings as getDefaultSettings2, getPackedSettings as getPackedSettings2, getUnpackedSettings as getUnpackedSettings2 } from "./protocol.js";
|
|
8
|
+
import {
|
|
9
|
+
Http2ServerRequest,
|
|
10
|
+
Http2ServerResponse,
|
|
11
|
+
ServerHttp2Stream,
|
|
12
|
+
ServerHttp2Session,
|
|
13
|
+
Http2Server,
|
|
14
|
+
Http2SecureServer
|
|
15
|
+
} from "./server.js";
|
|
16
|
+
import {
|
|
17
|
+
Http2ServerRequest as Http2ServerRequest2,
|
|
18
|
+
Http2ServerResponse as Http2ServerResponse2,
|
|
19
|
+
ServerHttp2Stream as ServerHttp2Stream2,
|
|
20
|
+
ServerHttp2Session as ServerHttp2Session2,
|
|
21
|
+
Http2Server as Http2Server2,
|
|
22
|
+
Http2SecureServer as Http2SecureServer2
|
|
23
|
+
} from "./server.js";
|
|
24
|
+
import {
|
|
25
|
+
Http2Session,
|
|
26
|
+
ClientHttp2Session,
|
|
27
|
+
ClientHttp2Stream
|
|
28
|
+
} from "./client-session.js";
|
|
29
|
+
import {
|
|
30
|
+
Http2Session as Http2Session2,
|
|
31
|
+
ClientHttp2Session as ClientHttp2Session2,
|
|
32
|
+
ClientHttp2Stream as ClientHttp2Stream2
|
|
33
|
+
} from "./client-session.js";
|
|
34
|
+
function createServer(options, handler) {
|
|
35
|
+
return new Http2Server2(options, handler);
|
|
522
36
|
}
|
|
523
|
-
function createSecureServer(
|
|
524
|
-
|
|
525
|
-
"http2.createSecureServer() is not yet implemented in GJS. Requires TLS server support combined with HTTP/2 multiplexing."
|
|
526
|
-
);
|
|
37
|
+
function createSecureServer(options, handler) {
|
|
38
|
+
return new Http2SecureServer2(options, handler);
|
|
527
39
|
}
|
|
528
|
-
function connect(
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
40
|
+
function connect(authority, options, listener) {
|
|
41
|
+
const authorityStr = typeof authority === "string" ? authority : authority.toString();
|
|
42
|
+
if (typeof options === "function") {
|
|
43
|
+
listener = options;
|
|
44
|
+
options = {};
|
|
45
|
+
}
|
|
46
|
+
const session = new ClientHttp2Session2(authorityStr, options ?? {});
|
|
47
|
+
if (listener) session.once("connect", listener);
|
|
48
|
+
return session;
|
|
532
49
|
}
|
|
533
|
-
const sensitiveHeaders = /* @__PURE__ */ Symbol("http2.sensitiveHeaders");
|
|
50
|
+
const sensitiveHeaders = /* @__PURE__ */ Symbol.for("nodejs.http2.sensitiveHeaders");
|
|
534
51
|
function performServerHandshake(_socket) {
|
|
535
52
|
throw new Error("http2.performServerHandshake() is not yet implemented in GJS");
|
|
536
53
|
}
|
|
537
54
|
var index_default = {
|
|
538
|
-
constants,
|
|
55
|
+
constants: constants2,
|
|
539
56
|
createServer,
|
|
540
57
|
createSecureServer,
|
|
541
58
|
connect,
|
|
542
|
-
getDefaultSettings,
|
|
543
|
-
getPackedSettings,
|
|
544
|
-
getUnpackedSettings,
|
|
59
|
+
getDefaultSettings: getDefaultSettings2,
|
|
60
|
+
getPackedSettings: getPackedSettings2,
|
|
61
|
+
getUnpackedSettings: getUnpackedSettings2,
|
|
545
62
|
sensitiveHeaders,
|
|
546
63
|
performServerHandshake,
|
|
547
|
-
Http2Session,
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
64
|
+
Http2Session: Http2Session2,
|
|
65
|
+
Http2Server: Http2Server2,
|
|
66
|
+
Http2SecureServer: Http2SecureServer2,
|
|
67
|
+
Http2ServerRequest: Http2ServerRequest2,
|
|
68
|
+
Http2ServerResponse: Http2ServerResponse2,
|
|
69
|
+
ServerHttp2Session: ServerHttp2Session2,
|
|
70
|
+
ServerHttp2Stream: ServerHttp2Stream2,
|
|
71
|
+
ClientHttp2Session: ClientHttp2Session2,
|
|
72
|
+
ClientHttp2Stream: ClientHttp2Stream2
|
|
555
73
|
};
|
|
556
74
|
export {
|
|
557
75
|
ClientHttp2Session,
|
|
558
76
|
ClientHttp2Stream,
|
|
77
|
+
Http2SecureServer,
|
|
78
|
+
Http2Server,
|
|
559
79
|
Http2ServerRequest,
|
|
560
80
|
Http2ServerResponse,
|
|
561
81
|
Http2Session,
|
|
562
|
-
Http2Stream,
|
|
563
82
|
ServerHttp2Session,
|
|
564
83
|
ServerHttp2Stream,
|
|
565
84
|
connect,
|