Program Utility
A few algorithms and data structures for accessing property values of objects by using a property key name list. Also available, you may create a deep copy of objects and/or track the copies by using the ObjectDuplicator data structure.
Website Resources
Source Code | Demos | Video Introduction | Video Tutorial | Live Programming Development Journal
Project Development Status Updates
This Documentation Page was last Updated on Mon Jan 24 2022 15:19:13 GMT-0600 (Central Standard Time)
Installation
Node Package Manager (NPM) Installation
npm install --save @practicaloptimism/program-utility
Script import from JavaScript (requires NPM installation)
import * as programUtility from '@practicaloptimism/program-utility'
HTML Script Import
<script src="https://unpkg.com/@practicaloptimism/program-utility"></script>
Getting Started: Accessing Object Property Value
// Initialize the javascript library instance and the usecase property value
const programUtilityInstance = programUtility.algorithms.createJavascriptLibraryInstance.function()
const objectUtility = programUtilityInstance.usecase.objectUtility.algorithms.object
// Create your javascript object
const object = { name: 'Hitomi', hobbyTable: { dancing: true, watchingScaryMovies: false } }
// Create your property value key list
const propertyKeyList = ['hobbyTable', 'dancing']
// Get your object property value using a key list
const propertyValue = objectUtility.getObjectValue.function(object, propertyKeyList)
// The value printed should return 'true'
console.log(propertyValue)
Getting Started: Creating Object Duplicators
// Initialize the javascript library instance and the usecase property value
const programUtilityInstance = programUtility.algorithms.createJavascriptLibraryInstance.function()
const objectDuplicatorUtility = programUtilityInstance.usecase.objectUtility.algorithms.objectDuplicator
// Create your javascript object
const object = { name: 'Miranda', hobbyTable: { watchingScaryMovies: true, watchingDanceRecitals: false } }
// Create your ObjectDuplicator data structure
const objectDuplicator = objectDuplicatorUtility.createObjectDuplicator.function(object)
// Add a duplicate of your object
objectDuplicatorUtility.addObjectToObjectDuplicator.function(objectDuplicator, 'item1')
// Get the duplicate of your object by using a sting value (objectDuplicateId)
const objectDuplicate = objectDuplicatorUtility.getObjectFromObjectDuplicator.function('item1')
// Change the 'name' property value of the object duplicate
// to showcase that the object and object duplicate
// will have different names since they are deep copies
// of one another.
objectDuplicate.name = 'Susan'
// The value printed should return 'false'
console.log(object.name === objectDuplicate.name)
Application Programmable Interface (API Reference)
📁 API Documentation Reference (Click to Open)
📁 @Project
@Project
📁 Constants
Constants
📁 Project
Project
📁 DataStructures
DataStructures
📁 Extract
Extract
precompiled/@project/data-structures/extract PROJECT_DOCUMENTATION_FILE_PATH_DIRECTORY_NAME
📁 PROJECT_DATA_STRUCTURE_NAME_LIST
PROJECT_DATA_STRUCTURE_NAME_LIST
ProjectExtract 0
ProjectUsecaseExtract 1
undefined PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 Consumer
Consumer
📁 DocumentationInterface
DocumentationInterface
📁 Usecase
Usecase
📁 ObjectUtility
ObjectUtility
📁 Algorithms
Algorithms
📁 Object
Object
📁 CreateObjectDeepCopy
CreateObjectDeepCopy
createObjectDeepCopy PROJECT_DOCUMENTATION_TEXT_HEADER
This function copies an existing object and makes a copy where the child objects don't reference one another in memory. PROJECT_DOCUMENTATION_TEXT_DESCRIPTION
precompiled/usecase/object-utility/algorithms/object/create-object-deep-copy PROJECT_DOCUMENTATION_FILE_PATH_DIRECTORY_NAME
getObjectValue PROJECT_ALGORITHM_NAME
📁 PROJECT_ALGORITHM_PARAMETER_LIST
PROJECT_ALGORITHM_PARAMETER_LIST
📁 0
0
object ParameterName
any|Object ParameterType
📁 ParameterExampleList
ParameterExampleList
{ "name": "Patrick Morrison", "address": { "city": "Beijing" } } 0
📁 1
1
propertyKeyNameList ParameterName
string[] ParameterType
📁 ParameterExampleList
ParameterExampleList
['address', 'city'] 0
📁 PROJECT_ALGORITHM_RETURN_PARAMETER_LIST
PROJECT_ALGORITHM_RETURN_PARAMETER_LIST
📁 0
0
objectPropertyValue ParameterName
any ParameterType
📁 ParameterExampleList
ParameterExampleList
"Beijing" 0
📁 PROJECT_ALGORITHM_EXAMPLE_USECASE_LIST
PROJECT_ALGORITHM_EXAMPLE_USECASE_LIST
📁 0
0
Getting Started: Function call example usecase ProjectExampleUsecaseTitle
getObjectValue.function(object, propertyKeyNameList) ProjectExampleUsecaseSourceCodeTextDescription
📁 1
1
Getting Started: Application context example usecase ProjectExampleUsecaseTitle
// Create a javascript library instance for your project const myProjectObjectUtility = objectUtility.consumer.javascript.algorithms.createJavascriptLibraryInstance.function('my-project-id') // Initialize a javascript object const myObject = { name: 'Claire', favoriteActivitiesTable: { dancing: { activityName: 'Dancing', placesVisitedToPerformActivity: ['New York', 'Los Angelos'], firstMemoryPerformingActivity: { placePerformedActivity: 'New York' } } }} // Retrieve the property value of myObject by using a property key name list const placePerformedActivityDuringFirstMemory = myProjectObjectUtility.usecase.objectUtility.algorithms.getObjectValue.function(myObject, ['favoriteActivitiesTable', 'dancing', 'firstMemoryPerformingActivity', 'placePerformedActivity']) // Print the place where the first memory of the dancing activity occurred as it is one of Claire's favorite activities console.log('The following should be "New York": ', placePerformedActivityDuringFirstMemory) ProjectExampleTextDescription
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 CreateObjectDeepCopy
CreateObjectDeepCopy
function createObjectDeepCopyFunction(object, option) { if (typeof object !== 'object') { return; } if (option && option.deepObjectClonePropertyTreeHeight === 0) { return object; } const newObject = {}; let objectPropertyKeyNameList = []; const originalObjectPropertyKeyNameList = Object.keys(object).map(objectPropertyKeyName => [objectPropertyKeyName]); objectPropertyKeyNameList = objectPropertyKeyNameList.concat(originalObjectPropertyKeyNameList); for (let i = 0; i < objectPropertyKeyNameList.length; i++) { const propertyKeyNameList = objectPropertyKeyNameList[i]; const objectPropertyValue = _get_object_value__WEBPACK_IMPORTED_MODULE_0__["getObjectValue"].function(object, propertyKeyNameList); if ((option && option.deepObjectClonePropertyTreeHeight !== undefined) && ((propertyKeyNameList.length > option.deepObjectClonePropertyTreeHeight) || ((typeof objectPropertyValue === 'object') && (propertyKeyNameList.length + 1 > option.deepObjectClonePropertyTreeHeight)))) { _update_object_value__WEBPACK_IMPORTED_MODULE_1__["updateObjectValue"].function(newObject, propertyKeyNameList, objectPropertyValue); continue; } if (typeof objectPropertyValue === 'object') { let childObjectPropertyKeyNameList; if (Array.isArray(objectPropertyValue)) { childObjectPropertyKeyNameList = objectPropertyValue.map((_objectPropertyKeyValue, index) => [...propertyKeyNameList, index]); } else { childObjectPropertyKeyNameList = Object.keys(objectPropertyValue).map(objectPropertyKeyName => [...propertyKeyNameList, objectPropertyKeyName]); } objectPropertyKeyNameList = objectPropertyKeyNameList.concat(childObjectPropertyKeyNameList); } else { _update_object_value__WEBPACK_IMPORTED_MODULE_1__["updateObjectValue"].function(newObject, propertyKeyNameList, objectPropertyValue); } } return newObject; } Function
📁 GetObjectPropertyValueList
GetObjectPropertyValueList
getObjectPropertyValueList PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 GetObjectPropertyValueList
GetObjectPropertyValueList
function getObjectPropertyValueListFunction(object, option) { const propertyKeyNameList = _get_object_property_key_name_list__WEBPACK_IMPORTED_MODULE_0__["getObjectPropertyKeyNameList"].function(object, [], option).map((keyList) => { const objectPropertyValue = _get_object_value__WEBPACK_IMPORTED_MODULE_1__["getObjectValue"].function(object, keyList); if (option && option.returnObjectPropertyKeyListPair) { return { objectPropertyKeyList: keyList, objectPropertyValue }; } else { return objectPropertyValue; } }); return propertyKeyNameList; } Function
class FunctionOption extends _get_object_property_key_name_list__WEBPACK_IMPORTED_MODULE_0__["FunctionOption"] { FunctionOption
constructor(defaultOption) { super(defaultOption); Object.assign(this, defaultOption); }
}
📁 DeleteObjectValue
DeleteObjectValue
deleteObjectValue PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 DeleteObjectValue
DeleteObjectValue
function deleteObjectValueFunction(object, keyNameList, option) { _update_object_value__WEBPACK_IMPORTED_MODULE_0__["updateObjectValue"].function(object, keyNameList, undefined, option); } Function
class FunctionOption { FunctionOption
constructor(defaultOption) { Object.assign(this, defaultOption); }
}
📁 GetObjectPropertyKeyNameList
GetObjectPropertyKeyNameList
getObjectPropertyKeyNameList PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 GetObjectPropertyKeyNameList
GetObjectPropertyKeyNameList
function getObjectPropertyKeyNameListFunction(object, parentKeyNameList, option) { if (option && option.propertyKeyNameListOrderType === 'depthFirstOrder') { return getObjectPropertyKeyNameListByDepthFirstOrderFunction(object, parentKeyNameList, option); } else { return getObjectPropertyKeyNameListByBreadthFirstOrderFunction(object, parentKeyNameList, option); } } Function
class FunctionOption { FunctionOption
constructor(defaultOption) { Object.assign(this, defaultOption); }
}
function getObjectPropertyKeyNameListByDepthFirstOrderFunction(object, parentKeyNameList, option) { if (!object) { return []; } if (typeof object !== 'object') { return []; } if (!parentKeyNameList || parentKeyNameList.length < 0) { parentKeyNameList = []; } let propertyKeyNameList = []; if ((parentKeyNameList.length > 0) && (option ? !option.booleanObjectKeyNotAllowed : true)) { propertyKeyNameList.push(parentKeyNameList); } for (let objectKey in object) { if (!object.hasOwnProperty(objectKey)) { continue; } const objectPropertyKeyNameList = [...parentKeyNameList, objectKey]; if (option && (option.objectPropertyTreeHeight !== undefined) && (objectPropertyKeyNameList.length > option.objectPropertyTreeHeight)) { return []; } if (typeof object[objectKey] !== 'object') { propertyKeyNameList.push(objectPropertyKeyNameList); continue; } propertyKeyNameList.push(...getObjectPropertyKeyNameListByDepthFirstOrderFunction(object[objectKey], objectPropertyKeyNameList, option)); } return propertyKeyNameList; } GetObjectPropertyKeyNameListByDepthFirstOrderFunction
function getObjectPropertyKeyNameListByBreadthFirstOrderFunction(object, parentKeyNameList, option) { if (!object) { return []; } if (typeof object !== 'object') { return []; } if (!parentKeyNameList || parentKeyNameList.length < 0) { parentKeyNameList = []; } let propertyKeyNameList = Object.keys(object).map(objectKey => { const propertyKeyName = Array.isArray(object) ? parseInt(objectKey, 10) : objectKey; return parentKeyNameList.concat(propertyKeyName); }); let removeObjectKeyNameListReferenceTable = {}; if (option && (option.objectPropertyTreeHeight !== undefined) && (propertyKeyNameList[0].length > option.objectPropertyTreeHeight)) { return []; } for (let i = 0; i < propertyKeyNameList.length; i++) { const objectPropertyKeyNameList = propertyKeyNameList[i]; const objectChildObjectValue = get_object_value__WEBPACK_IMPORTED_MODULE_0_["getObjectValue"].function(object, objectPropertyKeyNameList); const objectChildPropertyKeyNameList = getObjectPropertyKeyNameListByBreadthFirstOrderFunction(objectChildObjectValue, objectPropertyKeyNameList, option); if (option && option.booleanObjectKeyNotAllowed && typeof objectChildObjectValue === 'object') { removeObjectKeyNameListReferenceTable[i] = true; } propertyKeyNameList.push(...objectChildPropertyKeyNameList); } const propertyKeyNameListWithoutObjectKey = []; if (option && option.booleanObjectKeyNotAllowed) { for (let i = 0; i < propertyKeyNameList.length; i++) { const removeKeyNameListIndex = removeObjectKeyNameListReferenceTable[i]; if (removeKeyNameListIndex) { continue; } propertyKeyNameListWithoutObjectKey.push(propertyKeyNameList[i]); } propertyKeyNameList = propertyKeyNameListWithoutObjectKey; } return propertyKeyNameList; } GetObjectPropertyKeyNameListByBreadthFirstOrderFunction
📁 GetObjectValue
GetObjectValue
getObjectValue PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 GetObjectValue
GetObjectValue
function getObjectValueFunction(object, propertyKeyNameList) { if (!object) { return undefined; } if (propertyKeyNameList.length === 0) { return object; } if (!object[propertyKeyNameList[0]]) { return undefined; } if (propertyKeyNameList.length === 1) { return object[propertyKeyNameList[0]]; } return getObjectValueFunction(object[propertyKeyNameList[0]], propertyKeyNameList.slice(1)); } Function
📁 IsObjectDeepEqual
IsObjectDeepEqual
isObjectDeepEqual PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 IsObjectDeepEqual
IsObjectDeepEqual
function isObjectDeepEqualFunction(object1, object2) { if (typeof object1 !== 'object') { return false; } if (typeof object1 !== typeof object2) { return false; } if (((object1 instanceof Array) && !(object2 instanceof Array)) || (!(object1 instanceof Array) && (object2 instanceof Array))) { return false; } for (let propertyKeyName in object1) { if (!object1.hasOwnProperty(propertyKeyName)) { continue; } if (!object2.hasOwnProperty(propertyKeyName)) { return false; } if (typeof object1[propertyKeyName] === 'object') { continue; } if (object1[propertyKeyName] !== object2[propertyKeyName]) { return false; } } for (let propertyKeyName in object2) { if (!object2.hasOwnProperty(propertyKeyName)) { continue; } if (!object1.hasOwnProperty(propertyKeyName)) { return false; } if (typeof object2[propertyKeyName] === 'object') { continue; } if (object2[propertyKeyName] !== object2[propertyKeyName]) { return false; } } return true; } Function
📁 UpdateObjectValue
UpdateObjectValue
updateObjectValue PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 UpdateObjectValue
UpdateObjectValue
function updateObjectValueFunction(object, keyNameList, value, option) { if (!object) { if (typeof keyNameList[0] === 'number') { object = (new Array(keyNameList[0] + 1)).fill(undefined); } else { object = {}; } } if (keyNameList.length === 0) { return object; } let objectValue = value; if (keyNameList.length !== 1) { objectValue = updateObjectValueFunction(object[keyNameList[0]], keyNameList.slice(1), value, option); } if (typeof object === 'object') { object[keyNameList[0]] = objectValue; } else if (typeof object === 'string') { const updateIndex = keyNameList[0]; if (option && option.replaceStringObjectAtKeyIndex) { object = [object.slice(0, updateIndex), objectValue, object.slice(updateIndex + objectValue.length)].join(''); } else { object = object.slice(0, updateIndex) + objectValue + object.slice(updateIndex); } } if ((option && option.deletePropertyKey) && (objectValue === undefined)) { delete object[keyNameList[0]]; } return object; } Function
class FunctionOption { FunctionOption
constructor(defaultOption) { Object.assign(this, defaultOption); }
}
📁 UpdateObjectValueByMapFunction
UpdateObjectValueByMapFunction
updateObjectValueByMapFunction PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 UpdateObjectValueByMapFunction
UpdateObjectValueByMapFunction
function updateObjectValueByMapFunctionFunction(object, mapFunction, option) { if (option && option.shouldCreateDeepObjectClone) { object = _create_object_deep_copy__WEBPACK_IMPORTED_MODULE_0__["createObjectDeepCopy"].function(object, option); } const objectMapResultList = _get_object_property_key_name_list__WEBPACK_IMPORTED_MODULE_2__["getObjectPropertyKeyNameList"].function(object, [], option).map((originalObjectPropertyKeyList, listIndex) => { let objectPropertyKeyList = originalObjectPropertyKeyList; let objectPropertyValue; const objectMapResult = mapFunction(objectPropertyKeyList, _get_object_value__WEBPACK_IMPORTED_MODULE_1__["getObjectValue"].function(object, objectPropertyKeyList), listIndex); if (typeof objectMapResult === 'object' && (objectMapResult.objectPropertyKey || objectMapResult.objectPropertyValue)) { if (objectPropertyKeyList !== objectMapResult.propertyKey && objectMapResult.propertyKey !== '') { _delete_object_value__WEBPACK_IMPORTED_MODULE_3__["deleteObjectValue"].function(object, objectPropertyKeyList); } objectPropertyKeyList = objectMapResult.objectPropertyKeyList || objectPropertyKeyList; objectPropertyValue = objectMapResult.objectPropertyValue; } else { objectPropertyValue = objectMapResult; } return { objectPropertyKeyList, objectPropertyValue }; }); for (let objectMapResultListIndex = 0; objectMapResultListIndex < objectMapResultList.length; objectMapResultListIndex++) { _update_object_value__WEBPACK_IMPORTED_MODULE_4__["updateObjectValue"].function(object, objectMapResultList[objectMapResultListIndex].objectPropertyKeyList, objectMapResultList[objectMapResultListIndex].objectPropertyValue); } return object; } Function
📁 ObjectDuplicator
ObjectDuplicator
📁 CreateDuplicate
CreateDuplicate
createDuplicate PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 CreateDuplicate
CreateDuplicate
function createDuplicateFunction(objectDuplicator, duplicateId) { objectDuplicator.objectDuplicateTable[duplicateId] = _object_create_object_deep_copy__WEBPACK_IMPORTED_MODULE_0__["createObjectDeepCopy"].function(objectDuplicator.object); return objectDuplicator.objectDuplicateTable[duplicateId]; } Function
📁 CreateObjectDuplicator
CreateObjectDuplicator
createObjectDuplicator PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 CreateObjectDuplicator
CreateObjectDuplicator
function createObjectDuplicatorFunction(object) { return new _data_structures_object_duplicator__WEBPACK_IMPORTED_MODULE_0__["ObjectDuplicator"](_object_create_object_deep_copy__WEBPACK_IMPORTED_MODULE_1__["createObjectDeepCopy"].function(object)); } Function
📁 GetDuplicate
GetDuplicate
getDuplicate PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 GetDuplicate
GetDuplicate
function getDuplicateFunction(objectDuplicator, duplicateId, option) { let object = objectDuplicator.objectDuplicateTable[duplicateId]; if (object === undefined && option && option.booleanAddObjectIfUndefined) { object = _create_duplicate__WEBPACK_IMPORTED_MODULE_0__["createDuplicate"].function(objectDuplicator, duplicateId); } return object; } Function
📁 RemoveDuplicate
RemoveDuplicate
deleteDuplicate PROJECT_DOCUMENTATION_TEXT_HEADER
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
📁 DeleteDuplicate
DeleteDuplicate
function deleteDuplicateFunction(objectDuplicator, duplicateId) { delete objectDuplicator.objectDuplicateTable[duplicateId]; } Function
📁 DataStructures
DataStructures
📁 ObjectDuplicator
ObjectDuplicator
precompiled/usecase/object-utility/algorithms/object/create-object-deep-copy PROJECT_DOCUMENTATION_FILE_PATH_DIRECTORY_NAME
getObjectValue PROJECT_ALGORITHM_NAME
📁 PROJECT_ALGORITHM_PARAMETER_LIST
PROJECT_ALGORITHM_PARAMETER_LIST
📁 0
0
object ParameterName
any|Object ParameterType
📁 ParameterExampleList
ParameterExampleList
{ "name": "Patrick Morrison", "address": { "city": "Beijing" } } 0
📁 1
1
propertyKeyNameList ParameterName
string[] ParameterType
📁 ParameterExampleList
ParameterExampleList
['address', 'city'] 0
📁 PROJECT_ALGORITHM_RETURN_PARAMETER_LIST
PROJECT_ALGORITHM_RETURN_PARAMETER_LIST
📁 0
0
objectPropertyValue ParameterName
any ParameterType
📁 ParameterExampleList
ParameterExampleList
"Beijing" 0
📁 PROJECT_ALGORITHM_EXAMPLE_USECASE_LIST
PROJECT_ALGORITHM_EXAMPLE_USECASE_LIST
📁 0
0
Getting Started: Function call example usecase ProjectExampleUsecaseTitle
getObjectValue.function(object, propertyKeyNameList) ProjectExampleUsecaseSourceCodeTextDescription
📁 1
1
Getting Started: Application context example usecase ProjectExampleUsecaseTitle
// Create a javascript library instance for your project const myProjectObjectUtility = objectUtility.consumer.javascript.algorithms.createJavascriptLibraryInstance.function('my-project-id') // Initialize a javascript object const myObject = { name: 'Claire', favoriteActivitiesTable: { dancing: { activityName: 'Dancing', placesVisitedToPerformActivity: ['New York', 'Los Angelos'], firstMemoryPerformingActivity: { placePerformedActivity: 'New York' } } }} // Retrieve the property value of myObject by using a property key name list const placePerformedActivityDuringFirstMemory = myProjectObjectUtility.usecase.objectUtility.algorithms.getObjectValue.function(myObject, ['favoriteActivitiesTable', 'dancing', 'firstMemoryPerformingActivity', 'placePerformedActivity']) // Print the place where the first memory of the dancing activity occurred as it is one of Claire's favorite activities console.log('The following should be "New York": ', placePerformedActivityDuringFirstMemory) ProjectExampleTextDescription
📁 PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
PROJECT_DOCUMENTATION_INDEX_FILE_CONTENT
class ObjectDuplicator { constructor(object) { this.objectDuplicateTable = {}; this.object = object; } } ObjectDuplicator
📁 DocumentationUtility
DocumentationUtility
📁 Algorithms
Algorithms
📁 DataStructures
DataStructures
📁 DocumentationInterface
DocumentationInterface
📁 Provider
Provider
Operating Environment: JavaScript Runtime Environments
JavaScript Runtime Environment | Node.js | Node.js Worker Thread | Web Worker | Google Chrome | Mozilla Firefox | Apple Safari | Beaker Browser |
---|---|---|---|---|---|---|---|
Supported Versions of the Runtime | The latest version(s) | The latest version(s) | The latest version(s) | The latest version(s) | The latest version(s) | The latest version(s) | The latest version(s) |
To Resolve Problems and Submit Feature Requests
To report issues or submit feature requests with this projectConstants, please visit Program Utility Issue Tracker
About This Project
Benefits
Features
Limitations
-
🤓 Work-in-progress: This project is a work-in-progress. The project architecture and documentation are being updated regularly. Please learn more about the development life cycle by visiting our live programming development sessions on youtube: https://www.youtube.com/channel/UCIv-rMXljsbxoTUg1MXBi3g
Related Work
There are many projects relating to the application usecases that Program Utility strives to provide. A "project usecase 1", a "project usecase 2", a "project usecase 3" are the primary goal for Program Utility. This is a non-exhaustive list of other projects in the world that are being used and also relate to Program Utility usecase areas-of-interest (well renowned projects are prioritized in our listing order strategy):
Object Utility Providers |
---|
-- |
Acknowledgements
License
MIT