open-index/open-npm huggingface dataset:
npm package: @hijlkema-codes/bewaren
Description: Bewaren [be·wa·ren (bewaarde, heeft bewaard)] is Dutch for keep, or preserve and that's what this library is for.
Latest version: 0.1.0

# Bewaren

Bewaren [be·wa·ren (bewaarde, heeft bewaard)] is Dutch for keep, or preserve and that's what this library is for.

`@hijlkema-codes/bewaren` offers a simple API to store files on the end user system using an evergreen solution as
well as a fallback for browser that do not 
[support this functionality](https://developer.mozilla.org/en-US/docs/Web/API/Window/showDirectoryPicker#browser_compatibility]) yet.

## Using in your app

Include the library in your app by installing it:

```shell
npm install --save-dev @hijlkema-codes/bewaren
```

And calling the exported functions in your application

```typescript
import { saveMultipleFiles, createConfig } from '@hijlkema-codes/bewaren'

const files: File[] = [];
// .. rest of your code

await saveMultipleFiles(files, createConfig({
  useDirectoryPicker: true,
  zip: {
    enabledAsFallback: true,
    fileName: 'archive.zip'
  }
}));
```
## Configuration

The configuration is a simple object with type `Config`, if you do not use typescript it is safest to use
the `createConfig` helper function. This function expects an object in the shape of `Config`.

```typescript
type Config = {
  /**
   * Use the directory picker if it is available.
   *
   * If the directory picker is not available, the downloads will be mass triggered using
   * a traditional download link.
   */
  useDirectoryPicker?: boolean;

  zip?: {
    /**
     * Zip the files if the file system API is unsupported.
     *
     * Setting this to true will create a zipFile with the name supplied in the config.
     */
    enabledAsFallback?: boolean;

    /**
     * The name of the zip file to be generated.
     * 
     * Only required if enabledAsFallback is set.
     */
    fileName?: string;
  };
};
```


## Contributing

### Building

Run `nx build bewaren` to build the library.

### Running unit tests

Run `nx test bewaren` to execute the unit tests via [Vitest](https://vitest.dev/).