Skip to content

Instantly share code, notes, and snippets.

JSPM Project Contribution License Agreement
This Contribution License Agreement (“Agreement”) is agreed to by the party signing below (“You”), and conveys certain license rights to Guy Bedford, 309-3277 Quadra Street, Victoria BC, V8X 4W9 (“Assignee”) for Your contributions to JSPM open source projects. This Agreement is effective as of the latest signature date below.
1. Definitions.
“Code” means the computer software code, whether in human-readable or machine-executable form, that is delivered by You to Assignee under this Agreement.
“Project” means any of the projects owned by Assignee including both commercial and open source works and including all projects distributed under the JSPM project organization account on GitHub.
“Submit” is the act of uploading, submitting, transmitting, or distributing code or other content to any Project, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the

Keybase proof

I hereby claim:

  • I am guybedford on github.
  • I am guybedford ( on keybase.
  • I have a public key ASC0rq68wlYMNf-xXCQat7dKCBoSIMpQtcOBYpEfwBI7Zwo

To claim this, I am signing this object:

guybedford / exports-packages.json
Last active Apr 21, 2020
List of all packages in the npm registry that use the "exports" field. *Last Updated 20 April 2020 (588 packages)*
View exports-packages.json
guybedford / mock-loader.mjs
Last active Oct 23, 2021
Node.js mocking example
View mock-loader.mjs
const mocks = Object.create(null);
global.mock = function (_mocks) {
Object.assign(mocks, _mocks);
export async function resolve (specifier, context, parentResolve) {
if (mocks[specifier]) {
return { url: 'mock:' + specifier };
return parentResolve(specifier, context);
guybedford /
Last active Jun 18, 2019
ES Module WASI Integration Concerns
guybedford / dirserver.js
Last active Sep 26, 2018
Directory serving
View dirserver.js
* Adapted from node-ecstatic by Joshua Holbrook:
const fs = require('graceful-fs');
const path = require('path');
const he = require('he');
const perms = ['---', '--x', '-w-', '-wx', 'r--', 'r-x', 'rw-', 'rwx'];
View SystemJS Config Conflict Detection.js
// meta, packages deep
function getSharedProperties(configA, configB) {
var bKeys = Object.keys(configB);
return Object.keys(configA).filter(function(p) {
return bKeys.indexOf(p) != -1;
function detectMetaConflict(metaA, metaB) {
guybedford / gist:a1155602a0ff41b22359
Last active Aug 29, 2015
Interpreting CommonJS modules in ES6 environments
View gist:a1155602a0ff41b22359

Question - should import {fs} from 'fs' be supported for CommonJS module loading from ES6?

If it is to be supported, we would effectively define the fs module object in the ES6 registry to look something like the following:

var fs = require('fs');
var _fs = {};
Object.keys(fs).forEach((p) => _fs[p] = fs[p]);
_fs.default = fs;
guybedford / build-exclusions.js
Created Jul 11, 2014
System build exclusions
View build-exclusions.js
var firstTree, secondTree;
builder.trace('app/first', config)
.then(function(trace) {
firstTree = trace.tree;
return builder.trace('app/second');
.then(function(trace) {
secondTree = trace.tree;
return builder.subtractTrees(firstTree, secondTree);
View extension-register.js
// our side table
// registry = { deps, declare ; normalizedDeps, depMap ; execute, exports }
// Lifecycle:
// 1. before instantiate, just deps, declare
// 2. after instantiate, normalizedDeps and depMap
// 3. after linking, execute, exports
// 4. after partial tree execution just exports
// 5. after full tree execution, removed from registry
var registry = {};