forked from nodejs/node
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnetwork.js
More file actions
99 lines (87 loc) · 2.11 KB
/
Copy pathnetwork.js
File metadata and controls
99 lines (87 loc) · 2.11 KB
1
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
'use strict';
const {
ArrayPrototypeForEach,
NumberMAX_SAFE_INTEGER,
StringPrototypeToLowerCase,
Symbol,
} = primordials;
const dc = require('diagnostics_channel');
const { now } = require('internal/perf/utils');
const { MIMEType } = require('internal/mime');
const kInspectorRequestId = Symbol('kInspectorRequestId');
// https://chromedevtools.github.io/devtools-protocol/1-3/Network/#type-ResourceType
const kResourceType = {
Document: 'Document',
Stylesheet: 'Stylesheet',
Image: 'Image',
Media: 'Media',
Font: 'Font',
Script: 'Script',
TextTrack: 'TextTrack',
XHR: 'XHR',
Fetch: 'Fetch',
Prefetch: 'Prefetch',
EventSource: 'EventSource',
WebSocket: 'WebSocket',
Manifest: 'Manifest',
SignedExchange: 'SignedExchange',
Ping: 'Ping',
CSPViolationReport: 'CSPViolationReport',
Preflight: 'Preflight',
Other: 'Other',
};
/**
* Return a monotonically increasing time in seconds since an arbitrary point in the past.
* @returns {number}
*/
function getMonotonicTime() {
return now() / 1000;
}
let requestId = 0;
function getNextRequestId() {
if (requestId === NumberMAX_SAFE_INTEGER) {
requestId = 0;
}
return `node-network-event-${++requestId}`;
};
function sniffMimeType(contentType) {
let mimeType;
let charset;
try {
const mimeTypeObj = new MIMEType(contentType);
mimeType = StringPrototypeToLowerCase(mimeTypeObj.essence || '');
charset = StringPrototypeToLowerCase(mimeTypeObj.params.get('charset') || '');
} catch {
mimeType = '';
charset = '';
}
return {
__proto__: null,
mimeType,
charset,
};
}
function registerDiagnosticChannels(listenerPairs) {
function enable() {
ArrayPrototypeForEach(listenerPairs, ({ 0: channel, 1: listener }) => {
dc.subscribe(channel, listener);
});
}
function disable() {
ArrayPrototypeForEach(listenerPairs, ({ 0: channel, 1: listener }) => {
dc.unsubscribe(channel, listener);
});
}
return {
enable,
disable,
};
}
module.exports = {
kInspectorRequestId,
kResourceType,
getMonotonicTime,
getNextRequestId,
registerDiagnosticChannels,
sniffMimeType,
};