chmlib-ts 0.1.0 → 0.2.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 CHANGED
@@ -52,26 +52,31 @@ chm.close();
52
52
 
53
53
  ## CLI
54
54
 
55
- ```
55
+ ```sh
56
56
  npx chmlib-ts <command> <file.chm> [options]
57
57
  ```
58
58
 
59
59
  | Command | Description |
60
60
  |---|---|
61
- | `info` | Display metadata (title, default topic, file/dir counts) |
62
- | `list` | List all entries with size and compression (`--dir <prefix>` supported) |
61
+ | `info` | Display metadata (title, default topic, file/dir counts); `--json` available |
62
+ | `list` | List all entries with size and compression (`--dir <prefix>` supported); `--json` available |
63
63
  | `extract <outdir>` | Extract all files to a directory |
64
64
  | `extract-file <path> <outfile>` | Extract a single file by its archive path |
65
- | `toc` | Print the table of contents (`--format tree` for a tree view) |
65
+ | `cat <path>` | Print a decoded text file; `--charset <encoding>` overrides auto-detection |
66
+ | `toc` | Print the table of contents (`--format tree` for a tree view, `--json` available). When `/#SYSTEM` does not point to a text TOC, the CLI falls back to archive `.hhc` discovery |
66
67
 
67
68
  ### Examples
68
69
 
69
70
  ```sh
70
71
  npx chmlib-ts info docs.chm
72
+ npx chmlib-ts info docs.chm --json
71
73
  npx chmlib-ts list docs.chm
74
+ npx chmlib-ts list docs.chm --json
72
75
  npx chmlib-ts extract docs.chm ./out
73
76
  npx chmlib-ts extract-file docs.chm /index.html ./index.html
77
+ npx chmlib-ts cat docs.chm /index.html
74
78
  npx chmlib-ts toc docs.chm
79
+ npx chmlib-ts toc docs.chm --json
75
80
  ```
76
81
 
77
82
  ## Building
@@ -0,0 +1,8 @@
1
+ import { ChmFile } from './chm-file.js';
2
+ import type { ChmSystemInfo } from './system.js';
3
+ export declare function discoverArchiveFile(chm: ChmFile, extensions: string[], options?: {
4
+ prefer?: string[];
5
+ }): Promise<string | null>;
6
+ export declare function discoverTocFile(chm: ChmFile, systemInfo?: ChmSystemInfo): Promise<string | null>;
7
+ export declare function discoverIndexFile(chm: ChmFile, systemInfo?: ChmSystemInfo): Promise<string | null>;
8
+ //# sourceMappingURL=archive-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive-discovery.d.ts","sourceRoot":"","sources":["../src/archive-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,OAAO,EACZ,UAAU,CAAC,EAAE,aAAa,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxB;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,OAAO,EACZ,UAAU,CAAC,EAAE,aAAa,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxB"}
@@ -0,0 +1,87 @@
1
+ import { ChmEnumerateFlags } from './types.js';
2
+ export async function discoverArchiveFile(chm, extensions, options = {}) {
3
+ const normalizedExts = extensions.map((ext) => ext.toLowerCase());
4
+ const candidates = [];
5
+ for await (const entry of chm.enumerate(ChmEnumerateFlags.All)) {
6
+ if (!(entry.flags & ChmEnumerateFlags.Files))
7
+ continue;
8
+ const path = normalizePathKey(entry.path);
9
+ if (normalizedExts.some((ext) => path.endsWith(ext))) {
10
+ candidates.push(entry.path);
11
+ }
12
+ }
13
+ return pickBestCandidate(candidates, options.prefer ?? []);
14
+ }
15
+ export async function discoverTocFile(chm, systemInfo) {
16
+ return discoverArchiveFile(chm, ['.hhc'], {
17
+ prefer: buildSitemapHints(systemInfo, '.hhc'),
18
+ });
19
+ }
20
+ export async function discoverIndexFile(chm, systemInfo) {
21
+ return discoverArchiveFile(chm, ['.hhk'], {
22
+ prefer: buildSitemapHints(systemInfo, '.hhk'),
23
+ });
24
+ }
25
+ function buildSitemapHints(systemInfo, extension) {
26
+ if (!systemInfo)
27
+ return [];
28
+ const hints = new Set();
29
+ if (extension === '.hhc' && systemInfo.tocFile) {
30
+ hints.add(systemInfo.tocFile);
31
+ }
32
+ if (extension === '.hhk' && systemInfo.indexFile) {
33
+ hints.add(systemInfo.indexFile);
34
+ }
35
+ if (systemInfo.compiledFile) {
36
+ hints.add(`/${stripExtension(systemInfo.compiledFile)}${extension}`);
37
+ }
38
+ if (systemInfo.defaultTopic) {
39
+ const topicName = lastPathSegment(systemInfo.defaultTopic);
40
+ if (topicName.length > 0) {
41
+ hints.add(`/${stripExtension(topicName)}${extension}`);
42
+ }
43
+ }
44
+ return [...hints];
45
+ }
46
+ function pickBestCandidate(candidates, prefer) {
47
+ if (candidates.length === 0)
48
+ return null;
49
+ const preferredPaths = new Set(prefer.map((path) => normalizePathKey(path)));
50
+ const preferredNames = new Set(prefer.map((path) => normalizePathKey(lastPathSegment(path))));
51
+ return [...candidates].sort((left, right) => {
52
+ const leftRank = rankCandidate(left, preferredPaths, preferredNames);
53
+ const rightRank = rankCandidate(right, preferredPaths, preferredNames);
54
+ if (leftRank !== rightRank)
55
+ return rightRank - leftRank;
56
+ const leftDepth = pathDepth(left);
57
+ const rightDepth = pathDepth(right);
58
+ if (leftDepth !== rightDepth)
59
+ return leftDepth - rightDepth;
60
+ if (left.length !== right.length)
61
+ return left.length - right.length;
62
+ return normalizePathKey(left).localeCompare(normalizePathKey(right));
63
+ })[0] ?? null;
64
+ }
65
+ function rankCandidate(candidate, preferredPaths, preferredNames) {
66
+ const path = normalizePathKey(candidate);
67
+ const name = normalizePathKey(lastPathSegment(candidate));
68
+ if (preferredPaths.has(path))
69
+ return 3;
70
+ if (preferredNames.has(name))
71
+ return 2;
72
+ return 1;
73
+ }
74
+ function pathDepth(path) {
75
+ return path.split('/').filter(Boolean).length;
76
+ }
77
+ function stripExtension(value) {
78
+ return value.replace(/\.[^.]+$/u, '');
79
+ }
80
+ function lastPathSegment(path) {
81
+ const parts = path.split('/');
82
+ return parts[parts.length - 1] ?? path;
83
+ }
84
+ function normalizePathKey(path) {
85
+ return path.toLowerCase();
86
+ }
87
+ //# sourceMappingURL=archive-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive-discovery.js","sourceRoot":"","sources":["../src/archive-discovery.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ export declare class ChmFile {
34
34
  private findInPmgl;
35
35
  /** Resolve a path to its ChmUnitInfo, or null if not found */
36
36
  resolve(objPath: string): Promise<ChmUnitInfo | null>;
37
+ private resolveIndexed;
37
38
  /** Retrieve (part of) an object's data */
38
39
  retrieve(ui: ChmUnitInfo, offset?: bigint, length?: bigint): Promise<Uint8Array>;
39
40
  /** Get the compressed block bounds */
@@ -1 +1 @@
1
- {"version":3,"file":"chm-file.d.ts","sourceRoot":"","sources":["../src/chm-file.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAA+C,MAAM,YAAY,CAAC;AAWtF,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,QAAQ,CAAa;IAG7B,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,aAAa,CAAa;IAGlC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,YAAY,CAAc;IAGlC,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,iBAAiB,CAAW;IACpC,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO;WAOM,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;YAMxC,IAAI;IAyDlB,KAAK,IAAI,IAAI;IAMb,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;YAqBf,UAAU;IAIxB,oEAAoE;IACpE,OAAO,CAAC,cAAc;IAWtB,6EAA6E;IAC7E,OAAO,CAAC,UAAU;IAmBlB,8FAA8F;IAC9F,OAAO,CAAC,UAAU;IA6BlB,8DAA8D;IACxD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAuB3D,0CAA0C;IACpC,QAAQ,CACZ,EAAE,EAAE,WAAW,EACf,MAAM,GAAE,MAAW,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC;IAsBtB,sCAAsC;YACxB,iBAAiB;IAwB/B,oEAAoE;YACtD,kBAAkB;IAkBhC;;;;;;OAMG;YACW,eAAe;IA4C7B,gDAAgD;YAClC,gBAAgB;IAgC9B,2CAA2C;IACpC,SAAS,CAAC,IAAI,GAAE,MAA8B,GAAG,cAAc,CAAC,WAAW,CAAC;IA4BnF,iDAAiD;IAC1C,YAAY,CACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAA8B,GACnC,cAAc,CAAC,WAAW,CAAC;IA0B9B,mEAAmE;IAC7D,YAAY,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;CAKjD"}
1
+ {"version":3,"file":"chm-file.d.ts","sourceRoot":"","sources":["../src/chm-file.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAA+C,MAAM,YAAY,CAAC;AAWtF,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,QAAQ,CAAa;IAG7B,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,aAAa,CAAa;IAGlC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,YAAY,CAAc;IAGlC,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,iBAAiB,CAAW;IACpC,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO;WAOM,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;YAMxC,IAAI;IAyDlB,KAAK,IAAI,IAAI;IAMb,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;YAqBf,UAAU;IAIxB,oEAAoE;IACpE,OAAO,CAAC,cAAc;IAWtB,6EAA6E;IAC7E,OAAO,CAAC,UAAU;IAoBlB,8FAA8F;IAC9F,OAAO,CAAC,UAAU;IA6BlB,8DAA8D;IACxD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;YAc7C,cAAc;IAuB5B,0CAA0C;IACpC,QAAQ,CACZ,EAAE,EAAE,WAAW,EACf,MAAM,GAAE,MAAW,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC;IAsBtB,sCAAsC;YACxB,iBAAiB;IAwB/B,oEAAoE;YACtD,kBAAkB;IAkBhC;;;;;;OAMG;YACW,eAAe;IA4C7B,gDAAgD;YAClC,gBAAgB;IAgC9B,2CAA2C;IACpC,SAAS,CAAC,IAAI,GAAE,MAA8B,GAAG,cAAc,CAAC,WAAW,CAAC;IA4BnF,iDAAiD;IAC1C,YAAY,CACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAA8B,GACnC,cAAc,CAAC,WAAW,CAAC;IA0B9B,mEAAmE;IAC7D,YAAY,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;CAKjD"}
package/dist/chm-file.js CHANGED
@@ -129,12 +129,13 @@ export class ChmFile {
129
129
  const header = unmarshalPmgiHeader(pageBuf.subarray(0, 8));
130
130
  const end = pageBuf.length - header.freeSpace;
131
131
  const r = new BufferReader(pageBuf, 8);
132
+ const objPathKey = pathKey(objPath);
132
133
  let page = -1;
133
134
  while (r.offset < end) {
134
135
  const strLen = Number(r.readCWord());
135
136
  const pathBytes = r.readBytes(strLen);
136
137
  const path = new TextDecoder('utf-8').decode(pathBytes);
137
- if (path > objPath)
138
+ if (pathKey(path) > objPathKey)
138
139
  return page;
139
140
  page = Number(r.readCWord());
140
141
  }
@@ -152,7 +153,7 @@ export class ChmFile {
152
153
  const pathBytes = r.readBytes(strLen);
153
154
  const path = new TextDecoder('utf-8').decode(pathBytes);
154
155
  // Case-insensitive comparison per C original (strcasecmp)
155
- if (path.toLowerCase() === objPath.toLowerCase()) {
156
+ if (pathKey(path) === pathKey(objPath)) {
156
157
  const space = Number(r.readCWord());
157
158
  const start = r.readCWord();
158
159
  const length = r.readCWord();
@@ -167,6 +168,18 @@ export class ChmFile {
167
168
  }
168
169
  /** Resolve a path to its ChmUnitInfo, or null if not found */
169
170
  async resolve(objPath) {
171
+ const indexed = await this.resolveIndexed(objPath);
172
+ if (indexed)
173
+ return indexed;
174
+ const objPathKey = pathKey(objPath);
175
+ for await (const entry of this.enumerate(ChmEnumerateFlags.All)) {
176
+ if (pathKey(entry.path) === objPathKey) {
177
+ return entry;
178
+ }
179
+ }
180
+ return null;
181
+ }
182
+ async resolveIndexed(objPath) {
170
183
  let curPage = this.indexRoot;
171
184
  while (curPage !== -1) {
172
185
  const pageBuf = await this.fetchBytes(this.dirOffset + BigInt(curPage) * BigInt(this.blockLen), this.blockLen);
@@ -401,4 +414,7 @@ function matchesFilter(flags, what) {
401
414
  return false;
402
415
  return true;
403
416
  }
417
+ function pathKey(path) {
418
+ return path.toLowerCase();
419
+ }
404
420
  //# sourceMappingURL=chm-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chm-file.js","sourceRoot":"","sources":["../src/chm-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chm-file.js","sourceRoot":"","sources":["../src/chm-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type ChmSystemInfo } from './system.js';
2
+ import { type DecodedText } from './text.js';
3
+ import { type ChmToc } from './toc.js';
4
+ export interface ArchiveInfo {
5
+ system: ChmSystemInfo | null;
6
+ counts: {
7
+ files: number;
8
+ directories: number;
9
+ };
10
+ }
11
+ export interface ArchiveListEntry {
12
+ path: string;
13
+ start: string;
14
+ length: string;
15
+ space: 'compressed' | 'uncompressed';
16
+ flags: number;
17
+ }
18
+ export interface ArchiveTocResult {
19
+ path: string;
20
+ toc: ChmToc;
21
+ }
22
+ export interface ArchiveCatResult extends DecodedText {
23
+ path: string;
24
+ }
25
+ export declare function getArchiveInfo(filePath: string): Promise<ArchiveInfo>;
26
+ export declare function listArchiveEntries(filePath: string, dir?: string): Promise<ArchiveListEntry[]>;
27
+ export declare function loadArchiveToc(filePath: string): Promise<ArchiveTocResult>;
28
+ export declare function catArchiveText(filePath: string, entryPath: string, options?: {
29
+ charset?: string;
30
+ }): Promise<ArchiveCatResult>;
31
+ //# sourceMappingURL=cli-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAGjD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAiB3E;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAapG;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuBhF;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAiB3B"}
@@ -0,0 +1,109 @@
1
+ import { discoverTocFile } from './archive-discovery.js';
2
+ import { ChmFile } from './chm-file.js';
3
+ import { chmReaderFromFile } from './reader.js';
4
+ import { parseSystemInfo } from './system.js';
5
+ import { decodeText } from './text.js';
6
+ import { parseToc } from './toc.js';
7
+ import { ChmEnumerateFlags, ChmSpace } from './types.js';
8
+ export async function getArchiveInfo(filePath) {
9
+ return withArchive(filePath, async (chm) => {
10
+ const sysRaw = await chm.getSystemRaw();
11
+ const system = sysRaw ? parseSystemInfo(sysRaw) : null;
12
+ let files = 0;
13
+ let directories = 0;
14
+ for await (const entry of chm.enumerate(ChmEnumerateFlags.All)) {
15
+ if (entry.flags & ChmEnumerateFlags.Files)
16
+ files++;
17
+ if (entry.flags & ChmEnumerateFlags.Dirs)
18
+ directories++;
19
+ }
20
+ return {
21
+ system,
22
+ counts: { files, directories },
23
+ };
24
+ });
25
+ }
26
+ export async function listArchiveEntries(filePath, dir) {
27
+ return withArchive(filePath, async (chm) => {
28
+ const iter = dir
29
+ ? chm.enumerateDir(dir, ChmEnumerateFlags.All)
30
+ : chm.enumerate(ChmEnumerateFlags.All);
31
+ const entries = [];
32
+ for await (const entry of iter) {
33
+ entries.push(serializeEntry(entry));
34
+ }
35
+ return entries;
36
+ });
37
+ }
38
+ export async function loadArchiveToc(filePath) {
39
+ return withArchive(filePath, async (chm) => {
40
+ const sysRaw = await chm.getSystemRaw();
41
+ const system = sysRaw ? parseSystemInfo(sysRaw) : undefined;
42
+ const tocPath = await resolveTocPath(chm, system);
43
+ if (!tocPath) {
44
+ throw new Error('No TOC file found in archive');
45
+ }
46
+ const tocEntry = await chm.resolve(tocPath);
47
+ if (!tocEntry) {
48
+ throw new Error(`TOC file not found: ${tocPath}`);
49
+ }
50
+ const tocData = await chm.retrieve(tocEntry);
51
+ const decoded = decodeText(tocData);
52
+ return {
53
+ path: tocEntry.path,
54
+ toc: parseToc(decoded.text),
55
+ };
56
+ });
57
+ }
58
+ export async function catArchiveText(filePath, entryPath, options = {}) {
59
+ return withArchive(filePath, async (chm) => {
60
+ const entry = await chm.resolve(entryPath);
61
+ if (!entry) {
62
+ throw new Error(`Not found: ${entryPath}`);
63
+ }
64
+ const data = await chm.retrieve(entry);
65
+ const decoded = decodeText(data, options);
66
+ return {
67
+ path: entry.path,
68
+ text: decoded.text,
69
+ encoding: decoded.encoding,
70
+ source: decoded.source,
71
+ };
72
+ });
73
+ }
74
+ async function withArchive(filePath, fn) {
75
+ const reader = chmReaderFromFile(filePath);
76
+ const chm = await ChmFile.open(reader);
77
+ try {
78
+ return await fn(chm);
79
+ }
80
+ finally {
81
+ chm.close();
82
+ }
83
+ }
84
+ async function resolveTocPath(chm, system) {
85
+ if (!system) {
86
+ return discoverTocFile(chm);
87
+ }
88
+ if (system.binaryToc || !system.tocFile) {
89
+ const discovered = await discoverTocFile(chm, system);
90
+ if (discovered)
91
+ return discovered;
92
+ }
93
+ if (system.tocFile) {
94
+ const direct = await chm.resolve(system.tocFile);
95
+ if (direct)
96
+ return direct.path;
97
+ }
98
+ return discoverTocFile(chm, system);
99
+ }
100
+ function serializeEntry(entry) {
101
+ return {
102
+ path: entry.path,
103
+ start: entry.start.toString(),
104
+ length: entry.length.toString(),
105
+ space: entry.space === ChmSpace.Compressed ? 'compressed' : 'uncompressed',
106
+ flags: entry.flags,
107
+ };
108
+ }
109
+ //# sourceMappingURL=cli-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-commands.js","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -1,19 +1,21 @@
1
1
  #!/usr/bin/env node
2
+ import { catArchiveText, getArchiveInfo, listArchiveEntries, loadArchiveToc, } from './cli-commands.js';
2
3
  import { ChmFile } from './chm-file.js';
3
4
  import { chmReaderFromFile } from './reader.js';
4
5
  import { ChmEnumerateFlags } from './types.js';
5
- import { parseSystemInfo } from './system.js';
6
- import { parseToc } from './toc.js';
7
6
  import { promises as fs } from 'fs';
8
- import { join, dirname } from 'path';
7
+ import { dirname, join } from 'path';
9
8
  const args = process.argv.slice(2);
10
9
  function usage() {
11
10
  console.error(`Usage:
12
- chmlib-ts info <file.chm> Show archive metadata
13
- chmlib-ts list <file.chm> [--dir <prefix>] List entries in the archive
11
+ chmlib-ts info <file.chm> [--json] Show archive metadata
12
+ chmlib-ts list <file.chm> [--dir <prefix>] [--json]
13
+ List entries in the archive
14
14
  chmlib-ts extract <file.chm> <outdir> Extract all files to a directory
15
15
  chmlib-ts extract-file <file.chm> <path> [dest] Extract a single file (stdout if no dest)
16
- chmlib-ts toc <file.chm> [--format tree] Print table of contents
16
+ chmlib-ts cat <file.chm> <path> [--charset name] Print a decoded text file
17
+ chmlib-ts toc <file.chm> [--format tree|json] [--json]
18
+ Print table of contents
17
19
  `);
18
20
  process.exit(1);
19
21
  }
@@ -26,16 +28,14 @@ async function main() {
26
28
  const file = args[1];
27
29
  if (!file)
28
30
  usage();
29
- await cmdInfo(file);
31
+ await cmdInfo(file, hasFlag('--json'));
30
32
  break;
31
33
  }
32
34
  case 'list': {
33
35
  const file = args[1];
34
36
  if (!file)
35
37
  usage();
36
- const dirIdx = args.indexOf('--dir');
37
- const dir = dirIdx !== -1 ? args[dirIdx + 1] : undefined;
38
- await cmdList(file, dir);
38
+ await cmdList(file, getOptionValue('--dir'), hasFlag('--json'));
39
39
  break;
40
40
  }
41
41
  case 'extract': {
@@ -55,12 +55,19 @@ async function main() {
55
55
  await cmdExtractFile(file, path, dest);
56
56
  break;
57
57
  }
58
+ case 'cat': {
59
+ const file = args[1];
60
+ const path = args[2];
61
+ if (!file || !path)
62
+ usage();
63
+ await cmdCat(file, path, getOptionValue('--charset'));
64
+ break;
65
+ }
58
66
  case 'toc': {
59
67
  const file = args[1];
60
68
  if (!file)
61
69
  usage();
62
- const formatIdx = args.indexOf('--format');
63
- const format = formatIdx !== -1 ? args[formatIdx + 1] : 'json';
70
+ const format = hasFlag('--json') ? 'json' : getOptionValue('--format') ?? 'json';
64
71
  await cmdToc(file, format);
65
72
  break;
66
73
  }
@@ -68,51 +75,32 @@ async function main() {
68
75
  usage();
69
76
  }
70
77
  }
71
- async function cmdInfo(filePath) {
72
- const reader = chmReaderFromFile(filePath);
73
- const chm = await ChmFile.open(reader);
74
- try {
75
- // Get system info
76
- const sysRaw = await chm.getSystemRaw();
77
- if (sysRaw) {
78
- const sys = parseSystemInfo(sysRaw);
79
- console.log('Title:', sys.title ?? '(none)');
80
- console.log('Default Topic:', sys.defaultTopic ?? '(none)');
81
- console.log('TOC File:', sys.tocFile ?? '(none)');
82
- console.log('Index File:', sys.indexFile ?? '(none)');
83
- console.log('Compiler Version:', sys.compilerVersion ?? '(none)');
84
- console.log('Binary TOC:', sys.binaryToc ?? false);
85
- console.log('Binary Index:', sys.binaryIndex ?? false);
86
- }
87
- // Count entries
88
- let fileCount = 0;
89
- let dirCount = 0;
90
- for await (const entry of chm.enumerate(ChmEnumerateFlags.All)) {
91
- if (entry.flags & ChmEnumerateFlags.Files)
92
- fileCount++;
93
- if (entry.flags & ChmEnumerateFlags.Dirs)
94
- dirCount++;
95
- }
96
- console.log('Files:', fileCount);
97
- console.log('Directories:', dirCount);
78
+ async function cmdInfo(filePath, asJson) {
79
+ const info = await getArchiveInfo(filePath);
80
+ if (asJson) {
81
+ console.log(JSON.stringify(info, null, 2));
82
+ return;
98
83
  }
99
- finally {
100
- chm.close();
84
+ if (info.system) {
85
+ console.log('Title:', info.system.title ?? '(none)');
86
+ console.log('Default Topic:', info.system.defaultTopic ?? '(none)');
87
+ console.log('TOC File:', info.system.tocFile ?? '(none)');
88
+ console.log('Index File:', info.system.indexFile ?? '(none)');
89
+ console.log('Compiler Version:', info.system.compilerVersion ?? '(none)');
90
+ console.log('Binary TOC:', info.system.binaryToc ?? false);
91
+ console.log('Binary Index:', info.system.binaryIndex ?? false);
101
92
  }
93
+ console.log('Files:', info.counts.files);
94
+ console.log('Directories:', info.counts.directories);
102
95
  }
103
- async function cmdList(filePath, dir) {
104
- const reader = chmReaderFromFile(filePath);
105
- const chm = await ChmFile.open(reader);
106
- try {
107
- const iter = dir
108
- ? chm.enumerateDir(dir, ChmEnumerateFlags.All)
109
- : chm.enumerate(ChmEnumerateFlags.All);
110
- for await (const entry of iter) {
111
- console.log(`${entry.path}\t${entry.length}\t${entry.space === 1 ? 'compressed' : 'uncompressed'}`);
112
- }
96
+ async function cmdList(filePath, dir, asJson) {
97
+ const entries = await listArchiveEntries(filePath, dir);
98
+ if (asJson) {
99
+ console.log(JSON.stringify(entries, null, 2));
100
+ return;
113
101
  }
114
- finally {
115
- chm.close();
102
+ for (const entry of entries) {
103
+ console.log(`${entry.path}\t${entry.length}\t${entry.space}`);
116
104
  }
117
105
  }
118
106
  async function cmdExtract(filePath, outdir) {
@@ -120,10 +108,8 @@ async function cmdExtract(filePath, outdir) {
120
108
  const chm = await ChmFile.open(reader);
121
109
  try {
122
110
  for await (const entry of chm.enumerate(ChmEnumerateFlags.All)) {
123
- // Skip directory entries and meta entries
124
111
  if (entry.flags & ChmEnumerateFlags.Dirs)
125
112
  continue;
126
- // Normalize path: strip leading /
127
113
  let relPath = entry.path;
128
114
  if (relPath.startsWith('/'))
129
115
  relPath = relPath.slice(1);
@@ -153,7 +139,7 @@ async function cmdExtractFile(filePath, entryPath, dest) {
153
139
  if (dest) {
154
140
  await fs.mkdir(dirname(dest), { recursive: true });
155
141
  await fs.writeFile(dest, data);
156
- console.log(`Extracted ${entryPath} → ${dest}`);
142
+ console.log(`Extracted ${ui.path} → ${dest}`);
157
143
  }
158
144
  else {
159
145
  process.stdout.write(data);
@@ -163,38 +149,17 @@ async function cmdExtractFile(filePath, entryPath, dest) {
163
149
  chm.close();
164
150
  }
165
151
  }
152
+ async function cmdCat(filePath, entryPath, charset) {
153
+ const result = await catArchiveText(filePath, entryPath, { charset });
154
+ process.stdout.write(result.text);
155
+ }
166
156
  async function cmdToc(filePath, format) {
167
- const reader = chmReaderFromFile(filePath);
168
- const chm = await ChmFile.open(reader);
169
- try {
170
- const sysRaw = await chm.getSystemRaw();
171
- if (!sysRaw) {
172
- console.error('No /#SYSTEM found');
173
- process.exit(1);
174
- }
175
- const sys = parseSystemInfo(sysRaw);
176
- const tocPath = sys.tocFile;
177
- if (!tocPath) {
178
- console.error('No TOC file found in /#SYSTEM');
179
- process.exit(1);
180
- }
181
- const tocUi = await chm.resolve(tocPath);
182
- if (!tocUi) {
183
- console.error(`TOC file not found: ${tocPath}`);
184
- process.exit(1);
185
- }
186
- const tocData = await chm.retrieve(tocUi);
187
- const tocHtml = new TextDecoder('utf-8').decode(tocData);
188
- const toc = parseToc(tocHtml);
189
- if (format === 'tree') {
190
- printTree(toc.entries, 0);
191
- }
192
- else {
193
- console.log(JSON.stringify(toc, null, 2));
194
- }
157
+ const result = await loadArchiveToc(filePath);
158
+ if (format === 'tree') {
159
+ printTree(result.toc.entries, 0);
195
160
  }
196
- finally {
197
- chm.close();
161
+ else {
162
+ console.log(JSON.stringify(result.toc, null, 2));
198
163
  }
199
164
  }
200
165
  function printTree(entries, depth) {
@@ -207,6 +172,15 @@ function printTree(entries, depth) {
207
172
  }
208
173
  }
209
174
  }
175
+ function hasFlag(flag) {
176
+ return args.includes(flag);
177
+ }
178
+ function getOptionValue(flag) {
179
+ const index = args.indexOf(flag);
180
+ if (index === -1)
181
+ return undefined;
182
+ return args[index + 1];
183
+ }
210
184
  main().catch((err) => {
211
185
  console.error(err);
212
186
  process.exit(1);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/text.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export interface DecodedText {
2
+ text: string;
3
+ encoding: string;
4
+ source: 'explicit' | 'bom' | 'meta' | 'xml' | 'utf16-heuristic' | 'utf8' | 'fallback';
5
+ }
6
+ export declare function decodeText(data: Uint8Array, options?: {
7
+ charset?: string;
8
+ }): DecodedText;
9
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,iBAAiB,GAAG,MAAM,GAAG,UAAU,CAAC;CACvF;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACjC,WAAW,CAkDb"}
package/dist/text.js ADDED
@@ -0,0 +1,123 @@
1
+ export function decodeText(data, options = {}) {
2
+ const explicitCharset = options.charset?.trim();
3
+ if (explicitCharset) {
4
+ return {
5
+ text: decodeWithCharset(data, explicitCharset),
6
+ encoding: explicitCharset,
7
+ source: 'explicit',
8
+ };
9
+ }
10
+ const bomCharset = detectBomCharset(data);
11
+ if (bomCharset) {
12
+ return {
13
+ text: decodeWithCharset(data, bomCharset),
14
+ encoding: bomCharset,
15
+ source: 'bom',
16
+ };
17
+ }
18
+ const utf16Charset = detectUtf16WithoutBom(data);
19
+ if (utf16Charset) {
20
+ return {
21
+ text: decodeWithCharset(data, utf16Charset),
22
+ encoding: utf16Charset,
23
+ source: 'utf16-heuristic',
24
+ };
25
+ }
26
+ const declared = sniffDeclaredCharset(data);
27
+ if (declared) {
28
+ return {
29
+ text: decodeWithCharset(data, declared.encoding),
30
+ encoding: declared.encoding,
31
+ source: declared.source,
32
+ };
33
+ }
34
+ if (isValidUtf8(data)) {
35
+ return {
36
+ text: new TextDecoder('utf-8').decode(data),
37
+ encoding: 'utf-8',
38
+ source: 'utf8',
39
+ };
40
+ }
41
+ return {
42
+ text: decodeWithCharset(data, 'windows-1252'),
43
+ encoding: 'windows-1252',
44
+ source: 'fallback',
45
+ };
46
+ }
47
+ function decodeWithCharset(data, charset) {
48
+ try {
49
+ return new TextDecoder(charset).decode(data);
50
+ }
51
+ catch (error) {
52
+ throw new Error(`Unsupported charset: ${charset}`, { cause: error });
53
+ }
54
+ }
55
+ function detectBomCharset(data) {
56
+ if (data.length >= 3 && data[0] === 0xef && data[1] === 0xbb && data[2] === 0xbf) {
57
+ return 'utf-8';
58
+ }
59
+ if (data.length >= 2 && data[0] === 0xff && data[1] === 0xfe) {
60
+ return 'utf-16le';
61
+ }
62
+ if (data.length >= 2 && data[0] === 0xfe && data[1] === 0xff) {
63
+ return 'utf-16be';
64
+ }
65
+ return null;
66
+ }
67
+ function detectUtf16WithoutBom(data) {
68
+ const sampleLen = Math.min(data.length, 256);
69
+ if (sampleLen < 8)
70
+ return null;
71
+ let evenZeros = 0;
72
+ let oddZeros = 0;
73
+ for (let i = 0; i < sampleLen; i++) {
74
+ if (data[i] !== 0)
75
+ continue;
76
+ if (i % 2 === 0)
77
+ evenZeros++;
78
+ else
79
+ oddZeros++;
80
+ }
81
+ const evenRatio = evenZeros / Math.ceil(sampleLen / 2);
82
+ const oddRatio = oddZeros / Math.max(1, Math.floor(sampleLen / 2));
83
+ if (oddRatio > 0.3 && evenRatio < 0.05)
84
+ return 'utf-16le';
85
+ if (evenRatio > 0.3 && oddRatio < 0.05)
86
+ return 'utf-16be';
87
+ return null;
88
+ }
89
+ function sniffDeclaredCharset(data) {
90
+ const sample = asciiSample(data);
91
+ const xmlMatch = /<\?xml[^>]+encoding\s*=\s*["']([^"']+)["']/iu.exec(sample);
92
+ if (xmlMatch?.[1]) {
93
+ return { encoding: xmlMatch[1], source: 'xml' };
94
+ }
95
+ const metaCharsetMatch = /<meta[^>]+charset\s*=\s*["']?\s*([^"'>\s;]+)/iu.exec(sample);
96
+ if (metaCharsetMatch?.[1]) {
97
+ return { encoding: metaCharsetMatch[1], source: 'meta' };
98
+ }
99
+ const metaContentMatch = /<meta[^>]+content\s*=\s*["'][^"']*charset\s*=\s*([^"'>\s;]+)/iu.exec(sample);
100
+ if (metaContentMatch?.[1]) {
101
+ return { encoding: metaContentMatch[1], source: 'meta' };
102
+ }
103
+ return null;
104
+ }
105
+ function asciiSample(data) {
106
+ const limit = Math.min(data.length, 4096);
107
+ let result = '';
108
+ for (let i = 0; i < limit; i++) {
109
+ const byte = data[i];
110
+ result += byte >= 0x20 && byte <= 0x7e ? String.fromCharCode(byte) : ' ';
111
+ }
112
+ return result;
113
+ }
114
+ function isValidUtf8(data) {
115
+ try {
116
+ new TextDecoder('utf-8', { fatal: true }).decode(data);
117
+ return true;
118
+ }
119
+ catch {
120
+ return false;
121
+ }
122
+ }
123
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chmlib-ts",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "TypeScript port of chmlib - CHM archive reader",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",