Skip to main content

Built and signed on GitHub Actions

Library to write out the contents of a JavaScript object structure to the file system in a granular directory structure.

This package works with Node.js, Deno, Bun
This package works with Node.js
This package works with Deno
This package works with Bun
JSR Score
100%
Published
4 months ago (0.1.4)
interface HandlerBuilder

A fluent builder interface for creating value storage handlers handlers.

Methods

Create a new text file value storage handler. This handler stores strings as plain text files.

Create a new binary file value storage handler. The handler can store Uint8Array, ArrayBuffer and ArrayBufferView values. No other value types are handled.

Create a new JSON file value storage handler. This handler serializes values to JSON and writes them to files.

The JSON defaults to a prettified format with line breaks and indentation. Use the JsonFileValueHandlerOptions.compact option to use a compact JSON format, instead.

Create a storage handler that serializes values using a provided serializer function and writes the resulting string to a file.

Create a storage handler that stores arrays of objects as directories, where the name of each entry in the directory is derived from the contents of the corresponding object. The provided handlers are used to store the items.

Array directory value storage handlers only respond to canStoreValue when the value is an array.

The intent is to write out a directory where the array contents are stored as directories, each representing an object in the array. The name of each directory is taken from a property in the object. The keyProperty parameter determines which property is used to name directory entries.

If the array items are found not to be objects or not to contain the key property, the handler's storeValue method will reject with a TypeError.

The handlers in the options parameter are evaluated in order when processing each property in the object to store. If a handler's canStoreValue method returns true for a property, it will be used to store the value. If no handler can store an object-valued property, the directory object storage handler will serve as the fallback, recursively storing that value. Remaining non-object values cause an error to be raised or are either ignored, depending on the value of the ValueStorageHandlerOptions.strict option.

Create a storage handler that stores objects as directories. Each directory entry corresponds to a property in the value object. The provided handlers are used to store the items.

Directory value storage handlers only respond to canStoreValue when the value is an object.

The handlers in the options parameter are evaluated in order when processing each property in the object to store. If a handler's canStoreValue method returns true for a property, it will be used to store the value. If no handler can store an object-valued property, the directory object storage handler will serve as the fallback, recursively storing that value. Remaining non-object values cause an error to be raised or are either ignored, depending on the value of the ValueStorageHandlerOptions.strict option.

Add Package

deno add jsr:@scroogieboy/object-to-directory

Import symbol

import { type HandlerBuilder } from "@scroogieboy/object-to-directory/interfaces";

---- OR ----

Import directly with a jsr specifier

import { type HandlerBuilder } from "jsr:@scroogieboy/object-to-directory/interfaces";

Add Package

npx jsr add @scroogieboy/object-to-directory

Import symbol

import { type HandlerBuilder } from "@scroogieboy/object-to-directory/interfaces";

Add Package

yarn dlx jsr add @scroogieboy/object-to-directory

Import symbol

import { type HandlerBuilder } from "@scroogieboy/object-to-directory/interfaces";

Add Package

pnpm dlx jsr add @scroogieboy/object-to-directory

Import symbol

import { type HandlerBuilder } from "@scroogieboy/object-to-directory/interfaces";

Add Package

bunx jsr add @scroogieboy/object-to-directory

Import symbol

import { type HandlerBuilder } from "@scroogieboy/object-to-directory/interfaces";