Public
Edited
Dec 8, 2022
Insert cell
Insert cell
Runtime = (await require("@observablehq/runtime@4")).Runtime
Insert cell
id = '@sepans/basic-notebook'
Insert cell
main = import(`https://api.observablehq.com/${id}.js?v=3`)
.then(async ({default: define}) => {
const runtime = new Runtime();
const main = runtime.module(define, name => /* includes.includes("anon") ||*/ name);
await runtime._compute();
runtime.dispose();
return main;
})
Insert cell
notebookImport = import(`https://api.observablehq.com/${id}.js?v=3`)
.then(async (result) => {
return result
})
Insert cell
Object.getOwnPropertyNames(notebookImport)
Insert cell
notebookImport.default.toString()
Insert cell
rawDefinedVars = Array.from(main._runtime._variables, (v, i) => (v._id = i, v))
.filter(v => !isimport(v) && !isglobal(v) && v._reachable)
Insert cell
definedVars = rawDefinedVars.map(v => ({
_type: v._type,
_module: v._module,
_name: v._name,
_id: v._id,
_inputs: v._inputs
.map(i => isimport(i) ? i._inputs[0] : i)
.filter(i => !isglobal(i))
}))
Insert cell
isglobal = v =>
v._type === 2 && // implicit
!isbuiltin(v)
Insert cell
isbuiltin = v =>
v._type === 2 && // implicit
(v._module === main._runtime._builtin || // standard library
v._module._builtins.has(v._name)) // special (e.g., invalidation)
Insert cell
isimport = v =>
(v._type === 1 || v._type === 2) && // normal or implicit
v._inputs.length === 1 &&
v._module !== v._inputs[0]._module
Insert cell
isanon = v => v._name === null
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more