{"id":20676027,"url":"https://github.com/sammwyy/betternode","last_synced_at":"2026-04-18T22:33:52.927Z","repository":{"id":122454572,"uuid":"284809784","full_name":"sammwyy/betternode","owner":"sammwyy","description":"Common and practical utilities for nodejs.","archived":false,"fork":false,"pushed_at":"2020-08-03T23:02:10.000Z","size":50,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-19T13:40:28.409Z","etag":null,"topics":["javascript","library","nodejs","nodejs-modules","prototype","utilities","utility"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/betternode","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sammwyy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-03T21:21:32.000Z","updated_at":"2020-08-07T21:27:07.000Z","dependencies_parsed_at":"2023-05-24T01:30:47.045Z","dependency_job_id":null,"html_url":"https://github.com/sammwyy/betternode","commit_stats":{"total_commits":13,"total_committers":1,"mean_commits":13.0,"dds":0.0,"last_synced_commit":"751d1e06da74aab90a3654fa4d9e958ea6d5882f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sammwyy%2Fbetternode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sammwyy%2Fbetternode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sammwyy%2Fbetternode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sammwyy%2Fbetternode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sammwyy","download_url":"https://codeload.github.com/sammwyy/betternode/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242905148,"owners_count":20204586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","library","nodejs","nodejs-modules","prototype","utilities","utility"],"created_at":"2024-11-16T21:11:29.829Z","updated_at":"2026-04-18T22:33:47.878Z","avatar_url":"https://github.com/sammwyy.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/sammwyy/betternode/master/docs/icon.png\" width=\"100px\"\u003e\n  \u003ch1 align=\"center\"\u003eBetterNode\u003c/h1\u003e\n\u003c/p\u003e\n\n- [Installation](#installation) \n- [Arrays](#arrays) \n- [Numbers](#numbers) \n- [Objects](#object) \n- [Strings](#strings) \n\n## Installation\nImport is as any other library.  \n```javascript\nrequire(\"betternode\");\n```\nYes. That's it all.  \n\n## Arrays\n**1. Chunk**  \nSplit an array of element in to groups with the same size.  \n```javascript\nlet arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nconsole.log(arr.chunk(2)); // Output: [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9, 10 ] ]\nconsole.log(arr.chunk(3)); // Output: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10 ] ]\nconsole.log(arr.chunk(4)); // Output: [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10 ] ]\n```\n\n**2. Compact**  \nRemove all falsey values from an array  \n```javascript\nlet arr = [1, false, 3, null, \"5\", 0, 7, \"text\"]\nconsole.log(arr.compact()); // Output: [ 1, 3, '5', 7 ]\n```\n\n**3. Difference**  \nCreates an array of values not included in the other given array  \n```javascript\nlet arr1 = [1, 2, 4, 5];\nlet arr2 = [1, 3, 5, 6];\n\nconsole.log(arr1.difference(arr2)); // Output: [ 2, 4 ]\n```\n\n**4. Drop**\nSlice an array in the specified position from the beginning  \n```javascript\nlet arr = [1, 2, 3, 4, 5, 6, 7, 8];\nconsole.log(arr.drop(1)); // Output: [ 2, 3, 4, 5, 6, 7, 8 ]\nconsole.log(arr.drop(2)); // Output: [ 3, 4, 5, 6, 7, 8 ]\nconsole.log(arr.drop(3)); // Output: [ 4, 5, 6, 7, 8 ]\n```\n\n**5. Drop Right**  \nSlice an array in the specified position from the end  \n```javascript\nlet arr = [1, 2, 3, 4, 5, 6, 7, 8];\nconsole.log(arr.dropRight(1)); // Output: [ 1, 2, 3, 4, 5, 6, 7 ]\nconsole.log(arr.dropRight(2)); // Output: [ 1, 2, 3, 4, 5, 6 ]\nconsole.log(arr.dropRight(3)); // Output: [ 1, 2, 3, 4, 5 ]\n```\n\n**6. DropIf**  \n Remove an item of the array if the condition is true  \n ```javascript\n let arr = [\"rock\", \"plane\", \"apple\", \"rise\", \"banana\", \"red\"];\n\nconsole.log(arr.dropIf((item) =\u003e {\n    return item.startsWith(\"r\"); // Output: [ 'plane', 'apple', 'banana' ]\n}))\n```\n\n**7. First**  \nGet the first element of the array  \n```javascript\nlet arr = [\"blue\", \"green\", \"red\", \"yellow\"]\nconsole.log(arr.first()); // Output: blue\n```\n\n**8. Last**  \nGet the last element of the array  \n```javascript\nlet arr = [\"blue\", \"green\", \"red\", \"yellow\"]\nconsole.log(arr.last()); // Output: yellow\n```\n\n**9. Remove**  \nRemoves an object from the array  \n```javascript\nlet arr = [\"blue\", \"green\", \"red\", \"yellow\"]\nconsole.log(arr.remove(\"green\")); // Output: [\"blue\", \"red\", \"yellow\"]\n```\n\n**10. Take**\nTake values from the array starting at the specified position from the beginning  \n```javascript\nlet arr = [\"rock\", \"plane\", \"apple\", \"rise\", \"banana\", \"red\"];\nconsole.log(arr.take(2)); // Output: [ 'rock', 'plane' ]\n```\n\n**11. Take Right**  \nTake values from the array starting at the specified position from the end\n```javascript\nlet arr = [\"rock\", \"plane\", \"apple\", \"rise\", \"banana\", \"red\"];\nconsole.log(arr.takeRight(2)); // Output: [ 'banana', 'red' ]\n```\n\n**12. Take If**  \nTake elements of an array from the beginning while the callback condition is true  \n```javascript\n let arr = [\"rock\", \"plane\", \"apple\", \"rise\", \"banana\", \"red\"];\n\nconsole.log(arr.takeIf((item) =\u003e {\n    return item.startsWith(\"r\"); // Output: [ 'rock', 'rise', 'red' ]\n}))\n```\n\n**13. Union**  \nCreate an array of unique values from other or multiple arrays  \n```javascript\nlet arr = [\"airplane\", \"bed\", \"cow\", \"dog\"];\nlet arr2 = [\"pig\", \"apple\", \"dog\", \"apple\"];\n\nconsole.log(arr.union(arr2)); // Output: [ 'airplane', 'bed', 'cow', 'dog', 'pig', 'apple' ]\n```\n\n**14. Unique**  \nCreate an array from the unique values of the original array  \n```javascript\nlet arr = [1, 2, 1, 3, 4, 5, 3, 6, 2];\n\nconsole.log(arr.unique()); // Output: [ 1, 2, 3, 4, 5, 6 ]\n```\n\n## Numbers\n**1. Clamp**  \nFind a value between two values  \n```javascript\nlet number = 12;\n\nconsole.log(number.clamp(1, 7)); // Output: 7\nconsole.log(number.clamp(1, 18)); // Output: 12\nconsole.log(number.clamp(14, 18)); // Output: 14\n```\n\n**2. Cos**  \nReturns the cos of a number  \n```javascript\nlet number = 5;\nconsole.log(number.cos()); // Output: 0.28366218546322625\n```\n\n**3. isEven**  \nReturn true if the number is event  \n```javascript\nlet number = 12;\nconsole.log(number.isEven()); // Output: true\n```\n\n**4. Lerp**  \nInterpolate between two values  \n```javascript\nlet number = 5;\nconsole.log(number.lerp(0, 1.5)); // Output: -2.5\n```\n\n**5. Percentage**  \nGet the percentage of a number  \n```javascript\nlet number = 500;\nconsole.log(number.percentage(25)); // Output: 125\n```\n\n**6. Pow** \nPow a number y a exponent  \n```javascript\nlet number = 3;\nconsole.log(number.pow(2)); // Output: 8\nconsole.log(number.pow(3)); // Output: 27\n```\n\n**7. Sin**  \nReturns the sin of a number  \n```javascript\nlet number = 2;\nconsole.log(number.sin()); // Output: 0.9092974268256817\n```\n\n**8. Sqrt**  \nGet square root of a number  \n```javascript\nlet number = 25;\nconsole.log(number.sqrt()); // Output: 5\n```\n\n**9. Tan**  \nReturns the tan of a number  \n```javascript\nlet number = 6;\nconsole.log(number.tan()); // Output: -0.29100619138474915\n```\n\n## Objects\n**1. Get Field**  \nFinds a field in the object with a string and returns the result  \n```javascript\nlet obj = {\n  \"a\": {\n    \"b\": {\n      \"c\": \"Hello world\"\n    }\n  }\n}\n\nconsole.log(obj.getField(\"a.b.c\")); // Output: Hello world\n```\n\n## Strings\n**1. Capitalize**  \nCapitalize the first character of the string  \n```javascript\nlet str = \"hello my friend\";\nconsole.log(str.capitalize()); // Output: Hello my friend\n```\n\n**2. Capitalize All**  \nSet all characters to lowercase except first character of each word  \n```javascript\nlet str = \"hello my friend\";\nconsole.log(str.capitalizeAll()); // Output: Hello My Friend\n```\n\n**3. Escape HTML**  \nEscapes HTML string  \n```javascript\nlet str = \"\u003ca\u003eHello \u0026 Welcome\u003c/a\u003e\";\nconsole.log(str.escapeHTML()); // Output: \u0026lt;a\u0026gt;Hello \u0026amp; Welcome\u0026lt;/a\u0026gt;\n```\n\n**4. Is Empty**\nReturns true if string is empty or whitespaces  \n```javascript\nlet str = \"\";\nconsole.log(str.isEmpty()); // Output: true\n```\n\n**5. Is Lowercase**  \nCheck if the string is uppercase  \n```javascript\nlet str = \"hello\";\nconsole.log(str.isLowerCase()); // Output: true\n\nlet str2 = \"Hello\";\nconsole.log(str2.isLowerCase()); // Output: false\n```\n\n**6. Is Uppercase**  \nCheck if the string is uppercase  \n```javascript\nlet str = \"HELLO\";\nconsole.log(str.isUpperCase()); // Output: true\n\nlet str2 = \"HELLo\";\nconsole.log(str2.isUpperCase()); // Output: false\n```\n\n**7. Print**  \nLog in the console a string  \n```javascript\nlet str = \"hello world\";\nstr.log(); // Output: hello world\n```\n\n**8. Normalize Spaces**  \nNormalize doublespaces  \n```javascript\nlet str = \"hello    world  to    my friends !\";\nconsole.log(str.normalizeSpaces()); // Output: \"hello world to my friends !\"\n```\n\n**9. Replace All**  \nReplace all in a string  \n```javascript\nlet str = \"the car is red, red is the car\";\nconsole.log(str.replace(\"red, \"blue\"); // Output: the car is blue, red is the car\nconsole.log(str.replaceAll(\"red, \"blue\"); // Output: the car is blue, blue is the car\n```\n\n**10. To Bool**  \nParse to Boolean a string  \n```javascript\nlet str = \"true\";\nconsole.log(str.toBool()); // Output: true;\n\nlet str2 = \"false\";\nconsole.log(str2.toBool()); // Output: false;\n\nlet str3 = \"a text\";\nconsole.log(str3.toBool()); // Output: null;\n```\n\n**11. To Float**  \nParse to Float a string  \n```javascript\nlet str = \"3.141592\";\nconsole.log(str.toFloat()); // Output: 3.141592\n```\n\n**12. To Integer**  \nParse to Integer a string  \n```javascript\nlet str = \"45\";\nconsole.log(str.toInt()); // Output: 45\n```\n\n**13. To JSON**  \nParse to JSON a string  \n```javascript\nlet str = \"{\\\"hello\\\": \\\"world\\\"}\";\nconsole.log(str.toJSON()); // Output: { hello: 'world' }\n```\n\n**14. Truncate**  \nTruncate a text and make it more shortly  \n```javascript\nlet str = \"hello world\";\nconsole.log(str.truncate(7)); // Output: hello w...\n```\n\n**15. Words**  \nGet array of words in a string  \n```javascript\nlet str = \"the apple is red\";\nconsole.log(str.words()); // Output: [\"the\", \"apple\", \"is\", \"red\"]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsammwyy%2Fbetternode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsammwyy%2Fbetternode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsammwyy%2Fbetternode/lists"}