Skip to content

Instantly share code, notes, and snippets.

View tinovyatkin's full-sized avatar
💭
I may be slow to respond.

Konstantin Vyatkin tinovyatkin

💭
I may be slow to respond.
View GitHub Profile
@tinovyatkin
tinovyatkin / list.ts
Created February 23, 2022 14:03
list format
function namesList(names: string | readonly string[]): string {
if (typeof names === 'string') return names;
if (names instanceof Array) return names.join(', ');
throw new TypeError(
`Invalid parameter, expected a string or array of strings, received: ${names}`,
);
}
const nameList2 = (names: string | Iterable<string>) =>
typeof names === 'string'
@tinovyatkin
tinovyatkin / promisify-readline-question.js
Created October 29, 2017 15:58
`util.promisify` for `readline.question`
'use strict';
// Promisifies readline.question function using node native `util.promisify`
// readline.question takes one callback that returns the answer, so it need custom promisifying
const readline = require('readline');
const { promisify } = require('util');
readline.Interface.prototype.question[promisify.custom] = function(prompt) {
return new Promise(resolve =>

Keybase proof

I hereby claim:

  • I am tinovyatkin on github.
  • I am tinovyatkin (https://keybase.io/tinovyatkin) on keybase.
  • I have a public key ASB7vAUOzsyh3hE4oZr2HhnRNLmP9qEdaFb-pqDXAkdstAo

To claim this, I am signing this object:

@-moz-document domain("github.com") {
@import url('https://fonts.googleapis.com/css2?family=Fira+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;1,100;1,200;1,300;1,400;1,500;1,600&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;1,100;1,200;1,300;1,400;1,500;1,600&display=swap');
body {
font-family: "Ubuntu" !important;
font-variant-ligatures: normal;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: subpixel-antialiased;
const headers = `
Date: Sun, 17 Aug 2014 16:24:52 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Set-Cookie: Foo2
set-Cookie: bar
set-cookie: bong
`;
const s = headers.trim().split(/\s*\n\s*/g).map((v) => {
const [header, value] = v.split(/:\s*/, 2);
@tinovyatkin
tinovyatkin / keybase.md
Last active July 10, 2020 16:03
Public Key

Keybase proof

I hereby claim:

  • I am tinovyatkin on github.
  • I am tinovyatkin (https://keybase.io/tinovyatkin) on keybase.
  • I have a public key ASDz9s6IUsFRXMeL_pu1O83qQurHxM0mI8vUt2ahCIpZlQo

To claim this, I am signing this object:

@tinovyatkin
tinovyatkin / fibonacci-generator.js
Created June 26, 2020 02:13 — forked from jfairbank/fibonacci-generator.js
Fibonacci ES6 Generator
function *fibonacci(n) {
const infinite = !n && n !== 0;
let current = 0;
let next = 1;
while (infinite || n--) {
yield current;
[current, next] = [next, current + next];
}
}
@tinovyatkin
tinovyatkin / rx-server.js
Created September 21, 2019 16:42 — forked from Gooseus/rx-server.js
RxJS HTTP Server
// Rx HTTP Server
// first attempt at creating a minimal reactive nodejs HTTP server
//
// has:
// * url/querystring parsing
// * body parsing
// * some kind of routing
// * some kind of error handling
// * minimalist request logging
//