Skip to content

Instantly share code, notes, and snippets.

View AhsanAyaz's full-sized avatar

Muhammad Ahsan Ayaz AhsanAyaz

View GitHub Profile
@AhsanAyaz
AhsanAyaz / score.validators.js
Last active May 31, 2022 11:44
Score Validator JS file for the tutorial
const joi = require('joi')
const createHttpError = require('http-errors')
const addScoreDTO = joi.object().keys({
gameId: joi.string().required(),
userId: joi.string().required(),
score: joi.number().required(),
});
const deleteScoreDTO = joi.object({
@AhsanAyaz
AhsanAyaz / sigma-memer-tailwind-template.html
Last active May 3, 2022 18:17
Sigma memer HTML template
<div class="h-full leading-normal tracking-normal text-indigo-400">
<div class="p-6 container mx-auto">
<div class="w-full flex items-center justify-between">
<a class="flex items-center text-indigo-400 no-underline hover:no-underline font-bold text-2xl lg:text-4xl" href="#">
Sigma<span class="bg-clip-text text-transparent bg-gradient-to-r from-green-400 via-pink-500 to-purple-500">memer</span>
</a>
</div>
</div>
<div class="px-6 container md:pt-224 mx-auto flex flex-wrap flex-col md:flex-row items-start">
@AhsanAyaz
AhsanAyaz / appflashback-hack.js
Last active January 26, 2022 23:01
Hack for appflashback.com
// run this when the round starts
const emojiElements = document.querySelectorAll(".card-inner");
const matchedElementIndices = [];
const matches = [];
for(let i = 0, len = emojiElements.length; i<len; i++) {
const currentElement = emojiElements[i];
if(matchedElementIndices.includes(i)) {
continue;
}
for(let j = i + 1; j < len; j++) {
@AhsanAyaz
AhsanAyaz / hangman.svg
Created December 20, 2021 12:45
Hangman SVG
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@AhsanAyaz
AhsanAyaz / fb-friend-requests-automation.js
Last active January 24, 2022 17:44
Automagically accept all friend requests on your profile
/**
* @author Muhammad Ahsan Ayaz
* Usage:
* Go to https://www.facebook.com/friends/requests/
* Run the following code
*/
function removeFriendRequest({row, removeRequests, counter, timerDelay}) {
if (removeRequests) {
const removeButton = row.closest('a').querySelector('[aria-label="Remove"]:not([aria-disabled="true"])')
@AhsanAyaz
AhsanAyaz / Code.gs
Last active April 1, 2024 17:53
Email automation App Script
/**
Replace the "<DOCID>" with your document ID, or the entire URL per say. Should be something like:
var EMAIL_TEMPLATE_DOC_URL = 'https://docs.google.com/document/d/asdasdakvJZasdasd3nR8kmbiphqlykM-zxcrasdasdad/edit?usp=sharing';
*/
var EMAIL_TEMPLATE_DOC_URL = 'https://docs.google.com/document/d/<DOCID>/edit?usp=sharing';
var EMAIL_SUBJECT = 'This is an important email';
/**
* Sends a customized email for every response on a form.
@AhsanAyaz
AhsanAyaz / pointy-little-popovers__src__app_directives_popover-positional-class.directive.ts
Last active February 19, 2021 21:38
Pointy Little Popovers PopoverPositionalClassDirective
import { AfterViewInit, ChangeDetectorRef, Directive, Input, Renderer2, SimpleChanges } from '@angular/core';
@Directive({
selector: '[appPopoverPositionalClass]'
})
export class PopoverPositionalClassDirective implements AfterViewInit {
@Input() originY: string;
@Input() targetSelector: string;
@Input() inverseClass;
@Input() initialDirection = 'bottom';
@AhsanAyaz
AhsanAyaz / pointy-little-popovers__src__styles.scss
Last active February 19, 2021 21:27
Global Styles for Pointy Little Popover Recipe
/* You can add global styles to this file, and also import other style files */
.cdk-overlay-container {
display: block;
&.z-index-top {
z-index: 2050;
}
}
.duplicate-modal-overlay {
@AhsanAyaz
AhsanAyaz / angular-title-case-extended.pipe.html
Last active September 18, 2019 12:56
Custom Angular title case pipe built on top of Angular's titleCase pipe
<!-- USAGE -->
<!-- Transoforming strings -->
<div class="users">
<div class="users__user" *ngFor="let user of users">
{{user.name | appTitleCase}}
</div>
</div>
<!-- Transforming Arrays -->
@AhsanAyaz
AhsanAyaz / du-type-guards-final.ts
Created September 6, 2019 07:20
Understanding Discriminated Unions in Typescript
function evaluatePrice(vehicle: Vehicle) {
switch(vehicle.vType) {
case "car":
return vehicle.transmission * evaluationFactor;
case "truck":
return vehicle.capacity * evaluationFactor;
case "motorcycle":
return vehicle.make * evaluationFactor;
case "bicycle":
return vehicle.make * evaluationFactor;