@marxlnfcs/dotize
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

Dotize

A simple TypeScript library to convert complex objects into simple key value pairs

NPM Version Package License NPM Downloads Package Size

Installation

npm i @marxlnfcs/dotize

Usage

import { Dotize, dotify, parse } from '@marxlnfcs/dotize';

// source object
const obj: any = {
    "key1": 'value1',
    "key2": [
        {
            "foo": "bar"
        },
        "weird_item_inside_an_array_of_objects"
    ],
    "key3": {
        "foo": "bar",
    }
};

// dotify source object
const dotified = Dotize.dotify({ ... });
const dotified = dotify({ ... });

/**
 * Output:
 * {
 *  "key1": "value",
 *  "key2.[0].foo": "bar",
 *  "key2.[1]: "weird_item_inside_an_array_of_objects",
 *  "key3.foo": "bar",
 * }
 */

// parse dotified object
const parsed = Dotize.parse({ ... });
const parsed = parse({ ... });

Options

Dotize.dotify( ... ):

 /**
 * The prefix will be added to every key on depth 0
 * @example "$"
 * @default null
 */
prefix: string;

/**
 * Defines the separator that will be used to create the path
 * @example "_"
 * @default "."
 */
separator: string;

/**
 * The array mode defines how arrays are handled
 * > dotify: The index will be set as plain number. Example: foo.0.bar
 * > dotify-bracket: The index will be wrapped with surrounded (default). Example: "foo.[0].bar"
 * > dotify-curly-bracket: The index will be surrounded with curly brackets. Example: "foo.{0}.bar"
 * > keep: Arrays will be ignored. Example: { "foo": [ { "bar": "Hello World!" } ] }
 */
arrayMode: 'dotify'|'dotify-bracket'|'dotify-curly-bracket';

/**
 * The empty object mode defines how empty objects{} should be handled
 * > keep - Empty objects are kept and {} is set as the value.
 * > remove - Empty objects will be removed.
 */
emptyObjectMode: 'keep'|'remove';

/**
 * The empty array mode defines how empty arrays[] should be handled
 * > keep - Empty arrays are kept and [] is set as the value.
 * > remove - Empty arrays will be removed.
 */
emptyArrayMode: 'keep'|'remove';

/**
 * The method processes an object to the defined maxDepth. All beyond the maxDepth gets added to the dotified object as a whole
 */
maxDepth: number;

Dotize.parse( ... ):

/**
 * The prefix will be removed from every key in the dotified object
 * @example "$"
 * @default null
 */
prefix: string;

/**
 * Defines the separator that has been used to dotify the object
 * @example "_"
 * @default "."
 */
separator: string;

/**
 * The array mode defines how arrays are handled
 * > dotify: The index is set as plain number. Example: foo.0.bar
 * > dotify-bracket: The index is surrounded with brackets (default). Example: "foo.[0].bar"
 * > dotify-curly-bracket: The index is surrounded with curly brackets. Example: "foo.{0}.bar"
 */
arrayMode: 'dotify'|'dotify-bracket'|'dotify-curly-bracket';

/**
 * How to handle situations, were the parent is not an object, array or the child is incompatible with the parent (E.g. parent: array, child: not an array item)
 * > override: Converts the parent to a compatible type
 * > ignore: Skips the child item
 * > throwError: Throws an TypeError
 */
incompatibleTypeStrategy: 'override'|'skip'|'throwError';

Readme

Keywords

none

Package Sidebar

Install

npm i @marxlnfcs/dotize

Weekly Downloads

1

Version

1.2.0

License

MIT

Unpacked Size

52.2 kB

Total Files

19

Last publish

Collaborators

  • marxlnfcs