Skip to content

Commit f18a7eb

Browse files
authored
Add recommended libraries (#207)
* add recommended libraries * rm constant * upgrade node * upgrade @observablehq/inputs
1 parent 170f137 commit f18a7eb

File tree

6 files changed

+50
-27
lines changed

6 files changed

+50
-27
lines changed

.github/workflows/nodejs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
strategy:
99
matrix:
1010
os: [ubuntu-latest]
11-
node-version: [10.x, 12.x]
11+
node-version: [12.x, 14.x]
1212

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

src/constant.js

-5
This file was deleted.

src/library.js

+31-17
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import {require as requireDefault} from "d3-require";
2-
import constant from "./constant.js";
32
import DOM from "./dom/index.js";
43
import Files from "./files/index.js";
54
import {NoFileAttachments} from "./fileAttachment.js";
@@ -13,24 +12,39 @@ import resolve from "./resolve.js";
1312
import requirer from "./require.js";
1413
import svg from "./svg.js";
1514
import tex from "./tex.js";
15+
import vegalite from "./vegalite.js";
1616
import width from "./width.js";
1717

1818
export default Object.assign(function Library(resolver) {
1919
const require = requirer(resolver);
20-
Object.defineProperties(this, {
21-
DOM: {value: DOM, writable: true, enumerable: true},
22-
FileAttachment: {value: constant(NoFileAttachments), writable: true, enumerable: true},
23-
Files: {value: Files, writable: true, enumerable: true},
24-
Generators: {value: Generators, writable: true, enumerable: true},
25-
html: {value: constant(html), writable: true, enumerable: true},
26-
md: {value: md(require), writable: true, enumerable: true},
27-
Mutable: {value: constant(Mutable), writable: true, enumerable: true},
28-
now: {value: now, writable: true, enumerable: true},
29-
Promises: {value: Promises, writable: true, enumerable: true},
30-
require: {value: constant(require), writable: true, enumerable: true},
31-
resolve: {value: constant(resolve), writable: true, enumerable: true},
32-
svg: {value: constant(svg), writable: true, enumerable: true},
33-
tex: {value: tex(require), writable: true, enumerable: true},
34-
width: {value: width, writable: true, enumerable: true}
35-
});
20+
Object.defineProperties(this, properties({
21+
DOM: () => DOM,
22+
FileAttachment: () => NoFileAttachments,
23+
Files: () => Files,
24+
Generators: () => Generators,
25+
Inputs: () => require("@observablehq/[email protected]/dist/inputs.umd.min.js"),
26+
Mutable: () => Mutable,
27+
Plot: () => require("@observablehq/[email protected]/dist/plot.umd.min.js"),
28+
Promises: () => Promises,
29+
_: () => require("[email protected]/lodash.min.js"),
30+
d3: () => require("[email protected]/dist/d3.min.js"),
31+
htl: () => require("[email protected]/dist/htl.min.js"),
32+
html: () => html,
33+
md: md(require),
34+
now: now,
35+
require: () => require,
36+
resolve: () => resolve,
37+
svg: () => svg,
38+
tex: tex(require),
39+
vl: vegalite(require),
40+
width: width
41+
}));
3642
}, {resolve: requireDefault.resolve});
43+
44+
function properties(values) {
45+
return Object.fromEntries(Object.entries(values).map(property));
46+
}
47+
48+
function property([key, value]) {
49+
return [key, ({value, writable: true, enumerable: true})];
50+
}

src/promises/when.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import constant from "../constant.js";
2-
31
var timeouts = new Map;
42

53
function timeout(now, time) {
@@ -16,7 +14,7 @@ function timeout(now, time) {
1614

1715
export default function when(time, value) {
1816
var now;
19-
return (now = timeouts.get(time = +time)) ? now.then(constant(value))
17+
return (now = timeouts.get(time = +time)) ? now.then(() => value)
2018
: (now = Date.now()) >= time ? Promise.resolve(value)
21-
: timeout(now, time).then(constant(value));
19+
: timeout(now, time).then(() => value);
2220
}

src/vegalite.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export default function vl(require) {
2+
return async () => {
3+
const [vega, vegalite, api] = await Promise.all([
4+
"[email protected]/build/vega.min.js",
5+
"[email protected]/build/vega-lite.min.js",
6+
"[email protected]/build/vega-lite-api.min.js"
7+
].map(module => require(module)));
8+
return api.register(vega, vegalite);
9+
};
10+
}

test/index-test.js

+6
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,21 @@ test("new Library returns a library with the expected keys", async t => {
77
"FileAttachment",
88
"Files",
99
"Generators",
10+
"Inputs",
1011
"Mutable",
12+
"Plot",
1113
"Promises",
14+
"_",
15+
"d3",
16+
"htl",
1217
"html",
1318
"md",
1419
"now",
1520
"require",
1621
"resolve",
1722
"svg",
1823
"tex",
24+
"vl",
1925
"width"
2026
]);
2127
t.end();

0 commit comments

Comments
 (0)