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
2 months ago (0.1.4)
class DefaultHandlerBuilder
implements HandlerBuilder

An implementation of interface HandlerBuilder that provides default versions of the known value storage handlers.

Constructors

new
DefaultHandlerBuilder(
fileWriter?: FileWriter,
directoryCreator?: DirectoryCreator,
)

Methods

Create a new storage handler for arrays of objects, writing them to a directory -- this handler writes array contents to directories in the file system, delegating to other handlers for the actual storage of the object's properties.

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.

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.

Note: In the case of sparse arrays, only the items with values will be written out.

The handlers 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 recursively store that value, too. 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 new value storage handler for (opaque) binary files, using the builder's file writer.

The handler can store Uint8Array, ArrayBuffer and ArrayBufferView instances. No other types are handled.

Create a new value storage handler for custom text files, using the builder's file writer and a caller-provided serializer function.

Create a new value storage handler for JSON files, using the builder's file writer.

Create a new directory object storage handler -- this handler writes object contents to directories in the file system, delegating to other handlers for the actual storage of the object's properties.

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

The handlers 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 recursively store that value, too. 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 new value storage handler for plain text files, using the builder's file writer.

Add Package

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

Import symbol

import { DefaultHandlerBuilder } from "@scroogieboy/object-to-directory/factories";

---- OR ----

Import directly with a jsr specifier

import { DefaultHandlerBuilder } from "jsr:@scroogieboy/object-to-directory/factories";

Add Package

npx jsr add @scroogieboy/object-to-directory

Import symbol

import { DefaultHandlerBuilder } from "@scroogieboy/object-to-directory/factories";

Add Package

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

Import symbol

import { DefaultHandlerBuilder } from "@scroogieboy/object-to-directory/factories";

Add Package

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

Import symbol

import { DefaultHandlerBuilder } from "@scroogieboy/object-to-directory/factories";

Add Package

bunx jsr add @scroogieboy/object-to-directory

Import symbol

import { DefaultHandlerBuilder } from "@scroogieboy/object-to-directory/factories";