@clearmist-labs/comic-archive-handler 1.3.0 → 1.4.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 +1 -0
- package/dist/index.d.mts +33 -16
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +199 -95
- package/dist/index.mjs.map +1 -1
- package/docs/API.md +41 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -133,6 +133,7 @@ GIF, BMP, and TIFF are intentionally not included as writable because of their p
|
|
|
133
133
|
- **RAR is read-only.** The UnRAR source license permits decompression only, not building a compatible compressor, so `convertArchive(input, 'rar')` always throws `UnsupportedOperationError`.
|
|
134
134
|
- **7z read/write** uses the standalone `7zzs` binary bundled by [`7zip-bin-full`](https://www.npmjs.com/package/7zip-bin-full), spawned directly (not through `node-7z`, which has no way to control the child process's working directory). Both directions round-trip through a temporary staging directory since the 7-Zip CLI operates on real files, not in-memory buffers.
|
|
135
135
|
- **asar** reads are fully streaming (direct byte-range reads against the archive, no extraction), but writes require a staging directory since `@electron/asar`'s `createPackage` API only accepts a source directory on disk.
|
|
136
|
+
- **asar metadata lives in the archive's own header, not as a `ComicInfo.xml`/`MetronInfo.xml` entry.** `hasComicMetadata`/`readArchiveMetadata`/`addMetadataToArchive`/`removeComicMetadata` all handle this transparently for asar inputs (metadata is set/read as a `comicMetadata` key on the header JSON alongside the existing `files` key. See `src/internal/asarHeader.ts`'s `writeAsarHeaderPatch`/`serializeAsarHeader`), so calling code doesn't need to branch on archive type. Adding metadata to an asar archive patches its header directly rather than repackaging via `createPackage`, and is correspondingly cheaper than the equivalent zip/tar/7z write. A `ComicInfo.xml`/`MetronInfo.xml` entry inside an asar archive is never read as metadata.
|
|
136
137
|
- Any operation that needs a staging directory (asar writes, any 7z operation) accepts a `tempDir` option; if omitted, a directory under `os.tmpdir()` is used, and a clear `FilesystemAccessError` is thrown if no writable directory is available.
|
|
137
138
|
- Metadata conversion between the canonical schema and ComicInfo.xml/MetronInfo.xml is intentionally lossy in both directions. See the field-mapping table in `src/metadata/schema.ts`.
|
|
138
139
|
- PNG conversion's `quality` option only has an effect when `palette: true` is also set (an upstream `sharp`/libvips behavior).
|
package/dist/index.d.mts
CHANGED
|
@@ -344,14 +344,14 @@ export declare function validateMetadataXml(xml: string | Buffer, schema: Metada
|
|
|
344
344
|
/**
|
|
345
345
|
* Authoritative field-mapping table between the canonical ComicMetadata
|
|
346
346
|
* shape and each external XML schema (ComicInfo.xml v2.1, MetronInfo.xml
|
|
347
|
-
* v1.1
|
|
347
|
+
* v1.1. See `schemas/`). Conversion is intentionally lossy in both
|
|
348
348
|
* directions; a field with no equivalent in the target schema is dropped
|
|
349
349
|
* unless the source and target schema happen to be the same one (in which
|
|
350
350
|
* case `comicInfoExtra`/`metronInfoExtra` round-trips it).
|
|
351
351
|
*
|
|
352
352
|
* | Canonical field | ComicInfo.xml | MetronInfo.xml |
|
|
353
353
|
* |-------------------------|-----------------------------------------------------|------------------------------------------------|
|
|
354
|
-
* | title | Title | (no equivalent
|
|
354
|
+
* | title | Title | (no equivalent; dropped) |
|
|
355
355
|
* | series | Series | Series > Name |
|
|
356
356
|
* | seriesSort | (no equivalent) | Series > SortName |
|
|
357
357
|
* | seriesId / seriesLang | (no equivalent) | Series `id`/`lang` attributes |
|
|
@@ -359,18 +359,18 @@ export declare function validateMetadataXml(xml: string | Buffer, schema: Metada
|
|
|
359
359
|
* | seriesIssueCount | (no equivalent) | Series > IssueCount |
|
|
360
360
|
* | seriesVolumeCount | (no equivalent) | Series > VolumeCount |
|
|
361
361
|
* | seriesAlternativeNames | (no equivalent) | Series > AlternativeNames > AlternativeName[] |
|
|
362
|
-
* | seriesGroup | SeriesGroup | (no equivalent
|
|
362
|
+
* | seriesGroup | SeriesGroup | (no equivalent; dropped) |
|
|
363
363
|
* | volume | Volume | Series > Volume |
|
|
364
364
|
* | number | Number | Number |
|
|
365
365
|
* | alternateNumber | AlternateNumber | AlternativeNumber |
|
|
366
|
-
* | alternateSeries | AlternateSeries | (no equivalent
|
|
367
|
-
* | alternateCount | AlternateCount | (no equivalent
|
|
366
|
+
* | alternateSeries | AlternateSeries | (no equivalent; dropped) |
|
|
367
|
+
* | alternateCount | AlternateCount | (no equivalent; dropped) |
|
|
368
368
|
* | count | Count | (no equivalent) |
|
|
369
369
|
* | pageCount | PageCount | PageCount |
|
|
370
370
|
* | summary | Summary | Summary |
|
|
371
371
|
* | notes | Notes | Notes |
|
|
372
|
-
* | review | Review | (no equivalent
|
|
373
|
-
* | scanInformation | ScanInformation | (no equivalent
|
|
372
|
+
* | review | Review | (no equivalent; dropped) |
|
|
373
|
+
* | scanInformation | ScanInformation | (no equivalent; dropped) |
|
|
374
374
|
* | publisher / publisherId | Publisher | Publisher > Name / `id` attribute |
|
|
375
375
|
* | imprint / imprintId | Imprint | Publisher > Imprint / `id` attribute |
|
|
376
376
|
* | collectionTitle | (no equivalent) | CollectionTitle |
|
|
@@ -388,7 +388,7 @@ export declare function validateMetadataXml(xml: string | Buffer, schema: Metada
|
|
|
388
388
|
* | teams | Teams (comma-separated string) | Teams > Team[] (`id` attribute) |
|
|
389
389
|
* | locations | Locations (comma-separated string) | Locations > Location[] (`id` attribute) |
|
|
390
390
|
* | storyArcs | StoryArc / StoryArcNumber (parallel comma lists) | Arcs > Arc[] (Name + Number + `id`) |
|
|
391
|
-
* | mainCharacterOrTeam | MainCharacterOrTeam | (no equivalent
|
|
391
|
+
* | mainCharacterOrTeam | MainCharacterOrTeam | (no equivalent; dropped) |
|
|
392
392
|
* | stories | (no equivalent) | Stories > Story[] |
|
|
393
393
|
* | reprints | (no equivalent) | Reprints > Reprint[] |
|
|
394
394
|
* | universes | (no equivalent) | Universes > Universe[] |
|
|
@@ -398,9 +398,9 @@ export declare function validateMetadataXml(xml: string | Buffer, schema: Metada
|
|
|
398
398
|
* | web | Web (single URL) | URLs > URL[] (`primary` attribute) |
|
|
399
399
|
* | gtin | GTIN | GTIN > ISBN |
|
|
400
400
|
* | gtinUpc | (no equivalent) | GTIN > UPC |
|
|
401
|
-
* | blackAndWhite | BlackAndWhite (Yes/No) | (no equivalent
|
|
402
|
-
* | manga | Manga | (no equivalent
|
|
403
|
-
* | pages | Pages > Page[] (Image/Type/DoublePage/... attrs) | (no equivalent
|
|
401
|
+
* | blackAndWhite | BlackAndWhite (Yes/No) | (no equivalent; ComicInfo-only) |
|
|
402
|
+
* | manga | Manga | (no equivalent; ComicInfo-only) |
|
|
403
|
+
* | pages | Pages > Page[] (Image/Type/DoublePage/... attrs) | (no equivalent; ComicInfo-only) |
|
|
404
404
|
*/
|
|
405
405
|
export declare const COMIC_INFO_CREDIT_ROLES: readonly ["Writer", "Penciller", "Inker", "Colorist", "Letterer", "CoverArtist", "Editor", "Translator"];
|
|
406
406
|
type ComicInfoCreditRole = (typeof COMIC_INFO_CREDIT_ROLES)[number];
|
|
@@ -428,7 +428,7 @@ export declare function resourceName(item: string | MetronResource): string;
|
|
|
428
428
|
export declare function resourceId(item: string | MetronResource): string | undefined;
|
|
429
429
|
export declare function joinResourceNames(values?: (string | MetronResource)[]): string | undefined;
|
|
430
430
|
declare namespace index_d_exports {
|
|
431
|
-
export { COMIC_INFO_AGE_RATING_VALUES, COMIC_INFO_CREDIT_ROLES, COMIC_INFO_MANGA_VALUES, COMIC_INFO_PAGE_TYPE_VALUES, COMIC_INFO_YES_NO_VALUES, ComicInfoCreditRole, METRON_AGE_RATING_VALUES, METRON_FORMAT_VALUES, METRON_INFORMATION_SOURCE_VALUES, METRON_ROLE_VALUES, MetadataValidationIssue, MetadataValidationResult, addMetadataToArchive, comicInfoXmlToMetadata, hasComicMetadata, joinCommaList, joinResourceNames, metadataToComicInfoXml, metadataToMetronInfoXml, metadataToXml, metronInfoXmlToMetadata, readArchiveMetadata, resourceId, resourceName, splitCommaList, validateMetadataXml, xmlToMetadata };
|
|
431
|
+
export { COMIC_INFO_AGE_RATING_VALUES, COMIC_INFO_CREDIT_ROLES, COMIC_INFO_MANGA_VALUES, COMIC_INFO_PAGE_TYPE_VALUES, COMIC_INFO_YES_NO_VALUES, ComicInfoCreditRole, METRON_AGE_RATING_VALUES, METRON_FORMAT_VALUES, METRON_INFORMATION_SOURCE_VALUES, METRON_ROLE_VALUES, MetadataValidationIssue, MetadataValidationResult, addMetadataToArchive, comicInfoXmlToMetadata, hasComicMetadata, joinCommaList, joinResourceNames, metadataToComicInfoXml, metadataToMetronInfoXml, metadataToXml, metronInfoXmlToMetadata, readArchiveMetadata, removeComicMetadata, resourceId, resourceName, splitCommaList, validateMetadataXml, xmlToMetadata };
|
|
432
432
|
}
|
|
433
433
|
export declare function metadataToXml(metadata: ComicMetadata, schema: MetadataSchema): string;
|
|
434
434
|
export declare function xmlToMetadata(xml: string | Buffer, schema: MetadataSchema): ComicMetadata;
|
|
@@ -436,12 +436,27 @@ export declare function hasComicMetadata(input: ArchiveInput): Promise<{
|
|
|
436
436
|
present: boolean;
|
|
437
437
|
schema?: MetadataSchema;
|
|
438
438
|
path?: string;
|
|
439
|
+
bothPresent?: boolean;
|
|
439
440
|
}>;
|
|
440
|
-
|
|
441
|
+
/**
|
|
442
|
+
* Reads embedded comic metadata. With no `schema`, returns whichever schema
|
|
443
|
+
* `hasComicMetadata` finds first (asar prefers ComicInfo when both are
|
|
444
|
+
* present). Pass `schema` to read that specific one regardless of which is
|
|
445
|
+
* preferred. The only way to read a non-preferred schema back out of an
|
|
446
|
+
* asar archive that has both, since its metadata isn't addressable by path.
|
|
447
|
+
*/
|
|
448
|
+
export declare function readArchiveMetadata(input: ArchiveInput, schema?: MetadataSchema): Promise<{
|
|
441
449
|
schema: MetadataSchema;
|
|
442
450
|
metadata: ComicMetadata;
|
|
443
451
|
} | null>;
|
|
444
452
|
export declare function addMetadataToArchive(input: ArchiveInput, metadata: ComicMetadata, schema: MetadataSchema, options?: AddMetadataOptions): Promise<Buffer | void>;
|
|
453
|
+
/**
|
|
454
|
+
* Removes the embedded `{schema}` metadata, if present; an asar header key
|
|
455
|
+
* removal; or the matching `{schema}.xml` entry for every other format.
|
|
456
|
+
* Throws `ArchiveFormatError` if the archive has no such metadata; a caller
|
|
457
|
+
* that wants a no-op instead should check `hasComicMetadata` first.
|
|
458
|
+
*/
|
|
459
|
+
export declare function removeComicMetadata(input: ArchiveInput, schema: MetadataSchema, options?: ArchiveWriteOptions): Promise<Buffer | void>;
|
|
445
460
|
//#endregion
|
|
446
461
|
//#region src/images/convert.d.ts
|
|
447
462
|
export declare function convertImageBuffer(image: Buffer, format: ImageOutputFormat, options?: ImageConvertOptions): Promise<Buffer>;
|
|
@@ -468,7 +483,7 @@ export declare function isImagePath(entryPath: string): boolean;
|
|
|
468
483
|
//#region src/hashing/sha256.d.ts
|
|
469
484
|
export declare function sha256ArchiveEntry(input: ArchiveInput, entryPath: string): Promise<string>;
|
|
470
485
|
/**
|
|
471
|
-
* SHA256 of the whole archive file
|
|
486
|
+
* SHA256 of the whole archive file, except for asar, where only the
|
|
472
487
|
* content region (bytes after the header) is hashed, so header/index
|
|
473
488
|
* reordering never changes the content hash.
|
|
474
489
|
*/
|
|
@@ -511,7 +526,7 @@ export interface ReadArchiveEntriesResult {
|
|
|
511
526
|
* Reads every entry's bytes and SHA256 in a single pass over the archive.
|
|
512
527
|
* Calling `readArchiveEntry`/`sha256ArchiveEntry` once per entry instead
|
|
513
528
|
* means re-running `listEntries` and re-locating the target entry on every
|
|
514
|
-
* call
|
|
529
|
+
* call: cheap for zip (backed by real central-directory random access) and
|
|
515
530
|
* tar/asar, but for the sequential/CLI-driven formats (rar, 7z, ace) each
|
|
516
531
|
* call re-reads the archive from the start, so reading every entry that way
|
|
517
532
|
* costs O(n^2). This also does half the I/O of calling both
|
|
@@ -575,12 +590,14 @@ declare const comicArchiveHandler: {
|
|
|
575
590
|
present: boolean;
|
|
576
591
|
schema?: MetadataSchema;
|
|
577
592
|
path?: string;
|
|
593
|
+
bothPresent?: boolean;
|
|
578
594
|
}>;
|
|
579
|
-
readArchiveMetadata(input: ArchiveInput): Promise<{
|
|
595
|
+
readArchiveMetadata(input: ArchiveInput, schema?: MetadataSchema): Promise<{
|
|
580
596
|
schema: MetadataSchema;
|
|
581
597
|
metadata: ComicMetadata;
|
|
582
598
|
} | null>;
|
|
583
599
|
addMetadataToArchive(input: ArchiveInput, metadata: ComicMetadata, schema: MetadataSchema, options?: AddMetadataOptions): Promise<Buffer | void>;
|
|
600
|
+
removeComicMetadata(input: ArchiveInput, schema: MetadataSchema, options?: ArchiveWriteOptions): Promise<Buffer | void>;
|
|
584
601
|
metadataToComicInfoXml: typeof metadataToComicInfoXml;
|
|
585
602
|
comicInfoXmlToMetadata: typeof comicInfoXmlToMetadata;
|
|
586
603
|
metadataToMetronInfoXml: typeof metadataToMetronInfoXml;
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/benchmark/types.ts","../src/errors.ts","../src/detect.ts","../src/convertArchive.ts","../src/extractArchive.ts","../src/metadata/comicInfo.ts","../src/metadata/metronInfo.ts","../src/metadata/validate.ts","../src/metadata/schema.ts","../src/metadata/index.ts","../src/images/convert.ts","../src/images/phash.ts","../src/images/isImage.ts","../src/hashing/sha256.ts","../src/rename.ts","../src/strip.ts","../src/listFiles.ts","../src/readArchiveEntry.ts","../src/readArchiveEntries.ts","../src/removeArchiveEntry.ts","../src/benchmark/benchmarkArchive.ts","../src/benchmark/report.ts","../src/index.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/benchmark/types.ts","../src/errors.ts","../src/detect.ts","../src/convertArchive.ts","../src/extractArchive.ts","../src/metadata/comicInfo.ts","../src/metadata/metronInfo.ts","../src/metadata/validate.ts","../src/metadata/schema.ts","../src/metadata/index.ts","../src/images/convert.ts","../src/images/phash.ts","../src/images/isImage.ts","../src/hashing/sha256.ts","../src/rename.ts","../src/strip.ts","../src/listFiles.ts","../src/readArchiveEntry.ts","../src/readArchiveEntries.ts","../src/removeArchiveEntry.ts","../src/benchmark/benchmarkArchive.ts","../src/benchmark/report.ts","../src/index.ts"],"mappings":"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"}
|