This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static class ISOFormatExtensions | |
{ | |
const string ISOFORMAT = "yyyy-MM-dd\\THH:mm:ss.fffK"; //ISO-8601 used by Javascript (ALWAYS UTC) | |
public static string toISOString(this DateTime d, bool useLocal = false) { | |
if (!useLocal && d.Kind == DateTimeKind.Local) { | |
//If d is LT or you don't want LocalTime -> convert to UTC and always add K format always add 'Z' postfix | |
return d.ToUniversalTime().ToString(ISOFORMAT); | |
} else { //If d is already UTC K format add 'Z' postfix, if d is LT K format add +/-TIMEOFFSET | |
return d.ToString(ISOFORMAT); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { type Observable } from 'rxjs'; | |
import { map } from "rxjs/operators"; | |
//GENERIC toDictionary OPERATOR + indexBy FUNCTION RETURN Map<indexOf, item> TO OTTIMIZE O(1) EXIST/RETRIVE OF ITEM BY idxOf (.has(idx)/.get(idx)) | |
export type Indexer<T extends {}> = keyof T | ((item: T) => unknown); | |
export type IndexOf<T, I extends Indexer<T>> = I extends keyof T ? T[I] : I extends (...args: any) => any ? ReturnType<I> : never; | |
export const indexBy = <T, I extends Indexer<T>>(array: T[], keyOrIndexer: I): Map<IndexOf<T, I>, T> => { | |
if (!array) return new Map<IndexOf<T, I>, T>(); | |
const idexerFn: (item: T) => IndexOf<T, I> = ( | |
typeof keyOrIndexer === "function" ? keyOrIndexer : (item: T) => item[keyOrIndexer as keyof T] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//ORIGINAL CODE BY Nevzat Topçu @nevzatopcu | |
//STACKBLIZ SAMPLE https://stackblitz.com/edit/angular-form-share-elements?file=src%2Fmain.ts | |
//READ MORE HERE: https://nevzatopcu.medium.com/angular-child-components-with-reactive-forms-fbf4563b304c | |
import { Optional, SkipSelf, Provider } from '@angular/core'; | |
import { ControlContainer } from '@angular/forms'; | |
const containerFactory = (container: ControlContainer): ControlContainer => { | |
if (!container) { | |
throw new Error('I need a FormGroup instance'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//INSPIRED BY https://medium.com/ngconf/make-trackby-easy-to-use-a3dd5f1f733b | |
import { Directive, inject, Provider } from "@angular/core"; | |
import { ngForOf, NgIterable } from "@angular/common"; | |
@Directive({ | |
selector: "[ngForTrackById]", | |
standalone: true | |
}) | |
export class NgForTrackByIdDirective<T extends { id: string | number }> { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Threading; | |
using System.Threading.Tasks; | |
/// <summary> | |
/// Helper class to run async methods within a sync process. | |
/// ORIGINAL CODE: https://www.ryadel.com/en/asyncutil-c-helper-class-async-method-sync-result-wait/ | |
/// </summary> | |
public static class AsyncUtil { | |
private static readonly TaskFactory _taskFactory = new TaskFactory(CancellationToken.None, | |
TaskCreationOptions.None, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const LOGTYPES = ['log', 'info', 'warn', 'error'] as const; | |
interface LogType { | |
type: typeof LOGTYPES[number]; | |
} | |
export const log = (...args: Array<string | LogType | {}>) => { | |
let type: LogType['type'] = 'log'; | |
let prefix = [] as any[]; | |
let postfix = [] as any[]; | |
//@ts-ignore | |
const idx = args.findIndex((a) => LOGTYPES.includes(a?.type)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//CONSOLE LOG OVEERIDE DEFINITION BY LELE 2023-08-30 | |
// declare global { | |
type NLogLevel = 'log' | 'info' | 'warn' | 'error' | 'none'; | |
interface NLogOptions { | |
NDebug?: boolean; | |
NLogLevel?: NLogLevel; | |
NShowLevel?: NLogLevel; | |
NAgent?: string; | |
NApp?: string; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//ORIGINAL CODE BY RICK STRAHL https://weblog.west-wind.com/posts/2023/Aug/15/Map-Physical-Paths-with-an-HttpContextMapPath-Extension-Method-in-ASPNET | |
public static class HttpContextExtensions | |
{ | |
static string WebRootPath { get; set; } | |
static string ContentRootPath { get; set; } | |
/// <summary> | |
/// Maps a virtual or relative path to a physical path in a Web site, | |
/// using the WebRootPath as the base path (ie. the `wwwroot` folder) | |
/// </summary> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//ORIGINAL CODE REPO: https://github.com/johannschopplich/pdfjs-serverless | |
//# pnpm | |
//pnpm add pdfjs-serverless | |
//# npm | |
//npm install pdfjs-serverless | |
import { getDocument } from 'https://esm.sh/pdfjs-serverless' | |
const data = Deno.readFileSync('./dummy.pdf') | |
const doc = await getDocument(data).promise |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//READ MORE IN THIS ARTICLE https://morioh.com/a/782c0022755e/using-bcrypt-to-hash-passwords-in-nodejs EXPECIALLY PRE-REQUISITE | |
const bcrypt = require("bcrypt") | |
const saltRounds = 10 | |
const password = "Admin@123" | |
//Password encryption + explicit Salt | |
bcrypt | |
.genSalt(saltRounds) | |
.then(salt => { |
NewerOlder