From f209293df784634e8b25ab88740a3ccb49505ff4 Mon Sep 17 00:00:00 2001 From: Alok Pepakayala Date: Mon, 15 Feb 2021 22:14:47 +0530 Subject: [PATCH 1/4] Non import cells return variables as array --- src/compiler.js | 18 +- yarn.lock | 1060 +++++++++++++++++++++++------------------------ 2 files changed, 541 insertions(+), 537 deletions(-) diff --git a/src/compiler.js b/src/compiler.js index 9e80d50..6ac97ea 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -156,6 +156,8 @@ const createCellDefinition = ( dependencyMap, define = true ) => { + let variables = []; + let tmp_variable_store = null; if (cell.body.type === "ImportDeclaration") { const { specifiers, @@ -208,12 +210,14 @@ ${importString} const mutableName = `mutable ${cellName}`; if (define) { main.variable(null).define(initialName, cellReferences, cellFunction); - main + tmp_variable_store = main .variable(observer(mutableName)) .define(mutableName, ["Mutable", initialName], (M, _) => new M(_)); - main + variables.push(tmp_variable_store) + tmp_variable_store = main .variable(observer(cellName)) .define(cellName, [mutableName], _ => _.generator); + variables.push(tmp_variable_store) } else { main.redefine(initialName, cellReferences, cellFunction); main.redefine( @@ -224,13 +228,16 @@ ${importString} main.redefine(cellName, [mutableName], _ => _.generator); } } else { - if (define) - main + if (define){ + tmp_variable_store = main .variable(observer(cellName)) .define(cellName, cellReferences, cellFunction); + variables.push(tmp_variable_store) + } else main.redefine(cellName, cellReferences, cellFunction); } } + return variables; }; const createModuleDefintion = async ( moduleObject, @@ -427,7 +434,8 @@ export class Compiler { } return { define(module, observer) { - createCellDefinition(cell, module, observer, dependencyMap, true); + //return [variables] when creating a cell + return createCellDefinition(cell, module, observer, dependencyMap, true); }, redefine(module, observer) { createCellDefinition(cell, module, observer, dependencyMap, false); diff --git a/yarn.lock b/yarn.lock index 037194a..d56d34e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,568 +3,564 @@ "@observablehq/inspector@^3.2.0": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@observablehq/inspector/-/inspector-3.2.1.tgz#c953fd95f1b90fac6f39e41965a72cc079d3e465" - integrity sha512-U8EASUAUYCQmCprOF9HafRMnU4yyD0IXjRuDwAjBMjVpm36KXPzXWxHcdzlt/3CbIEu8GOhKQqHBAX9pv6OyUQ== + "integrity" "sha512-U8EASUAUYCQmCprOF9HafRMnU4yyD0IXjRuDwAjBMjVpm36KXPzXWxHcdzlt/3CbIEu8GOhKQqHBAX9pv6OyUQ==" + "resolved" "https://registry.npmjs.org/@observablehq/inspector/-/inspector-3.2.1.tgz" + "version" "3.2.1" dependencies: - esm "^3.2.25" + "esm" "^3.2.25" "@observablehq/parser@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@observablehq/parser/-/parser-3.0.0.tgz#6332909fcff5680d994a581b77cadaba765a0d4a" - integrity sha512-BuIfvay+INd2kmUnXNbxYwZ/MnMTYjPEIhns7NuJ9YVIAV+TmxAkZlZdUeCkDpC2XET81BJM8hpOnIzJrqx+1w== + "integrity" "sha512-BuIfvay+INd2kmUnXNbxYwZ/MnMTYjPEIhns7NuJ9YVIAV+TmxAkZlZdUeCkDpC2XET81BJM8hpOnIzJrqx+1w==" + "resolved" "https://registry.npmjs.org/@observablehq/parser/-/parser-3.0.0.tgz" + "version" "3.0.0" dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" + "acorn" "^7.0.0" + "acorn-walk" "^7.0.0" "@observablehq/runtime@^4.6.4": - version "4.6.4" - resolved "https://registry.yarnpkg.com/@observablehq/runtime/-/runtime-4.6.4.tgz#d90ded08bd9c10110f76d79eb1c4e12ea7fb974d" - integrity sha512-aPiADs8aQfa2ktlZh25ElvRhEZ1WBQ0S/rSfc+aEHCyrtvk+lJ9OMo+FCa01IK4doi6Vkp3xJd2RakbJ6o1hEg== + "integrity" "sha512-aPiADs8aQfa2ktlZh25ElvRhEZ1WBQ0S/rSfc+aEHCyrtvk+lJ9OMo+FCa01IK4doi6Vkp3xJd2RakbJ6o1hEg==" + "resolved" "https://registry.npmjs.org/@observablehq/runtime/-/runtime-4.6.4.tgz" + "version" "4.6.4" dependencies: "@observablehq/inspector" "^3.2.0" "@observablehq/stdlib" "^3.2.0" - esm "^3.0.84" + "esm" "^3.0.84" "@observablehq/stdlib@^3.2.0": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@observablehq/stdlib/-/stdlib-3.2.1.tgz#770a5c2a85d4cb281267a07c6a1e8732ec71b374" - integrity sha512-Zsk6C2zccu+71alrv1hyrEfeSaesQ+27KHoDvuuPEdNH9XVC17sHo4HVsBZAroIMBsBjiuFUzuSuiqvD72WX1A== + "integrity" "sha512-Zsk6C2zccu+71alrv1hyrEfeSaesQ+27KHoDvuuPEdNH9XVC17sHo4HVsBZAroIMBsBjiuFUzuSuiqvD72WX1A==" + "resolved" "https://registry.npmjs.org/@observablehq/stdlib/-/stdlib-3.2.1.tgz" + "version" "3.2.1" dependencies: - d3-require "^1.2.4" - marked "https://github.com/observablehq/marked.git#94c6b946f462fd25db4465d71a6859183f86c57f" + "d3-require" "^1.2.4" + "marked" "git+https://github.com/observablehq/marked.git#94c6b946f462fd25db4465d71a6859183f86c57f" "@types/estree@*", "@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "integrity" "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" + "version" "0.0.39" "@types/node@*": - version "12.7.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.5.tgz#e19436e7f8e9b4601005d73673b6dc4784ffcc2f" - integrity sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w== + "integrity" "sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-12.7.5.tgz" + "version" "12.7.5" "@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + "integrity" "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==" + "resolved" "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz" + "version" "0.0.8" dependencies: "@types/node" "*" -acorn-walk@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.0.0.tgz#c8ba6f0f1aac4b0a9e32d1f0af12be769528f36b" - integrity sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg== - -acorn@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" - integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== - -acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== - -async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== - -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -corser@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" - integrity sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c= - -d3-require@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/d3-require/-/d3-require-1.2.4.tgz#59afc591d5089f99fecd8c45ef7539e1fee112b3" - integrity sha512-8UseEGCkBkBxIMouLMPONUBmU8DUPC1q12LARV1Lk/2Jwa32SVgmRfX8GdIeR06ZP+CG85YD3N13K2s14qCNyA== - -debug@^2.2.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.0.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -deep-equal@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -defined@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -ecstatic@^3.0.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-3.3.2.tgz#6d1dd49814d00594682c652adb66076a69d46c48" - integrity sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog== - dependencies: - he "^1.1.1" - mime "^1.6.0" - minimist "^1.1.0" - url-join "^2.0.5" - -es-abstract@^1.5.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.14.2.tgz#7ce108fad83068c8783c3cdf62e504e084d8c497" - integrity sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg== - dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.0" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-inspect "^1.6.0" - object-keys "^1.1.1" - string.prototype.trimleft "^2.0.0" - string.prototype.trimright "^2.0.0" - -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -esm@^3.0.84, esm@^3.2.25: - version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" - integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -eventemitter3@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - -follow-redirects@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" - integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A== - dependencies: - debug "^3.0.0" - -for-each@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -glob@~7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= - -has@^1.0.1, has@^1.0.3, has@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -he@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -http-proxy@^1.8.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-server@^0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.11.1.tgz#2302a56a6ffef7f9abea0147d838a5e9b6b6a79b" - integrity sha512-6JeGDGoujJLmhjiRGlt8yK8Z9Kl0vnl/dQoQZlc4oeqaUoAKQg94NILLfrY3oWzSyFaQCVNTcKE5PZ3cH8VP9w== - dependencies: - colors "1.0.3" - corser "~2.0.0" - ecstatic "^3.0.0" - http-proxy "^1.8.1" - opener "~1.4.0" - optimist "0.6.x" - portfinder "^1.0.13" - union "~0.4.3" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-callable@^1.1.3, is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-reference@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.3.tgz#e99059204b66fdbe09305cfca715a29caa5c8a51" - integrity sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw== +"acorn-walk@^7.0.0": + "integrity" "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.0.0.tgz" + "version" "7.0.0" + +"acorn@^7.0.0", "acorn@^7.1.0": + "integrity" "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz" + "version" "7.1.0" + +"async@^1.5.2": + "integrity" "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + "resolved" "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + "version" "1.5.2" + +"balanced-match@^1.0.0": + "integrity" "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" + "version" "1.0.0" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"builtin-modules@^3.1.0": + "integrity" "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==" + "resolved" "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz" + "version" "3.1.0" + +"colors@1.0.3": + "integrity" "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + "resolved" "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" + "version" "1.0.3" + +"concat-map@0.0.1": + "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"corser@~2.0.0": + "integrity" "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=" + "resolved" "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz" + "version" "2.0.1" + +"d3-require@^1.2.4": + "integrity" "sha512-8UseEGCkBkBxIMouLMPONUBmU8DUPC1q12LARV1Lk/2Jwa32SVgmRfX8GdIeR06ZP+CG85YD3N13K2s14qCNyA==" + "resolved" "https://registry.npmjs.org/d3-require/-/d3-require-1.2.4.tgz" + "version" "1.2.4" + +"debug@^2.2.0": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"debug@^3.0.0": + "integrity" "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz" + "version" "3.2.6" + dependencies: + "ms" "^2.1.1" + +"deep-equal@~1.0.1": + "integrity" "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz" + "version" "1.0.1" + +"define-properties@^1.1.2", "define-properties@^1.1.3": + "integrity" "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==" + "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "object-keys" "^1.0.12" + +"defined@~1.0.0": + "integrity" "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + "resolved" "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" + "version" "1.0.0" + +"ecstatic@^3.0.0": + "integrity" "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==" + "resolved" "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "he" "^1.1.1" + "mime" "^1.6.0" + "minimist" "^1.1.0" + "url-join" "^2.0.5" + +"es-abstract@^1.5.0": + "integrity" "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==" + "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz" + "version" "1.14.2" + dependencies: + "es-to-primitive" "^1.2.0" + "function-bind" "^1.1.1" + "has" "^1.0.3" + "has-symbols" "^1.0.0" + "is-callable" "^1.1.4" + "is-regex" "^1.0.4" + "object-inspect" "^1.6.0" + "object-keys" "^1.1.1" + "string.prototype.trimleft" "^2.0.0" + "string.prototype.trimright" "^2.0.0" + +"es-to-primitive@^1.2.0": + "integrity" "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==" + "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "is-callable" "^1.1.4" + "is-date-object" "^1.0.1" + "is-symbol" "^1.0.2" + +"esm@^3.0.84", "esm@^3.2.25": + "integrity" "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" + "resolved" "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz" + "version" "3.2.25" + +"estree-walker@^0.6.1": + "integrity" "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" + "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz" + "version" "0.6.1" + +"eventemitter3@^3.0.0": + "integrity" "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz" + "version" "3.1.2" + +"follow-redirects@^1.0.0": + "integrity" "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==" + "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz" + "version" "1.9.0" + dependencies: + "debug" "^3.0.0" + +"for-each@~0.3.3": + "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" + "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "is-callable" "^1.1.3" + +"fs.realpath@^1.0.0": + "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"function-bind@^1.0.2", "function-bind@^1.1.1", "function-bind@~1.1.1": + "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + "version" "1.1.1" + +"glob@~7.1.4": + "integrity" "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz" + "version" "7.1.4" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.0.4" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"has-symbols@^1.0.0": + "integrity" "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz" + "version" "1.0.0" + +"has@^1.0.1", "has@^1.0.3", "has@~1.0.3": + "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "function-bind" "^1.1.1" + +"he@^1.1.1": + "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + "version" "1.2.0" + +"http-proxy@^1.8.1": + "integrity" "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==" + "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz" + "version" "1.17.0" + dependencies: + "eventemitter3" "^3.0.0" + "follow-redirects" "^1.0.0" + "requires-port" "^1.0.0" + +"http-server@^0.11.1": + "integrity" "sha512-6JeGDGoujJLmhjiRGlt8yK8Z9Kl0vnl/dQoQZlc4oeqaUoAKQg94NILLfrY3oWzSyFaQCVNTcKE5PZ3cH8VP9w==" + "resolved" "https://registry.npmjs.org/http-server/-/http-server-0.11.1.tgz" + "version" "0.11.1" + dependencies: + "colors" "1.0.3" + "corser" "~2.0.0" + "ecstatic" "^3.0.0" + "http-proxy" "^1.8.1" + "opener" "~1.4.0" + "optimist" "0.6.x" + "portfinder" "^1.0.13" + "union" "~0.4.3" + +"inflight@^1.0.4": + "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@~2.0.4", "inherits@2": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"is-callable@^1.1.3", "is-callable@^1.1.4": + "integrity" "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz" + "version" "1.1.4" + +"is-date-object@^1.0.1": + "integrity" "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz" + "version" "1.0.1" + +"is-module@^1.0.0": + "integrity" "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" + "resolved" "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" + "version" "1.0.0" + +"is-reference@^1.1.2": + "integrity" "sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw==" + "resolved" "https://registry.npmjs.org/is-reference/-/is-reference-1.1.3.tgz" + "version" "1.1.3" dependencies: "@types/estree" "0.0.39" -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +"is-regex@^1.0.4": + "integrity" "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=" + "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz" + "version" "1.0.4" dependencies: - has "^1.0.1" - -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== - dependencies: - has-symbols "^1.0.0" - -magic-string@^0.25.2: - version "0.25.3" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.3.tgz#34b8d2a2c7fec9d9bdf9929a3fd81d271ef35be9" - integrity sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA== - dependencies: - sourcemap-codec "^1.4.4" - -"marked@https://github.com/observablehq/marked.git#94c6b946f462fd25db4465d71a6859183f86c57f": - version "0.3.12" - resolved "https://github.com/observablehq/marked.git#94c6b946f462fd25db4465d71a6859183f86c57f" - -mime@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.1.0, minimist@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -mkdirp@0.5.x: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -object-inspect@^1.6.0, object-inspect@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" - integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -opener@~1.4.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" - integrity sha1-XG2ixdflgx6P+jlklQ+NZnSskLg= - -optimist@0.6.x: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -portfinder@^1.0.13: - version "1.0.24" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa" - integrity sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg== - dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" - -prettier@1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -qs@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" - integrity sha1-6eha2+ddoLvkyOBHaghikPhjtAQ= - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve@^1.11.0, resolve@^1.11.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== - dependencies: - path-parse "^1.0.6" - -resolve@~1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" - integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== - dependencies: - path-parse "^1.0.6" - -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= - dependencies: - through "~2.3.4" - -rollup-plugin-commonjs@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" - integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - dependencies: - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-node-resolve@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== + "has" "^1.0.1" + +"is-symbol@^1.0.2": + "integrity" "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==" + "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "has-symbols" "^1.0.0" + +"magic-string@^0.25.2": + "integrity" "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==" + "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz" + "version" "0.25.3" + dependencies: + "sourcemap-codec" "^1.4.4" + +"marked@git+https://github.com/observablehq/marked.git#94c6b946f462fd25db4465d71a6859183f86c57f": + "integrity" "sha512-dszaiFZ+IQGEV+KAbeR9HwFKywYC4uSYnNzekttenB3XmZ3AEdTfsquBaaSKX5nmuYbDyO6EDm5qAnM45Ue9HQ==" + "resolved" "git+ssh://git@github.com/observablehq/marked.git#94c6b946f462fd25db4465d71a6859183f86c57f" + "version" "0.3.12" + +"mime@^1.6.0": + "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + "version" "1.6.0" + +"minimatch@^3.0.4": + "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "brace-expansion" "^1.1.7" + +"minimist@^1.1.0", "minimist@~1.2.0": + "integrity" "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + "version" "1.2.0" + +"minimist@~0.0.1": + "integrity" "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + "version" "0.0.10" + +"minimist@0.0.8": + "integrity" "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "version" "0.0.8" + +"mkdirp@0.5.x": + "integrity" "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" + "version" "0.5.1" + dependencies: + "minimist" "0.0.8" + +"ms@^2.1.1": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" + +"ms@2.0.0": + "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "version" "2.0.0" + +"object-inspect@^1.6.0", "object-inspect@~1.6.0": + "integrity" "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz" + "version" "1.6.0" + +"object-keys@^1.0.12", "object-keys@^1.1.1": + "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + "version" "1.1.1" + +"once@^1.3.0": + "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"opener@~1.4.0": + "integrity" "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=" + "resolved" "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz" + "version" "1.4.3" + +"optimist@0.6.x": + "integrity" "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=" + "resolved" "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz" + "version" "0.6.1" + dependencies: + "minimist" "~0.0.1" + "wordwrap" "~0.0.2" + +"path-is-absolute@^1.0.0": + "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"path-parse@^1.0.6": + "integrity" "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz" + "version" "1.0.6" + +"portfinder@^1.0.13": + "integrity" "sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg==" + "resolved" "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz" + "version" "1.0.24" + dependencies: + "async" "^1.5.2" + "debug" "^2.2.0" + "mkdirp" "0.5.x" + +"prettier@1.19.1": + "integrity" "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz" + "version" "1.19.1" + +"qs@~2.3.3": + "integrity" "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=" + "resolved" "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz" + "version" "2.3.3" + +"requires-port@^1.0.0": + "integrity" "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "version" "1.0.0" + +"resolve@^1.11.0", "resolve@^1.11.1": + "integrity" "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz" + "version" "1.12.0" + dependencies: + "path-parse" "^1.0.6" + +"resolve@~1.11.1": + "integrity" "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "path-parse" "^1.0.6" + +"resumer@~0.0.0": + "integrity" "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=" + "resolved" "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz" + "version" "0.0.0" + dependencies: + "through" "~2.3.4" + +"rollup-plugin-commonjs@^10.1.0": + "integrity" "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==" + "resolved" "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz" + "version" "10.1.0" + dependencies: + "estree-walker" "^0.6.1" + "is-reference" "^1.1.2" + "magic-string" "^0.25.2" + "resolve" "^1.11.0" + "rollup-pluginutils" "^2.8.1" + +"rollup-plugin-node-resolve@^5.2.0": + "integrity" "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==" + "resolved" "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz" + "version" "5.2.0" dependencies: "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" + "builtin-modules" "^3.1.0" + "is-module" "^1.0.0" + "resolve" "^1.11.1" + "rollup-pluginutils" "^2.8.1" -rollup-pluginutils@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97" - integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== +"rollup-pluginutils@^2.8.1": + "integrity" "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==" + "resolved" "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz" + "version" "2.8.1" dependencies: - estree-walker "^0.6.1" + "estree-walker" "^0.6.1" -rollup@^1.26.4: - version "1.27.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.27.0.tgz#7afe0da89c967cec5ccea7e919da6c89a1a68666" - integrity sha512-yaMna4MJ8LLEHhHl1ilgHakylf0LKeQctDxhngZLQ+W57GnXa5vtH7XKaK8zlAhNEhlWiH5YFVFt+QCDPUmNkw== +"rollup@^1.26.4", "rollup@>=1.11.0", "rollup@>=1.12.0": + "integrity" "sha512-yaMna4MJ8LLEHhHl1ilgHakylf0LKeQctDxhngZLQ+W57GnXa5vtH7XKaK8zlAhNEhlWiH5YFVFt+QCDPUmNkw==" + "resolved" "https://registry.npmjs.org/rollup/-/rollup-1.27.0.tgz" + "version" "1.27.0" dependencies: "@types/estree" "*" "@types/node" "*" - acorn "^7.1.0" - -sourcemap-codec@^1.4.4: - version "1.4.6" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9" - integrity sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg== - -string.prototype.trim@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" - integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.0" - function-bind "^1.0.2" - -string.prototype.trimleft@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" - integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string.prototype.trimright@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" - integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -tape@^4.11.0: - version "4.11.0" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.11.0.tgz#63d41accd95e45a23a874473051c57fdbc58edc1" - integrity sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA== - dependencies: - deep-equal "~1.0.1" - defined "~1.0.0" - for-each "~0.3.3" - function-bind "~1.1.1" - glob "~7.1.4" - has "~1.0.3" - inherits "~2.0.4" - minimist "~1.2.0" - object-inspect "~1.6.0" - resolve "~1.11.1" - resumer "~0.0.0" - string.prototype.trim "~1.1.2" - through "~2.3.8" - -through@~2.3.4, through@~2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -union@~0.4.3: - version "0.4.6" - resolved "https://registry.yarnpkg.com/union/-/union-0.4.6.tgz#198fbdaeba254e788b0efcb630bc11f24a2959e0" - integrity sha1-GY+9rrolTniLDvy2MLwR8kopWeA= - dependencies: - qs "~2.3.3" - -url-join@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" - integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg= - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + "acorn" "^7.1.0" + +"sourcemap-codec@^1.4.4": + "integrity" "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==" + "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz" + "version" "1.4.6" + +"string.prototype.trim@~1.1.2": + "integrity" "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=" + "resolved" "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "define-properties" "^1.1.2" + "es-abstract" "^1.5.0" + "function-bind" "^1.0.2" + +"string.prototype.trimleft@^2.0.0": + "integrity" "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==" + "resolved" "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "define-properties" "^1.1.3" + "function-bind" "^1.1.1" + +"string.prototype.trimright@^2.0.0": + "integrity" "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==" + "resolved" "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "define-properties" "^1.1.3" + "function-bind" "^1.1.1" + +"tape@^4.11.0": + "integrity" "sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==" + "resolved" "https://registry.npmjs.org/tape/-/tape-4.11.0.tgz" + "version" "4.11.0" + dependencies: + "deep-equal" "~1.0.1" + "defined" "~1.0.0" + "for-each" "~0.3.3" + "function-bind" "~1.1.1" + "glob" "~7.1.4" + "has" "~1.0.3" + "inherits" "~2.0.4" + "minimist" "~1.2.0" + "object-inspect" "~1.6.0" + "resolve" "~1.11.1" + "resumer" "~0.0.0" + "string.prototype.trim" "~1.1.2" + "through" "~2.3.8" + +"through@~2.3.4", "through@~2.3.8": + "integrity" "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + "version" "2.3.8" + +"union@~0.4.3": + "integrity" "sha1-GY+9rrolTniLDvy2MLwR8kopWeA=" + "resolved" "https://registry.npmjs.org/union/-/union-0.4.6.tgz" + "version" "0.4.6" + dependencies: + "qs" "~2.3.3" + +"url-join@^2.0.5": + "integrity" "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=" + "resolved" "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz" + "version" "2.0.5" + +"wordwrap@~0.0.2": + "integrity" "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "version" "0.0.3" + +"wrappy@1": + "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" From 9e9a3ce3dd62e5e50e4de3aaeb40c56a52fb849e Mon Sep 17 00:00:00 2001 From: Alok Pepakayala Date: Mon, 15 Feb 2021 22:56:16 +0530 Subject: [PATCH 2/4] all cells return variables as array on define --- src/compiler.js | 46 +++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/src/compiler.js b/src/compiler.js index 6ac97ea..7172021 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -166,13 +166,14 @@ const createCellDefinition = ( importString } = setupImportCell(cell); // this will display extra names for viewof / mutable imports (for now?) - main.variable(observer()).define( + tmp_variable_store = main.variable(observer()).define( null, ["md"], md => md`~~~javascript ${importString} ~~~` ); + variables.push(tmp_variable_store); const other = main._runtime.module( dependencyMap.get(cell.body.source.value) @@ -180,9 +181,15 @@ ${importString} if (hasInjections) { const child = other.derive(injections, main); - for (const { name, alias } of specifiers) main.import(name, alias, child); + for (const { name, alias } of specifiers) { + tmp_variable_store = main.import(name, alias, child); + variables.push(tmp_variable_store); + } } else { - for (const { name, alias } of specifiers) main.import(name, alias, other); + for (const { name, alias } of specifiers) { + tmp_variable_store = main.import(name, alias, other); + variables.push(tmp_variable_store); + } } } else { const { @@ -193,12 +200,15 @@ ${importString} if (cell.id && cell.id.type === "ViewExpression") { const reference = `viewof ${cellName}`; if (define) { - main + tmp_variable_store = main .variable(observer(reference)) .define(reference, cellReferences, cellFunction); - main + variables.push(tmp_variable_store); + + tmp_variable_store = main .variable(observer(cellName)) .define(cellName, ["Generators", reference], (G, _) => G.input(_)); + variables.push(tmp_variable_store); } else { main.redefine(reference, cellReferences, cellFunction); main.redefine(cellName, ["Generators", reference], (G, _) => @@ -209,15 +219,20 @@ ${importString} const initialName = `initial ${cellName}`; const mutableName = `mutable ${cellName}`; if (define) { - main.variable(null).define(initialName, cellReferences, cellFunction); + tmp_variable_store = main + .variable(null) + .define(initialName, cellReferences, cellFunction); + variables.push(tmp_variable_store); + tmp_variable_store = main .variable(observer(mutableName)) .define(mutableName, ["Mutable", initialName], (M, _) => new M(_)); - variables.push(tmp_variable_store) + variables.push(tmp_variable_store); + tmp_variable_store = main .variable(observer(cellName)) .define(cellName, [mutableName], _ => _.generator); - variables.push(tmp_variable_store) + variables.push(tmp_variable_store); } else { main.redefine(initialName, cellReferences, cellFunction); main.redefine( @@ -228,13 +243,12 @@ ${importString} main.redefine(cellName, [mutableName], _ => _.generator); } } else { - if (define){ + if (define) { tmp_variable_store = main .variable(observer(cellName)) .define(cellName, cellReferences, cellFunction); - variables.push(tmp_variable_store) - } - else main.redefine(cellName, cellReferences, cellFunction); + variables.push(tmp_variable_store); + } else main.redefine(cellName, cellReferences, cellFunction); } } return variables; @@ -435,7 +449,13 @@ export class Compiler { return { define(module, observer) { //return [variables] when creating a cell - return createCellDefinition(cell, module, observer, dependencyMap, true); + return createCellDefinition( + cell, + module, + observer, + dependencyMap, + true + ); }, redefine(module, observer) { createCellDefinition(cell, module, observer, dependencyMap, false); From 7de07f1bdeb0ba8316ed0cd5d6c391e19ea5d29f Mon Sep 17 00:00:00 2001 From: a10k Date: Sun, 7 Mar 2021 11:20:55 +0530 Subject: [PATCH 3/4] Added tests for variables returned at define --- package.json | 2 +- test/compiler-test.js | 37 +++++++++++++++++++++++++++++++++++-- test/test_cell.html | 38 +++++++++++++++++++++++++++++++++++--- 3 files changed, 71 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 7699815..d4270ac 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "scripts": { "build": "rollup -c", "format": "prettier --write src/**/*.js", - "test": "npm run build && tape 'test/**/*-test.js' && npm run test-format", + "test": "npm run build && tape test/*-test.js && npm run test-format", "test-format": "prettier --check src/**/*.js", "test-html": "http-server", "prepublishOnly": "npm run build", diff --git a/test/compiler-test.js b/test/compiler-test.js index 6c14f7a..d3acd27 100644 --- a/test/compiler-test.js +++ b/test/compiler-test.js @@ -54,7 +54,9 @@ viewof e = { t.equal(await main.value("c"), 12); const { define: xDefine } = await compile.cell(`x = y - 1`); - xDefine(main, () => true); + const xDefineVars = xDefine(main, () => true); + t.equal(xDefineVars.length, 1); //check length + t.equal(xDefineVars[0]._name, "x"); //check name await rt._compute(); try { @@ -65,7 +67,10 @@ viewof e = { } const { define: yDefine } = await compile.cell(`y = 101`); - yDefine(main, () => true); + const yDefineVars = yDefine(main, () => true); + t.equal(yDefineVars.length, 1); //check length + t.equal(yDefineVars[0]._name, "y"); //check name + await rt._compute(); t.equal(await main.value("y"), 101); @@ -86,6 +91,34 @@ viewof e = { t.equal(await main.value("e"), 20); + const { define: fDefine } = await compile.cell(`viewof f = { + let output = {}; + let listeners = []; + output.value = 20; + output.addEventListener = (listener) => listeners.push(listener);; + output.removeEventListener = (listener) => { + listeners = listeners.filter(l => l !== listener); + }; + return output; + }`); + const fDefineVars = fDefine(main, () => true); + t.equal(fDefineVars.length, 2); //check length + t.equal(fDefineVars[0]._name, "viewof f"); //check name + t.equal(fDefineVars[1]._name, "f"); //check name + await rt._compute(); + + t.equal(await main.value("f"), 20); + + const { define: gDefine } = await compile.cell(`mutable g = 123`); + const gDefineVars = gDefine(main, () => true); + t.equal(gDefineVars.length, 3); //check length + t.equal(gDefineVars[0]._name, "initial g"); //check name + t.equal(gDefineVars[1]._name, "mutable g"); //check name + t.equal(gDefineVars[2]._name, "g"); //check name + await rt._compute(); + + t.equal(await main.value("g"), 123); + rt.dispose(); t.end(); }); diff --git a/test/test_cell.html b/test/test_cell.html index c3a6d6b..52fdcea 100644 --- a/test/test_cell.html +++ b/test/test_cell.html @@ -47,7 +47,11 @@ window.MODULE = rt.module(define, observer); compile.cell(`d = 200`).then(({ define: defineCell }) => { - defineCell(window.MODULE, observer); + const variables = defineCell(window.MODULE, observer); + console.log( + "Define variable d= 200, created following variables: ", + variables + ); }); compile.cell(`a = -300`).then(({ redefine: redefineCell }) => { @@ -65,11 +69,39 @@ `import {hello } with {myName as name} from "@tmcw/hello-world"` ) .then(({ define: defineCell }) => { - defineCell(window.MODULE, observer); + const variables = defineCell(window.MODULE, observer); + console.log( + 'Define import {hello } with {myName as name} from "@tmcw/hello-world", created following variables: ', + variables + ); compile.cell(`hello`).then(({ define: defineCell }) => { - defineCell(window.MODULE, observer); + const variables = defineCell(window.MODULE, observer); + console.log( + "Define hello, created following variables: ", + variables + ); }); + + compile + .cell(`viewof some_viewof = DOM.range()`) + .then(({ define: defineCell }) => { + const variables = defineCell(window.MODULE, observer); + console.log( + "Define viewof some_viewof = DOM.range(), created following variables: ", + variables + ); + }); + + compile + .cell(`mutable some_mutable = 123`) + .then(({ define: defineCell }) => { + const variables = defineCell(window.MODULE, observer); + console.log( + "Define mutable some_mutable = 123, created following variables: ", + variables + ); + }); }); }); From 93139501d4a5688b48a178a114a4bcb7b426230e Mon Sep 17 00:00:00 2001 From: a10k Date: Sun, 7 Mar 2021 11:29:28 +0530 Subject: [PATCH 4/4] Updated readme --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 57d93b3..fd21cca 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,8 @@ const main = runtime.module(define, Inspector.into(document.body)); #compile.cell(contents) -Returns an object that has `define` and `redefine` functions that would define or redefine variables in the given cell to a specified module. `contents` is input for the [`parseCell`](https://github.com/observablehq/parser#parseCell) function. If the cell is not an ImportDeclaration, then the `redefine` functions can be used to redefine previously existing variables in a module. This is an asynchronous function because if the cell is an import, the imported notebook is fetched. +Returns an object that has `define` and `redefine` functions that would define or redefine variables in the given cell to a specified module. `contents` is input for the [`parseCell`](https://github.com/observablehq/parser#parseCell) function. If the cell is not an ImportDeclaration, then the `redefine` functions can be used to redefine previously existing variables in a module. This is an asynchronous function because if the cell is an import, the imported notebook is fetched. +Note: Calling the define method will return the variables created as an array. This can be helpful to remove unnamed variables or multiple cells imported using import statements when creating an editor interface to remove previously defined variables. ```javascript let define, redefine; @@ -165,7 +166,7 @@ await main.value("c"); // 22 define(main); // would throw an error, since a is already defined in main {define} = await compile.cell(`x = 2`); -define(main); +define(main); // this will return an array, example:[variable_for_x] {define} = await compile.cell(`y = x * 4`); define(main);