FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
WebKit/Source/WebCore/Modules/compression/CompressionStream.js at main · WebKit/WebKit · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
WebKit
/
WebKit
Public
Notifications
You must be signed in to change notification settings
Fork
2.2k
Star
10.1k
Code
Pull requests
2.7k
Actions
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
WebKit
/
Source
/
WebCore
/
Modules
/
compression
/
CompressionStream.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
117 lines (98 loc) · 4.62 KB
Breadcrumbs
WebKit
/
Source
/
WebCore
/
Modules
/
compression
/
CompressionStream.js
Copy path
File metadata and controls
117 lines (98 loc) · 4.62 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/*
* Copyright (C) 2022 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
function
initializeCompressionStream
(
format
)
{
"use strict"
;
const
errorMessage
=
"CompressionStream requires a single argument with the value 'brotli', 'deflate', 'deflate-raw', or 'gzip'."
;
if
(
arguments
.
length
<
1
)
@
throwTypeError
(
errorMessage
)
;
const
algorithms
=
[
'brotli'
,
'gzip'
,
'deflate'
,
'deflate-raw'
]
;
const
lowercaseFormat
=
@
toString
(
arguments
[
0
]
)
.
toLowerCase
(
)
;
const
findAlgorithm
=
(
element
)
=>
element
===
lowercaseFormat
;
// Pass the index to our new CompressionStreamEncoder, so we do not need to reparse the string.
// We need to ensure that the Formats.h and this file stay in sync.
const
index
=
algorithms
.
findIndex
(
findAlgorithm
)
;
if
(
index
===
-
1
)
@
throwTypeError
(
errorMessage
)
;
// Setup Transform and Flush Algorithms
const
startAlgorithm
=
(
)
=>
{
return
@
promiseResolve
(
@
Promise
,
@
undefined
)
;
}
;
const
transformAlgorithm
=
(
chunk
)
=>
{
if
(
!
@
isObject
(
chunk
)
||
(
!
(
chunk
instanceof
@
ArrayBuffer
)
&&
!
(
chunk
.
buffer
instanceof
@
ArrayBuffer
)
)
)
return
@
promiseReject
(
@
Promise
,
@
makeTypeError
(
"Invalid type should be ArrayBuffer"
)
)
;
try
{
const
encoder
=
@
getByIdDirectPrivate
(
this
,
"CompressionStreamEncoder"
)
;
let
buffer
=
encoder
.
@
encode
(
chunk
)
;
if
(
buffer
)
{
const
transformStream
=
@
getByIdDirectPrivate
(
this
,
"CompressionStreamTransform"
)
;
const
controller
=
@
getByIdDirectPrivate
(
transformStream
,
"controller"
)
;
@
transformStreamDefaultControllerEnqueue
(
controller
,
buffer
)
;
}
}
catch
(
e
)
{
return
@
promiseReject
(
@
Promise
,
@
makeTypeError
(
e
.
message
)
)
;
}
return
@
promiseResolve
(
@
Promise
,
@
undefined
)
;
}
;
const
flushAlgorithm
=
(
)
=>
{
const
encoder
=
@
getByIdDirectPrivate
(
this
,
"CompressionStreamEncoder"
)
;
let
buffer
;
try
{
buffer
=
encoder
.
@
flush
(
)
;
}
catch
(
e
)
{
return
@
promiseReject
(
@
Promise
,
@
makeTypeError
(
e
.
message
)
)
;
}
if
(
buffer
)
{
const
transformStream
=
@
getByIdDirectPrivate
(
this
,
"CompressionStreamTransform"
)
;
const
controller
=
@
getByIdDirectPrivate
(
transformStream
,
"controller"
)
;
@
transformStreamDefaultControllerEnqueue
(
controller
,
buffer
)
;
}
return
@
promiseResolve
(
@
Promise
,
@
undefined
)
;
}
;
const
[
transform
,
readable
,
writable
]
=
@
createTransformStream
(
startAlgorithm
,
transformAlgorithm
,
flushAlgorithm
)
;
@
putByIdDirectPrivate
(
this
,
"CompressionStreamTransform"
,
transform
)
;
@
putByIdDirectPrivate
(
this
,
"readable"
,
readable
)
;
@
putByIdDirectPrivate
(
this
,
"writable"
,
writable
)
;
@
putByIdDirectPrivate
(
this
,
"CompressionStreamEncoder"
,
new
@
CompressionStreamEncoder
(
index
)
)
;
return
this
;
}
@
getter
function
readable
(
)
{
"use strict"
;
const
transform
=
@
getByIdDirectPrivate
(
this
,
"CompressionStreamTransform"
)
;
if
(
!
transform
)
throw
@
makeThisTypeError
(
"CompressionStreamEncoder"
,
"readable"
)
;
return
@
getByIdDirectPrivate
(
this
,
"readable"
)
;
}
@
getter
function
writable
(
)
{
"
use
strict
"
;
const
transform
=
@
getByIdDirectPrivate
(
this
,
"CompressionStreamTransform"
)
;
if
(
!
transform
)
throw
@
makeThisTypeError
(
"CompressionStreamEncoder"
,
"writable"
)
;
return
@
getByIdDirectPrivate
(
this
,
"writable"
)
;
}
Back
|
FazBrowse Home
|
New Git URL