@agile-ts/utils
Advanced tools
Comparing version 0.0.8 to 0.0.9
# @agile-ts/utils | ||
## 0.0.9 | ||
### Patch Changes | ||
- 488c87c: #### :nail_care: Polish | ||
- `api`, `core`, `cra-template-agile-typescript`, `cra-template-agile`, `event`, `logger`, `multieditor`, `proxytree`, `react`, `utils`, `vue` | ||
- [#194](https://github.com/agile-ts/agile/pull/194) Commonjs issue ([@bennodev19](https://github.com/bennodev19)) | ||
- `core` | ||
- [#195](https://github.com/agile-ts/agile/pull/195) Removed `internal.ts` and resolved cycle dependencies ([@bennodev19](https://github.com/bennodev19)) | ||
#### Committers: 1 | ||
- BennoDev ([@bennodev19](https://github.com/bennodev19)) | ||
## 0.0.8 | ||
@@ -4,0 +19,0 @@ |
@@ -1,128 +0,133 @@ | ||
export function copy(value) { | ||
if (value == null || typeof value !== 'object') | ||
return value; | ||
const valConstructorName = Object.getPrototypeOf(value).constructor.name.toLowerCase(); | ||
if (valConstructorName !== 'object' && valConstructorName !== 'array') | ||
return value; | ||
let temp; | ||
const newObject = Array.isArray(value) ? [] : {}; | ||
for (const property in value) { | ||
temp = value[property]; | ||
newObject[property] = copy(temp); | ||
var __defProp = Object.defineProperty; | ||
var __getOwnPropSymbols = Object.getOwnPropertySymbols; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __propIsEnum = Object.prototype.propertyIsEnumerable; | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; | ||
var __spreadValues = (a, b) => { | ||
for (var prop in b || (b = {})) | ||
if (__hasOwnProp.call(b, prop)) | ||
__defNormalProp(a, prop, b[prop]); | ||
if (__getOwnPropSymbols) | ||
for (var prop of __getOwnPropSymbols(b)) { | ||
if (__propIsEnum.call(b, prop)) | ||
__defNormalProp(a, prop, b[prop]); | ||
} | ||
return newObject; | ||
return a; | ||
}; | ||
typeof require !== "undefined" ? require : (x) => { | ||
throw new Error('Dynamic require of "' + x + '" is not supported'); | ||
}; | ||
function copy(value) { | ||
if (value == null || typeof value !== "object") | ||
return value; | ||
const valConstructorName = Object.getPrototypeOf(value).constructor.name.toLowerCase(); | ||
if (valConstructorName !== "object" && valConstructorName !== "array") | ||
return value; | ||
let temp; | ||
const newObject = Array.isArray(value) ? [] : {}; | ||
for (const property in value) { | ||
temp = value[property]; | ||
newObject[property] = copy(temp); | ||
} | ||
return newObject; | ||
} | ||
export function isValidObject(value, considerArray = false) { | ||
function isHTMLElement(obj) { | ||
try { | ||
return obj instanceof HTMLElement; | ||
} | ||
catch (e) { | ||
return (typeof obj === 'object' && | ||
obj.nodeType === 1 && | ||
typeof obj.style === 'object' && | ||
typeof obj.ownerDocument === 'object'); | ||
} | ||
function isValidObject(value, considerArray = false) { | ||
function isHTMLElement(obj) { | ||
try { | ||
return obj instanceof HTMLElement; | ||
} catch (e) { | ||
return typeof obj === "object" && obj.nodeType === 1 && typeof obj.style === "object" && typeof obj.ownerDocument === "object"; | ||
} | ||
return (value !== null && | ||
typeof value === 'object' && | ||
!isHTMLElement(value) && | ||
(considerArray ? true : !Array.isArray(value))); | ||
} | ||
return value !== null && typeof value === "object" && !isHTMLElement(value) && (considerArray ? true : !Array.isArray(value)); | ||
} | ||
export function includesArray(array1, array2) { | ||
return array2.every((element) => array1.includes(element)); | ||
function includesArray(array1, array2) { | ||
return array2.every((element) => array1.includes(element)); | ||
} | ||
export function normalizeArray(items, config = {}) { | ||
config = defineConfig(config, { | ||
createUndefinedArray: false, | ||
}); | ||
if (items == null && !config.createUndefinedArray) | ||
return []; | ||
return Array.isArray(items) ? items : [items]; | ||
function normalizeArray(items, config = {}) { | ||
config = defineConfig(config, { | ||
createUndefinedArray: false | ||
}); | ||
if (items == null && !config.createUndefinedArray) | ||
return []; | ||
return Array.isArray(items) ? items : [items]; | ||
} | ||
export function isFunction(value) { | ||
return typeof value === 'function'; | ||
function isFunction(value) { | ||
return typeof value === "function"; | ||
} | ||
export function isAsyncFunction(value) { | ||
const valueString = value.toString(); | ||
return (isFunction(value) && | ||
(value.constructor.name === 'AsyncFunction' || | ||
valueString.includes('__awaiter'))); | ||
function isAsyncFunction(value) { | ||
const valueString = value.toString(); | ||
return isFunction(value) && (value.constructor.name === "AsyncFunction" || valueString.includes("__awaiter")); | ||
} | ||
export function isJsonString(value) { | ||
if (typeof value !== 'string') | ||
return false; | ||
try { | ||
JSON.parse(value); | ||
} | ||
catch (e) { | ||
return false; | ||
} | ||
return true; | ||
function isJsonString(value) { | ||
if (typeof value !== "string") | ||
return false; | ||
try { | ||
JSON.parse(value); | ||
} catch (e) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
export function defineConfig(config, defaults, overwriteUndefinedProperties) { | ||
if (overwriteUndefinedProperties === undefined) | ||
overwriteUndefinedProperties = true; | ||
const shallowCopiedConfig = Object.assign({}, config); | ||
for (const defaultKey in defaults) { | ||
if (!Object.prototype.hasOwnProperty.call(shallowCopiedConfig, defaultKey) || | ||
(overwriteUndefinedProperties && | ||
shallowCopiedConfig[defaultKey] === undefined)) | ||
shallowCopiedConfig[defaultKey] = defaults[defaultKey]; | ||
} | ||
return shallowCopiedConfig; | ||
function defineConfig(config, defaults, overwriteUndefinedProperties) { | ||
if (overwriteUndefinedProperties === void 0) | ||
overwriteUndefinedProperties = true; | ||
const shallowCopiedConfig = __spreadValues({}, config); | ||
for (const defaultKey in defaults) { | ||
if (!Object.prototype.hasOwnProperty.call(shallowCopiedConfig, defaultKey) || overwriteUndefinedProperties && shallowCopiedConfig[defaultKey] === void 0) | ||
shallowCopiedConfig[defaultKey] = defaults[defaultKey]; | ||
} | ||
return shallowCopiedConfig; | ||
} | ||
export function flatMerge(source, changes, config = {}) { | ||
config = defineConfig(config, { | ||
addNewProperties: true, | ||
}); | ||
const _source = copy(source); | ||
if (_source == null) | ||
return _source; | ||
const keys = Object.keys(changes); | ||
keys.forEach((property) => { | ||
if ((!config.addNewProperties && _source[property] != null) || | ||
config.addNewProperties) | ||
_source[property] = changes[property]; | ||
}); | ||
function flatMerge(source, changes, config = {}) { | ||
config = defineConfig(config, { | ||
addNewProperties: true | ||
}); | ||
const _source = copy(source); | ||
if (_source == null) | ||
return _source; | ||
const keys = Object.keys(changes); | ||
keys.forEach((property) => { | ||
if (!config.addNewProperties && _source[property] != null || config.addNewProperties) | ||
_source[property] = changes[property]; | ||
}); | ||
return _source; | ||
} | ||
export function equal(value1, value2) { | ||
return (value1 === value2 || | ||
(typeof value1 === 'object' && | ||
typeof value2 === 'object' && | ||
JSON.stringify(value1) === JSON.stringify(value2))); | ||
function equal(value1, value2) { | ||
return value1 === value2 || typeof value1 === "object" && typeof value2 === "object" && JSON.stringify(value1) === JSON.stringify(value2); | ||
} | ||
export function notEqual(value1, value2) { | ||
return !equal(value1, value2); | ||
function notEqual(value1, value2) { | ||
return !equal(value1, value2); | ||
} | ||
export function generateId(length = 5, characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') { | ||
const charactersLength = characters.length; | ||
let result = ''; | ||
for (let i = 0; i < length; i++) { | ||
result += characters.charAt(Math.floor(Math.random() * charactersLength)); | ||
} | ||
return result; | ||
function generateId(length = 5, characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") { | ||
const charactersLength = characters.length; | ||
let result = ""; | ||
for (let i = 0; i < length; i++) { | ||
result += characters.charAt(Math.floor(Math.random() * charactersLength)); | ||
} | ||
return result; | ||
} | ||
export function createArrayFromObject(object) { | ||
const array = []; | ||
for (const key in object) { | ||
array.push({ | ||
key: key, | ||
instance: object[key], | ||
}); | ||
} | ||
return array; | ||
function createArrayFromObject(object) { | ||
const array = []; | ||
for (const key in object) { | ||
array.push({ | ||
key, | ||
instance: object[key] | ||
}); | ||
} | ||
return array; | ||
} | ||
export function clone(instance) { | ||
const objectCopy = Object.create(Object.getPrototypeOf(instance)); | ||
const objectClone = Object.assign(objectCopy, instance); | ||
for (const key in objectClone) | ||
objectClone[key] = copy(objectClone[key]); | ||
return objectClone; | ||
function clone(instance) { | ||
const objectCopy = Object.create(Object.getPrototypeOf(instance)); | ||
const objectClone = Object.assign(objectCopy, instance); | ||
for (const key in objectClone) | ||
objectClone[key] = copy(objectClone[key]); | ||
return objectClone; | ||
} | ||
export function removeProperties(object, properties) { | ||
const copiedObject = copy(object); | ||
properties.map((property) => delete copiedObject[property]); | ||
return copiedObject; | ||
function removeProperties(object, properties) { | ||
const copiedObject = copy(object); | ||
properties.map((property) => delete copiedObject[property]); | ||
return copiedObject; | ||
} | ||
export { clone, copy, createArrayFromObject, defineConfig, equal, flatMerge, generateId, includesArray, isAsyncFunction, isFunction, isJsonString, isValidObject, normalizeArray, notEqual, removeProperties }; |
@@ -1,7 +0,17 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.removeProperties = exports.clone = exports.createArrayFromObject = exports.generateId = exports.notEqual = exports.equal = exports.flatMerge = exports.defineConfig = exports.isJsonString = exports.isAsyncFunction = exports.isFunction = exports.normalizeArray = exports.includesArray = exports.isValidObject = exports.copy = void 0; | ||
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
/** | ||
* Creates a fresh (deep) copy of the specified value. | ||
* https://www.samanthaming.com/tidbits/70-3-ways-to-clone-objects/ | ||
* | ||
* @public | ||
* @param value - Value to be copied. | ||
*/ | ||
function copy(value) { | ||
// Extra checking 'value == null' because 'typeof null === object' | ||
if (value == null || typeof value !== 'object') | ||
return value; | ||
// Ignore everything that is no object or array but has the type of an object (e.g. classes) | ||
const valConstructorName = Object.getPrototypeOf(value).constructor.name.toLowerCase(); | ||
@@ -18,3 +28,10 @@ if (valConstructorName !== 'object' && valConstructorName !== 'array') | ||
} | ||
exports.copy = copy; | ||
/** | ||
* Checks whether the specified value is a valid object. | ||
* https://stackoverflow.com/questions/12996871/why-does-typeof-array-with-objects-return-object-and-not-array | ||
* | ||
* @public | ||
* @param value - Value | ||
* @param considerArray - Whether to considered an array as an object. | ||
*/ | ||
function isValidObject(value, considerArray = false) { | ||
@@ -37,10 +54,22 @@ function isHTMLElement(obj) { | ||
} | ||
exports.isValidObject = isValidObject; | ||
/** | ||
* Checks whether 'array1' contains all elements of 'array2'. | ||
* | ||
* @public | ||
* @param array1 - Array 1 | ||
* @param array2 - Array 2 | ||
*/ | ||
function includesArray(array1, array2) { | ||
return array2.every((element) => array1.includes(element)); | ||
} | ||
exports.includesArray = includesArray; | ||
/** | ||
* Transforms Item/s into an array of Items. | ||
* | ||
* @public | ||
* @param items - Item/s to be transformed into an array of Items. | ||
* @param config - Config | ||
*/ | ||
function normalizeArray(items, config = {}) { | ||
config = defineConfig(config, { | ||
createUndefinedArray: false, | ||
createUndefinedArray: false, // If it should return [] or [undefined] if the passed Item is undefined | ||
}); | ||
@@ -51,7 +80,17 @@ if (items == null && !config.createUndefinedArray) | ||
} | ||
exports.normalizeArray = normalizeArray; | ||
/** | ||
* Checks whether the specified function is a function. | ||
* | ||
* @public | ||
* @param value - Value to be checked | ||
*/ | ||
function isFunction(value) { | ||
return typeof value === 'function'; | ||
} | ||
exports.isFunction = isFunction; | ||
/** | ||
* Checks whether the specified function is an async function. | ||
* | ||
* @public | ||
* @param value - Value to be checked. | ||
*/ | ||
function isAsyncFunction(value) { | ||
@@ -63,3 +102,8 @@ const valueString = value.toString(); | ||
} | ||
exports.isAsyncFunction = isAsyncFunction; | ||
/** | ||
* Checks whether the specified value is a valid JSON string | ||
* | ||
* @public | ||
* @param value - Value to be checked. | ||
*/ | ||
function isJsonString(value) { | ||
@@ -76,7 +120,14 @@ if (typeof value !== 'string') | ||
} | ||
exports.isJsonString = isJsonString; | ||
/** | ||
* Merges the default values object ('defaults') into the configuration object ('config'). | ||
* | ||
* @public | ||
* @param config - Configuration object to merge the default values in. | ||
* @param defaults - Default values object to be merged into the configuration object. | ||
* @param overwriteUndefinedProperties - Whether to overwrite 'undefined' set properties with default values. | ||
*/ | ||
function defineConfig(config, defaults, overwriteUndefinedProperties) { | ||
if (overwriteUndefinedProperties === undefined) | ||
overwriteUndefinedProperties = true; | ||
const shallowCopiedConfig = Object.assign({}, config); | ||
const shallowCopiedConfig = { ...config }; | ||
for (const defaultKey in defaults) { | ||
@@ -90,3 +141,10 @@ if (!Object.prototype.hasOwnProperty.call(shallowCopiedConfig, defaultKey) || | ||
} | ||
exports.defineConfig = defineConfig; | ||
/** | ||
* Merges the 'changes' object into the 'source' object at top level. | ||
* | ||
* @public | ||
* @param source - Source object | ||
* @param changes - Changes object to be merged into the source object | ||
* @param config - Configuration object | ||
*/ | ||
function flatMerge(source, changes, config = {}) { | ||
@@ -96,5 +154,7 @@ config = defineConfig(config, { | ||
}); | ||
// Copy Source to avoid References | ||
const _source = copy(source); | ||
if (_source == null) | ||
return _source; | ||
// Merge Changes Object into Source Object | ||
const keys = Object.keys(changes); | ||
@@ -108,5 +168,13 @@ keys.forEach((property) => { | ||
} | ||
exports.flatMerge = flatMerge; | ||
/** | ||
* Checks whether the two specified values are equivalent. | ||
* | ||
* @public | ||
* @param value1 - First value. | ||
* @param value2 - Second value. | ||
*/ | ||
function equal(value1, value2) { | ||
return (value1 === value2 || | ||
// Checking if 'value1' and 'value2' is typeof object before | ||
// using the JSON.stringify comparison to optimize the performance | ||
(typeof value1 === 'object' && | ||
@@ -116,7 +184,19 @@ typeof value2 === 'object' && | ||
} | ||
exports.equal = equal; | ||
/** | ||
* Checks whether the two specified values are NOT equivalent. | ||
* | ||
* @public | ||
* @param value1 - First value. | ||
* @param value2 - Second value. | ||
*/ | ||
function notEqual(value1, value2) { | ||
return !equal(value1, value2); | ||
} | ||
exports.notEqual = notEqual; | ||
/** | ||
* Generates a randomized id based on alphabetic and numeric characters. | ||
* | ||
* @public | ||
* @param length - Length of the to generate id (default = 5). | ||
* @param characters - Characters to generate the id from (default = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'). | ||
*/ | ||
function generateId(length = 5, characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') { | ||
@@ -130,3 +210,11 @@ const charactersLength = characters.length; | ||
} | ||
exports.generateId = generateId; | ||
/** | ||
* Transforms the specified object into an array. | ||
* | ||
* Example: | ||
* {"1": 'jeff', 2: 'frank'} -> [{key: "1", instance: 'jeff'}, {key: 2, instance: 'frank'}] | ||
* | ||
* @public | ||
* @param object - Object to be transformed to an array. | ||
*/ | ||
function createArrayFromObject(object) { | ||
@@ -142,6 +230,13 @@ const array = []; | ||
} | ||
exports.createArrayFromObject = createArrayFromObject; | ||
/** | ||
* Clones the specified class. | ||
* | ||
* @public | ||
* @param instance - Class to be cloned. | ||
*/ | ||
function clone(instance) { | ||
// Clone Class | ||
const objectCopy = Object.create(Object.getPrototypeOf(instance)); | ||
const objectClone = Object.assign(objectCopy, instance); | ||
// Copy Properties of Class to remove flat references | ||
for (const key in objectClone) | ||
@@ -151,3 +246,9 @@ objectClone[key] = copy(objectClone[key]); | ||
} | ||
exports.clone = clone; | ||
/** | ||
* Removes specified properties from the defined object. | ||
* | ||
* @public | ||
* @param object - Object to remove the specified properties from. | ||
* @param properties - Property keys to be removed from the specified object. | ||
*/ | ||
function removeProperties(object, properties) { | ||
@@ -158,2 +259,17 @@ const copiedObject = copy(object); | ||
} | ||
exports.clone = clone; | ||
exports.copy = copy; | ||
exports.createArrayFromObject = createArrayFromObject; | ||
exports.defineConfig = defineConfig; | ||
exports.equal = equal; | ||
exports.flatMerge = flatMerge; | ||
exports.generateId = generateId; | ||
exports.includesArray = includesArray; | ||
exports.isAsyncFunction = isAsyncFunction; | ||
exports.isFunction = isFunction; | ||
exports.isJsonString = isJsonString; | ||
exports.isValidObject = isValidObject; | ||
exports.normalizeArray = normalizeArray; | ||
exports.notEqual = notEqual; | ||
exports.removeProperties = removeProperties; |
{ | ||
"name": "@agile-ts/utils", | ||
"version": "0.0.8", | ||
"version": "0.0.9", | ||
"author": "BennoDev", | ||
@@ -16,11 +16,18 @@ "license": "MIT", | ||
"types": "dist/index.d.ts", | ||
"exports": { | ||
"./package.json": "./package.json", | ||
".": { | ||
"types": "./dist/index.d.ts", | ||
"module": "./dist/esm/index.js", | ||
"import": "./dist/esm/index.js", | ||
"default": "./dist/index.js" | ||
} | ||
}, | ||
"scripts": { | ||
"build": "yarn run build:esm && yarn run build:cjs", | ||
"build": "shx rm -rf dist && rollup --c rollup.config.js", | ||
"prepare": "yarn run build", | ||
"build:esm": "tsc -p ./tsconfig.esm.json", | ||
"build:cjs": "tsc -p ./tsconfig.json && tsc -p ./tsconfig.production.json", | ||
"dev:publish": "yalc publish", | ||
"dev:push": "yalc push", | ||
"watch:push": "tsc-watch --onSuccess \"yarn run dev:push\"", | ||
"watch": "tsc -w", | ||
"watch": "shx rm -rf dist && tsc -w", | ||
"release": "yarn run prepare", | ||
@@ -27,0 +34,0 @@ "release:manual": "yarn run prepare && yarn run release && npm publish", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
31441
8
663
1