Project

General

Profile

« Previous | Next » 

Revision 13a707c6

Added by koszko over 1 year ago

serialize and deserialize entire Response object when relaying fetch() calls to other contexts using sendMessage

View differences:

common/misc.js
42 42
 * proprietary program, I am not going to enforce this in court.
43 43
 */
44 44

  
45
/* uint8_to_hex is a separate function used in cryptographic functions. */
45
/*
46
 * uint8_to_hex is a separate function used in cryptographic functions and when
47
 * dealing with binary data.
48
 */
46 49
const uint8_to_hex =
47 50
      array => [...array].map(b => ("0" + b.toString(16)).slice(-2)).join("");
51
#EXPORT uint8_to_hex
48 52

  
49 53
/*
50 54
 * Asynchronously compute hex string representation of a sha256 digest of a
......
61 65
 * Generate a unique value that can be computed synchronously and is impossible
62 66
 * to guess for a malicious website.
63 67
 */
64
function gen_nonce(length=16)
65
{
68
function gen_nonce(length=16) {
66 69
    const random_data = new Uint8Array(length);
67 70
    crypto.getRandomValues(random_data);
68 71
    return uint8_to_hex(random_data);
......
71 74

  
72 75
/* Check if some HTTP header might define CSP rules. */
73 76
const csp_header_regex =
74
      /^\s*(content-security-policy|x-webkit-csp|x-content-security-policy)/i;
77
      /^\s*(content-security-policy|x-webkit-csp|x-content-security-policy)\s*$/i;
75 78
#EXPORT csp_header_regex
76 79

  
77
/*
78
 * Print item together with type, e.g.
79
 * nice_name("s", "hello") → "hello (script)"
80
 */
81
#EXPORT  (prefix, name) => `${name} (${TYPE_NAME[prefix]})`  AS nice_name
82

  
83 80
/*
84 81
 * Check if url corresponds to a browser's special page (or a directory index in
85 82
 * case of `file://' protocol).
......
90 87
const priv_reg = /^chrome(-extension)?:\/\/|^about:|^view-source:|^file:\/\/[^?#]*\/([?#]|$)/;
91 88
#ENDIF
92 89
#EXPORT  url => priv_reg.test(url)  AS is_privileged_url
90

  
91
/* Make it possible to serialize en Error object. */
92
function error_data_jsonifiable(error) {
93
    const jsonifiable = {};
94
    for (const property of ["name", "message", "fileName", "lineNumber"])
95
	jsonifiable[property] = error[property];
96

  
97
    return jsonifiable;
98
}
99
#EXPORT error_data_jsonifiable

Also available in: Unified diff