A forma mais útil é tratar análise assintótica como contagem mecânica de trabalho, não regra decorada.
| #!/usr/bin/env bash | |
| # ====================================================== | |
| # ErikOS — Principal Frontend Dev Environment (2026) | |
| # ====================================================== | |
| # High-end macOS developer bootstrap | |
| # | |
| # Installs: | |
| # - Homebrew package manager | |
| # - CLI developer tooling | |
| # - Observability utilities |
| .loading-spin { | |
| height: 5rem; | |
| width: 5rem; | |
| border: 0.6rem solid green; | |
| border-radius: 50%; | |
| border-top-color: transparent; | |
| animation: spin 0.6s linear infinite; | |
| } | |
| @keyframes spin { |
| import { | |
| FormControl, | |
| FormGroup, | |
| NonNullableFormBuilder | |
| } from '@angular/forms'; | |
| // 👇 This is a helper to bind any interface with the FormGroup generating a type safe form matching existing keys and FormControl type 🙂 | |
| export type WithControlsFrom<T> = { | |
| [P in keyof T]?: FormControl<T[P]>; | |
| }; |
| import { | |
| HttpEvent, | |
| HttpHandler, | |
| HttpHeaders, | |
| HttpRequest, | |
| } from '@angular/common/http'; | |
| import { | |
| HttpClientTestingModule, | |
| HttpTestingController, | |
| } from '@angular/common/http/testing'; |
| import { | |
| Directive, | |
| ElementRef, | |
| EventEmitter, | |
| Input, | |
| OnDestroy, | |
| OnInit, | |
| Output, | |
| } from '@angular/core'; | |
| import { Observable, Subscription, debounceTime } from 'rxjs'; |
| body { | |
| display: grid; | |
| grid-template-areas: | |
| 'header' | |
| 'main' | |
| 'footer'; | |
| grid-template-columns: auto; | |
| grid-template-rows: auto 1fr auto; | |
| min-height: 100vh; | |
| } |
| $separator: '\\:' !default; | |
| @mixin theme-colors-props-shades($name, $prop, $colors, $shades) { | |
| @each $color in $colors { | |
| @each $shade in $shades { | |
| .#{$name}-#{$color}-#{$shade} { | |
| #{$prop}: var(--#{$color}-#{$shade}); | |
| } | |
| } |
| /* | |
| ##Device = Desktops | |
| ##Screen = 1281px to higher resolution desktops | |
| */ | |
| @media (min-width: 1281px) { | |
| /* CSS */ | |
| /** | |
| * Remove duplicates by property | |
| * @param {string} property - List property identifier. | |
| * @param {T[]} oldList - Old list | |
| * @param {T[]} newList - New list | |
| * @returns {T[]} Returns a new list without duplicates by property passed | |
| */ | |
| export const removeDuplicatesByProperty = <T>( | |
| property: keyof T, | |
| oldList: T[] = [], |