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 / gh.sh
Created July 7, 2020 16:24
Switch to Github repo checkout, clone if it doesn't exist yet
# Usage: gh <org-or-user>/<repo>
# Example: gh nodejs/node
gh () {
local repo=$1
local target="$HOME/code/src/github.com/$1"
local url="git@github.com:$repo.git"
if [[ ! -d "$target" ]]
then
git clone "$url" "$target"
fi
@jkrems
jkrems / ok.js
Last active June 8, 2020 18:54
Exports Hash
module.exports = 'ok';
@jkrems
jkrems / _.md
Last active February 27, 2020 15:51
Observe compilation cache collision

Repro

  1. Start the server via node server.js.
  2. Open http://localhost:3000.
  3. If the compilation cache leads to bad meta data in dynamic import, the message should only be logged once. ‎‎​
@jkrems
jkrems / .gitignore
Last active February 13, 2020 02:14
Node globals handling in Typescript
/node_modules
/input.js
@jkrems
jkrems / playground.json
Created February 5, 2020 21:53
reglang
{
"scripts": [],
"showConsole": true,
"scriptType": "module"
}
@jkrems
jkrems / index.html
Last active February 5, 2020 21:52
reglang
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<h1>RegLang</h1>
<pre id="result"></pre>
<script src="/script.mjs" type="module"></script>
</body>
class ResolvedRef {
#href;
#signature;
static get protocol() {
return 'resolved-ref:';
}
constructor(href, signature) {
this.#href = href;
@jkrems
jkrems / index.md
Last active November 3, 2023 14:34
JavaScript: Classic Scripts vs. Modules vs. CommonJS

JavaScript File Format Differences

There's the pervarsive notion that all JS is created equal and that there's only minor and easily detectable differences between the various file formats used to author JavaScript. This is correct, from a certain point of view.

A certain point of view?

For many people writing JavaScript that gets passed into build tools,

client.mjs:
import "fs";
[A]:
parentResolve()
[B]:
parentResolve()
[native]:
'fs' -> 'node:fs'
'fs' -> $BWRAP = 'data:import "node:fs";'
'fs' -> $AWRAP = 'data:import "$BWRAP";'
> make -j4
/Applications/Xcode-beta.app/Contents/Developer/usr/bin/make -C out BUILDTYPE=Release V=0
LD_LIBRARY_PATH=/Users/jkrems/Projects/node/node/out/Release/lib.host:/Users/jkrems/Projects/node/node/out/Release/lib.target:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd ../.; mkdir -p /Users/jkrems/Projects/node/node/out/Release/obj/gen; python tools/js2c.py lib/internal/bootstrap/environment.js lib/internal/bootstrap/loaders.js lib/internal/bootstrap/node.js lib/internal/bootstrap/pre_execution.js lib/internal/per_context/primordials.js lib/internal/per_context/setup.js lib/internal/per_context/domexception.js lib/async_hooks.js lib/assert.js lib/buffer.js lib/child_process.js lib/console.js lib/constants.js lib/crypto.js lib/cluster.js lib/dgram.js lib/dns.js lib/domain.js lib/events.js lib/fs.js lib/http.js lib/http2.js lib/_http_agent.js lib/_http_client.js lib/_http_common.js lib/_http_incoming.js lib/_http_outgoing.js lib/_http_server.js lib/https.js lib/inspector.js lib/module.js lib/net.js lib/os.j