@linxiraos/pi-utils 1.0.9 → 1.1.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 (94) hide show
  1. package/CHANGELOG.md +2 -477
  2. package/LICENSE +22 -0
  3. package/THIRD-PARTY-NOTICES.txt +22909 -0
  4. package/dist/types/ar/arj.d.ts +5 -0
  5. package/dist/types/ar/asar.d.ts +7 -0
  6. package/dist/types/ar/bytes.d.ts +20 -0
  7. package/dist/types/ar/cab.d.ts +5 -0
  8. package/dist/types/ar/checksums.d.ts +10 -0
  9. package/dist/types/ar/codecs/bzip2.d.ts +4 -0
  10. package/dist/types/ar/codecs/gzip.d.ts +6 -0
  11. package/dist/types/ar/codecs/lzma.d.ts +6 -0
  12. package/dist/types/ar/codecs/lzw.d.ts +4 -0
  13. package/dist/types/ar/codecs/lzx.d.ts +7 -0
  14. package/dist/types/ar/codecs/xz.d.ts +4 -0
  15. package/dist/types/ar/codecs/zstd.d.ts +6 -0
  16. package/dist/types/ar/cpio.d.ts +7 -0
  17. package/dist/types/ar/deb.d.ts +5 -0
  18. package/dist/types/ar/entries.d.ts +22 -0
  19. package/dist/types/ar/error.d.ts +8 -0
  20. package/dist/types/ar/index.d.ts +11 -0
  21. package/dist/types/ar/iso.d.ts +5 -0
  22. package/dist/types/ar/limits.d.ts +33 -0
  23. package/dist/types/ar/lzh.d.ts +7 -0
  24. package/dist/types/ar/open.d.ts +45 -0
  25. package/dist/types/ar/paths.d.ts +18 -0
  26. package/dist/types/ar/rar/rar4-decoder.d.ts +6 -0
  27. package/dist/types/ar/rar/rar5-decoder.d.ts +6 -0
  28. package/dist/types/ar/rar.d.ts +5 -0
  29. package/dist/types/ar/reader.d.ts +28 -0
  30. package/dist/types/ar/registry.d.ts +17 -0
  31. package/dist/types/ar/rpm.d.ts +5 -0
  32. package/dist/types/ar/sevenzip/decode.d.ts +33 -0
  33. package/dist/types/ar/sevenzip.d.ts +5 -0
  34. package/dist/types/ar/source.d.ts +54 -0
  35. package/dist/types/ar/tar.d.ts +9 -0
  36. package/dist/types/ar/types.d.ts +99 -0
  37. package/dist/types/ar/unix-ar.d.ts +7 -0
  38. package/dist/types/ar/write.d.ts +10 -0
  39. package/dist/types/ar/zip.d.ts +10 -0
  40. package/dist/types/binary.d.ts +6 -0
  41. package/dist/types/dirs.d.ts +10 -1
  42. package/dist/types/index.d.ts +1 -0
  43. package/dist/types/postmortem.d.ts +33 -0
  44. package/dist/types/sqlite.d.ts +23 -0
  45. package/package.json +10 -4
  46. package/src/ar/arj.ts +314 -0
  47. package/src/ar/asar.ts +480 -0
  48. package/src/ar/bytes.ts +78 -0
  49. package/src/ar/cab.ts +377 -0
  50. package/src/ar/checksums.ts +62 -0
  51. package/src/ar/codecs/bzip2.ts +489 -0
  52. package/src/ar/codecs/gzip.ts +25 -0
  53. package/src/ar/codecs/lzma.ts +437 -0
  54. package/src/ar/codecs/lzw.ts +191 -0
  55. package/src/ar/codecs/lzx.ts +366 -0
  56. package/src/ar/codecs/xz.ts +522 -0
  57. package/src/ar/codecs/zstd.ts +25 -0
  58. package/src/ar/cpio.ts +389 -0
  59. package/src/ar/deb.ts +160 -0
  60. package/src/ar/entries.ts +97 -0
  61. package/src/ar/error.ts +11 -0
  62. package/src/ar/index.ts +16 -0
  63. package/src/ar/iso.ts +712 -0
  64. package/src/ar/limits.ts +80 -0
  65. package/src/ar/lzh.ts +659 -0
  66. package/src/ar/open.ts +225 -0
  67. package/src/ar/paths.ts +70 -0
  68. package/src/ar/rar/rar4-decoder.ts +459 -0
  69. package/src/ar/rar/rar5-decoder.ts +400 -0
  70. package/src/ar/rar.ts +735 -0
  71. package/src/ar/reader.ts +162 -0
  72. package/src/ar/registry.ts +208 -0
  73. package/src/ar/rpm.ts +320 -0
  74. package/src/ar/sevenzip/decode.ts +239 -0
  75. package/src/ar/sevenzip.ts +634 -0
  76. package/src/ar/source.ts +190 -0
  77. package/src/ar/tar.ts +771 -0
  78. package/src/ar/types.ts +131 -0
  79. package/src/ar/unix-ar.ts +312 -0
  80. package/src/ar/write.ts +55 -0
  81. package/src/ar/zip.ts +719 -0
  82. package/src/binary.ts +6 -2
  83. package/src/browsers.ts +2 -149
  84. package/src/dirs.ts +24 -4
  85. package/src/docx/converter.ts +9 -9
  86. package/src/env.ts +36 -5
  87. package/src/index.ts +1 -0
  88. package/src/logger.ts +19 -15
  89. package/src/postmortem.ts +74 -0
  90. package/src/sqlite.ts +33 -0
  91. package/src/stream.ts +11 -23
  92. package/src/vendor/mermaid-ascii/ascii/grid.ts +16 -1
  93. package/dist/types/docx/zip.d.ts +0 -6
  94. package/src/docx/zip.ts +0 -87
package/src/docx/zip.ts DELETED
@@ -1,87 +0,0 @@
1
- import * as zlib from "node:zlib";
2
-
3
- const LOCAL_FILE_SIGNATURE = 0x04034b50;
4
- const CENTRAL_FILE_SIGNATURE = 0x02014b50;
5
- const END_SIGNATURE = 0x06054b50;
6
- const MAX_END_SEARCH = 65_557;
7
- const UTF8 = new TextDecoder();
8
-
9
- /** The decompressed members of a DOCX ZIP package. */
10
- export type ZipEntries = ReadonlyMap<string, Uint8Array>;
11
-
12
- function view(bytes: Uint8Array): DataView {
13
- return new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
14
- }
15
-
16
- function findEndRecord(bytes: Uint8Array): number {
17
- const data = view(bytes);
18
- for (
19
- let offset = bytes.byteLength - 22, limit = Math.max(0, bytes.byteLength - MAX_END_SEARCH);
20
- offset >= limit;
21
- offset--
22
- ) {
23
- if (data.getUint32(offset, true) === END_SIGNATURE) return offset;
24
- }
25
- throw new Error("Invalid DOCX: missing ZIP end record");
26
- }
27
-
28
- /** Decode a ZIP package by walking its central directory. */
29
- export function readZip(bytes: Uint8Array): ZipEntries {
30
- if (bytes.byteLength < 22) throw new Error("Invalid DOCX: truncated ZIP package");
31
- const data = view(bytes);
32
- const endOffset = findEndRecord(bytes);
33
- const entryCount = data.getUint16(endOffset + 10, true);
34
- const centralSize = data.getUint32(endOffset + 12, true);
35
- const centralOffset = data.getUint32(endOffset + 16, true);
36
- if (entryCount === 0xffff || centralSize === 0xffffffff || centralOffset === 0xffffffff) {
37
- throw new Error("Invalid DOCX: ZIP64 packages are not supported");
38
- }
39
- if (centralOffset + centralSize > bytes.byteLength) throw new Error("Invalid DOCX: truncated ZIP central directory");
40
- const entries = new Map<string, Uint8Array>();
41
- let offset = centralOffset;
42
- for (let index = 0; index < entryCount; index++) {
43
- if (offset + 46 > bytes.byteLength || data.getUint32(offset, true) !== CENTRAL_FILE_SIGNATURE) {
44
- throw new Error("Invalid DOCX: malformed ZIP central directory");
45
- }
46
- const flags = data.getUint16(offset + 8, true);
47
- const method = data.getUint16(offset + 10, true);
48
- const compressedSize = data.getUint32(offset + 20, true);
49
- const uncompressedSize = data.getUint32(offset + 24, true);
50
- const nameLength = data.getUint16(offset + 28, true);
51
- const extraLength = data.getUint16(offset + 30, true);
52
- const commentLength = data.getUint16(offset + 32, true);
53
- const localOffset = data.getUint32(offset + 42, true);
54
- const entryEnd = offset + 46 + nameLength + extraLength + commentLength;
55
- if (entryEnd > bytes.byteLength) throw new Error("Invalid DOCX: truncated ZIP entry");
56
- const name = UTF8.decode(bytes.subarray(offset + 46, offset + 46 + nameLength)).replaceAll("\\", "/");
57
- if ((flags & 1) !== 0) throw new Error(`Invalid DOCX: encrypted ZIP member ${name}`);
58
- if (localOffset + 30 > bytes.byteLength || data.getUint32(localOffset, true) !== LOCAL_FILE_SIGNATURE) {
59
- throw new Error(`Invalid DOCX: missing local header for ${name}`);
60
- }
61
- const localNameLength = data.getUint16(localOffset + 26, true);
62
- const localExtraLength = data.getUint16(localOffset + 28, true);
63
- const payloadOffset = localOffset + 30 + localNameLength + localExtraLength;
64
- const payloadEnd = payloadOffset + compressedSize;
65
- if (payloadEnd > bytes.byteLength) throw new Error(`Invalid DOCX: truncated ZIP member ${name}`);
66
- const compressed = bytes.subarray(payloadOffset, payloadEnd);
67
- let decoded: Uint8Array;
68
- if (method === 0) {
69
- decoded = compressed;
70
- } else if (method === 8) {
71
- decoded = zlib.inflateRawSync(compressed, { maxOutputLength: Math.max(uncompressedSize, 1) });
72
- } else {
73
- throw new Error(`Invalid DOCX: unsupported ZIP compression method ${method}`);
74
- }
75
- if (decoded.byteLength !== uncompressedSize)
76
- throw new Error(`Invalid DOCX: size mismatch for ZIP member ${name}`);
77
- if (name && !name.endsWith("/")) entries.set(name, decoded);
78
- offset = entryEnd;
79
- }
80
- return entries;
81
- }
82
-
83
- /** Decode a ZIP member as UTF-8 text. */
84
- export function readZipText(entries: ZipEntries, name: string): string | undefined {
85
- const bytes = entries.get(name);
86
- return bytes ? UTF8.decode(bytes) : undefined;
87
- }