Skip to content

Instantly share code, notes, and snippets.

View jkrems's full-sized avatar
Modules. Modules everywhere.

Jan Olaf Martin jkrems

Modules. Modules everywhere.
View GitHub Profile
@jkrems
jkrems / index-original.js
Last active November 17, 2018 17:49
TypeScript as a Linter
'use strict';
function calculate(expression) {
// [...]
}
@jkrems
jkrems / pkg-import.md
Last active November 6, 2018 21:54
Module Resolution & Format Lookup

Module Resolution & Format Lookup

Motivating Examples

  • A package (react-dom) has a dedicated entrypoint `react-dom/server for code that isn't compatible with a browser environment.
  • A package (angular) exposes multiple independent APIs, modeled via import paths like angular/common/http.
  • A package (lodash) allows to import individual functions, e.g. lodash/map.
  • A package is exclusively exposing an ESM interface.
  • A package is exclusively exposing a CJS interface.
  • A package is exposing both an ESM and a CJS interface.
@jkrems
jkrems / async-to-async.md
Last active June 27, 2018 18:30
require('async') → async/await

Moving to async/await

waterfall

function before(cb) {
  waterfall(
    f1,
    f2,
 cb
@jkrems
jkrems / background-json-parse.js
Created March 6, 2018 16:59
JSON.parse w/o blocking main thread
'use strict';
const ivm = require('isolated-vm');
function handleParseJob(code) {
return new ivm.ExternalCopy(JSON.parse(code), { transferOut: true });
}
function transferInExternalCopy(copy) {
return copy.copy({ transferIn: true });
@jkrems
jkrems / es-module-history.md
Last active November 5, 2023 19:35
History of ES modules

Modules - History & Future

History

@jkrems
jkrems / .gitignore
Last active December 9, 2017 03:49
dynamic-import-require
node_modules
// V8 6.2 required
'use strict';
const fs = require('fs');
const { Session } = require('inspector');
const { promisify } = require('util');
const session = new Session();
if (session != null) {
session.connect();

Getting seconds or milliseconds since January 1, 1970, 00:00:00 GMT in various languages

Second-Native

C (1972)

// ms
struct timespec spec;
clock_gettime(CLOCK_REALTIME, &spec);
@jkrems
jkrems / local-react-native.md
Created May 11, 2016 20:47
Local react-native

Installing project specific tools like react-native globally is yucky. Even when it's just thin CLI wrappers. Unfortunately react-native actively breaks local npm binaries by forcing a broken bin stub into each project. So if you added ./node_modules/.bin to your $PATH, every attempt of running react-native inside of a project will fail with an annoying (and wrong) claim that you installed react-native globally.

The easiest solution I found so far:

  • npm install --save react-native-cli in your React Native project
@jkrems
jkrems / gofer-v3.md
Last active April 19, 2016 21:10
Gofer v3

Gofer v3

The following is just a proposal & not yet finished.

The biggest change in 3.x is that gofer no longer uses request behind the scenes. Also we're trying to align the interface more closely with fetch. Whenever we return a promise, it will be Bluebird-flavored.

Simple fetch-style usage: