@3imed-jaberi/deepfreeze

    1.0.1 • Public • Published

    @3imed-jaberi/deepfreeze

    Build Status Coverage Status NPM version License Code Size

    The modern and amiable deep freeze, works with Map and Set 🥶

    Features

    • 💅🏻 Inspired by many solutions in a modern way.
    • 🌪 Recursively Object.freeze() for objects, functions and arrays.
    • 🥞 Support for Map and Set.
    • 💉 Add .isDeepFrozen() method for each frozen object.
    • 🎯 Support Pure Deep Freeze through deep clone.
    • 🧊 Handle primitives types natively.

    Installation

    # npm
    $ npm install @3imed-jaberi/deepfreeze
    # yarn
    $ yarn add @3imed-jaberi/deepfreeze

    Usage

    This is a practical example of how to use.

    "use strict";
    
    const deepfreeze = require("@3imed-jaberi/deepfreeze");
    
    const object = {
      someBoolean: true,
      someNumber: 10,
      someString: "hello!",
      someObject: { foo: "bar", someNestedObject: { nested: "inObject" } },
      someArray: [false, 20, "bye!", { nested: "inArray" }],
      someMap: new Map(["item1", "item2"]),
      someSet: new Set(["item1", "item2"]),
    };
    
    const frozenObject = deepfreeze(object);
    
    Object.isFrozen(frozenObject); // true
    Object.isFrozen(frozenObject.someBoolean); // true
    Object.isFrozen(frozenObject.someNumber); // true
    Object.isFrozen(frozenObject.someString); // true
    Object.isFrozen(frozenObject.someObject); // true
    Object.isFrozen(frozenObject.someObject.foo); // true
    Object.isFrozen(frozenObject.someObject.someNestedObject); // true
    Object.isFrozen(frozenObject.someObject.someNestedObject.nested); // true
    Object.isFrozen(frozenObject.someArray); // true
    frozenObject.someArray.forEach((value) => {
      Object.isFrozen(value); // true
    });
    frozenObject.someMap.clear(); // Error: Map is read-only.
    frozenObject.someSet.clear(); // Error: Set is read-only.

    API

    You can pass some arguments to the freeze method;

    • object — (Object) object to deep freeze.
    • options.isProd — (Boolean) ignore freezing in production (for better performance) (default to false).
    • options.pureFreeze — (Boolean) use lodash.cloneDeep to create a copy and use it dealing the freezing process (default to false).

    If the passed object handled by our method, a method called isDeepFrozen will be inserted as property to the object.

    License


    MIT © Imed Jaberi

    Install

    npm i @3imed-jaberi/deepfreeze

    DownloadsWeekly Downloads

    1

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    8.92 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar