Socket
Socket
Sign inDemoInstall

ytech-js-extensions

Package Overview
Dependencies
0
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    ytech-js-extensions

Simple prototype extensions which can improve your working with js


Version published
Maintainers
1
Install size
44.0 kB
Created

Changelog

Source

2.0.3 (Nov 3, 2021)

  • Fix to require() (instead of require(...).default)

Readme

Source

ytech-js-extensions

Simple js extensions for Array, String, Date, Math and Object

npm version code coverage install size npm downloads License: MIT

Features

  • Lightweight
  • ES5 support
  • Available importing of each function (not only prototype assignments which are used by default)

Installing

Using npm:

npm install ytech-js-extensions

Example

Using with default import

import "ytech-js-extensions"; //ES6 way for import

// Remove item from array
var arr = [{ id: 1 }, { id: 2 }, { id: 3 }];
var removedItem = arr.remove(function (item) {
  return item.id == 2;
});
console.log(arr, removedItem);

// Compare dates without time
var date1 = new Date(2018, 1, 1, 12, 23, 16);
var date2 = new Date(2018, 1, 1, 12, 24, 19);
console.log(Date.compareByDate(date1, date2));

// Compare strings with ignoring case
var str1 = "test";
var str2 = "tEsT";
console.log(str1.equal(str2));

Using with partial import

import arrayRemove from "ytech-js-extensions/lib/array/remove";

// Remove item from array
var arr = [{ id: 11 }, { id: 12 }, { id: 13 }];
var removedItem = arrayRemove.call(arr, function (item) {
  return item.id == 12;
});

console.log(arr, removedItem);

Array

String

Date

Math

Math.Convert
Math.Coord

Object

Object.equal

Compare 2 objects by properties (with using EqualOptions)

import "ytech-js-extensions"; //ES6 way for import
import EqualOptions from "ytech-js-extensions/object/equal/equalOptions.js";

// Compare equals
var v1 = { nested: { id: 1 }, arr: ["s", "d"], dt: new Date() };
var v2 = {
  nested: { id: 1 },
  arr: ["s", "d"],
  dt: new Date(),
  fnc: function () {},
};
console.log(Object.equal(v1, v2)); //expected true

//Compare with options
var options = new EqualOptions();
options.ignoreEmptyArrays = true;
options.ignoreFunctions = false; //here we setted ignoreFunctions to false
options.checkKeysLength = false;
options.showFalseReason = true; //or function(message, v1, v2, key) { bla-bla; return message}
console.log(Object.equal(v1, v2, options), options.falseReason); //expected false and falseReason as string message
EqualOptions
ParamTypeDefaultDescription
checkKeysLengthBooleanfalsetrue => restrict comparing by properties: equal({}, {v:null}) === false.
True will ignore ignoreFunctions and ignoreEmptyArrays if Object.keys.length are different
ignoreEmptyArraysBooleantruetrue => equal({}, {arr:[]}) === true
ignoreFunctionsBooleantruetrue => equal({fnc:function(){return 's'} }, {fnc:function(){return 'b'} }) === true
showFalseReasonBoolean or Function(msg,v1,v2,key)falsetrue if we need to add to options.falseReason message if equal is false
function if we need to use own report-logic
falseReasonString - outputwill be added message if showFalseReason != true and equal is false

Object.removeNulls

Remove null properties (values) from String, Array or Object (with using RemoveOptions)

import "ytech-js-extensions"; //ES6 way for import
import RemoveOptions from "ytech-js-extensions/object/remove/removeOptions.js";

// Remove without default options
var v = {
  id: 1,
  arr: [1, null, 2],
  arr2: [null, " ", undefined],
  arr3: [],
  s: " ",
  s2: " str ",
};
console.log(Object.removeNulls(v)); //expected { id: 1, arr: [1, 2], s2: 'str' }

//Remove with options
var options = new RemoveOptions();
options.removeEmptyArrays = true;
options.removeNullsFromArrays = false;
options.trimStrings = false; //use 's'.trim()
options.removeEmptyStrings = true;
var v = {
  id: 1,
  arr: [1, null, 2],
  arr2: [null, " ", undefined],
  arr3: [],
  s: " ",
  s2: " str ",
};
console.log(Object.removeNulls(v, options)); //expected { id: 1, arr: [1, 2], s2: 'str' }
RemoveOptions
ParamTypeDefaultDescription
removeEmptyArraysBooleantruetrue => remove arrays with length === 0
removeNullsFromArraysBooleantruetrue => [1, null, 2] filter to [1, 2]
trimStringsBooleantruetrue => use the default string.trim()
removeEmptyStringsBooleantruetrue => remove properties, values which has string value == ''

Troubleshooting

  • Some packages (like html2canvas, pdfjs) can stop working if you have prototype extensions of default types (Array, String, Object etc.). In this case we can

    • include in project only specific functions instead of prototype-assign - see Example OR

    • temporarily remove extensions and assign again later

      // removing prototype extensions otherwise it doesn't work with pdfjs
      const arrProto = {};
      for (const i in Array.prototype) {
        arrProto[i] = Array.prototype[i];
        delete Array.prototype[i];
      }
      
      // ... do something here
      
      // rollback prototype extensions
      for (const i in arrProto) {
        Array.prototype[i] = arrProto[i];
      }
      

Keywords

FAQs

Last updated on 03 Nov 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc