@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.
Files changed (171) hide show
  1. package/README.md +134 -0
  2. package/dist/browser/ZipkitBrowser.d.ts +27 -0
  3. package/dist/browser/ZipkitBrowser.d.ts.map +1 -0
  4. package/dist/browser/ZipkitBrowser.js +303 -0
  5. package/dist/browser/ZipkitBrowser.js.map +1 -0
  6. package/dist/browser/index.d.ts +9 -0
  7. package/dist/browser/index.d.ts.map +1 -0
  8. package/dist/browser/index.esm.d.ts +12 -0
  9. package/dist/browser/index.esm.d.ts.map +1 -0
  10. package/dist/browser/index.esm.js +46 -0
  11. package/dist/browser/index.esm.js.map +1 -0
  12. package/dist/browser/index.js +38 -0
  13. package/dist/browser/index.js.map +1 -0
  14. package/dist/browser-esm/index.d.ts +9 -0
  15. package/dist/browser-esm/index.js +50211 -0
  16. package/dist/browser-esm/index.js.map +7 -0
  17. package/dist/browser-umd/index.d.ts +9 -0
  18. package/dist/browser-umd/index.js +50221 -0
  19. package/dist/browser-umd/index.js.map +7 -0
  20. package/dist/browser-umd/index.min.js +39 -0
  21. package/dist/browser.d.ts +9 -0
  22. package/dist/browser.js +38 -0
  23. package/dist/core/ZipCompress.d.ts +99 -0
  24. package/dist/core/ZipCompress.d.ts.map +1 -0
  25. package/dist/core/ZipCompress.js +287 -0
  26. package/dist/core/ZipCompress.js.map +1 -0
  27. package/dist/core/ZipCopy.d.ts +175 -0
  28. package/dist/core/ZipCopy.d.ts.map +1 -0
  29. package/dist/core/ZipCopy.js +310 -0
  30. package/dist/core/ZipCopy.js.map +1 -0
  31. package/dist/core/ZipDecompress.d.ts +57 -0
  32. package/dist/core/ZipDecompress.d.ts.map +1 -0
  33. package/dist/core/ZipDecompress.js +155 -0
  34. package/dist/core/ZipDecompress.js.map +1 -0
  35. package/dist/core/ZipEntry.d.ts +138 -0
  36. package/dist/core/ZipEntry.d.ts.map +1 -0
  37. package/dist/core/ZipEntry.js +829 -0
  38. package/dist/core/ZipEntry.js.map +1 -0
  39. package/dist/core/Zipkit.d.ts +315 -0
  40. package/dist/core/Zipkit.d.ts.map +1 -0
  41. package/dist/core/Zipkit.js +647 -0
  42. package/dist/core/Zipkit.js.map +1 -0
  43. package/dist/core/ZstdManager.d.ts +56 -0
  44. package/dist/core/ZstdManager.d.ts.map +1 -0
  45. package/dist/core/ZstdManager.js +144 -0
  46. package/dist/core/ZstdManager.js.map +1 -0
  47. package/dist/core/components/HashCalculator.d.ts +138 -0
  48. package/dist/core/components/HashCalculator.d.ts.map +1 -0
  49. package/dist/core/components/HashCalculator.js +360 -0
  50. package/dist/core/components/HashCalculator.js.map +1 -0
  51. package/dist/core/components/Logger.d.ts +73 -0
  52. package/dist/core/components/Logger.d.ts.map +1 -0
  53. package/dist/core/components/Logger.js +156 -0
  54. package/dist/core/components/Logger.js.map +1 -0
  55. package/dist/core/components/ProgressTracker.d.ts +43 -0
  56. package/dist/core/components/ProgressTracker.d.ts.map +1 -0
  57. package/dist/core/components/ProgressTracker.js +112 -0
  58. package/dist/core/components/ProgressTracker.js.map +1 -0
  59. package/dist/core/components/Support.d.ts +64 -0
  60. package/dist/core/components/Support.d.ts.map +1 -0
  61. package/dist/core/components/Support.js +71 -0
  62. package/dist/core/components/Support.js.map +1 -0
  63. package/dist/core/components/Util.d.ts +26 -0
  64. package/dist/core/components/Util.d.ts.map +1 -0
  65. package/dist/core/components/Util.js +95 -0
  66. package/dist/core/components/Util.js.map +1 -0
  67. package/dist/core/constants/Errors.d.ts +52 -0
  68. package/dist/core/constants/Errors.d.ts.map +1 -0
  69. package/dist/core/constants/Errors.js +67 -0
  70. package/dist/core/constants/Errors.js.map +1 -0
  71. package/dist/core/constants/Headers.d.ts +170 -0
  72. package/dist/core/constants/Headers.d.ts.map +1 -0
  73. package/dist/core/constants/Headers.js +194 -0
  74. package/dist/core/constants/Headers.js.map +1 -0
  75. package/dist/core/encryption/Manager.d.ts +58 -0
  76. package/dist/core/encryption/Manager.d.ts.map +1 -0
  77. package/dist/core/encryption/Manager.js +121 -0
  78. package/dist/core/encryption/Manager.js.map +1 -0
  79. package/dist/core/encryption/ZipCrypto.d.ts +172 -0
  80. package/dist/core/encryption/ZipCrypto.d.ts.map +1 -0
  81. package/dist/core/encryption/ZipCrypto.js +554 -0
  82. package/dist/core/encryption/ZipCrypto.js.map +1 -0
  83. package/dist/core/encryption/index.d.ts +9 -0
  84. package/dist/core/encryption/index.d.ts.map +1 -0
  85. package/dist/core/encryption/index.js +17 -0
  86. package/dist/core/encryption/index.js.map +1 -0
  87. package/dist/core/encryption/types.d.ts +29 -0
  88. package/dist/core/encryption/types.d.ts.map +1 -0
  89. package/dist/core/encryption/types.js +12 -0
  90. package/dist/core/encryption/types.js.map +1 -0
  91. package/dist/core/index.d.ts +27 -0
  92. package/dist/core/index.d.ts.map +1 -0
  93. package/dist/core/index.js +59 -0
  94. package/dist/core/index.js.map +1 -0
  95. package/dist/core/version.d.ts +5 -0
  96. package/dist/core/version.d.ts.map +1 -0
  97. package/dist/core/version.js +31 -0
  98. package/dist/core/version.js.map +1 -0
  99. package/dist/index.d.ts +9 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +38 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/node/ZipCompressNode.d.ts +123 -0
  104. package/dist/node/ZipCompressNode.d.ts.map +1 -0
  105. package/dist/node/ZipCompressNode.js +565 -0
  106. package/dist/node/ZipCompressNode.js.map +1 -0
  107. package/dist/node/ZipCopyNode.d.ts +165 -0
  108. package/dist/node/ZipCopyNode.d.ts.map +1 -0
  109. package/dist/node/ZipCopyNode.js +347 -0
  110. package/dist/node/ZipCopyNode.js.map +1 -0
  111. package/dist/node/ZipDecompressNode.d.ts +197 -0
  112. package/dist/node/ZipDecompressNode.d.ts.map +1 -0
  113. package/dist/node/ZipDecompressNode.js +678 -0
  114. package/dist/node/ZipDecompressNode.js.map +1 -0
  115. package/dist/node/ZipkitNode.d.ts +466 -0
  116. package/dist/node/ZipkitNode.d.ts.map +1 -0
  117. package/dist/node/ZipkitNode.js +1426 -0
  118. package/dist/node/ZipkitNode.js.map +1 -0
  119. package/dist/node/index.d.ts +25 -0
  120. package/dist/node/index.d.ts.map +1 -0
  121. package/dist/node/index.js +54 -0
  122. package/dist/node/index.js.map +1 -0
  123. package/dist/types/index.d.ts +45 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/index.js +11 -0
  126. package/dist/types/index.js.map +1 -0
  127. package/examples/README.md +261 -0
  128. package/examples/append-data.json +44 -0
  129. package/examples/copy-zip-append.ts +139 -0
  130. package/examples/copy-zip.ts +152 -0
  131. package/examples/create-zip.ts +172 -0
  132. package/examples/extract-zip.ts +118 -0
  133. package/examples/list-zip.ts +161 -0
  134. package/examples/test-files/data.json +116 -0
  135. package/examples/test-files/document.md +80 -0
  136. package/examples/test-files/document.txt +6 -0
  137. package/examples/test-files/file1.txt +48 -0
  138. package/examples/test-files/file2.txt +80 -0
  139. package/examples/tsconfig.json +44 -0
  140. package/package.json +167 -0
  141. package/src/browser/ZipkitBrowser.ts +305 -0
  142. package/src/browser/index.esm.ts +32 -0
  143. package/src/browser/index.ts +19 -0
  144. package/src/core/ZipCompress.ts +370 -0
  145. package/src/core/ZipCopy.ts +434 -0
  146. package/src/core/ZipDecompress.ts +191 -0
  147. package/src/core/ZipEntry.ts +917 -0
  148. package/src/core/Zipkit.ts +794 -0
  149. package/src/core/ZstdManager.ts +165 -0
  150. package/src/core/components/HashCalculator.ts +384 -0
  151. package/src/core/components/Logger.ts +180 -0
  152. package/src/core/components/ProgressTracker.ts +134 -0
  153. package/src/core/components/Support.ts +77 -0
  154. package/src/core/components/Util.ts +91 -0
  155. package/src/core/constants/Errors.ts +78 -0
  156. package/src/core/constants/Headers.ts +205 -0
  157. package/src/core/encryption/Manager.ts +137 -0
  158. package/src/core/encryption/ZipCrypto.ts +650 -0
  159. package/src/core/encryption/index.ts +15 -0
  160. package/src/core/encryption/types.ts +33 -0
  161. package/src/core/index.ts +42 -0
  162. package/src/core/version.ts +33 -0
  163. package/src/index.ts +19 -0
  164. package/src/node/ZipCompressNode.ts +618 -0
  165. package/src/node/ZipCopyNode.ts +437 -0
  166. package/src/node/ZipDecompressNode.ts +793 -0
  167. package/src/node/ZipkitNode.ts +1706 -0
  168. package/src/node/index.ts +40 -0
  169. package/src/types/index.ts +68 -0
  170. package/src/types/modules.d.ts +22 -0
  171. 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,6 @@
1
+ This is a sample document.
2
+ It will be tokenized on the blockchain.
3
+
4
+ - Feature 1: Description of the first feature
5
+ - Feature 2: Description of the second feature
6
+ - Feature 3: Description of the third feature
@@ -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
+