# util

***

**1. Error Handling with try/catch**

```javascript
try {
  // Code that may throw an error
} catch (error) {
  // Error handling code
}
```

**2. Iterating Over Objects with for...in**

```javascript
const obj = { a: 1, b: 2, c: 3 };

for (const key in obj) {
  console.log(`${key}: ${obj[key]}`);
}
```

**3. Array Reduction with reduce()**

```javascript
const numbers = [1, 2, 3, 4, 5];

const sum = numbers.reduce((total, value) => total + value, 0);
```

**4. Converting a String to a Number with parseInt()**

```javascript
const numStr = "123";

const num = parseInt(numStr);
```

**5. Converting a String to a Floating-Point Number with parseFloat()**

```javascript
const numStr = "123.45";

const num = parseFloat(numStr);
```

**6. Array Filtering with filter()**

```javascript
const numbers = [1, 2, 3, 4, 5];

const evens = numbers.filter(num => num % 2 === 0);
```

**7. Array Mapping with map()**

```javascript
const numbers = [1, 2, 3, 4, 5];

const doubles = numbers.map(num => num * 2);
```

**8. Creating a Promise**

```javascript
const promise = new Promise((resolve, reject) => {
  // Promise logic
});
```

**9. Using Promise.all()**

```javascript
const promise1 = Promise.resolve(1);
const promise2 = Promise.resolve(2);

Promise.all([promise1, promise2]).then(values => {
  // Use the values
});
```

**10. Using Promise.race()**

```javascript
const promise1 = new Promise(resolve => {
  setTimeout(() => resolve(1), 1000);
});
const promise2 = new Promise(resolve => {
  setTimeout(() => resolve(2), 500);
});

Promise.race([promise1, promise2]).then(value => {
  // Use the value
});
```

**11. Creating a Buffer**

```javascript
const buffer = Buffer.from("Hello world");
```

**12. Writing Data to a Buffer**

```javascript
const buffer = Buffer.alloc(10);

buffer.write("Hello world");
```

**13. Reading Data from a Buffer**

```javascript
const buffer = Buffer.from("Hello world");

const data = buffer.toString();
```

**14. Converting a Buffer to Base64**

```javascript
const buffer = Buffer.from("Hello world");

const base64 = buffer.toString("base64");
```

**15. Creating a Cryptographically Secure Random String**

```javascript
const crypto = require("crypto");

const randomStr = crypto.randomBytes(16).toString("hex");
```

**16. Hashing Data with SHA256**

```javascript
const crypto = require("crypto");

const hash = crypto.createHash("sha256").update("Hello world").digest("hex");
```

**17. Reading a File with fs.readFile()**

```javascript
const fs = require("fs");

fs.readFile("file.txt", "utf8", (err, data) => {
  // Use the data
});
```

**18. Creating a Readable Stream**

```javascript
const fs = require("fs");

const stream = fs.createReadStream("file.txt");
```

**19. Creating a Writable Stream**

```javascript
const fs = require("fs");

const stream = fs.createWriteStream("file.txt");
```

**20. Piping a Stream**

```javascript
const fs = require("fs");

const readStream = fs.createReadStream("file.txt");
const writeStream = fs.createWriteStream("file-copy.txt");

readStream.pipe(writeStream);
```

**21. Reading from a Pipe with pipe()**

```javascript
const process = require("process");

process.stdout.pipe(process.stdin);
```

**22. Sending Data to a Pipe with unpipe()**

```javascript
const process = require("process");

process.stdin.unpipe(process.stdout);
```

**23. Creating a Timeout Function**

```javascript
setTimeout(() => {
  // Code to execute after timeout
}, 1000);
```

**24. Creating an Interval Function**

```javascript
setInterval(() => {
  // Code to execute every interval
}, 1000);
```

**25. Creating a Promise Queue with async.queue() from "async"**

```javascript
const async = require("async");

const queue = async.queue((task, callback) => {
  // Task to perform
  callback();
}, 1);
```

**26. Throttling Functions with async.throttle() from "async"**

```javascript
const async = require("async");

const throttledFn = async.throttle(fn, 1000);
```

**27. Memoizing Functions with memoize() from "lodash"**

```javascript
const _ = require("lodash");

const memoizedFn = _.memoize(fn);
```

**28. Currying Functions with curry() from "lodash"**

```javascript
const _ = require("lodash");

const curriedFn = _.curry(fn);
```

**29. Debouncing Functions with debounce() from "lodash"**

```javascript
const _ = require("lodash");

const debouncedFn = _.debounce(fn, 1000);
```

**30. Cloning an Object with cloneDeep() from "lodash"**

```javascript
const _ = require("lodash");

const clone = _.cloneDeep(obj);
```

**31. Merging Objects with merge() from "lodash"**

```javascript
const _ = require("lodash");

const mergedObj = _.merge(obj1, obj2);
```

**32. Generating a Unique ID with shortid() from "shortid"**

```javascript
const shortid = require("shortid");

const id = shortid.generate();
```

**33. Validating an Email Address with validate() from "validator"**

```javascript
const validator = require("validator");

const isValid = validator.isEmail("example@example.com");
```

**34. Normalizing a String with normalize() from "normalize-string"**

```javascript
const normalize = require("normalize-string");

const normalizedStr = normalize("Hello world");
```

**35. Sanitizing HTML with sanitizeHtml() from "sanitize-html"**

```javascript
const sanitize = require("sanitize-html");

const sanitizedHtml = sanitize.sanitizeHtml("<script>alert('XSS')</script>");
```

**36. Formatting Dates with formatDistanceToNowStrict() from "date-fns"**

```javascript
const dateFns = require("date-fns");

const formattedDate = dateFns.formatDistanceToNowStrict(new Date(), { addSuffix: true });
```
