@@ -225,28 +225,28 @@ const lazyExpensiveValue = createLazyValue(() => {
225225const processLargeArray = (data) => {
226226 const result = [];
227227 const length = data.length;
228-
228+
229229 for (let i = 0; i < length; i++) {
230230 if (data[i].active) {
231231 result.push(data[i].value);
232232 }
233233 }
234-
234+
235235 return result;
236236};
237237
238238const binarySearch = (arr, target) => {
239239 let left = 0;
240240 let right = arr.length - 1;
241-
241+
242242 while (left <= right) {
243243 const mid = Math.floor((left + right) / 2);
244-
244+
245245 if (arr[mid] === target) return mid;
246246 if (arr[mid] < target) left = mid + 1;
247247 else right = mid - 1;
248248 }
249-
249+
250250 return -1;
251251};
252252```
@@ -256,13 +256,13 @@ const binarySearch = (arr, target) => {
256256```
257257const processBatch = async (items, batchSize, processor) => {
258258 const results = [];
259-
259+
260260 for (let i = 0; i < items.length; i += batchSize) {
261261 const batch = items.slice(i, i + batchSize);
262262 const batchResults = await Promise.all(batch.map(processor));
263263 results.push(...batchResults);
264264 }
265-
265+
266266 return results;
267267};
268268```
@@ -279,14 +279,14 @@ const getPaginatedData = (data, page, pageSize) => {
279279const lazyLoadData = (getData, pageSize) => {
280280 let page = 1;
281281 let hasMore = true;
282-
282+
283283 return async () => {
284284 if (!hasMore) return null;
285-
285+
286286 const data = await getData(page, pageSize);
287287 hasMore = data.length === pageSize;
288288 page++;
289-
289+
290290 return data;
291291 };
292292};
@@ -326,13 +326,13 @@ const runInWorker = (data) => {
326326const processStream = async (stream, processor) => {
327327 const reader = stream.getReader();
328328 const results = [];
329-
329+
330330 while (true) {
331331 const { done, value } = await reader.read();
332332 if (done) break;
333333 results.push(processor(value));
334334 }
335-
335+
336336 return results;
337337};
338338```
@@ -465,7 +465,7 @@ const createUser = (type, data) => {
465465 user: (data) => ({ ...data, role: 'user', permissions: ['read'] }),
466466 guest: (data) => ({ ...data, role: 'guest', permissions: [] })
467467 };
468-
468+
469469 return userTypes[type](data);
470470};
471471```
@@ -475,7 +475,7 @@ const createUser = (type, data) => {
475475```
476476const createSingleton = (createInstance) => {
477477 let instance;
478-
478+
479479 return () => {
480480 if (!instance) {
481481 instance = createInstance();
@@ -495,7 +495,7 @@ const getDatabase = createSingleton(() => ({
495495```
496496const createObservable = () => {
497497 const observers = new Set();
498-
498+
499499 return {
500500 subscribe: (observer) => {
501501 observers.add(observer);
@@ -522,7 +522,7 @@ const createCalculator = () => {
522522 multiply: (a, b) => a * b,
523523 divide: (a, b) => a / b
524524 };
525-
525+
526526 return {
527527 calculate: (operation, a, b) => {
528528 const strategy = strategies[operation];
@@ -540,7 +540,7 @@ const createCalculator = () => {
540540```
541541const createCounter = () => {
542542 let count = 0;
543-
543+
544544 return {
545545 increment: () => ++count,
546546 decrement: () => --count,
@@ -573,13 +573,13 @@ const isValidUrl = (url) => {
573573
574574const validateSchema = (data, schema) => {
575575 const errors = {};
576-
576+
577577 Object.entries(schema).forEach(([key, validator]) => {
578578 if (!validator(data[key])) {
579579 errors[key] = `Invalid value for ${key}`;
580580 }
581581 });
582-
582+
583583 return Object.keys(errors).length === 0 ? null : errors;
584584};
585585```
@@ -625,18 +625,18 @@ const deepClone = (obj) => {
625625 if (obj === null || typeof obj !== 'object') return obj;
626626 if (obj instanceof Date) return new Date(obj);
627627 if (obj instanceof Array) return obj.map(item => deepClone(item));
628-
628+
629629 const clonedObj = {};
630630 Object.keys(obj).forEach(key => {
631631 clonedObj[key] = deepClone(obj[key]);
632632 });
633-
633+
634634 return clonedObj;
635635};
636636
637637const deepMerge = (target, source) => {
638638 const output = { ...target };
639-
639+
640640 if (isObject(target) && isObject(source)) {
641641 Object.keys(source).forEach(key => {
642642 if (isObject(source[key])) {
@@ -650,7 +650,7 @@ const deepMerge = (target, source) => {
650650 }
651651 });
652652 }
653-
653+
654654 return output;
655655};
656656
@@ -711,11 +711,11 @@ const truncate = (str, maxLength, suffix = '...') => {
711711```
712712const createObjectPool = (factory, size = 10) => {
713713 const pool = [];
714-
714+
715715 for (let i = 0; i < size; i++) {
716716 pool.push(factory());
717717 }
718-
718+
719719 return {
720720 acquire: () => {
721721 if (pool.length > 0) {
@@ -737,7 +737,7 @@ const createObjectPool = (factory, size = 10) => {
737737```
738738const createCache = () => {
739739 const cache = new WeakMap();
740-
740+
741741 return {
742742 set: (key, value) => cache.set(key, value),
743743 get: (key) => cache.get(key),
@@ -753,19 +753,19 @@ const createCache = () => {
753753```
754754const createMock = () => {
755755 const calls = [];
756-
756+
757757 const mockFn = (...args) => {
758758 calls.push(args);
759759 return mockFn.returnValue;
760760 };
761-
761+
762762 mockFn.calls = calls;
763763 mockFn.returnValue = undefined;
764764 mockFn.mockReturnValue = (value) => {
765765 mockFn.returnValue = value;
766766 return mockFn;
767767 };
768-
768+
769769 return mockFn;
770770};
771771```
@@ -786,4 +786,4 @@ const createMock = () => {
78678612 . ** Use memoization** for expensive computations
78778713 . ** Apply debouncing/throttling** for frequent events
78878814 . ** Consider Web Workers** for CPU-intensive tasks
789- 15 . ** Write self-documenting code** with clear names and structure
789+ 15 . ** Write self-documenting code** with clear names and structure
0 commit comments