Skip to content

Commit 7f0f870

Browse files
authored
Adopt ESM (#316)
* esm * node 18 * next * 4.0.0-rc.1 * adopt named exports * adopt d3-array
1 parent e9a5137 commit 7f0f870

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+494
-442
lines changed

.eslintrc.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"extends": "eslint:recommended",
33
"parserOptions": {
44
"sourceType": "module",
5-
"ecmaVersion": 2018
5+
"ecmaVersion": 2020
66
},
77
"env": {
88
"es6": true,

.github/workflows/nodejs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
fail-fast: false
99
matrix:
1010
os: [ubuntu-latest]
11-
node-version: [14.x, 16.x]
11+
node-version: [14.x, 16.x, 18.x]
1212

1313
runs-on: ${{ matrix.os }}
1414

LICENSE

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright 2018-2021 Observable, Inc.
1+
Copyright 2018-2022 Observable, Inc.
22

33
Permission to use, copy, modify, and/or distribute this software for any purpose
44
with or without fee is hereby granted, provided that the above copyright notice

README.md

+57-57
Large diffs are not rendered by default.

bin/resolve-dependencies

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const extensionRe = /\.[^/]*$/;
55
const mains = ["unpkg", "jsdelivr", "browser", "main"];
66

77
(async () => {
8-
console.log(`import dependency from "./dependency.mjs";`);
8+
console.log(`import dependency from "./dependency.js";`);
99
{
1010
const package = await resolve("d3");
1111
console.log(`export const d3 = dependency("${package.name}", "${package.version}", "${package.export}");`);

package.json

+30-16
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,51 @@
11
{
22
"name": "@observablehq/stdlib",
3-
"version": "3.24.0",
4-
"license": "ISC",
5-
"main": "dist/stdlib.js",
6-
"module": "src/index.mjs",
3+
"version": "4.0.0-rc.1",
74
"author": {
85
"name": "Observable, Inc.",
96
"url": "https://observablehq.com"
107
},
8+
"license": "ISC",
9+
"type": "module",
10+
"main": "src/index.js",
11+
"module": "src/index.js",
12+
"jsdelivr": "dist/stdlib.js",
13+
"unpkg": "dist/stdlib.js",
14+
"exports": {
15+
"umd": "./dist/stdlib.js",
16+
"default": "./src/index.js"
17+
},
1118
"repository": {
1219
"type": "git",
1320
"url": "https://github.com/observablehq/stdlib.git"
1421
},
22+
"files": [
23+
"dist/**/*.js",
24+
"src/**/*.js"
25+
],
26+
"engines": {
27+
"node": ">=14.5.0"
28+
},
1529
"scripts": {
16-
"test": "mocha 'test/**/*-test.mjs' && eslint src test --ext mjs",
17-
"prepublishOnly": "rollup -c",
30+
"test": "mocha 'test/**/*-test.js' && eslint src test",
31+
"prepublishOnly": "rm -rf dist && rollup -c",
1832
"postpublish": "git push && git push --tags"
1933
},
20-
"files": [
21-
"src/**/*.mjs",
22-
"dist/**/*.js"
23-
],
2434
"dependencies": {
25-
"d3-dsv": "^2.0.0",
35+
"d3-array": "^3.2.0",
36+
"d3-dsv": "^3.0.1",
2637
"d3-require": "^1.3.0"
2738
},
2839
"devDependencies": {
29-
"@rollup/plugin-node-resolve": "^13.3.0",
30-
"eslint": "^8.18.0",
40+
"@rollup/plugin-node-resolve": "^15.0.1",
41+
"eslint": "^8.27.0",
3142
"exceljs": "^4.3.0",
32-
"mocha": "^10.0.0",
33-
"node-fetch": "^2.6.1",
34-
"rollup": "^2.37.1",
43+
"mocha": "^10.1.0",
44+
"node-fetch": "^3.2.10",
45+
"rollup": "^3.2.5",
3546
"rollup-plugin-terser": "^7.0.2"
47+
},
48+
"publishConfig": {
49+
"tag": "next"
3650
}
3751
}

rollup.config.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import node from "@rollup/plugin-node-resolve";
22
import {terser} from "rollup-plugin-terser";
3-
import * as meta from "./package.json";
3+
import * as meta from "./package.json" assert {type: "json"};
44

55
const copyright = `// @observablehq/stdlib v${meta.version} Copyright ${(new Date).getFullYear()} Observable, Inc.`;
66

77
export default [
88
{
9-
input: "src/index.mjs",
9+
input: "src/index.js",
1010
plugins: [
1111
node(),
1212
terser({

src/array.mjs

-14
This file was deleted.

src/dependencies.mjs renamed to src/dependencies.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import dependency from "./dependency.mjs";
1+
import {dependency} from "./dependency.js";
22
export const d3 = dependency("d3", "7.6.1", "dist/d3.min.js");
33
export const inputs = dependency("@observablehq/inputs", "0.10.4", "dist/inputs.min.js");
44
export const plot = dependency("@observablehq/plot", "0.6.0", "dist/plot.umd.min.js");

src/dependency.mjs renamed to src/dependency.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function dependency(name, version, main) {
1+
export function dependency(name, version, main) {
22
return {
33
resolve(path = main) {
44
return `${name}@${version}/${path}`;

src/dom/canvas.mjs renamed to src/dom/canvas.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(width, height) {
1+
export function canvas(width, height) {
22
var canvas = document.createElement("canvas");
33
canvas.width = width;
44
canvas.height = height;

src/dom/context2d.mjs renamed to src/dom/context2d.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(width, height, dpi) {
1+
export function context2d(width, height, dpi) {
22
if (dpi == null) dpi = devicePixelRatio;
33
var canvas = document.createElement("canvas");
44
canvas.width = width * dpi;

src/dom/download.mjs renamed to src/dom/download.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(value, name = "untitled", label = "Save") {
1+
export function download(value, name = "untitled", label = "Save") {
22
const a = document.createElement("a");
33
const b = a.appendChild(document.createElement("button"));
44
b.textContent = label;

src/dom/element.mjs renamed to src/dom/element.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var namespaces = {
77
xmlns: "http://www.w3.org/2000/xmlns/"
88
};
99

10-
export default function(name, attributes) {
10+
export function element(name, attributes) {
1111
var prefix = name += "", i = prefix.indexOf(":"), value;
1212
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
1313
var element = namespaces.hasOwnProperty(prefix) // eslint-disable-line no-prototype-builtins

src/dom/index.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export {canvas} from "./canvas.js";
2+
export {context2d} from "./context2d.js";
3+
export {download} from "./download.js";
4+
export {element} from "./element.js";
5+
export {input} from "./input.js";
6+
export {range} from "./range.js";
7+
export {select} from "./select.js";
8+
export {svg} from "./svg.js";
9+
export {text} from "./text.js";
10+
export {uid} from "./uid.js";

src/dom/index.mjs

-23
This file was deleted.

src/dom/input.mjs renamed to src/dom/input.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(type) {
1+
export function input(type) {
22
var input = document.createElement("input");
33
if (type != null) input.type = type;
44
return input;

src/dom/range.mjs renamed to src/dom/range.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(min, max, step) {
1+
export function range(min, max, step) {
22
if (arguments.length === 1) max = min, min = null;
33
var input = document.createElement("input");
44
input.min = min = min == null ? 0 : +min;

src/dom/select.mjs renamed to src/dom/select.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(values) {
1+
export function select(values) {
22
var select = document.createElement("select");
33
Array.prototype.forEach.call(values, function(value) {
44
var option = document.createElement("option");

src/dom/svg.mjs renamed to src/dom/svg.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(width, height) {
1+
export function svg(width, height) {
22
var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
33
svg.setAttribute("viewBox", [0, 0, width, height]);
44
svg.setAttribute("width", width);
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export default function(value) {
1+
export function text(value) {
22
return document.createTextNode(value);
33
}

src/dom/uid.mjs renamed to src/dom/uid.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
var count = 0;
22

3-
export default function(name) {
3+
export function uid(name) {
44
return new Id("O-" + (name == null ? "" : name + "-") + ++count);
55
}
66

src/fileAttachment.mjs renamed to src/fileAttachment.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {autoType, csvParse, csvParseRows, tsvParse, tsvParseRows} from "d3-dsv";
2-
import {arrow, jszip, exceljs} from "./dependencies.mjs";
3-
import {requireDefault} from "./require.mjs";
4-
import {SQLiteDatabaseClient} from "./sqlite.mjs";
5-
import {Workbook} from "./xlsx.mjs";
2+
import {arrow, jszip, exceljs} from "./dependencies.js";
3+
import {requireDefault} from "./require.js";
4+
import {SQLiteDatabaseClient} from "./sqlite.js";
5+
import {Workbook} from "./xlsx.js";
66

77
async function remote_fetch(file) {
88
const response = await fetch(await file.url());
@@ -93,7 +93,7 @@ export function NoFileAttachments(name) {
9393
throw new Error(`File not found: ${name}`);
9494
}
9595

96-
export default function FileAttachments(resolve) {
96+
export function FileAttachments(resolve) {
9797
return Object.assign(
9898
name => {
9999
const result = resolve(name += "");

src/files/buffer.mjs renamed to src/files/buffer.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(file) {
1+
export function buffer(file) {
22
return new Promise(function(resolve, reject) {
33
var reader = new FileReader;
44
reader.onload = function() { resolve(reader.result); };

src/files/index.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export {buffer} from "./buffer.js";
2+
export {text} from "./text.js";
3+
export {url} from "./url.js";

src/files/index.mjs

-9
This file was deleted.

src/files/text.mjs renamed to src/files/text.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(file) {
1+
export function text(file) {
22
return new Promise(function(resolve, reject) {
33
var reader = new FileReader;
44
reader.onload = function() { resolve(reader.result); };

src/files/url.mjs renamed to src/files/url.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(file) {
1+
export function url(file) {
22
return new Promise(function(resolve, reject) {
33
var reader = new FileReader;
44
reader.onload = function() { resolve(reader.result); };

src/generators/disposable.mjs renamed to src/generators/disposable.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import that from "../that.mjs";
1+
import {that} from "../that.js";
22

3-
export default function disposable(value, dispose) {
3+
export function disposable(value, dispose) {
44
let done = false;
55
if (typeof dispose !== "function") {
66
throw new Error("dispose is not a function");

src/generators/filter.mjs renamed to src/generators/filter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function*(iterator, test) {
1+
export function* filter(iterator, test) {
22
var result, index = -1;
33
while (!(result = iterator.next()).done) {
44
if (test(result.value, ++index)) {

src/generators/index.js

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export {disposable} from "./disposable.js";
2+
export {filter} from "./filter.js";
3+
export {input} from "./input.js";
4+
export {map} from "./map.js";
5+
export {observe} from "./observe.js";
6+
export {queue} from "./queue.js";
7+
export {range} from "./range.js";
8+
export {valueAt} from "./valueAt.js";
9+
export {worker} from "./worker.js";

src/generators/index.mjs

-21
This file was deleted.

src/generators/input.mjs renamed to src/generators/input.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import observe from "./observe.mjs";
1+
import {observe} from "./observe.js";
22

3-
export default function(input) {
3+
export function input(input) {
44
return observe(function(change) {
55
var event = eventof(input), value = valueof(input);
66
function inputted() { change(valueof(input)); }

src/generators/map.mjs renamed to src/generators/map.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function*(iterator, transform) {
1+
export function* map(iterator, transform) {
22
var result, index = -1;
33
while (!(result = iterator.next()).done) {
44
yield transform(result.value, ++index);

src/generators/observe.mjs renamed to src/generators/observe.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import that from "../that.mjs";
1+
import {that} from "../that.js";
22

3-
export default function(initialize) {
3+
export function observe(initialize) {
44
let stale = false;
55
let value;
66
let resolve;

src/generators/queue.mjs renamed to src/generators/queue.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import that from "../that.mjs";
1+
import {that} from "../that.js";
22

3-
export default function(initialize) {
3+
export function queue(initialize) {
44
let resolve;
55
const queue = [];
66
const dispose = initialize(push);

src/generators/range.mjs renamed to src/generators/range.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function*(start, stop, step) {
1+
export function* range(start, stop, step) {
22
start = +start;
33
stop = +stop;
44
step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;

src/generators/valueAt.mjs renamed to src/generators/valueAt.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function(iterator, i) {
1+
export function valueAt(iterator, i) {
22
if (!isFinite(i = +i) || i < 0 || i !== i | 0) return;
33
var result, index = -1;
44
while (!(result = iterator.next()).done) {

src/generators/worker.mjs renamed to src/generators/worker.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import disposable from "./disposable.mjs";
1+
import {disposable} from "./disposable.js";
22

3-
export default function worker(source) {
3+
export function worker(source) {
44
const url = URL.createObjectURL(new Blob([source], {type: "text/javascript"}));
55
const worker = new Worker(url);
66
return disposable(worker, () => {

0 commit comments

Comments
 (0)