/** * OPC package open/save over ZIP. * * Read path: ZIP inflate → content types → package rels → require officeDocument. * Write path: emit all parts + content types + relationship parts; preserve opaque bytes. * * Standards: ECMA-376-2 (OPC), officeDocument relationship types (transitional + strict). * Compression: portable deflate-raw streams (see `../zip/deflate.ts`); not ej2-compression * ZipArchive.open (write-oriented AMD entry unsuitable for Node ESM read). * * @private */ import { ZipReadOptions } from '../zip/limits'; import { OpcRelationship } from './relationships'; /** * One OPC part held in memory. */ export interface OpcPart { /** Absolute OPC part name (`/xl/workbook.xml`). */ readonly name: string; /** Raw part payload (opaque unless a higher layer parses it). */ readonly data: Uint8Array; /** Resolved content type, when known. */ readonly contentType: string | undefined; } /** * Options for {@link OpcPackage.open}. */ export interface OpcPackageOpenOptions extends ZipReadOptions { /** * When true, skip the officeDocument relationship requirement. * Default false (workbook packages must have officeDocument). */ readonly allowMissingOfficeDocument?: boolean; } /** * Seed descriptor for {@link OpcPackage.createFromParts}. * @private */ export interface OpcPackageCreatePartsOptions { readonly parts: ReadonlyArray<{ readonly name: string; readonly data: Uint8Array; readonly contentType?: string; }>; readonly relationshipSets: ReadonlyArray<{ readonly source: string | null; readonly relationships: ReadonlyArray; }>; readonly contentTypeDefaults?: ReadonlyArray<{ readonly extension: string; readonly contentType: string; }>; } /** * In-memory OPC package (Phase 1 full load). * * @private */ export declare class OpcPackage { private readonly partMap; private contentTypesData; private readonly relsBySource; private constructor(); /** * Build a package from in-memory parts and relationship sets (no ZIP round-trip). * Used by `Workbook.create` for Transitional empty workbooks. * @private */ static createFromParts(options: OpcPackageCreatePartsOptions): OpcPackage; /** * Open an OPC package from a ZIP buffer. */ static open(data: Uint8Array | ArrayBuffer, options?: OpcPackageOpenOptions): Promise; /** * Absolute part names currently in the package (including content types and rels). */ partNames(): ReadonlyArray; /** * Iterate parts with resolved content types. */ parts(): IterableIterator; /** * Get a part by absolute or ZIP-relative name. */ getPart(name: string): OpcPart | undefined; /** * Resolved content type for a part (Override then Default). */ contentType(partName: string): string | undefined; /** * Relationships for a source part (`null` = package-level `/_rels/.rels`). */ getRelationships(sourcePart: string | null): ReadonlyArray; /** * Resolved officeDocument target part name, if present. */ officeDocumentPartName(): string | undefined; /** * Replace or add a part's bytes. Does not invent content types. */ setPart(name: string, data: Uint8Array, contentType?: string): void; /** * Remove a part if present. Also drops any content-type Override for the part * and any relationships **sourced** from that part (the matching `.rels` entry). */ removePart(name: string): boolean; /** * Replace relationship collection for a source. */ setRelationships(sourcePart: string | null, relationships: ReadonlyArray): void; /** * Serialize package to a ZIP buffer. * Opaque part bytes are written unchanged. Content types and relationship * parts are serialized from the in-memory model. */ save(): Promise; private ensureOverride; }