New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

ytech-js-extensions

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ytech-js-extensions

Simple prototype extensions which can improve your working with js

  • 2.0.3
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
21
decreased by-4.55%
Maintainers
1
Weekly downloads
 
Created
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

Package last updated on 03 Nov 2021

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc