@neoware_inc/neozipkit 0.5.0
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/README.md +134 -0
- package/dist/browser/ZipkitBrowser.d.ts +27 -0
- package/dist/browser/ZipkitBrowser.d.ts.map +1 -0
- package/dist/browser/ZipkitBrowser.js +303 -0
- package/dist/browser/ZipkitBrowser.js.map +1 -0
- package/dist/browser/index.d.ts +9 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.esm.d.ts +12 -0
- package/dist/browser/index.esm.d.ts.map +1 -0
- package/dist/browser/index.esm.js +46 -0
- package/dist/browser/index.esm.js.map +1 -0
- package/dist/browser/index.js +38 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser-esm/index.d.ts +9 -0
- package/dist/browser-esm/index.js +50211 -0
- package/dist/browser-esm/index.js.map +7 -0
- package/dist/browser-umd/index.d.ts +9 -0
- package/dist/browser-umd/index.js +50221 -0
- package/dist/browser-umd/index.js.map +7 -0
- package/dist/browser-umd/index.min.js +39 -0
- package/dist/browser.d.ts +9 -0
- package/dist/browser.js +38 -0
- package/dist/core/ZipCompress.d.ts +99 -0
- package/dist/core/ZipCompress.d.ts.map +1 -0
- package/dist/core/ZipCompress.js +287 -0
- package/dist/core/ZipCompress.js.map +1 -0
- package/dist/core/ZipCopy.d.ts +175 -0
- package/dist/core/ZipCopy.d.ts.map +1 -0
- package/dist/core/ZipCopy.js +310 -0
- package/dist/core/ZipCopy.js.map +1 -0
- package/dist/core/ZipDecompress.d.ts +57 -0
- package/dist/core/ZipDecompress.d.ts.map +1 -0
- package/dist/core/ZipDecompress.js +155 -0
- package/dist/core/ZipDecompress.js.map +1 -0
- package/dist/core/ZipEntry.d.ts +138 -0
- package/dist/core/ZipEntry.d.ts.map +1 -0
- package/dist/core/ZipEntry.js +829 -0
- package/dist/core/ZipEntry.js.map +1 -0
- package/dist/core/Zipkit.d.ts +315 -0
- package/dist/core/Zipkit.d.ts.map +1 -0
- package/dist/core/Zipkit.js +647 -0
- package/dist/core/Zipkit.js.map +1 -0
- package/dist/core/ZstdManager.d.ts +56 -0
- package/dist/core/ZstdManager.d.ts.map +1 -0
- package/dist/core/ZstdManager.js +144 -0
- package/dist/core/ZstdManager.js.map +1 -0
- package/dist/core/components/HashCalculator.d.ts +138 -0
- package/dist/core/components/HashCalculator.d.ts.map +1 -0
- package/dist/core/components/HashCalculator.js +360 -0
- package/dist/core/components/HashCalculator.js.map +1 -0
- package/dist/core/components/Logger.d.ts +73 -0
- package/dist/core/components/Logger.d.ts.map +1 -0
- package/dist/core/components/Logger.js +156 -0
- package/dist/core/components/Logger.js.map +1 -0
- package/dist/core/components/ProgressTracker.d.ts +43 -0
- package/dist/core/components/ProgressTracker.d.ts.map +1 -0
- package/dist/core/components/ProgressTracker.js +112 -0
- package/dist/core/components/ProgressTracker.js.map +1 -0
- package/dist/core/components/Support.d.ts +64 -0
- package/dist/core/components/Support.d.ts.map +1 -0
- package/dist/core/components/Support.js +71 -0
- package/dist/core/components/Support.js.map +1 -0
- package/dist/core/components/Util.d.ts +26 -0
- package/dist/core/components/Util.d.ts.map +1 -0
- package/dist/core/components/Util.js +95 -0
- package/dist/core/components/Util.js.map +1 -0
- package/dist/core/constants/Errors.d.ts +52 -0
- package/dist/core/constants/Errors.d.ts.map +1 -0
- package/dist/core/constants/Errors.js +67 -0
- package/dist/core/constants/Errors.js.map +1 -0
- package/dist/core/constants/Headers.d.ts +170 -0
- package/dist/core/constants/Headers.d.ts.map +1 -0
- package/dist/core/constants/Headers.js +194 -0
- package/dist/core/constants/Headers.js.map +1 -0
- package/dist/core/encryption/Manager.d.ts +58 -0
- package/dist/core/encryption/Manager.d.ts.map +1 -0
- package/dist/core/encryption/Manager.js +121 -0
- package/dist/core/encryption/Manager.js.map +1 -0
- package/dist/core/encryption/ZipCrypto.d.ts +172 -0
- package/dist/core/encryption/ZipCrypto.d.ts.map +1 -0
- package/dist/core/encryption/ZipCrypto.js +554 -0
- package/dist/core/encryption/ZipCrypto.js.map +1 -0
- package/dist/core/encryption/index.d.ts +9 -0
- package/dist/core/encryption/index.d.ts.map +1 -0
- package/dist/core/encryption/index.js +17 -0
- package/dist/core/encryption/index.js.map +1 -0
- package/dist/core/encryption/types.d.ts +29 -0
- package/dist/core/encryption/types.d.ts.map +1 -0
- package/dist/core/encryption/types.js +12 -0
- package/dist/core/encryption/types.js.map +1 -0
- package/dist/core/index.d.ts +27 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +59 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/version.d.ts +5 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +31 -0
- package/dist/core/version.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/node/ZipCompressNode.d.ts +123 -0
- package/dist/node/ZipCompressNode.d.ts.map +1 -0
- package/dist/node/ZipCompressNode.js +565 -0
- package/dist/node/ZipCompressNode.js.map +1 -0
- package/dist/node/ZipCopyNode.d.ts +165 -0
- package/dist/node/ZipCopyNode.d.ts.map +1 -0
- package/dist/node/ZipCopyNode.js +347 -0
- package/dist/node/ZipCopyNode.js.map +1 -0
- package/dist/node/ZipDecompressNode.d.ts +197 -0
- package/dist/node/ZipDecompressNode.d.ts.map +1 -0
- package/dist/node/ZipDecompressNode.js +678 -0
- package/dist/node/ZipDecompressNode.js.map +1 -0
- package/dist/node/ZipkitNode.d.ts +466 -0
- package/dist/node/ZipkitNode.d.ts.map +1 -0
- package/dist/node/ZipkitNode.js +1426 -0
- package/dist/node/ZipkitNode.js.map +1 -0
- package/dist/node/index.d.ts +25 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +54 -0
- package/dist/node/index.js.map +1 -0
- package/dist/types/index.d.ts +45 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/examples/README.md +261 -0
- package/examples/append-data.json +44 -0
- package/examples/copy-zip-append.ts +139 -0
- package/examples/copy-zip.ts +152 -0
- package/examples/create-zip.ts +172 -0
- package/examples/extract-zip.ts +118 -0
- package/examples/list-zip.ts +161 -0
- package/examples/test-files/data.json +116 -0
- package/examples/test-files/document.md +80 -0
- package/examples/test-files/document.txt +6 -0
- package/examples/test-files/file1.txt +48 -0
- package/examples/test-files/file2.txt +80 -0
- package/examples/tsconfig.json +44 -0
- package/package.json +167 -0
- package/src/browser/ZipkitBrowser.ts +305 -0
- package/src/browser/index.esm.ts +32 -0
- package/src/browser/index.ts +19 -0
- package/src/core/ZipCompress.ts +370 -0
- package/src/core/ZipCopy.ts +434 -0
- package/src/core/ZipDecompress.ts +191 -0
- package/src/core/ZipEntry.ts +917 -0
- package/src/core/Zipkit.ts +794 -0
- package/src/core/ZstdManager.ts +165 -0
- package/src/core/components/HashCalculator.ts +384 -0
- package/src/core/components/Logger.ts +180 -0
- package/src/core/components/ProgressTracker.ts +134 -0
- package/src/core/components/Support.ts +77 -0
- package/src/core/components/Util.ts +91 -0
- package/src/core/constants/Errors.ts +78 -0
- package/src/core/constants/Headers.ts +205 -0
- package/src/core/encryption/Manager.ts +137 -0
- package/src/core/encryption/ZipCrypto.ts +650 -0
- package/src/core/encryption/index.ts +15 -0
- package/src/core/encryption/types.ts +33 -0
- package/src/core/index.ts +42 -0
- package/src/core/version.ts +33 -0
- package/src/index.ts +19 -0
- package/src/node/ZipCompressNode.ts +618 -0
- package/src/node/ZipCopyNode.ts +437 -0
- package/src/node/ZipDecompressNode.ts +793 -0
- package/src/node/ZipkitNode.ts +1706 -0
- package/src/node/index.ts +40 -0
- package/src/types/index.ts +68 -0
- package/src/types/modules.d.ts +22 -0
- package/src/types/opentimestamps.d.ts +1 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* List ZIP Example
|
|
5
|
+
*
|
|
6
|
+
* Demonstrates listing ZIP archive contents using ZipkitNode.
|
|
7
|
+
* This is a minimal example showing how to read ZIP metadata.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import ZipkitNode from '../src/node';
|
|
11
|
+
import type ZipEntry from '../src/core/ZipEntry';
|
|
12
|
+
import * as fs from 'fs';
|
|
13
|
+
import * as path from 'path';
|
|
14
|
+
|
|
15
|
+
async function main() {
|
|
16
|
+
console.log('Listing ZIP archive contents...\n');
|
|
17
|
+
|
|
18
|
+
// Example: Use the ZIP file created by create-zip.ts
|
|
19
|
+
// You can also specify your own ZIP file path here
|
|
20
|
+
const archivePath = path.join(__dirname, 'output', 'example.zip');
|
|
21
|
+
|
|
22
|
+
// Check if ZIP file exists
|
|
23
|
+
if (!fs.existsSync(archivePath)) {
|
|
24
|
+
console.error(`❌ ZIP file not found: ${archivePath}`);
|
|
25
|
+
console.error('💡 Tip: Run create-zip.ts first to create a test ZIP file,');
|
|
26
|
+
console.error(' or modify archivePath to point to your own ZIP file.');
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Get file stats
|
|
31
|
+
const stats = fs.statSync(archivePath);
|
|
32
|
+
console.log(`Archive: ${archivePath}`);
|
|
33
|
+
console.log(`Size: ${stats.size} bytes\n`);
|
|
34
|
+
|
|
35
|
+
// Create ZipkitNode instance
|
|
36
|
+
const zip = new ZipkitNode();
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
// Load the ZIP file
|
|
40
|
+
console.log('Loading ZIP file...');
|
|
41
|
+
const entries = await zip.loadZipFile(archivePath);
|
|
42
|
+
|
|
43
|
+
console.log(`✅ ZIP file loaded successfully\n`);
|
|
44
|
+
console.log(`Total entries: ${entries.length}\n`);
|
|
45
|
+
|
|
46
|
+
if (entries.length === 0) {
|
|
47
|
+
console.log('Archive is empty.');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Display entries in a table format
|
|
52
|
+
console.log('─'.repeat(80));
|
|
53
|
+
console.log(
|
|
54
|
+
padRight('Filename', 30) +
|
|
55
|
+
padLeft('Original', 10) +
|
|
56
|
+
padLeft('Compressed', 12) +
|
|
57
|
+
padLeft('Ratio', 10) +
|
|
58
|
+
' ' +
|
|
59
|
+
padRight('Method', 10)
|
|
60
|
+
);
|
|
61
|
+
console.log('─'.repeat(80));
|
|
62
|
+
|
|
63
|
+
let totalSize = 0;
|
|
64
|
+
let totalCompressed = 0;
|
|
65
|
+
|
|
66
|
+
entries.forEach((entry: ZipEntry) => {
|
|
67
|
+
const filename = entry.filename || '(unnamed)';
|
|
68
|
+
const size = entry.uncompressedSize || 0;
|
|
69
|
+
const compressed = entry.compressedSize || 0;
|
|
70
|
+
const method = entry.cmpMethodToString();
|
|
71
|
+
const ratio = size > 0 ? ((1 - compressed / size) * 100).toFixed(1) : '0.0';
|
|
72
|
+
|
|
73
|
+
totalSize += size;
|
|
74
|
+
totalCompressed += compressed;
|
|
75
|
+
|
|
76
|
+
console.log(
|
|
77
|
+
padRight(filename.length > 28 ? filename.substring(0, 25) + '...' : filename, 30) +
|
|
78
|
+
padLeft(formatBytes(size), 10) +
|
|
79
|
+
padLeft(formatBytes(compressed), 12) +
|
|
80
|
+
padLeft(ratio + '%', 10) +
|
|
81
|
+
' ' +
|
|
82
|
+
padRight(method, 10)
|
|
83
|
+
);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
console.log('─'.repeat(80));
|
|
87
|
+
const totalRatio = totalSize > 0 ? ((1 - totalCompressed / totalSize) * 100).toFixed(1) : '0.0';
|
|
88
|
+
console.log(
|
|
89
|
+
padRight('Total', 30) +
|
|
90
|
+
padLeft(formatBytes(totalSize), 10) +
|
|
91
|
+
padLeft(formatBytes(totalCompressed), 12) +
|
|
92
|
+
padLeft(totalRatio + '%', 10) +
|
|
93
|
+
' ' +
|
|
94
|
+
padRight('', 10)
|
|
95
|
+
);
|
|
96
|
+
console.log('─'.repeat(80));
|
|
97
|
+
|
|
98
|
+
// Display additional information
|
|
99
|
+
console.log('\nAdditional Information:');
|
|
100
|
+
console.log(` Archive comment: ${zip.getZipComment() || '(none)'}`);
|
|
101
|
+
|
|
102
|
+
// Show compression methods used
|
|
103
|
+
const methods = new Set(entries.map((e: ZipEntry) => e.cmpMethodToString()));
|
|
104
|
+
console.log(` Compression methods: ${Array.from(methods).join(', ')}`);
|
|
105
|
+
|
|
106
|
+
// Show entries with SHA-256 hashes (for blockchain features)
|
|
107
|
+
const entriesWithHash = entries.filter((e: ZipEntry) => (e as any).sha256);
|
|
108
|
+
if (entriesWithHash.length > 0) {
|
|
109
|
+
console.log(` Entries with SHA-256: ${entriesWithHash.length}`);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
console.log('\n💡 Tip: You can access individual entry properties:');
|
|
113
|
+
console.log(' entry.filename - File name');
|
|
114
|
+
console.log(' entry.uncompressedSize - Original file size');
|
|
115
|
+
console.log(' entry.compressedSize - Compressed size');
|
|
116
|
+
console.log(' entry.cmpMethod - Compression method code');
|
|
117
|
+
console.log(' entry.crc - CRC-32 checksum');
|
|
118
|
+
console.log(' entry.timeDateDOS - File timestamp');
|
|
119
|
+
|
|
120
|
+
} catch (error) {
|
|
121
|
+
console.error('❌ Error reading ZIP archive:');
|
|
122
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
123
|
+
if (error instanceof Error && error.stack) {
|
|
124
|
+
console.error('\nStack trace:');
|
|
125
|
+
console.error(error.stack);
|
|
126
|
+
}
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Helper function to format bytes
|
|
133
|
+
*/
|
|
134
|
+
function formatBytes(bytes: number): string {
|
|
135
|
+
if (bytes === 0) return '0 B';
|
|
136
|
+
const k = 1024;
|
|
137
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
138
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
139
|
+
return (bytes / Math.pow(k, i)).toFixed(1) + ' ' + sizes[i];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Helper function to pad string to the right
|
|
144
|
+
*/
|
|
145
|
+
function padRight(str: string, length: number): string {
|
|
146
|
+
return (str + ' '.repeat(length)).slice(0, length);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Helper function to pad string to the left
|
|
151
|
+
*/
|
|
152
|
+
function padLeft(str: string, length: number): string {
|
|
153
|
+
return (' '.repeat(length) + str).slice(-length);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Run the example
|
|
157
|
+
main().catch((error) => {
|
|
158
|
+
console.error('Fatal error:', error);
|
|
159
|
+
process.exit(1);
|
|
160
|
+
});
|
|
161
|
+
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Sample Data File",
|
|
3
|
+
"description": "This is a JSON file with structured data",
|
|
4
|
+
"items": [
|
|
5
|
+
{
|
|
6
|
+
"id": 0,
|
|
7
|
+
"name": "Item 0",
|
|
8
|
+
"description": "This is item number 0 with some descriptive text",
|
|
9
|
+
"value": 123.45,
|
|
10
|
+
"tags": ["tag1", "tag2", "tag3"],
|
|
11
|
+
"metadata": {
|
|
12
|
+
"created": "2025-01-01T00:00:00.000Z",
|
|
13
|
+
"updated": "2025-01-01T00:00:00.000Z"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": 1,
|
|
18
|
+
"name": "Item 1",
|
|
19
|
+
"description": "This is item number 1 with some descriptive text",
|
|
20
|
+
"value": 234.56,
|
|
21
|
+
"tags": ["tag1", "tag2", "tag3"],
|
|
22
|
+
"metadata": {
|
|
23
|
+
"created": "2025-01-01T00:00:00.000Z",
|
|
24
|
+
"updated": "2025-01-01T00:00:00.000Z"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": 2,
|
|
29
|
+
"name": "Item 2",
|
|
30
|
+
"description": "This is item number 2 with some descriptive text",
|
|
31
|
+
"value": 345.67,
|
|
32
|
+
"tags": ["tag1", "tag2", "tag3"],
|
|
33
|
+
"metadata": {
|
|
34
|
+
"created": "2025-01-01T00:00:00.000Z",
|
|
35
|
+
"updated": "2025-01-01T00:00:00.000Z"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": 3,
|
|
40
|
+
"name": "Item 3",
|
|
41
|
+
"description": "This is item number 3 with some descriptive text",
|
|
42
|
+
"value": 456.78,
|
|
43
|
+
"tags": ["tag1", "tag2", "tag3"],
|
|
44
|
+
"metadata": {
|
|
45
|
+
"created": "2025-01-01T00:00:00.000Z",
|
|
46
|
+
"updated": "2025-01-01T00:00:00.000Z"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": 4,
|
|
51
|
+
"name": "Item 4",
|
|
52
|
+
"description": "This is item number 4 with some descriptive text",
|
|
53
|
+
"value": 567.89,
|
|
54
|
+
"tags": ["tag1", "tag2", "tag3"],
|
|
55
|
+
"metadata": {
|
|
56
|
+
"created": "2025-01-01T00:00:00.000Z",
|
|
57
|
+
"updated": "2025-01-01T00:00:00.000Z"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": 5,
|
|
62
|
+
"name": "Item 5",
|
|
63
|
+
"description": "This is item number 5 with some descriptive text",
|
|
64
|
+
"value": 678.90,
|
|
65
|
+
"tags": ["tag1", "tag2", "tag3"],
|
|
66
|
+
"metadata": {
|
|
67
|
+
"created": "2025-01-01T00:00:00.000Z",
|
|
68
|
+
"updated": "2025-01-01T00:00:00.000Z"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": 6,
|
|
73
|
+
"name": "Item 6",
|
|
74
|
+
"description": "This is item number 6 with some descriptive text",
|
|
75
|
+
"value": 789.01,
|
|
76
|
+
"tags": ["tag1", "tag2", "tag3"],
|
|
77
|
+
"metadata": {
|
|
78
|
+
"created": "2025-01-01T00:00:00.000Z",
|
|
79
|
+
"updated": "2025-01-01T00:00:00.000Z"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": 7,
|
|
84
|
+
"name": "Item 7",
|
|
85
|
+
"description": "This is item number 7 with some descriptive text",
|
|
86
|
+
"value": 890.12,
|
|
87
|
+
"tags": ["tag1", "tag2", "tag3"],
|
|
88
|
+
"metadata": {
|
|
89
|
+
"created": "2025-01-01T00:00:00.000Z",
|
|
90
|
+
"updated": "2025-01-01T00:00:00.000Z"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": 8,
|
|
95
|
+
"name": "Item 8",
|
|
96
|
+
"description": "This is item number 8 with some descriptive text",
|
|
97
|
+
"value": 901.23,
|
|
98
|
+
"tags": ["tag1", "tag2", "tag3"],
|
|
99
|
+
"metadata": {
|
|
100
|
+
"created": "2025-01-01T00:00:00.000Z",
|
|
101
|
+
"updated": "2025-01-01T00:00:00.000Z"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": 9,
|
|
106
|
+
"name": "Item 9",
|
|
107
|
+
"description": "This is item number 9 with some descriptive text",
|
|
108
|
+
"value": 12.34,
|
|
109
|
+
"tags": ["tag1", "tag2", "tag3"],
|
|
110
|
+
"metadata": {
|
|
111
|
+
"created": "2025-01-01T00:00:00.000Z",
|
|
112
|
+
"updated": "2025-01-01T00:00:00.000Z"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Sample Document
|
|
2
|
+
|
|
3
|
+
This is a markdown document with multiple sections.
|
|
4
|
+
|
|
5
|
+
## Introduction
|
|
6
|
+
|
|
7
|
+
This document demonstrates various markdown features.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- Feature 1: Description of the first feature
|
|
12
|
+
- Feature 2: Description of the second feature
|
|
13
|
+
- Feature 3: Description of the third feature
|
|
14
|
+
|
|
15
|
+
## Code Example
|
|
16
|
+
|
|
17
|
+
```javascript
|
|
18
|
+
function example() {
|
|
19
|
+
return "Hello, World!";
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## More Content
|
|
24
|
+
|
|
25
|
+
This section contains additional content to make the file larger.
|
|
26
|
+
The content is repeated to demonstrate compression capabilities.
|
|
27
|
+
|
|
28
|
+
# Sample Document
|
|
29
|
+
|
|
30
|
+
This is a markdown document with multiple sections.
|
|
31
|
+
|
|
32
|
+
## Introduction
|
|
33
|
+
|
|
34
|
+
This document demonstrates various markdown features.
|
|
35
|
+
|
|
36
|
+
## Features
|
|
37
|
+
|
|
38
|
+
- Feature 1: Description of the first feature
|
|
39
|
+
- Feature 2: Description of the second feature
|
|
40
|
+
- Feature 3: Description of the third feature
|
|
41
|
+
|
|
42
|
+
## Code Example
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
function example() {
|
|
46
|
+
return "Hello, World!";
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## More Content
|
|
51
|
+
|
|
52
|
+
This section contains additional content to make the file larger.
|
|
53
|
+
The content is repeated to demonstrate compression capabilities.
|
|
54
|
+
|
|
55
|
+
# Sample Document
|
|
56
|
+
|
|
57
|
+
This is a markdown document with multiple sections.
|
|
58
|
+
|
|
59
|
+
## Introduction
|
|
60
|
+
|
|
61
|
+
This document demonstrates various markdown features.
|
|
62
|
+
|
|
63
|
+
## Features
|
|
64
|
+
|
|
65
|
+
- Feature 1: Description of the first feature
|
|
66
|
+
- Feature 2: Description of the second feature
|
|
67
|
+
- Feature 3: Description of the third feature
|
|
68
|
+
|
|
69
|
+
## Code Example
|
|
70
|
+
|
|
71
|
+
```javascript
|
|
72
|
+
function example() {
|
|
73
|
+
return "Hello, World!";
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## More Content
|
|
78
|
+
|
|
79
|
+
This section contains additional content to make the file larger.
|
|
80
|
+
The content is repeated to demonstrate compression capabilities.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
This is the first file.
|
|
2
|
+
It contains repetitive text content that will compress well.
|
|
3
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
4
|
+
This is the first file.
|
|
5
|
+
It contains repetitive text content that will compress well.
|
|
6
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
7
|
+
This is the first file.
|
|
8
|
+
It contains repetitive text content that will compress well.
|
|
9
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
10
|
+
This is the first file.
|
|
11
|
+
It contains repetitive text content that will compress well.
|
|
12
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
13
|
+
This is the first file.
|
|
14
|
+
It contains repetitive text content that will compress well.
|
|
15
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
16
|
+
This is the first file.
|
|
17
|
+
It contains repetitive text content that will compress well.
|
|
18
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
19
|
+
This is the first file.
|
|
20
|
+
It contains repetitive text content that will compress well.
|
|
21
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
22
|
+
This is the first file.
|
|
23
|
+
It contains repetitive text content that will compress well.
|
|
24
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
25
|
+
This is the first file.
|
|
26
|
+
It contains repetitive text content that will compress well.
|
|
27
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
28
|
+
This is the first file.
|
|
29
|
+
It contains repetitive text content that will compress well.
|
|
30
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
31
|
+
This is the first file.
|
|
32
|
+
It contains repetitive text content that will compress well.
|
|
33
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
34
|
+
This is the first file.
|
|
35
|
+
It contains repetitive text content that will compress well.
|
|
36
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
37
|
+
This is the first file.
|
|
38
|
+
It contains repetitive text content that will compress well.
|
|
39
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
40
|
+
This is the first file.
|
|
41
|
+
It contains repetitive text content that will compress well.
|
|
42
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
43
|
+
This is the first file.
|
|
44
|
+
It contains repetitive text content that will compress well.
|
|
45
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
46
|
+
This is the first file.
|
|
47
|
+
It contains repetitive text content that will compress well.
|
|
48
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
This is the second file.
|
|
2
|
+
It contains structured data with patterns.
|
|
3
|
+
Line 1: Data entry with some information
|
|
4
|
+
Line 2: Another data entry with similar structure
|
|
5
|
+
Line 3: More data following the same pattern
|
|
6
|
+
This is the second file.
|
|
7
|
+
It contains structured data with patterns.
|
|
8
|
+
Line 1: Data entry with some information
|
|
9
|
+
Line 2: Another data entry with similar structure
|
|
10
|
+
Line 3: More data following the same pattern
|
|
11
|
+
This is the second file.
|
|
12
|
+
It contains structured data with patterns.
|
|
13
|
+
Line 1: Data entry with some information
|
|
14
|
+
Line 2: Another data entry with similar structure
|
|
15
|
+
Line 3: More data following the same pattern
|
|
16
|
+
This is the second file.
|
|
17
|
+
It contains structured data with patterns.
|
|
18
|
+
Line 1: Data entry with some information
|
|
19
|
+
Line 2: Another data entry with similar structure
|
|
20
|
+
Line 3: More data following the same pattern
|
|
21
|
+
This is the second file.
|
|
22
|
+
It contains structured data with patterns.
|
|
23
|
+
Line 1: Data entry with some information
|
|
24
|
+
Line 2: Another data entry with similar structure
|
|
25
|
+
Line 3: More data following the same pattern
|
|
26
|
+
This is the second file.
|
|
27
|
+
It contains structured data with patterns.
|
|
28
|
+
Line 1: Data entry with some information
|
|
29
|
+
Line 2: Another data entry with similar structure
|
|
30
|
+
Line 3: More data following the same pattern
|
|
31
|
+
This is the second file.
|
|
32
|
+
It contains structured data with patterns.
|
|
33
|
+
Line 1: Data entry with some information
|
|
34
|
+
Line 2: Another data entry with similar structure
|
|
35
|
+
Line 3: More data following the same pattern
|
|
36
|
+
This is the second file.
|
|
37
|
+
It contains structured data with patterns.
|
|
38
|
+
Line 1: Data entry with some information
|
|
39
|
+
Line 2: Another data entry with similar structure
|
|
40
|
+
Line 3: More data following the same pattern
|
|
41
|
+
This is the second file.
|
|
42
|
+
It contains structured data with patterns.
|
|
43
|
+
Line 1: Data entry with some information
|
|
44
|
+
Line 2: Another data entry with similar structure
|
|
45
|
+
Line 3: More data following the same pattern
|
|
46
|
+
This is the second file.
|
|
47
|
+
It contains structured data with patterns.
|
|
48
|
+
Line 1: Data entry with some information
|
|
49
|
+
Line 2: Another data entry with similar structure
|
|
50
|
+
Line 3: More data following the same pattern
|
|
51
|
+
This is the second file.
|
|
52
|
+
It contains structured data with patterns.
|
|
53
|
+
Line 1: Data entry with some information
|
|
54
|
+
Line 2: Another data entry with similar structure
|
|
55
|
+
Line 3: More data following the same pattern
|
|
56
|
+
This is the second file.
|
|
57
|
+
It contains structured data with patterns.
|
|
58
|
+
Line 1: Data entry with some information
|
|
59
|
+
Line 2: Another data entry with similar structure
|
|
60
|
+
Line 3: More data following the same pattern
|
|
61
|
+
This is the second file.
|
|
62
|
+
It contains structured data with patterns.
|
|
63
|
+
Line 1: Data entry with some information
|
|
64
|
+
Line 2: Another data entry with similar structure
|
|
65
|
+
Line 3: More data following the same pattern
|
|
66
|
+
This is the second file.
|
|
67
|
+
It contains structured data with patterns.
|
|
68
|
+
Line 1: Data entry with some information
|
|
69
|
+
Line 2: Another data entry with similar structure
|
|
70
|
+
Line 3: More data following the same pattern
|
|
71
|
+
This is the second file.
|
|
72
|
+
It contains structured data with patterns.
|
|
73
|
+
Line 1: Data entry with some information
|
|
74
|
+
Line 2: Another data entry with similar structure
|
|
75
|
+
Line 3: More data following the same pattern
|
|
76
|
+
This is the second file.
|
|
77
|
+
It contains structured data with patterns.
|
|
78
|
+
Line 1: Data entry with some information
|
|
79
|
+
Line 2: Another data entry with similar structure
|
|
80
|
+
Line 3: More data following the same pattern
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
/* Language and Environment */
|
|
4
|
+
"target": "es2020",
|
|
5
|
+
"lib": ["es2020", "dom"],
|
|
6
|
+
|
|
7
|
+
/* Modules */
|
|
8
|
+
"module": "Node16",
|
|
9
|
+
"rootDir": "./",
|
|
10
|
+
"moduleResolution": "node16",
|
|
11
|
+
|
|
12
|
+
/* Emit */
|
|
13
|
+
"declaration": false,
|
|
14
|
+
"sourceMap": true,
|
|
15
|
+
"outDir": "./dist",
|
|
16
|
+
"removeComments": false,
|
|
17
|
+
|
|
18
|
+
/* Interop Constraints */
|
|
19
|
+
"esModuleInterop": true,
|
|
20
|
+
"allowSyntheticDefaultImports": true,
|
|
21
|
+
"forceConsistentCasingInFileNames": true,
|
|
22
|
+
"resolveJsonModule": true,
|
|
23
|
+
|
|
24
|
+
/* Type Checking */
|
|
25
|
+
"strict": true,
|
|
26
|
+
"noImplicitAny": true,
|
|
27
|
+
"strictNullChecks": true,
|
|
28
|
+
"skipLibCheck": true,
|
|
29
|
+
|
|
30
|
+
/* JavaScript Support */
|
|
31
|
+
"allowJs": false,
|
|
32
|
+
|
|
33
|
+
/* Node.js types */
|
|
34
|
+
"types": ["node"]
|
|
35
|
+
},
|
|
36
|
+
"include": [
|
|
37
|
+
"*.ts"
|
|
38
|
+
],
|
|
39
|
+
"exclude": [
|
|
40
|
+
"node_modules",
|
|
41
|
+
"dist"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
|