See how a minor change to your commit message style can make a difference. Examples
Have a look at CLI util git-conventional-commits to ensure this conventions and generate changelogs
| "use strict"; | |
| /** | |
| * Hypertext Transfer Protocol (HTTP) response status codes. | |
| * @see {@link https://en.wikipedia.org/wiki/List_of_HTTP_status_codes} | |
| */ | |
| enum HttpStatusCode { | |
| /** | |
| * The server has received the request headers and the client should proceed to send the request body |
See how a minor change to your commit message style can make a difference. Examples
Have a look at CLI util git-conventional-commits to ensure this conventions and generate changelogs
| import { isObject, isUndefined } from '../types'; | |
| export const getNestedValue = <T>( | |
| object: Record<string | number, T>, | |
| key: string | |
| ): T | undefined => { | |
| const getRecursive = ( | |
| obj: T | Record<string | number, T>, | |
| keys: string[] | |
| ): T | undefined => { |
| import { | |
| coerceArray, | |
| coerceBooleanProperty, | |
| coerceCssPixelValue, | |
| coerceElement, | |
| coerceNumberProperty, | |
| coerceStringArray, | |
| } from '@angular/cdk/coercion'; | |
| function propDecoratorFactory<T, D>( |
| export const isUndefined = (obj: any): obj is undefined => | |
| typeof obj === 'undefined'; | |
| export const isObject = (fn: any): fn is object => | |
| !isNil(fn) && typeof fn === 'object'; | |
| export const isPlainObject = (fn: any): fn is object => { | |
| if (!isObject(fn)) { | |
| return false; | |
| } |
| export declare interface Type<T> extends Function { | |
| new (...args: any[]): T; | |
| } | |
| export function isTypeOf<T>(type: Type<T>, instance: any): instance is T { | |
| const typeProperties = Object.getOwnPropertyNames(type.prototype); | |
| const instanceProperties = Object.getOwnPropertyNames( | |
| instance.constructor.prototype | |
| ); |
| export function takeUntilDestroy$<T>(): UnaryFunction<Observable<T>, Observable<T>> { | |
| const viewRef = inject(ChangeDetectorRef) as ViewRef; | |
| const destroyer$ = new ReplaySubject<void>(1); | |
| viewRef.onDestroy(() => destroyer$.next()) | |
| return (observable: Observable<T>) => observable.pipe(takeUntil(destroyer$)); | |
| } |
| export function Debounce(timeout: number) { | |
| let timeoutRef: NodeJS.Timer | null = null; | |
| return function ( | |
| _target: any, | |
| _propertyKey: string | symbol, | |
| descriptor: PropertyDescriptor | |
| ): TypedPropertyDescriptor<any> { | |
| const original = descriptor.value; |
All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is also called reflow or layout thrashing, and is common performance bottleneck.
Generally, all APIs that synchronously provide layout metrics will trigger forced reflow / layout. Read on for additional cases and details.
elem.offsetLeft, elem.offsetTop, elem.offsetWidth, elem.offsetHeight, elem.offsetParent| import { ActivatedRoute, Router } from '@angular/router'; | |
| import { QueryParamsTracker } from './query-params-tracker'; | |
| import { | |
| QueryParamsMapper, | |
| SourceValueMapper, | |
| } from './query-params-tracker.types'; | |
| export interface IQueryParamsTrackerBuilder< | |
| TValue, | |
| TParams = TValue, |