Skip to content

Instantly share code, notes, and snippets.

View michaeljscript's full-sized avatar
💻
Coding React Apps

Michal S michaeljscript

💻
Coding React Apps
View GitHub Profile
@michaeljscript
michaeljscript / images-to-pdf.js
Last active February 26, 2022 19:44
Images to PDF
document.write('<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js" onload="callback()"></script>');
function getImageFromUrl(url) {
return new Promise((resolve, reject) => {
const img = new Image();
img.onError = (err) => reject(err);
img.onload = () => resolve(img);
img.src = url;
});
{
"version": 3,
"sources": [
"utils/selection.ts",
"utils/common.ts",
"utils/http.ts",
"components/button.tsx",
"components/input.tsx",
"components/date-picker.tsx",
// ...
function getFlatObjectDifferencet<T extends object>(newOne: T, oldOne: T, compare: (newOne: T, oldOne: T, key: keyof T) => boolean): Partial<T> {
const allKeys: Array<keyof T> = Object.keys(newOne);
const uniqueKeys = allKeys.filter((key) => compare(newOne, oldOne, key));
return Object.assign({}, ...uniqueKeys.map(k => ({[k]: newOne[k]})));
}
// Parser is a function which takes unknown and returns T or null
type Parser<T> = (val: unknown) => T | null;
// createTypeGuard is a function which takes a parser and returns a new function
// The returned function is a safe type guard for T
const createTypeGuard = <T>(parse: Parser<T>) => (value: unknown): value is T => {
// By assuming that parser returns only T or null
// We can say that value from parser is T when it is not a null
return parse(value) !== null;
const data: unknown = response.body;
if (isPerson(data)) {
// data is Person
console.log('Welcome ' + data.name);
} else {
console.log('You are not a person!');
}
const createTypeGuard = <T>(parse: (val: unknown) => T | null) => (value: unknown): value is T => {
return parse(value) !== null;
}
const isPerson = createTypeGuard(parsePerson);
const data: unknown = response.body;
if (checkType(data, parsePerson)) {
// data is Person
console.log('Welcome ' + data.name);
} else {
console.log('You are not a person!');
}
function checkType<T>(value: unknown, parse: (val: unknown) => T | null): value is T {
return parse(value) !== null;
}
const data: unknown = response.body;
const maybePerson = parsePerson(data);
if (maybePerson) {
// maybePerson is Person
console.log('Welcome ' + maybePerson.name);
} else {
console.log('You are not a person!');
}
function parsePerson(value: unknown): Person | null {
if (
typeof value === "object" &&
value &&
value.hasOwnProperty("name") &&
value.hasOwnProperty("age") &&
value.hasOwnProperty("something")
) {
const { name, age, something } = value;
if (