archive-wasm
Version:
LibArchive compiled to WASM with a idiomatic JS api
53 lines (51 loc) • 2.07 kB
text/typescript
/*!
* archive-wasm - LibArchive compiled to WASM with a idiomatic JS API
* Copyright (C) 2023 Spacedrive Technology Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/**
* Extracts all supported archive entries to the specified directory.
*
* > Only files, directories, symlinks, and hardlinks are supported.
* Any unsupported or invalid entries in the archive are skipped, with a warning printed to the
* console. If {@link ExtractToOpts.overwrite} is disabled, this function will throws if it
* attempts to overwrite an existing file.
* @param {ArrayBufferView | ArrayBufferLike} data The archive data.
* @param {string} out The path where the archive entries will be extracted.
* @param {string | ExtractToOpts} [opts] Extraction options. A string value is interpreted as the password.
*/
export function extractTo(
data: ArrayBufferView | ArrayBufferLike,
out: string,
opts?: string | ExtractToOpts
): Promise<void>
/**
* Exclusive options for {@link extractTo}.
*/
export interface ExtractToExclusiveOpts {
/**
* Permission flag that is AND’ed with all extracted entries permissions (the opposite of umask).
*/
chmod?: number | undefined
/**
* Whether to allow overwriting existing files. The default is false.
*/
overwrite?: boolean | undefined
}
/**
* Options for {@link extractTo}.
*/
export type ExtractToOpts = Exclude<import('./archive.mjs').ExtractAllOpts, 'ignoreDotDir'> &
ExtractToExclusiveOpts