src/packkit@internal@brotli_transform.erl
-module(packkit@internal@brotli_transform).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/packkit/internal/brotli_transform.gleam").
-export([prefix_suffix_offset/1, prefix_id_of/1, suffix_id_of/1, op_of/1, apply/2]).
-export_type([op/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-type op() :: identity |
{omit_last, integer()} |
{omit_first, integer()} |
uppercase_first |
uppercase_all.
-file("src/packkit/internal/brotli_transform.gleam", 243).
?DOC(false).
-spec prefix_suffix_offset(integer()) -> integer().
prefix_suffix_offset(Id) ->
case Id of
0 ->
0;
1 ->
2;
2 ->
5;
3 ->
14;
4 ->
19;
5 ->
22;
6 ->
24;
7 ->
30;
8 ->
35;
9 ->
37;
10 ->
42;
11 ->
45;
12 ->
47;
13 ->
50;
14 ->
52;
15 ->
58;
16 ->
62;
17 ->
69;
18 ->
71;
19 ->
78;
20 ->
85;
21 ->
90;
22 ->
92;
23 ->
99;
24 ->
104;
25 ->
109;
26 ->
114;
27 ->
119;
28 ->
122;
29 ->
124;
30 ->
128;
31 ->
131;
32 ->
136;
33 ->
140;
34 ->
142;
35 ->
145;
36 ->
151;
37 ->
159;
38 ->
165;
39 ->
169;
40 ->
173;
41 ->
178;
42 ->
183;
43 ->
189;
44 ->
194;
45 ->
199;
46 ->
202;
47 ->
207;
48 ->
213;
49 ->
216;
_ ->
0
end.
-file("src/packkit/internal/brotli_transform.gleam", 307).
?DOC(false).
-spec prefix_id_of(integer()) -> integer().
prefix_id_of(Idx) ->
case Idx of
0 ->
49;
1 ->
49;
2 ->
0;
3 ->
49;
4 ->
49;
5 ->
49;
6 ->
0;
7 ->
4;
8 ->
49;
9 ->
49;
10 ->
49;
11 ->
49;
12 ->
49;
13 ->
1;
14 ->
49;
15 ->
0;
16 ->
49;
17 ->
49;
18 ->
48;
19 ->
49;
20 ->
49;
21 ->
49;
22 ->
49;
23 ->
49;
24 ->
49;
25 ->
49;
26 ->
49;
27 ->
49;
28 ->
49;
29 ->
49;
30 ->
0;
31 ->
49;
32 ->
5;
33 ->
0;
34 ->
49;
35 ->
49;
36 ->
49;
37 ->
49;
38 ->
49;
39 ->
49;
40 ->
49;
41 ->
47;
42 ->
49;
43 ->
49;
44 ->
49;
45 ->
49;
46 ->
49;
47 ->
49;
48 ->
49;
49 ->
49;
50 ->
49;
51 ->
49;
52 ->
0;
53 ->
49;
54 ->
49;
55 ->
49;
56 ->
49;
57 ->
49;
58 ->
49;
59 ->
49;
60 ->
49;
61 ->
49;
62 ->
47;
63 ->
49;
64 ->
49;
65 ->
0;
66 ->
49;
67 ->
5;
68 ->
49;
69 ->
49;
70 ->
49;
71 ->
0;
72 ->
35;
73 ->
47;
74 ->
49;
75 ->
49;
76 ->
49;
77 ->
5;
78 ->
49;
79 ->
49;
80 ->
49;
81 ->
0;
82 ->
49;
83 ->
0;
84 ->
49;
85 ->
0;
86 ->
49;
87 ->
49;
88 ->
49;
89 ->
0;
90 ->
49;
91 ->
0;
92 ->
49;
93 ->
49;
94 ->
49;
95 ->
49;
96 ->
0;
97 ->
49;
98 ->
0;
99 ->
49;
100 ->
49;
101 ->
49;
102 ->
45;
103 ->
0;
104 ->
49;
105 ->
49;
106 ->
49;
107 ->
49;
108 ->
49;
109 ->
0;
110 ->
0;
111 ->
0;
112 ->
49;
113 ->
49;
114 ->
49;
115 ->
0;
116 ->
49;
117 ->
0;
118 ->
0;
119 ->
0;
120 ->
0;
_ ->
49
end.
-file("src/packkit/internal/brotli_transform.gleam", 434).
?DOC(false).
-spec suffix_id_of(integer()) -> integer().
suffix_id_of(Idx) ->
case Idx of
0 ->
49;
1 ->
0;
2 ->
0;
3 ->
49;
4 ->
0;
5 ->
47;
6 ->
49;
7 ->
0;
8 ->
3;
9 ->
49;
10 ->
6;
11 ->
49;
12 ->
49;
13 ->
0;
14 ->
1;
15 ->
0;
16 ->
7;
17 ->
9;
18 ->
0;
19 ->
8;
20 ->
5;
21 ->
10;
22 ->
11;
23 ->
49;
24 ->
13;
25 ->
14;
26 ->
49;
27 ->
49;
28 ->
15;
29 ->
16;
30 ->
49;
31 ->
12;
32 ->
49;
33 ->
1;
34 ->
49;
35 ->
18;
36 ->
17;
37 ->
19;
38 ->
20;
39 ->
49;
40 ->
49;
41 ->
49;
42 ->
49;
43 ->
22;
44 ->
49;
45 ->
23;
46 ->
24;
47 ->
25;
48 ->
49;
49 ->
26;
50 ->
27;
51 ->
28;
52 ->
12;
53 ->
29;
54 ->
49;
55 ->
49;
56 ->
49;
57 ->
21;
58 ->
1;
59 ->
49;
60 ->
31;
61 ->
32;
62 ->
3;
63 ->
49;
64 ->
49;
65 ->
1;
66 ->
8;
67 ->
21;
68 ->
0;
69 ->
10;
70 ->
30;
71 ->
5;
72 ->
49;
73 ->
2;
74 ->
17;
75 ->
36;
76 ->
33;
77 ->
0;
78 ->
21;
79 ->
5;
80 ->
37;
81 ->
30;
82 ->
38;
83 ->
0;
84 ->
39;
85 ->
49;
86 ->
34;
87 ->
8;
88 ->
12;
89 ->
21;
90 ->
40;
91 ->
12;
92 ->
41;
93 ->
42;
94 ->
17;
95 ->
43;
96 ->
5;
97 ->
10;
98 ->
34;
99 ->
33;
100 ->
44;
101 ->
5;
102 ->
49;
103 ->
33;
104 ->
30;
105 ->
30;
106 ->
46;
107 ->
1;
108 ->
34;
109 ->
33;
110 ->
30;
111 ->
1;
112 ->
33;
113 ->
21;
114 ->
12;
115 ->
5;
116 ->
34;
117 ->
12;
118 ->
30;
119 ->
34;
120 ->
34;
_ ->
49
end.
-file("src/packkit/internal/brotli_transform.gleam", 561).
?DOC(false).
-spec op_of(integer()) -> op().
op_of(Idx) ->
case Idx of
0 ->
identity;
1 ->
identity;
2 ->
identity;
3 ->
{omit_first, 1};
4 ->
uppercase_first;
5 ->
identity;
6 ->
identity;
7 ->
identity;
8 ->
identity;
9 ->
uppercase_first;
10 ->
identity;
11 ->
{omit_first, 2};
12 ->
{omit_last, 1};
13 ->
identity;
14 ->
identity;
15 ->
uppercase_first;
16 ->
identity;
17 ->
identity;
18 ->
identity;
19 ->
identity;
20 ->
identity;
21 ->
identity;
22 ->
identity;
23 ->
{omit_last, 3};
24 ->
identity;
25 ->
identity;
26 ->
{omit_first, 3};
27 ->
{omit_last, 2};
28 ->
identity;
29 ->
identity;
30 ->
uppercase_first;
31 ->
identity;
32 ->
identity;
33 ->
identity;
34 ->
{omit_first, 4};
35 ->
identity;
36 ->
identity;
37 ->
identity;
38 ->
identity;
39 ->
{omit_first, 5};
40 ->
{omit_first, 6};
41 ->
identity;
42 ->
{omit_last, 4};
43 ->
identity;
44 ->
uppercase_all;
45 ->
identity;
46 ->
identity;
47 ->
identity;
48 ->
{omit_last, 7};
49 ->
{omit_last, 1};
50 ->
identity;
51 ->
identity;
52 ->
identity;
53 ->
identity;
54 ->
{omit_first, 9};
55 ->
{omit_first, 7};
56 ->
{omit_last, 6};
57 ->
identity;
58 ->
uppercase_first;
59 ->
{omit_last, 8};
60 ->
identity;
61 ->
identity;
62 ->
identity;
63 ->
{omit_last, 5};
64 ->
{omit_last, 9};
65 ->
uppercase_first;
66 ->
uppercase_first;
67 ->
identity;
68 ->
uppercase_all;
69 ->
uppercase_first;
70 ->
identity;
71 ->
identity;
72 ->
identity;
73 ->
identity;
74 ->
uppercase_first;
75 ->
identity;
76 ->
identity;
77 ->
identity;
78 ->
uppercase_first;
79 ->
uppercase_first;
80 ->
identity;
81 ->
identity;
82 ->
identity;
83 ->
uppercase_all;
84 ->
identity;
85 ->
uppercase_all;
86 ->
identity;
87 ->
uppercase_all;
88 ->
uppercase_first;
89 ->
identity;
90 ->
identity;
91 ->
uppercase_first;
92 ->
identity;
93 ->
identity;
94 ->
uppercase_all;
95 ->
identity;
96 ->
uppercase_first;
97 ->
uppercase_all;
98 ->
identity;
99 ->
uppercase_first;
100 ->
identity;
101 ->
uppercase_all;
102 ->
identity;
103 ->
identity;
104 ->
uppercase_first;
105 ->
uppercase_all;
106 ->
identity;
107 ->
uppercase_all;
108 ->
uppercase_first;
109 ->
uppercase_first;
110 ->
uppercase_all;
111 ->
uppercase_all;
112 ->
uppercase_all;
113 ->
uppercase_all;
114 ->
uppercase_all;
115 ->
uppercase_all;
116 ->
uppercase_all;
117 ->
uppercase_all;
118 ->
uppercase_first;
119 ->
uppercase_all;
120 ->
uppercase_first;
_ ->
identity
end.
-file("src/packkit/internal/brotli_transform.gleam", 744).
?DOC(false).
-spec uppercase_first(bitstring(), integer()) -> bitstring().
uppercase_first(Word, Len) ->
case Word of
<<>> ->
<<>>;
<<B, Rest/binary>> when B < 16#C0 ->
New_b = case (B >= 16#61) andalso (B =< 16#7A) of
true ->
erlang:'bxor'(B, 32);
false ->
B
end,
<<New_b, Rest/bitstring>>;
<<B@1, C, Rest@1/binary>> when B@1 < 16#E0 ->
_ = Len,
<<B@1, (erlang:'bxor'(C, 32)), Rest@1/bitstring>>;
<<B@2, C@1, D, Rest@2/binary>> ->
_ = Len,
<<B@2, C@1, (erlang:'bxor'(D, 5)), Rest@2/bitstring>>;
_ ->
Word
end.
-file("src/packkit/internal/brotli_transform.gleam", 779).
?DOC(false).
-spec uppercase_step(bitstring()) -> integer().
uppercase_step(Rest) ->
case Rest of
<<B, _/bitstring>> when B < 16#C0 ->
1;
<<B@1, _/bitstring>> when B@1 < 16#E0 ->
2;
_ ->
3
end.
-file("src/packkit/internal/brotli_transform.gleam", 766).
?DOC(false).
-spec uppercase_all(bitstring(), integer(), integer()) -> bitstring().
uppercase_all(Word, Taken, Total) ->
case Taken >= Total of
true ->
Word;
false ->
Head@1 = case gleam_stdlib:bit_array_slice(Word, 0, Taken) of
{ok, Head} -> Head;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"packkit/internal/brotli_transform"/utf8>>,
function => <<"uppercase_all"/utf8>>,
line => 770,
value => _assert_fail,
start => 11497,
'end' => 11550,
pattern_start => 11508,
pattern_end => 11516})
end,
Tail@1 = case gleam_stdlib:bit_array_slice(
Word,
Taken,
Total - Taken
) of
{ok, Tail} -> Tail;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"packkit/internal/brotli_transform"/utf8>>,
function => <<"uppercase_all"/utf8>>,
line => 771,
value => _assert_fail@1,
start => 11557,
'end' => 11622,
pattern_start => 11568,
pattern_end => 11576})
end,
New_tail = uppercase_first(Tail@1, Total - Taken),
Step = uppercase_step(Tail@1),
uppercase_all(
gleam_stdlib:bit_array_concat([Head@1, New_tail]),
Taken + Step,
Total
)
end.
-file("src/packkit/internal/brotli_transform.gleam", 715).
?DOC(false).
-spec apply_op(bitstring(), op()) -> bitstring().
apply_op(Word, Op) ->
Len = erlang:byte_size(Word),
case Op of
identity ->
Word;
{omit_last, N} ->
case N >= Len of
true ->
<<>>;
false ->
Slice@1 = case gleam_stdlib:bit_array_slice(
Word,
0,
Len - N
) of
{ok, Slice} -> Slice;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"packkit/internal/brotli_transform"/utf8>>,
function => <<"apply_op"/utf8>>,
line => 723,
value => _assert_fail,
start => 10192,
'end' => 10248,
pattern_start => 10203,
pattern_end => 10212})
end,
Slice@1
end;
{omit_first, N@1} ->
case N@1 >= Len of
true ->
<<>>;
false ->
Slice@3 = case gleam_stdlib:bit_array_slice(
Word,
N@1,
Len - N@1
) of
{ok, Slice@2} -> Slice@2;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"packkit/internal/brotli_transform"/utf8>>,
function => <<"apply_op"/utf8>>,
line => 731,
value => _assert_fail@1,
start => 10375,
'end' => 10431,
pattern_start => 10386,
pattern_end => 10395})
end,
Slice@3
end;
uppercase_first ->
uppercase_first(Word, Len);
uppercase_all ->
uppercase_all(Word, 0, Len)
end.
-file("src/packkit/internal/brotli_transform.gleam", 698).
?DOC(false).
-spec prefix_suffix_slice(integer()) -> bitstring().
prefix_suffix_slice(Id) ->
Start = prefix_suffix_offset(Id),
Len_bits@1 = case gleam_stdlib:bit_array_slice(
<<1,
32,
2,
44,
32,
8,
32,
111,
102,
32,
116,
104,
101,
32,
4,
32,
111,
102,
32,
2,
115,
32,
1,
46,
5,
32,
97,
110,
100,
32,
4,
32,
105,
110,
32,
1,
34,
4,
32,
116,
111,
32,
2,
34,
62,
1,
10,
2,
46,
32,
1,
93,
5,
32,
102,
111,
114,
32,
3,
32,
97,
32,
6,
32,
116,
104,
97,
116,
32,
1,
39,
6,
32,
119,
105,
116,
104,
32,
6,
32,
102,
114,
111,
109,
32,
4,
32,
98,
121,
32,
1,
40,
6,
46,
32,
84,
104,
101,
32,
4,
32,
111,
110,
32,
4,
32,
97,
115,
32,
4,
32,
105,
115,
32,
4,
105,
110,
103,
32,
2,
10,
9,
1,
58,
3,
101,
100,
32,
2,
61,
34,
4,
32,
97,
116,
32,
3,
108,
121,
32,
1,
44,
2,
61,
39,
5,
46,
99,
111,
109,
47,
7,
46,
32,
84,
104,
105,
115,
32,
5,
32,
110,
111,
116,
32,
3,
101,
114,
32,
3,
97,
108,
32,
4,
102,
117,
108,
32,
4,
105,
118,
101,
32,
5,
108,
101,
115,
115,
32,
4,
101,
115,
116,
32,
4,
105,
122,
101,
32,
2,
194,
160,
4,
111,
117,
115,
32,
5,
32,
116,
104,
101,
32,
2,
101,
32,
0>>,
Start,
1
) of
{ok, Len_bits} -> Len_bits;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"packkit/internal/brotli_transform"/utf8>>,
function => <<"prefix_suffix_slice"/utf8>>,
line => 700,
value => _assert_fail,
start => 9692,
'end' => 9764,
pattern_start => 9703,
pattern_end => 9715})
end,
Len = case Len_bits@1 of
<<N>> ->
N;
_ ->
0
end,
case Len of
0 ->
<<>>;
_ ->
Payload@1 = case gleam_stdlib:bit_array_slice(
<<1,
32,
2,
44,
32,
8,
32,
111,
102,
32,
116,
104,
101,
32,
4,
32,
111,
102,
32,
2,
115,
32,
1,
46,
5,
32,
97,
110,
100,
32,
4,
32,
105,
110,
32,
1,
34,
4,
32,
116,
111,
32,
2,
34,
62,
1,
10,
2,
46,
32,
1,
93,
5,
32,
102,
111,
114,
32,
3,
32,
97,
32,
6,
32,
116,
104,
97,
116,
32,
1,
39,
6,
32,
119,
105,
116,
104,
32,
6,
32,
102,
114,
111,
109,
32,
4,
32,
98,
121,
32,
1,
40,
6,
46,
32,
84,
104,
101,
32,
4,
32,
111,
110,
32,
4,
32,
97,
115,
32,
4,
32,
105,
115,
32,
4,
105,
110,
103,
32,
2,
10,
9,
1,
58,
3,
101,
100,
32,
2,
61,
34,
4,
32,
97,
116,
32,
3,
108,
121,
32,
1,
44,
2,
61,
39,
5,
46,
99,
111,
109,
47,
7,
46,
32,
84,
104,
105,
115,
32,
5,
32,
110,
111,
116,
32,
3,
101,
114,
32,
3,
97,
108,
32,
4,
102,
117,
108,
32,
4,
105,
118,
101,
32,
5,
108,
101,
115,
115,
32,
4,
101,
115,
116,
32,
4,
105,
122,
101,
32,
2,
194,
160,
4,
111,
117,
115,
32,
5,
32,
116,
104,
101,
32,
2,
101,
32,
0>>,
Start + 1,
Len
) of
{ok, Payload} -> Payload;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"packkit/internal/brotli_transform"/utf8>>,
function => <<"prefix_suffix_slice"/utf8>>,
line => 708,
value => _assert_fail@1,
start => 9867,
'end' => 9952,
pattern_start => 9878,
pattern_end => 9889})
end,
Payload@1
end.
-file("src/packkit/internal/brotli_transform.gleam", 691).
?DOC(false).
-spec apply(bitstring(), integer()) -> bitstring().
apply(Word, Idx) ->
Prefix = prefix_suffix_slice(prefix_id_of(Idx)),
Suffix = prefix_suffix_slice(suffix_id_of(Idx)),
Body = apply_op(Word, op_of(Idx)),
gleam_stdlib:bit_array_concat([Prefix, Body, Suffix]).