Skip to content

Instantly share code, notes, and snippets.

View apieceofbart's full-sized avatar

Bartek apieceofbart

View GitHub Profile
@apieceofbart
apieceofbart / axios-catch-error.js
Created September 17, 2019 13:23 — forked from fgilio/axios-catch-error.js
Catch request errors with Axios
/*
* Handling Errors using async/await
* Has to be used inside an async function
*/
try {
const response = await axios.get('https://your.site/api/v1/bla/ble/bli');
// Success 🎉
console.log(response);
} catch (error) {
// Error 😨
@apieceofbart
apieceofbart / typescript-advanced.ts
Last active August 26, 2022 14:27
Typescript advanced examples and common gotchas
// EXAMPLE 1
// Let's say you want to create a function that returns different types based on argument passed. Contrived example:
function returnNumberOrString(returnString: boolean) {
if (returnString) {
return "42" as string // cast to string to avoid literal type
}
return 42 as number // cast to number to avoid literal type
}
@apieceofbart
apieceofbart / prepare-commit-msg.sh
Created November 5, 2019 11:40 — forked from bartoszmajsak/prepare-commit-msg.sh
How to automatically prepend git commit with a branch name
#!/bin/bash
# This way you can customize which branches should be skipped when
# prepending commit message.
if [ -z "$BRANCHES_TO_SKIP" ]; then
BRANCHES_TO_SKIP=(master develop test)
fi
BRANCH_NAME=$(git symbolic-ref --short HEAD)
BRANCH_NAME="${BRANCH_NAME##*/}"
@apieceofbart
apieceofbart / test.js
Last active November 4, 2025 09:50
Async testing with jest fake timers and promises
PLEASE CHECK THIS REPO WITH THE EXAMPLES THAT YOU CAN RUN:
https://github.com/apieceofbart/async-testing-with-jest-fake-timers-and-promises
// Let's say you have a function that does some async operation inside setTimeout (think of polling for data)
function runInterval(callback, interval = 1000) {
setInterval(async () => {
const results = await Promise.resolve(42) // this might fetch some data from server
callback(results)
}, interval)
@apieceofbart
apieceofbart / sessions.md
Created June 8, 2020 13:30 — forked from joepie91/sessions.md
Introduction to sessions

While a lot of Node.js guides recommend using JWT as an alternative to session cookies (sometimes even mistakenly calling it "more secure than cookies"), this is a terrible idea. JWTs are absolutely not a secure way to deal with user authentication/sessions, and this article goes into more detail about that.

Secure user authentication requires the use of session cookies.

Cookies are small key/value pairs that are usually sent by a server, and stored on the client (often a browser). The client then sends this key/value pair back with every request, in a HTTP header. This way, unique clients can be identified between requests, and client-side settings can be stored and used by the server.

Session cookies are cookies containing a unique session ID that is generated by the server. This session ID is used by the server to identify the client whenever it makes a request, and to associate session data with that request.

*S

@apieceofbart
apieceofbart / react-base-table.d.ts
Created July 20, 2020 19:15 — forked from pocesar/react-base-table.d.ts
react base table typescript typings
declare module 'react-base-table' {
import React from 'react'
export interface ColumnProps<T> {
key: string
className?: string | ((obj: CallbackObject<T>) => string)
/** Class name for the column header, could be a callback to return the class name The callback is of the shape of ({ columns, column, columnIndex, headerIndex }) => string */
headerClassName?: string | ((obj: CallbackObject<T>) => string)
/** Custom style for the column cell, including the header cells */
style?: React.CSSProperties