I hereby claim:
- I am xxzefgh on github.
- I am xxzefgh (https://keybase.io/xxzefgh) on keybase.
- I have a public key ASCP4gS21C15pcLXjdoq6908QlL0X_OOProk4k2DY6o-_wo
To claim this, I am signing this object:
| import {Multipart, MultipartFile, MultipartValue} from '@fastify/multipart'; | |
| import {FastifyRequest} from 'fastify'; | |
| function isMultipartFile(m: Multipart): m is MultipartFile { | |
| return !!m['toBuffer']; | |
| } | |
| async function getValueOrBuffer(m: Multipart): Promise<string | Buffer> { | |
| if (isMultipartFile(m)) { | |
| return m.toBuffer(); |
| function repeat(x: number, n: number): number[] { | |
| return Array(n).fill(x); | |
| } | |
| /** | |
| * Reimplemented Python's itertools.combinations_with_replacement | |
| * https://docs.python.org/3/library/itertools.html#itertools.combinations_with_replacement | |
| */ | |
| export function* combinationsWithReplacement<T>(pool: T[], r: number) { | |
| const n = pool.length; |
| /** | |
| * Reimplemented python's `random.choices` function | |
| * https://github.com/python/cpython/blob/3.9/Lib/random.py#L473 | |
| */ | |
| export function randomChoice<T>(population: T[], weights: number[], random: () => number): T { | |
| let n = population.length; | |
| let cum_weights = []; | |
| for (let i = 0; i < weights.length; i++) { | |
| cum_weights[i] = i === 0 ? weights[i] : weights[i] + cum_weights[i - 1]; | |
| } |
| export function exponentialRandomBackoff( | |
| initialIntervalMillis: number, | |
| multiplier: number, | |
| randomizationFactor: number | |
| ) { | |
| checkInterval(initialIntervalMillis); | |
| checkMultiplier(multiplier); | |
| checkRandomizationFactor(randomizationFactor); | |
| return (attemptsMade: number) => { | |
| const interval = Math.round(Math.pow(multiplier, attemptsMade) * initialIntervalMillis); |
| interface ReduceResult<T> { | |
| done: true; | |
| value: T; | |
| } | |
| export function reduceLargeArray<T, R>( | |
| arr: T[], | |
| processEachFn: (acc: R, x: T) => ReduceResult<R> | R, | |
| initialValue: R, | |
| onCompleteFn: (r: R) => void |
| enum QuerySelectors { | |
| Eq = "$eq", | |
| Gt = "$gt", | |
| Gte = "$gte", | |
| Lt = "$lt", | |
| Lte = "$lte", | |
| Ne = "$ne" | |
| } | |
| enum LogicalOperators { |
| type MapFn<T> = (x: T) => unknown; | |
| type MapSchema<T> = { [K in keyof T]?: MapFn<T[K]> | MapSchema<T[K]> }; | |
| type MapReturnType<T, TMap extends MapSchema<T>> = { | |
| [K in keyof T]: TMap[K] extends Function | |
| ? ReturnType<Extract<TMap[K], MapFn<T[K]>>> | |
| : MapReturnType<T[K], TMap[K]>; | |
| }; | |
| function isMapFn<T = any>(x: unknown): x is MapFn<T> { | |
| return typeof x === "function"; |
| import {Directive, Input, HostListener} from '@angular/core'; | |
| @Directive({ | |
| selector: 'img[fallback]' | |
| }) | |
| export class ImageFallbackDirective { | |
| private _fallback = 'assets/images/404_image.png'; | |
| @Input() set fallback(value: string) { | |
| if (value && value.length > 0) { |
| function formatMoney(value: any, thousandSeparator: string | false = false, fractionDigits = 2): string { | |
| let number = Number(value); | |
| if (isNaN(number)) { | |
| number = 0; | |
| } | |
| // Number#toFixed will throw runtime exception if fractionDigits isn't within 0-100 range | |
| if (fractionDigits < 0 || fractionDigits > 100) { | |
| fractionDigits = 0; | |
| } |
I hereby claim:
To claim this, I am signing this object: