single-file-core 1.5.106 → 1.5.108
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/.github/workflows/test.yml +31 -0
- package/doc/assets/singlefile-archive-byte-map.svg +298 -0
- package/doc/assets/singlefile-archive-lenses.svg +245 -0
- package/doc/singlefile-archive.md +1455 -0
- package/package.json +2 -2
- package/processors/compression/compression-extract.js +7 -3
- package/processors/compression/compression-packager.js +4 -1
- package/processors/compression/compression.js +260 -142
- package/test/sfz-harness/README.md +58 -0
- package/test/sfz-harness/check-determinism.js +57 -0
- package/test/sfz-harness/common.js +154 -0
- package/test/sfz-harness/dom-stub.js +13 -0
- package/test/sfz-harness/format-rules.js +289 -0
- package/test/sfz-harness/gen-e2e-page.js +14 -0
- package/test/sfz-harness/search-triggers.js +35 -0
- package/test/sfz-harness/smoke.js +10 -0
- package/test/sfz-harness/stored-trigger.js +50 -0
- package/test/sfz-harness/trigger-seeds.json +120 -0
- package/vendor/zip/zip.js +29 -19
- package/zip-build/package-lock.json +4 -4
- package/zip-build/package.json +1 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# .github/workflows/test.yml
|
|
2
|
+
|
|
3
|
+
name: Test
|
|
4
|
+
|
|
5
|
+
# tag pushes are excluded: creating a release would otherwise re-run the check already done on the branch
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: ['**']
|
|
9
|
+
pull_request:
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
sfz-harness:
|
|
13
|
+
name: 'SFZ format rules'
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v5
|
|
17
|
+
- uses: denoland/setup-deno@v2
|
|
18
|
+
with:
|
|
19
|
+
deno-version: v2.x
|
|
20
|
+
# the suites drive the writer directly, with no browser and no network
|
|
21
|
+
- run: npm test
|
|
22
|
+
lint:
|
|
23
|
+
name: 'Lint'
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v5
|
|
27
|
+
- uses: actions/setup-node@v5
|
|
28
|
+
with:
|
|
29
|
+
node-version: '24'
|
|
30
|
+
- run: npm ci
|
|
31
|
+
- run: npx eslint .
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2110 1332" font-family="system-ui, -apple-system, 'Segoe UI', sans-serif">
|
|
2
|
+
<rect width="2110" height="1332" fill="#ffffff"/>
|
|
3
|
+
<text x="16" y="24" font-size="15" font-weight="600" fill="#1c2733">SingleFile archive byte map</text>
|
|
4
|
+
<rect x="16" y="36" width="12" height="12" rx="2" fill="#3d7dbf"/>
|
|
5
|
+
<text x="32" y="46" font-size="11" fill="#3a4652">HTML markup</text>
|
|
6
|
+
<rect x="115.3" y="36" width="12" height="12" rx="2" fill="#28568a"/>
|
|
7
|
+
<text x="131.3" y="46" font-size="11" fill="#3a4652">bootstrap script</text>
|
|
8
|
+
<rect x="246.10000000000002" y="36" width="12" height="12" rx="2" fill="#e8a33d"/>
|
|
9
|
+
<text x="262.1" y="46" font-size="11" fill="#3a4652">zip entries (local headers + data)</text>
|
|
10
|
+
<rect x="490.3" y="36" width="12" height="12" rx="2" fill="#b06f1d"/>
|
|
11
|
+
<text x="506.3" y="46" font-size="11" fill="#3a4652">zip central directory + EOCD</text>
|
|
12
|
+
<rect x="696.7" y="36" width="12" height="12" rx="2" fill="#c14f4f"/>
|
|
13
|
+
<text x="712.7" y="46" font-size="11" fill="#3a4652">PDF document</text>
|
|
14
|
+
<rect x="802.3000000000001" y="36" width="12" height="12" rx="2" fill="#4f9b63"/>
|
|
15
|
+
<text x="818.3000000000001" y="46" font-size="11" fill="#3a4652">PNG structures</text>
|
|
16
|
+
<rect x="920.5000000000001" y="36" width="12" height="12" rx="2" fill="#8f62b8"/>
|
|
17
|
+
<text x="936.5000000000001" y="46" font-size="11" fill="#3a4652">extra-data payload</text>
|
|
18
|
+
<text x="16" y="86" font-size="12.5" font-weight="600" fill="#1c2733">pure zip</text>
|
|
19
|
+
<text x="87.2" y="86" font-size="11" fill="#68727c">zip · an ordinary archive; nothing before or after it</text>
|
|
20
|
+
<rect x="16" y="94" width="190" height="34" rx="3" fill="#e8a33d"/>
|
|
21
|
+
<path d="M 192 93 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
22
|
+
<text x="111" y="114.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
23
|
+
<rect x="208" y="94" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
24
|
+
<text x="285" y="114.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
25
|
+
<text x="16" y="174" font-size="12.5" font-weight="600" fill="#1c2733">plain</text>
|
|
26
|
+
<text x="65" y="174" font-size="11" fill="#68727c">zip.html · utf-8</text>
|
|
27
|
+
<rect x="16" y="182" width="140" height="34" rx="3" fill="#3d7dbf"/>
|
|
28
|
+
<text x="86" y="202.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
|
|
29
|
+
<rect x="158" y="182" width="190" height="34" rx="3" fill="#28568a"/>
|
|
30
|
+
<path d="M 334 181 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
31
|
+
<text x="253" y="202.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
|
|
32
|
+
<rect x="350" y="182" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
33
|
+
<text x="380" y="202.5" font-size="8.5" fill="#ffffff" text-anchor="middle"><!--sfz-data</text>
|
|
34
|
+
<rect x="412" y="182" width="190" height="34" rx="3" fill="#e8a33d"/>
|
|
35
|
+
<path d="M 588 181 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
36
|
+
<text x="507" y="202.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
37
|
+
<rect x="604" y="182" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
38
|
+
<text x="681" y="202.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
39
|
+
<rect x="760" y="182" width="113" height="34" rx="3" fill="#3d7dbf"/>
|
|
40
|
+
<text x="816.5" y="202.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--></body></html></text>
|
|
41
|
+
<path d="M 412 229 v 5 H 758 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
42
|
+
<text x="585" y="246" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content (hidden from the HTML parser)</text>
|
|
43
|
+
<text x="16" y="288" font-size="12.5" font-weight="600" fill="#1c2733">universal</text>
|
|
44
|
+
<text x="94.60000000000001" y="288" font-size="11" fill="#68727c">u.zip.html · windows-1252</text>
|
|
45
|
+
<rect x="16" y="296" width="140" height="34" rx="3" fill="#3d7dbf"/>
|
|
46
|
+
<text x="86" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
|
|
47
|
+
<rect x="158" y="296" width="190" height="34" rx="3" fill="#28568a"/>
|
|
48
|
+
<path d="M 334 295 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
49
|
+
<text x="253" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
|
|
50
|
+
<rect x="350" y="296" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
51
|
+
<text x="380" y="316.5" font-size="8.5" fill="#ffffff" text-anchor="middle"><!--sfz-data</text>
|
|
52
|
+
<rect x="412" y="296" width="190" height="34" rx="3" fill="#e8a33d"/>
|
|
53
|
+
<path d="M 588 295 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
54
|
+
<text x="507" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
55
|
+
<rect x="604" y="296" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
56
|
+
<text x="681" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
57
|
+
<rect x="760" y="296" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
58
|
+
<text x="790" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--></text>
|
|
59
|
+
<rect x="822" y="296" width="95" height="34" rx="3" fill="#8f62b8"/>
|
|
60
|
+
<text x="869.5" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
|
|
61
|
+
<rect x="919" y="296" width="96" height="34" rx="3" fill="#3d7dbf"/>
|
|
62
|
+
<text x="967" y="316.5" font-size="10.5" fill="#ffffff" text-anchor="middle"></body></html></text>
|
|
63
|
+
<path d="M 412 343 v 5 H 758 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
64
|
+
<text x="585" y="360" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
|
|
65
|
+
<text x="16" y="402" font-size="12.5" font-weight="600" fill="#1c2733">universal, relocated extra-data (payload > 64 KB)</text>
|
|
66
|
+
<text x="390.6" y="402" font-size="11" fill="#68727c">u.zip.html · windows-1252 · derived from the writer rules; payload too large for a small specimen</text>
|
|
67
|
+
<rect x="16" y="410" width="140" height="34" rx="3" fill="#3d7dbf"/>
|
|
68
|
+
<text x="86" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
|
|
69
|
+
<rect x="158" y="410" width="190" height="34" rx="3" fill="#28568a"/>
|
|
70
|
+
<path d="M 334 409 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
71
|
+
<text x="253" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
|
|
72
|
+
<rect x="350" y="410" width="140" height="34" rx="3" fill="#8f62b8" opacity="0.3"/>
|
|
73
|
+
<rect x="350" y="410" width="98" height="34" rx="3" fill="#8f62b8"/>
|
|
74
|
+
<path d="M 476 409 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
75
|
+
<text x="399" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
|
|
76
|
+
<rect x="492" y="410" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
77
|
+
<text x="522" y="430.5" font-size="8.5" fill="#ffffff" text-anchor="middle"><!--sfz-data</text>
|
|
78
|
+
<rect x="554" y="410" width="190" height="34" rx="3" fill="#e8a33d"/>
|
|
79
|
+
<path d="M 730 409 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
80
|
+
<text x="649" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
81
|
+
<rect x="746" y="410" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
82
|
+
<text x="823" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
83
|
+
<rect x="902" y="410" width="113" height="34" rx="3" fill="#3d7dbf"/>
|
|
84
|
+
<text x="958.5" y="430.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--></body></html></text>
|
|
85
|
+
<path d="M 554 457 v 5 H 900 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
86
|
+
<text x="727" y="474" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
|
|
87
|
+
<text x="16" y="516" font-size="12.5" font-weight="600" fill="#1c2733">universal, relocated extra-data (appended data disallowed)</text>
|
|
88
|
+
<text x="457.20000000000005" y="516" font-size="11" fill="#68727c">u.zip.html · windows-1252 · nothing after the eocd; the wrapper comment never closes</text>
|
|
89
|
+
<rect x="16" y="524" width="140" height="34" rx="3" fill="#3d7dbf"/>
|
|
90
|
+
<text x="86" y="544.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
|
|
91
|
+
<rect x="158" y="524" width="190" height="34" rx="3" fill="#28568a"/>
|
|
92
|
+
<path d="M 334 523 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
93
|
+
<text x="253" y="544.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
|
|
94
|
+
<rect x="350" y="524" width="140" height="34" rx="3" fill="#8f62b8" opacity="0.3"/>
|
|
95
|
+
<rect x="350" y="524" width="98" height="34" rx="3" fill="#8f62b8"/>
|
|
96
|
+
<text x="399" y="544.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
|
|
97
|
+
<rect x="492" y="524" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
98
|
+
<text x="522" y="544.5" font-size="8.5" fill="#ffffff" text-anchor="middle"><!--sfz-data</text>
|
|
99
|
+
<rect x="554" y="524" width="190" height="34" rx="3" fill="#e8a33d"/>
|
|
100
|
+
<path d="M 730 523 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
101
|
+
<text x="649" y="544.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
102
|
+
<rect x="746" y="524" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
103
|
+
<text x="823" y="544.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
104
|
+
<path d="M 554 571 v 5 H 900 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
105
|
+
<text x="727" y="588" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content (the comment never closes)</text>
|
|
106
|
+
<text x="16" y="630" font-size="12.5" font-weight="600" fill="#1c2733">+ PDF face</text>
|
|
107
|
+
<text x="102" y="630" font-size="11" fill="#68727c">u.zip.html · page.pdf listed first in the central directory</text>
|
|
108
|
+
<rect x="16" y="638" width="95" height="34" rx="3" fill="#3d7dbf"/>
|
|
109
|
+
<text x="63.5" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
|
|
110
|
+
<rect x="113" y="638" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
111
|
+
<text x="143" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle"><!--</text>
|
|
112
|
+
<rect x="175" y="638" width="107" height="34" rx="3" fill="#e8a33d"/>
|
|
113
|
+
<text x="228.5" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-local-header</text>
|
|
114
|
+
<rect x="284" y="638" width="140" height="34" rx="3" fill="#c14f4f"/>
|
|
115
|
+
<path d="M 410 637 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
116
|
+
<text x="354" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-document</text>
|
|
117
|
+
<rect x="426" y="638" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
118
|
+
<text x="456" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--></text>
|
|
119
|
+
<rect x="488" y="638" width="136" height="34" rx="3" fill="#3d7dbf"/>
|
|
120
|
+
<text x="556" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue (cont.)</text>
|
|
121
|
+
<rect x="626" y="638" width="140" height="34" rx="3" fill="#28568a"/>
|
|
122
|
+
<path d="M 752 637 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
123
|
+
<text x="696" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
|
|
124
|
+
<rect x="768" y="638" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
125
|
+
<text x="798" y="658.5" font-size="8.5" fill="#ffffff" text-anchor="middle"><!--sfz-data</text>
|
|
126
|
+
<rect x="830" y="638" width="95" height="34" rx="3" fill="#e8a33d"/>
|
|
127
|
+
<path d="M 911 637 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
128
|
+
<text x="877.5" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
129
|
+
<rect x="927" y="638" width="119" height="34" rx="3" fill="#b06f1d"/>
|
|
130
|
+
<text x="986.5" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-central-record</text>
|
|
131
|
+
<rect x="1048" y="638" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
132
|
+
<text x="1125" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
133
|
+
<rect x="1204" y="638" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
134
|
+
<text x="1234" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--></text>
|
|
135
|
+
<rect x="1266" y="638" width="95" height="34" rx="3" fill="#8f62b8"/>
|
|
136
|
+
<text x="1313.5" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
|
|
137
|
+
<rect x="1363" y="638" width="96" height="34" rx="3" fill="#3d7dbf"/>
|
|
138
|
+
<text x="1411" y="658.5" font-size="10.5" fill="#ffffff" text-anchor="middle"></body></html></text>
|
|
139
|
+
<path d="M 175 685 v 5 H 424 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
140
|
+
<text x="299.5" y="702" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
|
|
141
|
+
<path d="M 830 685 v 5 H 1202 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
142
|
+
<text x="1016" y="702" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
|
|
143
|
+
<text x="16" y="744" font-size="12.5" font-weight="600" fill="#1c2733">+ PNG face</text>
|
|
144
|
+
<text x="102" y="744" font-size="11" fill="#68727c">u.zip.html · well-formed PNG chunk layout; no </body></html> because IEND must end the file</text>
|
|
145
|
+
<rect x="16" y="752" width="130" height="34" rx="3" fill="#4f9b63"/>
|
|
146
|
+
<text x="81" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">png-signature · IHDR</text>
|
|
147
|
+
<rect x="148" y="752" width="72" height="34" rx="3" fill="#4f9b63"/>
|
|
148
|
+
<text x="184" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "PNG"</text>
|
|
149
|
+
<rect x="222" y="752" width="95" height="34" rx="3" fill="#3d7dbf"/>
|
|
150
|
+
<text x="269.5" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
|
|
151
|
+
<rect x="319" y="752" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
152
|
+
<text x="349" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle"><!--</text>
|
|
153
|
+
<rect x="381" y="752" width="140" height="34" rx="3" fill="#4f9b63"/>
|
|
154
|
+
<path d="M 507 751 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
155
|
+
<text x="451" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pixel-data chunks</text>
|
|
156
|
+
<rect x="523" y="752" width="95" height="34" rx="3" fill="#4f9b63"/>
|
|
157
|
+
<text x="570.5" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "ZIP"</text>
|
|
158
|
+
<rect x="620" y="752" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
159
|
+
<text x="650" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--></text>
|
|
160
|
+
<rect x="682" y="752" width="136" height="34" rx="3" fill="#3d7dbf"/>
|
|
161
|
+
<text x="750" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue (cont.)</text>
|
|
162
|
+
<rect x="820" y="752" width="140" height="34" rx="3" fill="#28568a"/>
|
|
163
|
+
<path d="M 946 751 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
164
|
+
<text x="890" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
|
|
165
|
+
<rect x="962" y="752" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
166
|
+
<text x="992" y="772.5" font-size="8.5" fill="#ffffff" text-anchor="middle"><!--sfz-data</text>
|
|
167
|
+
<rect x="1024" y="752" width="140" height="34" rx="3" fill="#e8a33d"/>
|
|
168
|
+
<path d="M 1150 751 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
169
|
+
<text x="1094" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
170
|
+
<rect x="1166" y="752" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
171
|
+
<text x="1243" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
172
|
+
<rect x="1322" y="752" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
173
|
+
<text x="1352" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--></text>
|
|
174
|
+
<rect x="1384" y="752" width="95" height="34" rx="3" fill="#8f62b8"/>
|
|
175
|
+
<text x="1431.5" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
|
|
176
|
+
<rect x="1481" y="752" width="72" height="34" rx="3" fill="#4f9b63"/>
|
|
177
|
+
<text x="1517" y="772.5" font-size="10.5" fill="#ffffff" text-anchor="middle">crc · IEND</text>
|
|
178
|
+
<path d="M 381 799 v 5 H 618 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
179
|
+
<text x="499.5" y="816" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
|
|
180
|
+
<path d="M 1024 799 v 5 H 1320 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
181
|
+
<text x="1172" y="816" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
|
|
182
|
+
<path d="M 222 823 v 5 H 379 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
|
|
183
|
+
<text x="300.5" y="840" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "PNG" chunk data</text>
|
|
184
|
+
<path d="M 620 823 v 5 H 1479 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
|
|
185
|
+
<text x="1049.5" y="840" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "ZIP" chunk data (declared length covers everything up to the trailing CRC)</text>
|
|
186
|
+
<text x="16" y="882" font-size="12.5" font-weight="600" fill="#1c2733">+ PNG + PDF (all four faces)</text>
|
|
187
|
+
<text x="235.20000000000002" y="882" font-size="11" fill="#68727c">u.zip.html · PDF inside the HTML inside the tEXt chunk</text>
|
|
188
|
+
<rect x="16" y="890" width="130" height="34" rx="3" fill="#4f9b63"/>
|
|
189
|
+
<text x="81" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">png-signature · IHDR</text>
|
|
190
|
+
<rect x="148" y="890" width="72" height="34" rx="3" fill="#4f9b63"/>
|
|
191
|
+
<text x="184" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "PNG"</text>
|
|
192
|
+
<rect x="222" y="890" width="95" height="34" rx="3" fill="#3d7dbf"/>
|
|
193
|
+
<text x="269.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue</text>
|
|
194
|
+
<rect x="319" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
195
|
+
<text x="349" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle"><!--</text>
|
|
196
|
+
<rect x="381" y="890" width="107" height="34" rx="3" fill="#e8a33d"/>
|
|
197
|
+
<text x="434.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-local-header</text>
|
|
198
|
+
<rect x="490" y="890" width="140" height="34" rx="3" fill="#c14f4f"/>
|
|
199
|
+
<path d="M 616 889 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
200
|
+
<text x="560" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-document</text>
|
|
201
|
+
<rect x="632" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
202
|
+
<text x="662" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--></text>
|
|
203
|
+
<rect x="694" y="890" width="136" height="34" rx="3" fill="#3d7dbf"/>
|
|
204
|
+
<text x="762" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue (cont.)</text>
|
|
205
|
+
<rect x="832" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
206
|
+
<text x="862" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle"><!--</text>
|
|
207
|
+
<rect x="894" y="890" width="113" height="34" rx="3" fill="#4f9b63"/>
|
|
208
|
+
<path d="M 993 889 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
209
|
+
<text x="950.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pixel-data chunks</text>
|
|
210
|
+
<rect x="1009" y="890" width="72" height="34" rx="3" fill="#4f9b63"/>
|
|
211
|
+
<text x="1045" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "ZIP"</text>
|
|
212
|
+
<rect x="1083" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
213
|
+
<text x="1113" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--></text>
|
|
214
|
+
<rect x="1145" y="890" width="136" height="34" rx="3" fill="#3d7dbf"/>
|
|
215
|
+
<text x="1213" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">html-prologue (cont.)</text>
|
|
216
|
+
<rect x="1283" y="890" width="95" height="34" rx="3" fill="#28568a"/>
|
|
217
|
+
<path d="M 1364 889 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
218
|
+
<text x="1330.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">bootstrap</text>
|
|
219
|
+
<rect x="1380" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
220
|
+
<text x="1410" y="910.5" font-size="8.5" fill="#ffffff" text-anchor="middle"><!--sfz-data</text>
|
|
221
|
+
<rect x="1442" y="890" width="140" height="34" rx="3" fill="#e8a33d"/>
|
|
222
|
+
<path d="M 1568 889 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
223
|
+
<text x="1512" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
224
|
+
<rect x="1584" y="890" width="119" height="34" rx="3" fill="#b06f1d"/>
|
|
225
|
+
<text x="1643.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-central-record</text>
|
|
226
|
+
<rect x="1705" y="890" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
227
|
+
<text x="1782" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
228
|
+
<rect x="1861" y="890" width="60" height="34" rx="3" fill="#3d7dbf"/>
|
|
229
|
+
<text x="1891" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">--></text>
|
|
230
|
+
<rect x="1923" y="890" width="95" height="34" rx="3" fill="#8f62b8"/>
|
|
231
|
+
<text x="1970.5" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">extra-data</text>
|
|
232
|
+
<rect x="2020" y="890" width="72" height="34" rx="3" fill="#4f9b63"/>
|
|
233
|
+
<text x="2056" y="910.5" font-size="10.5" fill="#ffffff" text-anchor="middle">crc · IEND</text>
|
|
234
|
+
<path d="M 381 937 v 5 H 630 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
235
|
+
<text x="505.5" y="954" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
|
|
236
|
+
<path d="M 894 937 v 5 H 1081 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
237
|
+
<text x="987.5" y="954" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
|
|
238
|
+
<path d="M 1442 937 v 5 H 1859 v -5" stroke="#3d7dbf" stroke-width="1.5" fill="none"/>
|
|
239
|
+
<text x="1650.5" y="954" font-size="9.5" fill="#3d7dbf" text-anchor="middle">wrapper comment content</text>
|
|
240
|
+
<path d="M 222 961 v 5 H 892 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
|
|
241
|
+
<text x="557" y="978" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "PNG" chunk data</text>
|
|
242
|
+
<path d="M 1083 961 v 5 H 2018 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
|
|
243
|
+
<text x="1550.5" y="978" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "ZIP" chunk data (declared length covers everything up to the trailing CRC)</text>
|
|
244
|
+
<text x="16" y="1020" font-size="12.5" font-weight="600" fill="#1c2733">PDF face without HTML</text>
|
|
245
|
+
<text x="183.4" y="1020" font-size="11" fill="#68727c">zip · the PDF is prepended data; page.pdf is not an archive entry</text>
|
|
246
|
+
<rect x="16" y="1028" width="190" height="34" rx="3" fill="#c14f4f"/>
|
|
247
|
+
<path d="M 192 1027 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
248
|
+
<text x="111" y="1048.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-document</text>
|
|
249
|
+
<rect x="208" y="1028" width="190" height="34" rx="3" fill="#e8a33d"/>
|
|
250
|
+
<path d="M 384 1027 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
251
|
+
<text x="303" y="1048.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
252
|
+
<rect x="400" y="1028" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
253
|
+
<text x="477" y="1048.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
254
|
+
<text x="16" y="1108" font-size="12.5" font-weight="600" fill="#1c2733">PNG face without HTML</text>
|
|
255
|
+
<text x="183.4" y="1108" font-size="11" fill="#68727c">zip · PNG chunk layout, no markup</text>
|
|
256
|
+
<rect x="16" y="1116" width="130" height="34" rx="3" fill="#4f9b63"/>
|
|
257
|
+
<text x="81" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">png-signature · IHDR</text>
|
|
258
|
+
<rect x="148" y="1116" width="140" height="34" rx="3" fill="#4f9b63"/>
|
|
259
|
+
<path d="M 274 1115 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
260
|
+
<text x="218" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pixel-data chunks</text>
|
|
261
|
+
<rect x="290" y="1116" width="95" height="34" rx="3" fill="#4f9b63"/>
|
|
262
|
+
<text x="337.5" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "ZIP"</text>
|
|
263
|
+
<rect x="387" y="1116" width="140" height="34" rx="3" fill="#e8a33d"/>
|
|
264
|
+
<path d="M 513 1115 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
265
|
+
<text x="457" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
266
|
+
<rect x="529" y="1116" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
267
|
+
<text x="606" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
268
|
+
<rect x="685" y="1116" width="72" height="34" rx="3" fill="#4f9b63"/>
|
|
269
|
+
<text x="721" y="1136.5" font-size="10.5" fill="#ffffff" text-anchor="middle">crc · IEND</text>
|
|
270
|
+
<path d="M 387 1163 v 5 H 683 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
|
|
271
|
+
<text x="535" y="1180" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "ZIP" chunk data (declared length covers everything up to the trailing CRC)</text>
|
|
272
|
+
<text x="16" y="1222" font-size="12.5" font-weight="600" fill="#1c2733">PNG + PDF faces without HTML</text>
|
|
273
|
+
<text x="235.20000000000002" y="1222" font-size="11" fill="#68727c">zip · the PDF is the data of its own tEXt chunk; page.pdf is not an archive entry</text>
|
|
274
|
+
<rect x="16" y="1230" width="130" height="34" rx="3" fill="#4f9b63"/>
|
|
275
|
+
<text x="81" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">png-signature · IHDR</text>
|
|
276
|
+
<rect x="148" y="1230" width="72" height="34" rx="3" fill="#4f9b63"/>
|
|
277
|
+
<text x="184" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "PDF"</text>
|
|
278
|
+
<rect x="222" y="1230" width="140" height="34" rx="3" fill="#c14f4f"/>
|
|
279
|
+
<path d="M 348 1229 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
280
|
+
<text x="292" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pdf-document</text>
|
|
281
|
+
<rect x="364" y="1230" width="140" height="34" rx="3" fill="#4f9b63"/>
|
|
282
|
+
<path d="M 490 1229 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
283
|
+
<text x="434" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">pixel-data chunks</text>
|
|
284
|
+
<rect x="506" y="1230" width="95" height="34" rx="3" fill="#4f9b63"/>
|
|
285
|
+
<text x="553.5" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">tEXt "ZIP"</text>
|
|
286
|
+
<rect x="603" y="1230" width="140" height="34" rx="3" fill="#e8a33d"/>
|
|
287
|
+
<path d="M 729 1229 l -6 36 m 5 -36 l -6 36" stroke="#ffffff" stroke-width="2.2" fill="none"/>
|
|
288
|
+
<text x="673" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">zip-entries</text>
|
|
289
|
+
<rect x="745" y="1230" width="154" height="34" rx="3" fill="#b06f1d"/>
|
|
290
|
+
<text x="822" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">central-directory · eocd</text>
|
|
291
|
+
<rect x="901" y="1230" width="72" height="34" rx="3" fill="#4f9b63"/>
|
|
292
|
+
<text x="937" y="1250.5" font-size="10.5" fill="#ffffff" text-anchor="middle">crc · IEND</text>
|
|
293
|
+
<path d="M 222 1277 v 5 H 362 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
|
|
294
|
+
<text x="292" y="1294" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "PDF" chunk data</text>
|
|
295
|
+
<path d="M 603 1277 v 5 H 899 v -5" stroke="#4f9b63" stroke-width="1.5" fill="none"/>
|
|
296
|
+
<text x="751" y="1294" font-size="9.5" fill="#4f9b63" text-anchor="middle">tEXt "ZIP" chunk data (declared length covers everything up to the trailing CRC)</text>
|
|
297
|
+
<text x="16" y="1326" font-size="9.5" fill="#68727c">Widths are schematic, not proportional; hatched ends mark elided bytes; the lighter tail of a block is reserved space that may stay unused.</text>
|
|
298
|
+
</svg>
|