Skip to content

Instantly share code, notes, and snippets.

View felipepastorelima's full-sized avatar

Felipe Lima felipepastorelima

View GitHub Profile
@felipepastorelima
felipepastorelima / firestore.rules
Last active September 30, 2021 15:11
Firestore Rules utilities to reduce verbosity. Generator: https://scaffoldhub.io/firestore-rules
service cloud.firestore {
match /databases/{database}/documents {
// START - Usage example
match /people/{document=**} {
function propertiesValid() {
return request.resource.data.keys().hasAll(['name', 'birthdate', 'yearsOfExperience'])
&& request.resource.data.size() == 3
&& isString('name') && minlength('name', 3) && maxlength('name', 255)
@felipepastorelima
felipepastorelima / extract-method-a.js
Created February 26, 2018 11:11
Extract Method - A
function printPrimeNumbersFromZeroToHundred() {
const primeNumbers = [];
for (let i = 0; i <= 100; i++) {
let isPrime = true;
if (i < 2) {
isPrime = false;
} else if(i === 2) {
isPrime = true;
@felipepastorelima
felipepastorelima / extract-method-b.js
Created February 26, 2018 11:16
Extract Method - B
function printPrimeNumbersFromZeroToHundred() {
const primeNumbers = [];
for (let i = 0; i <= 100; i++) {
if (isPrime(i)) {
primeNumbers.push(i);
}
}
console.log(primeNumbers);
@felipepastorelima
felipepastorelima / extract-method-c.js
Created February 26, 2018 11:18
Extract Method - C
function printPrimeNumbersFromZeroToHundred() {
const primeNumbersToPrint = primeNumbersBetween(0, 100);
console.log(primeNumbersToPrint);
}
function primeNumbersBetween(min, max) {
const result = [];
for (let i = min; i <= max; i++) {
if (isPrime(i)) {
function selectSeniorCandidates(candidates) {
return candidates.filter(candidate => {
// with at least 5 years of experience that knows Javascript
return (
candidate.yearsOfExperience >= 5 &&
candidate.languages.includes('Javascript')
);
});
}
const seniorCandidatesRequirements = [
{
matches(candidate) {
return Number(candidate.yearsOfExperience) >= 5;
}
},
{
matches(candidate) {
return candidate.languages && candidate.languages.includes('Javascript');
}
const seniorCandidatesRequirements = [
// ...
];
const candidates = [
// ...
];
function matchesEveryRequirement(candidates, requirements) {
if (!requirements) {
@felipepastorelima
felipepastorelima / jsconfig.json
Last active September 23, 2018 19:23
jsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es2016",
"jsx": "preserve",
"checkJs": true,
"baseUrl": "./src"
},
"exclude": ["node_modules", "**/node_modules/*"]
}
{
"javascript.updateImportsOnFileMove.enabled": "always",
"javascript.preferences.importModuleSpecifier": "non-relative"
}
NODE_PATH=src/