@hpcc-js/markdown-it-plugins 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,79 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" width="580.15"
3
+ height="182.22" viewBox="0 0 580.15 182.22">
4
+ <g id="Layer_1-2" data-name="Layer 1">
5
+ <g>
6
+ <g>
7
+ <polygon
8
+ points="249.96 23.64 249.96 72.84 203.06 72.84 203.06 23.64 185.23 23.64 185.23 128.34 203.06 128.34 203.06 89.66 249.96 89.66 249.96 128.34 267.79 128.34 267.79 23.64 249.96 23.64"
9
+ style="fill: #fff;" />
10
+ <path
11
+ d="M327.47,23.64h-45.41v104.7h17.83v-38.38h27.57c18.46,0,33.47-14.85,33.47-33.09s-15.02-33.22-33.47-33.22Zm-27.57,17.2h27.07c8.91,0,16.15,7.19,16.15,16.03s-7.25,15.9-16.15,15.9h-27.07v-31.92Z"
12
+ style="fill: #fff;" />
13
+ <path
14
+ d="M457.26,114.78c-9.89,9.17-22.84,14.4-36.37,14.4-29.53,0-53.54-24.15-53.54-53.69s24.01-53.54,53.54-53.54c13.53,0,26.48,4.95,36.37,14.11l-12.8,13.82c-6.4-5.97-14.84-9.31-23.57-9.31-19.2,0-34.77,15.71-34.77,34.92s15.57,34.92,34.77,34.92c8.87,0,17.31-3.35,23.71-9.31l12.66,13.68Z"
15
+ style="fill: #fff;" />
16
+ <path
17
+ d="M550.64,114.78c-9.89,9.17-22.84,14.4-36.37,14.4-29.53,0-53.54-24.15-53.54-53.69s24.01-53.54,53.54-53.54c13.53,0,26.48,4.95,36.37,14.11l-12.8,13.82c-6.4-5.97-14.84-9.31-23.57-9.31-19.2,0-34.77,15.71-34.77,34.92s15.57,34.92,34.77,34.92c8.87,0,17.31-3.35,23.71-9.31l12.66,13.68Z"
18
+ style="fill: #fff;" />
19
+ </g>
20
+ <g>
21
+ <path
22
+ d="M207.28,174.43c0,5.86-5.52,7.79-11.23,7.79-3.9,0-7.34-.91-10.82-2.91l2.46-3.9c2.69,1.48,5.71,2.42,8.55,2.42,3.63,0,5.98-.95,5.98-3.14,0-2.42-3.21-3.33-6.73-4.43-4.58-1.4-9.72-2.99-9.72-8.32,0-2.12,.91-3.9,2.65-5.18,1.89-1.36,4.69-2.08,8.13-2.08s6.73,.91,10.21,2.91l-2.38,3.78c-2.72-1.51-5.26-2.35-8.06-2.35-3.71,0-5.48,1.13-5.48,2.72,0,2.5,3.29,3.37,6.92,4.5,4.46,1.4,9.53,3.14,9.53,8.17Z"
23
+ style="fill: #fff;" />
24
+ <path
25
+ d="M265.43,155.21l-10.78,15.92v10.52h-4.88v-10.52l-10.74-15.92h5.56l7.64,11.31,7.64-11.31h5.56Z"
26
+ style="fill: #fff;" />
27
+ <path
28
+ d="M318.44,174.43c0,5.86-5.52,7.79-11.23,7.79-3.9,0-7.34-.91-10.82-2.91l2.46-3.9c2.69,1.48,5.71,2.42,8.55,2.42,3.63,0,5.98-.95,5.98-3.14,0-2.42-3.21-3.33-6.73-4.43-4.58-1.4-9.72-2.99-9.72-8.32,0-2.12,.91-3.9,2.65-5.18,1.89-1.36,4.69-2.08,8.13-2.08s6.73,.91,10.21,2.91l-2.38,3.78c-2.72-1.51-5.26-2.35-8.06-2.35-3.71,0-5.48,1.13-5.48,2.72,0,2.5,3.29,3.37,6.92,4.5,4.46,1.4,9.53,3.14,9.53,8.17Z"
29
+ style="fill: #fff;" />
30
+ <path d="M374.7,155.21v4.54h-9.27v21.9h-4.84v-21.9h-9.27v-4.54h23.38Z"
31
+ style="fill: #fff;" />
32
+ <path
33
+ d="M413.98,159.75v6.39h13.58v4.58h-13.58v6.35h16.42v4.58h-21.3v-26.44h21.3v4.54h-16.42Z"
34
+ style="fill: #fff;" />
35
+ <path
36
+ d="M494.3,181.66h-4.84v-17.36l-8.17,11.42h-2.84l-8.17-11.42v17.36h-4.88v-26.44h3.82l10.63,14.9,10.67-14.9h3.78v26.44Z"
37
+ style="fill: #fff;" />
38
+ <path
39
+ d="M550.64,174.43c0,5.86-5.52,7.79-11.23,7.79-3.9,0-7.34-.91-10.82-2.91l2.46-3.9c2.69,1.48,5.71,2.42,8.55,2.42,3.63,0,5.98-.95,5.98-3.14,0-2.42-3.21-3.33-6.73-4.43-4.58-1.4-9.72-2.99-9.72-8.32,0-2.12,.91-3.9,2.65-5.18,1.89-1.36,4.69-2.08,8.13-2.08s6.73,.91,10.21,2.91l-2.38,3.78c-2.72-1.51-5.26-2.35-8.06-2.35-3.71,0-5.48,1.13-5.48,2.72,0,2.5,3.29,3.37,6.92,4.5,4.46,1.4,9.53,3.14,9.53,8.17Z"
40
+ style="fill: #fff;" />
41
+ </g>
42
+ <g>
43
+ <circle cx="81.95" cy="81.95" r="81.95" style="fill: #347faa;" />
44
+ <path
45
+ d="M78.58,48.84c6.6,4.33,16.44,.43,16.22-8.68,0,0,0,0,0-.01s0,0,0-.01c0,0,0,0,0-.01s0,0,0-.01c0,0,0,0,0-.01,0,0,0,0,0-.01,0,0,0,0,0,0,0,0,0,0,0-.01-1.07-7.57-7.8-9.79-12.23-8.95-8.97,1.71-11.46,12.79-3.98,17.71Z"
46
+ style="fill: #fff;" />
47
+ <path
48
+ d="M74.29,122.72h0s0,.01,0,.02c0,0,0,0,0,0,0,0,0,0,0,0s0,0,0,0c0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0-.19,9.67,11.57,13.12,17.66,7.29,2.33-2.23,2.66-4.69,2.83-5.88,.18-7.76-6.46-10.35-10.68-10.16-3.22,.14-8.9,2.14-9.8,8.69Z"
49
+ style="fill: #fff;" />
50
+ <path
51
+ d="M99.52,112.51c7.45,6.41,19.21,1.37,19.66-8.43-.09-8.73-7.3-12.09-12.39-11.7-10.5,.82-15.06,13.42-7.27,20.13Z"
52
+ style="fill: #fff;" />
53
+ <path
54
+ d="M124.12,92.72c7.56,6.34,19.87,2.09,20.49-9.99,0-7.8-6.35-13.72-13.86-12.93-11,1.15-15.22,15.72-6.64,22.92Z"
55
+ style="fill: #fff;" />
56
+ <path
57
+ d="M95.58,61.36s0,0,0,0c0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.09,11.81,14.91,14.82,21.05,7.1,2.36-2.97,2.41-6.02,2.43-7.48h0s0,0,0,0h0s0,0,0,0c0,0,0,0,0,0h0s0,0,0,0c0,0,0,0,0,0-.78-8.96-8.29-12.15-13.37-11.55-3.45,.4-9.99,3.41-10.11,11.9Z"
58
+ style="fill: #fff;" />
59
+ <g>
60
+ <path
61
+ d="M51.79,112.51c7.45,6.41,19.21,1.37,19.66-8.43-.09-8.73-7.3-12.09-12.39-11.7-10.5,.82-15.06,13.42-7.27,20.13Z"
62
+ style="fill: #8dd4ff;" />
63
+ <path
64
+ d="M76.4,92.72c7.56,6.34,19.87,2.09,20.49-9.99,0-7.8-6.35-13.72-13.86-12.93-11,1.15-15.22,15.72-6.64,22.92Z"
65
+ style="fill: #8dd4ff;" />
66
+ <path
67
+ d="M47.86,61.36s0,0,0,0c0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.09,11.81,14.91,14.82,21.05,7.1,2.36-2.97,2.41-6.02,2.43-7.48h0s0,0,0,0h0s0,0,0,0c0,0,0,0,0,0h0s0,0,0,0c0,0,0,0,0,0-.78-8.96-8.29-12.15-13.37-11.55-3.45,.4-9.99,3.41-10.11,11.9Z"
68
+ style="fill: #8dd4ff;" />
69
+ </g>
70
+ <path
71
+ d="M27.9,92.72c7.56,6.34,19.87,2.09,20.49-9.99,0-7.8-6.35-13.72-13.86-12.93-11,1.15-15.22,15.72-6.64,22.92Z"
72
+ style="fill: #00af91;" />
73
+ </g>
74
+ </g>
75
+ <path
76
+ d="M563.94,25.65h-2.56v-2.01h7.3v2.01h-2.54v6.59h-2.2v-6.59Zm7.31-2.01h2.56l1.18,2.92,.66,1.98h.11l.69-1.98,1.16-2.92h2.54v8.6h-2.01v-3.14l.25-3.06h-.11l-1.76,4.91h-1.6l-1.76-4.91h-.11l.25,3.06v3.14h-2.04v-8.6Z"
77
+ style="fill: #fff;" />
78
+ </g>
79
+ </svg>
@@ -0,0 +1,69 @@
1
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="580.15"
2
+ height="182.22" viewBox="0 0 580.15 182.22">
3
+ <defs>
4
+ <style>
5
+ .cls-1{fill:#0a314f;}.cls-2{fill:#095f8a;}.cls-3{fill:#fff;}.cls-4{fill:#60a9d4;}.cls-5{fill:#00ae8f;}</style>
6
+ </defs>
7
+ <polygon class="cls-1"
8
+ points="249.96 23.64 249.96 72.84 203.06 72.84 203.06 23.64 185.22 23.64 185.22 128.34 203.06 128.34 203.06 89.66 249.96 89.66 249.96 128.34 267.79 128.34 267.79 23.64 249.96 23.64" />
9
+ <path class="cls-1"
10
+ d="M432.16,128.34h-45.4V233h17.83V194.66h27.57a33.16,33.16,0,1,0,0-66.32Zm-27.57,17.2h27.07a16,16,0,1,1,0,31.92H404.59Z"
11
+ transform="translate(-104.7 -104.7)" />
12
+ <path class="cls-1"
13
+ d="M562,219.48a53.47,53.47,0,1,1,0-78.71l-12.8,13.82a34.85,34.85,0,1,0,.15,51.22Z"
14
+ transform="translate(-104.7 -104.7)" />
15
+ <path class="cls-1"
16
+ d="M655.33,219.48a53.47,53.47,0,1,1,0-78.71l-12.8,13.82a34.85,34.85,0,1,0,.15,51.22Z"
17
+ transform="translate(-104.7 -104.7)" />
18
+ <path class="cls-2"
19
+ d="M312,279.13c0,5.86-5.53,7.79-11.24,7.79A20.92,20.92,0,0,1,289.92,284l2.46-3.9a18.27,18.27,0,0,0,8.55,2.42c3.63,0,6-.94,6-3.14,0-2.42-3.22-3.33-6.73-4.42-4.58-1.4-9.73-3-9.73-8.32a6.23,6.23,0,0,1,2.65-5.19c1.89-1.36,4.69-2.08,8.13-2.08a19.51,19.51,0,0,1,10.22,2.92l-2.39,3.78a16.19,16.19,0,0,0-8.05-2.35c-3.71,0-5.49,1.14-5.49,2.73,0,2.49,3.29,3.36,6.92,4.5C306.91,272.36,312,274.1,312,279.13Z"
20
+ transform="translate(-104.7 -104.7)" />
21
+ <path class="cls-2"
22
+ d="M370.13,259.91l-10.78,15.93v10.51h-4.88V275.84l-10.74-15.93h5.56l7.64,11.31,7.64-11.31Z"
23
+ transform="translate(-104.7 -104.7)" />
24
+ <path class="cls-2"
25
+ d="M423.14,279.13c0,5.86-5.52,7.79-11.24,7.79A20.88,20.88,0,0,1,401.09,284l2.45-3.9a18.27,18.27,0,0,0,8.55,2.42c3.63,0,6-.94,6-3.14,0-2.42-3.22-3.33-6.73-4.42-4.58-1.4-9.72-3-9.72-8.32a6.23,6.23,0,0,1,2.64-5.19c1.89-1.36,4.69-2.08,8.14-2.08a19.5,19.5,0,0,1,10.21,2.92l-2.38,3.78a16.25,16.25,0,0,0-8.06-2.35c-3.71,0-5.49,1.14-5.49,2.73,0,2.49,3.29,3.36,6.93,4.5C418.07,272.36,423.14,274.1,423.14,279.13Z"
26
+ transform="translate(-104.7 -104.7)" />
27
+ <path class="cls-2" d="M479.4,259.91v4.54h-9.27v21.9h-4.84v-21.9H456v-4.54Z"
28
+ transform="translate(-104.7 -104.7)" />
29
+ <path class="cls-2"
30
+ d="M518.68,264.45v6.4h13.58v4.57H518.68v6.36h16.41v4.57H513.8V259.91h21.29v4.54Z"
31
+ transform="translate(-104.7 -104.7)" />
32
+ <path class="cls-2"
33
+ d="M599,286.35h-4.84V269L586,280.42h-2.83L575,269v17.36H570.1V259.91h3.82l10.63,14.91,10.66-14.91H599Z"
34
+ transform="translate(-104.7 -104.7)" />
35
+ <path class="cls-2"
36
+ d="M655.33,279.13c0,5.86-5.52,7.79-11.23,7.79A20.89,20.89,0,0,1,633.28,284l2.46-3.9a18.23,18.23,0,0,0,8.55,2.42c3.63,0,6-.94,6-3.14,0-2.42-3.22-3.33-6.74-4.42-4.57-1.4-9.72-3-9.72-8.32a6.23,6.23,0,0,1,2.65-5.19c1.89-1.36,4.69-2.08,8.13-2.08a19.53,19.53,0,0,1,10.22,2.92l-2.39,3.78a16.22,16.22,0,0,0-8-2.35c-3.71,0-5.49,1.14-5.49,2.73,0,2.49,3.29,3.36,6.92,4.5C650.27,272.36,655.33,274.1,655.33,279.13Z"
37
+ transform="translate(-104.7 -104.7)" />
38
+ <circle class="cls-1" cx="81.95" cy="81.95" r="81.95" />
39
+ <path class="cls-3"
40
+ d="M183.27,153.54c6.6,4.33,16.45.43,16.22-8.68h0a10.3,10.3,0,0,0-12.23-8.95C178.29,137.54,175.79,148.63,183.27,153.54Z"
41
+ transform="translate(-104.7 -104.7)" />
42
+ <path class="cls-3"
43
+ d="M179,227.42h0c-.19,9.68,11.57,13.12,17.66,7.29a9.28,9.28,0,0,0,2.83-5.88c.18-7.76-6.46-10.35-10.69-10.16C185.57,218.87,179.88,220.87,179,227.42Z"
44
+ transform="translate(-104.7 -104.7)" />
45
+ <path class="cls-3"
46
+ d="M204.22,217.21a12,12,0,0,0,19.66-8.43,11.41,11.41,0,0,0-12.39-11.7C201,197.9,196.43,210.5,204.22,217.21Z"
47
+ transform="translate(-104.7 -104.7)" />
48
+ <path class="cls-3"
49
+ d="M228.82,197.42c7.56,6.34,19.87,2.09,20.5-10,0-7.8-6.35-13.72-13.86-12.94C224.45,175.66,220.24,190.22,228.82,197.42Z"
50
+ transform="translate(-104.7 -104.7)" />
51
+ <path class="cls-3"
52
+ d="M200.28,166.05h0c1.09,11.81,14.91,14.82,21.05,7.1a11.58,11.58,0,0,0,2.43-7.48h0a12.14,12.14,0,0,0-13.37-11.55A11.64,11.64,0,0,0,200.28,166.05Z"
53
+ transform="translate(-104.7 -104.7)" />
54
+ <path class="cls-4"
55
+ d="M156.49,217.21a12,12,0,0,0,19.67-8.43,11.41,11.41,0,0,0-12.39-11.7C153.26,197.9,148.71,210.5,156.49,217.21Z"
56
+ transform="translate(-104.7 -104.7)" />
57
+ <path class="cls-4"
58
+ d="M181.1,197.42c7.56,6.34,19.87,2.09,20.49-10,0-7.8-6.35-13.72-13.86-12.94C176.73,175.66,172.51,190.22,181.1,197.42Z"
59
+ transform="translate(-104.7 -104.7)" />
60
+ <path class="cls-4"
61
+ d="M152.56,166.05h0c1.09,11.81,14.91,14.82,21.05,7.1a11.7,11.7,0,0,0,2.43-7.48h0c-.79-8.95-8.29-12.14-13.37-11.55A11.64,11.64,0,0,0,152.56,166.05Z"
62
+ transform="translate(-104.7 -104.7)" />
63
+ <path class="cls-5"
64
+ d="M132.59,197.42c7.56,6.34,19.87,2.09,20.5-10,0-7.8-6.35-13.72-13.86-12.94C128.23,175.66,124,190.22,132.59,197.42Z"
65
+ transform="translate(-104.7 -104.7)" />
66
+ <path class="cls-1"
67
+ d="M668.64,130.35h-2.56v-2h7.3v2h-2.54v6.59h-2.2Zm7.31-2h2.56l1.19,2.92.66,2h.11l.69-2,1.16-2.92h2.53v8.6h-2V133.8l.25-3.06H683l-1.77,4.9h-1.59l-1.77-4.9h-.11l.25,3.06v3.14h-2Z"
68
+ transform="translate(-104.7 -104.7)" />
69
+ </svg>
package/dist/index.js CHANGED
@@ -1,7 +1,226 @@
1
- var T=Object.defineProperty;var c=(e,n)=>T(e,"name",{value:n,configurable:!0});import{Runtime as C,Library as M,Inspector as L}from"@observablehq/runtime";import{compile as P}from"@hpcc-js/observablehq-compiler";import{ojs2notebook as N}from"@hpcc-js/observablehq-compiler";var b={type:"js",exec:!1,echo:void 0,hide:void 0};function g(e){return e.exec===!0?e.echo===!0:e.echo!==!1}c(g,"showSrc");function x(e){return e.exec===!0}c(x,"executeSrc");function h(e){return e.exec==!0&&e.hide!==!0}c(h,"renderExecutedSrc");var w=0;function F(e){return`fence-${++w}${e?`-${e}`:""}`}c(F,"createId");function O(e,n){let r=[];try{let t=N(e);for(let o=0;o<t.nodes.length;++o){let i=F(o+1),s=t.nodes[o].value;r.push({...n,id:i,content:s,innerHTML:`<span id="${i}" >
2
- ${h(n)?"...":""}
3
- </span>`})}}catch(t){let o=`fence-${w}-error`;r.push({...n,id:o,content:JSON.stringify(t),innerHTML:`<span id="${o}" class="red">
4
- ${JSON.stringify(t)}
5
- </span>`})}return r}c(O,"calcPlaceholders");var a="ENV_OBSERVABLE";function u(e,n,r){return r[a]||(r[a]=[]),O(e,n).reduce((t,o)=>(r[a].push({...o,innerHTML:void 0}),t+o.innerHTML),"")}c(u,"generatePlaceholders");var k=class extends L{constructor(r){super(r);this.placeholder=r}static{c(this,"Inspector")}pending(){super.pending()}fulfilled(r,t){switch(typeof r){case"string":this.placeholder.innerText=r;break;default:super.fulfilled(r)}}rejected(r){super.rejected(r)}};async function R(e){let n={},r={nodes:[],files:[]};for(let i of e)r.nodes.push({id:i.id,name:i.id,mode:"js",value:i.content}),n[i.id]=h(i);let t=await P(r),o=new C(new M);o.module(t,()=>{t(o,(i,s)=>{let l=globalThis?.document?.getElementById(""+s);return l&&n[s]?new k(l):{pending(){},fulfilled(d,f){},rejected(d,f){}}})})}c(R,"render");function S(e,n,r,t,o){return u(e[n].content,{type:"js",exec:!0},t)}c(S,"renderObservable");var y=36,m=123,I=125;function*E(e,n=0,r=e.length){if(e.charCodeAt(n)===y&&e.charCodeAt(n+1)===m){n+=2;let t=n,o=0,i=!1;for(;!i&&n<r;){switch(e.charCodeAt(n)){case m:o++;break;case I:o===0?(i=!0,--n):o--;break}n++}let s=n;if(n>=r||t==s||e.charCodeAt(n)!==I)return;n++,yield{type:"placeholder",content:e.slice(t,s).trim(),pos:n}}}c(E,"parsePlaceholderInline");function*v(e){let n=0,r=0,t=e.length;for(;n<t;)if(e.charCodeAt(n)===y&&e.charCodeAt(n+1)===m){yield{type:"html_block",content:e.slice(r,n)};for(let o of E(e,n,t))yield o,n=o.pos,r=n}else n++;n>r&&(yield{type:"html_block",content:e.slice(r,n)})}c(v,"parsePlaceholderBlock");var A=c((e,n)=>{if(n||e.pos+2>e.posMax)return!1;let r=e.src.charCodeAt(e.pos),t=e.src.charCodeAt(e.pos+1);if(r!==y||t!==m)return!1;for(let{type:o,content:i,pos:s}of E(e.src,e.pos,e.posMax)){if(o!=="placeholder")break;let l=e.push(o,"",0);return l.content=i,e.pos=s,!0}return!1},"transformPlaceholderInline"),V=c(e=>{let{tokens:n}=e;for(let r=0,t=n.length;r<t;++r){let o=n[r];if(o.type==="html_block"){let i=[];for(let{type:s,content:l}of v(o.content)){let d=new e.Token(s,"",0);d.content=l,i.push(d)}if(i.length===1&&i[0].type==="html_block")n[r].content=i[0].content;else{let s=new e.Token("inline","",0);s.children=i,n[r]=s}}}},"transformPlaceholderCore");function _(e){e.inline.ruler.push("placeholder",A),e.core.ruler.after("inline","placeholder",V),e.renderer.rules.placeholder=(n,r,t,o,i)=>S(n,r,t,o,i)}c(_,"hookTemplateLiterals");var $=c(e=>e.split(/\s+/).reduce((n,r,t)=>{if(t===0)return n.type=r,n;let[o,i]=r.split("=");switch(o){case"exec":case"echo":case"hide":n[o]=i!=="false";break}return n},{...b}),"deserializeFenceInfo"),H=c((e,n,r,t,o)=>o.renderToken(e,n,r),"proxy");function j(e){let n=e.renderer.rules.fence||H,r=c((t,o,i,s,l)=>{let d=t[o],f=$(d.info);f.type==="javascript"&&(f.type="js"),d.content+=`
6
- `;let p="";switch(f.type){case"js":if(x(f)&&(s[a]||(s[a]=[]),p+=u(d.content,f,s)),g(f))return p+n(t,o,i,s,l);break;default:return p+n(t,o,i,s,l)}return p},"fenceRenderer");e.renderer.rules.fence=r}c(j,"hookFence");function B(e){let n=e.render;e.render=(r,t)=>{let o={...t},i=n.call(e,r,o);return R(o[a]??[]),i}}c(B,"hookRender");function Y(e){let n=e.render;e.render=(r,t)=>{let o=t??{},i=n.call(e,r,o);if(t[a]?.length){let s=encodeURI(JSON.stringify(t[a]));i+=`<RenderComponent content="${s}" />`}return i}}c(Y,"hookVitepressRender");function de(e,n={}){_(e),j(e),n.vitePress?Y(e):B(e)}c(de,"observable");export{de as observable,R as render};
1
+ import { Runtime, Library, Inspector as Inspector$1 } from "@observablehq/runtime";
2
+ import { ojs2notebook, compile } from "@hpcc-js/observablehq-compiler";
3
+ const fenceInfoDefaults = {
4
+ type: "js",
5
+ exec: !1,
6
+ echo: void 0,
7
+ hide: void 0
8
+ };
9
+ function showSrc(fetchInfo) {
10
+ return fetchInfo.exec === !0 ? fetchInfo.echo === !0 : fetchInfo.echo !== !1;
11
+ }
12
+ function executeSrc(fenceInfo) {
13
+ return fenceInfo.exec === !0;
14
+ }
15
+ function renderExecutedSrc(fetchInfo) {
16
+ return fetchInfo.exec == !0 && fetchInfo.hide !== !0;
17
+ }
18
+ let idx = 0;
19
+ function createId(suffix) {
20
+ return `fence-${++idx}${suffix ? `-${suffix}` : ""}`;
21
+ }
22
+ function calcPlaceholders(content, fenceInfo) {
23
+ const retVal = [];
24
+ try {
25
+ const cellNb = ojs2notebook(content);
26
+ for (let i = 0; i < cellNb.nodes.length; ++i) {
27
+ const id = createId(i + 1), content2 = cellNb.nodes[i].value;
28
+ retVal.push({
29
+ ...fenceInfo,
30
+ id,
31
+ content: content2,
32
+ innerHTML: `<span id="${id}" >
33
+ ${renderExecutedSrc(fenceInfo) ? "..." : ""}
34
+ </span>`
35
+ });
36
+ }
37
+ } catch (e) {
38
+ const id = `fence-${idx}-error`;
39
+ retVal.push({
40
+ ...fenceInfo,
41
+ id,
42
+ content: JSON.stringify(e),
43
+ innerHTML: `<span id="${id}" class="red">
44
+ ${JSON.stringify(e)}
45
+ </span>`
46
+ });
47
+ }
48
+ return retVal;
49
+ }
50
+ const ENV_KEY = "ENV_OBSERVABLE";
51
+ function generatePlaceholders(content, fenceInfo, env) {
52
+ return env[ENV_KEY] || (env[ENV_KEY] = []), calcPlaceholders(content, fenceInfo).reduce((acc, cur) => (env[ENV_KEY].push({ ...cur, innerHTML: void 0 }), acc + cur.innerHTML), "");
53
+ }
54
+ class Inspector extends Inspector$1 {
55
+ constructor(placeholder) {
56
+ super(placeholder), this.placeholder = placeholder;
57
+ }
58
+ pending() {
59
+ super.pending();
60
+ }
61
+ fulfilled(value, _name) {
62
+ switch (typeof value) {
63
+ case "string":
64
+ this.placeholder.innerText = value;
65
+ break;
66
+ default:
67
+ super.fulfilled(value);
68
+ }
69
+ }
70
+ rejected(error) {
71
+ super.rejected(error);
72
+ }
73
+ }
74
+ async function render(nodes) {
75
+ const displayIndex = {}, nb = { nodes: [], files: [] };
76
+ for (const node of nodes)
77
+ nb.nodes.push({
78
+ id: node.id,
79
+ name: node.id,
80
+ mode: "js",
81
+ value: node.content
82
+ }), displayIndex[node.id] = renderExecutedSrc(node);
83
+ const define = await compile(nb), runtime = new Runtime(new Library());
84
+ runtime.module(define, () => {
85
+ define(runtime, (_name, id) => {
86
+ var _a;
87
+ const placeholder = (_a = globalThis == null ? void 0 : globalThis.document) == null ? void 0 : _a.getElementById("" + id);
88
+ return placeholder && displayIndex[id] ? new Inspector(placeholder) : {
89
+ pending() {
90
+ },
91
+ fulfilled(_value, _name2) {
92
+ },
93
+ rejected(_error, _name2) {
94
+ }
95
+ };
96
+ });
97
+ });
98
+ }
99
+ function renderObservable(tokens, idx2, _options, env, _self) {
100
+ return generatePlaceholders(tokens[idx2].content, { type: "js", exec: !0 }, env);
101
+ }
102
+ const DOLLAR = 36, CURLEY_OPEN = 123, CURLEY_CLOSE = 125;
103
+ function* parsePlaceholderInline(src, pos = 0, posMax = src.length) {
104
+ if (src.charCodeAt(pos) === DOLLAR && src.charCodeAt(pos + 1) === CURLEY_OPEN) {
105
+ pos += 2;
106
+ const observableStart = pos;
107
+ let nestedCurly = 0, done = !1;
108
+ for (; !done && pos < posMax; ) {
109
+ switch (src.charCodeAt(pos)) {
110
+ case CURLEY_OPEN:
111
+ nestedCurly++;
112
+ break;
113
+ case CURLEY_CLOSE:
114
+ nestedCurly === 0 ? (done = !0, --pos) : nestedCurly--;
115
+ break;
116
+ }
117
+ pos++;
118
+ }
119
+ const observableEnd = pos;
120
+ if (pos >= posMax || observableStart == observableEnd || src.charCodeAt(pos) !== CURLEY_CLOSE) return;
121
+ pos++, yield { type: "placeholder", content: src.slice(observableStart, observableEnd).trim(), pos };
122
+ }
123
+ }
124
+ function* parsePlaceholderBlock(src) {
125
+ let pos = 0, prevPos = 0;
126
+ const posMax = src.length;
127
+ for (; pos < posMax; )
128
+ if (src.charCodeAt(pos) === DOLLAR && src.charCodeAt(pos + 1) === CURLEY_OPEN) {
129
+ yield { type: "html_block", content: src.slice(prevPos, pos) };
130
+ for (const placeholder of parsePlaceholderInline(src, pos, posMax))
131
+ yield placeholder, pos = placeholder.pos, prevPos = pos;
132
+ } else
133
+ pos++;
134
+ pos > prevPos && (yield { type: "html_block", content: src.slice(prevPos, pos) });
135
+ }
136
+ const transformPlaceholderInline = (state, silent) => {
137
+ if (silent || state.pos + 2 > state.posMax) return !1;
138
+ const marker1 = state.src.charCodeAt(state.pos), marker2 = state.src.charCodeAt(state.pos + 1);
139
+ if (marker1 !== DOLLAR || marker2 !== CURLEY_OPEN) return !1;
140
+ for (const { type, content, pos } of parsePlaceholderInline(state.src, state.pos, state.posMax)) {
141
+ if (type !== "placeholder") break;
142
+ const token = state.push(type, "", 0);
143
+ return token.content = content, state.pos = pos, !0;
144
+ }
145
+ return !1;
146
+ }, transformPlaceholderCore = (state) => {
147
+ const { tokens } = state;
148
+ for (let i = 0, n = tokens.length; i < n; ++i) {
149
+ const token = tokens[i];
150
+ if (token.type === "html_block") {
151
+ const children = [];
152
+ for (const { type, content } of parsePlaceholderBlock(token.content)) {
153
+ const child = new state.Token(type, "", 0);
154
+ child.content = content, children.push(child);
155
+ }
156
+ if (children.length === 1 && children[0].type === "html_block")
157
+ tokens[i].content = children[0].content;
158
+ else {
159
+ const inline = new state.Token("inline", "", 0);
160
+ inline.children = children, tokens[i] = inline;
161
+ }
162
+ }
163
+ }
164
+ };
165
+ function hookTemplateLiterals(md) {
166
+ md.inline.ruler.push("placeholder", transformPlaceholderInline), md.core.ruler.after("inline", "placeholder", transformPlaceholderCore), md.renderer.rules.placeholder = (tokens, idx2, options, env, self) => renderObservable(tokens, idx2, options, env);
167
+ }
168
+ const deserializeFenceInfo = (attrs) => attrs.split(/\s+/).reduce((acc, pair, idx2) => {
169
+ if (idx2 === 0)
170
+ return acc.type = pair, acc;
171
+ const [key, value] = pair.split("=");
172
+ switch (key) {
173
+ case "exec":
174
+ case "echo":
175
+ case "hide":
176
+ acc[key] = value !== "false";
177
+ break;
178
+ }
179
+ return acc;
180
+ }, { ...fenceInfoDefaults }), proxy = (tokens, idx2, options, _env, self) => self.renderToken(tokens, idx2, options);
181
+ function hookFence(md) {
182
+ const defaultFenceRenderer = md.renderer.rules.fence || proxy, fenceRenderer = (tokens, idx2, options, env, self) => {
183
+ const token = tokens[idx2], fenceInfo = deserializeFenceInfo(token.info);
184
+ fenceInfo.type === "javascript" && (fenceInfo.type = "js"), token.content += `
185
+ `;
186
+ let preHtml = "";
187
+ switch (fenceInfo.type) {
188
+ case "js":
189
+ if (executeSrc(fenceInfo) && (env[ENV_KEY] || (env[ENV_KEY] = []), preHtml += generatePlaceholders(token.content, fenceInfo, env)), showSrc(fenceInfo))
190
+ return preHtml + defaultFenceRenderer(tokens, idx2, options, env, self);
191
+ break;
192
+ default:
193
+ return preHtml + defaultFenceRenderer(tokens, idx2, options, env, self);
194
+ }
195
+ return preHtml;
196
+ };
197
+ md.renderer.rules.fence = fenceRenderer;
198
+ }
199
+ function hookRender(md) {
200
+ const originalRender = md.render;
201
+ md.render = (src, _env) => {
202
+ const env = { ..._env }, retVal = originalRender.call(md, src, env);
203
+ return render(env[ENV_KEY] ?? []), retVal;
204
+ };
205
+ }
206
+ function hookVitepressRender(md) {
207
+ const originalRender = md.render;
208
+ md.render = (src, env) => {
209
+ var _a;
210
+ const myEnv = env ?? {};
211
+ let retVal = originalRender.call(md, src, myEnv);
212
+ if ((_a = env[ENV_KEY]) != null && _a.length) {
213
+ const content = encodeURI(JSON.stringify(env[ENV_KEY]));
214
+ retVal += `<RenderComponent content="${content}" />`;
215
+ }
216
+ return retVal;
217
+ };
218
+ }
219
+ function observable(md, opts = {}) {
220
+ hookTemplateLiterals(md), hookFence(md), opts.vitePress ? hookVitepressRender(md) : hookRender(md);
221
+ }
222
+ export {
223
+ observable,
224
+ render
225
+ };
7
226
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/render.ts", "../src/util.ts", "../src/template-literal.ts", "../src/fence.ts", "../src/index.ts"],
4
- "sourcesContent": ["import { Runtime, Library, Inspector as BaseInspector } from \"@observablehq/runtime\";\nimport { compile, type ohq } from \"@hpcc-js/observablehq-compiler\";\nimport { FenceInfo, renderExecutedSrc } from \"./util.ts\";\n\nclass Inspector extends BaseInspector {\n\n constructor(protected placeholder: HTMLElement) {\n super(placeholder);\n }\n\n pending() {\n super.pending();\n }\n\n fulfilled(value: any, _name?: string) {\n switch (typeof value) {\n case \"string\":\n this.placeholder.innerText = value;\n break;\n default:\n super.fulfilled(value);\n }\n }\n\n rejected(error: Error) {\n super.rejected(error);\n }\n}\n\nexport interface RenderNode extends FenceInfo {\n id: string;\n content: string;\n innerHTML?: string;\n}\n\nexport async function render(nodes: RenderNode[]) {\n const displayIndex: { [key: string]: boolean } = {};\n const nb: ohq.Notebook = { nodes: [], files: [] };\n for (const node of nodes) {\n nb.nodes.push({\n id: node.id,\n name: node.id,\n mode: \"js\",\n value: node.content\n });\n displayIndex[node.id] = renderExecutedSrc(node);\n }\n const define = await compile(nb);\n const runtime = new Runtime(new Library());\n runtime.module(define, () => {\n define(runtime, (_name: string | undefined, id: string | number) => {\n const placeholder = globalThis?.document?.getElementById(\"\" + id);\n if (placeholder && displayIndex[id]) {\n return new Inspector(placeholder);\n }\n return {\n pending() { },\n fulfilled(_value: any, _name?: string) { },\n rejected(_error: any, _name?: string) { }\n };\n });\n });\n}\n", "import { ojs2notebook } from \"@hpcc-js/observablehq-compiler\";\nimport { RenderNode } from \"./render.ts\";\n\nexport interface FenceInfo {\n type: \"js\" | \"javascript\" | string;\n exec?: boolean;\n echo?: boolean;\n hide?: boolean;\n}\n\nexport const fenceInfoDefaults: Readonly<FenceInfo> = {\n type: \"js\",\n exec: false,\n echo: undefined,\n hide: undefined\n};\n\nexport function showSrc(fetchInfo: FenceInfo): boolean {\n if (fetchInfo.exec === true) {\n return fetchInfo.echo === true;\n }\n return fetchInfo.echo !== false;\n}\n\nexport function executeSrc(fenceInfo: FenceInfo): boolean {\n return fenceInfo.exec === true;\n}\n\nexport function renderExecutedSrc(fetchInfo: FenceInfo): boolean {\n return fetchInfo.exec == true && fetchInfo.hide !== true;\n}\n\nlet idx = 0;\nexport function createId(suffix?: string | number): string {\n return `fence-${++idx}${suffix ? `-${suffix}` : \"\"}`;\n}\n\nfunction calcPlaceholders(content: string, fenceInfo: FenceInfo): RenderNode[] {\n const retVal: RenderNode[] = [];\n try {\n const cellNb = ojs2notebook(content);\n for (let i = 0; i < cellNb.nodes.length; ++i) {\n const id = createId(i + 1);\n const content = cellNb.nodes[i].value;\n retVal.push({\n ...fenceInfo,\n id,\n content,\n innerHTML: `\\\n<span id=\"${id}\" >\n ${renderExecutedSrc(fenceInfo) ? \"...\" : \"\"}\n</span>`\n });\n }\n } catch (e: any) {\n const id = `fence-${idx}-error`;\n retVal.push({\n ...fenceInfo,\n id,\n content: JSON.stringify(e),\n innerHTML: `\\\n<span id=\"${id}\" class=\"red\">\n ${JSON.stringify(e)}\n</span>`\n });\n }\n return retVal;\n}\n\nexport const ENV_KEY = \"ENV_OBSERVABLE\";\n\nexport function generatePlaceholders(content: string, fenceInfo: FenceInfo, env: any): string {\n if (!env[ENV_KEY]) {\n env[ENV_KEY] = [];\n }\n return calcPlaceholders(content, fenceInfo).reduce((acc, cur) => {\n env[ENV_KEY]!.push({ ...cur, innerHTML: undefined });\n return acc + cur.innerHTML;\n }, \"\");\n}\n\n", "import type MarkdownIt from \"markdown-it\";\nimport type { Options } from \"markdown-it\";\nimport type Token from \"markdown-it/lib/token.mjs\";\nimport type Renderer from \"markdown-it/lib/renderer.mjs\";\nimport type { RuleCore } from \"markdown-it/lib/parser_core.mjs\";\nimport type { RuleInline } from \"markdown-it/lib/parser_inline.mjs\";\nimport { generatePlaceholders } from \"./util.ts\";\n\nfunction renderObservable(tokens: Token[], idx: number, _options: Options, env: any, _self: Renderer) {\n return generatePlaceholders(tokens[idx].content, { type: \"js\", exec: true }, env);\n}\n\nconst DOLLAR = 0x24;\nconst CURLEY_OPEN = 0x7B;\nconst CURLEY_CLOSE = 0x7D;\n\nfunction* parsePlaceholderInline(src: string, pos: number = 0, posMax: number = src.length) {\n if (src.charCodeAt(pos) === DOLLAR && src.charCodeAt(pos + 1) === CURLEY_OPEN) {\n pos += 2;\n\n const observableStart = pos;\n let nestedCurly = 0;\n let done = false;\n while (!done && pos < posMax) {\n switch (src.charCodeAt(pos)) {\n case CURLEY_OPEN:\n nestedCurly++;\n break;\n case CURLEY_CLOSE:\n if (nestedCurly === 0) {\n done = true;\n --pos;\n } else {\n nestedCurly--;\n }\n break;\n }\n pos++;\n }\n const observableEnd = pos;\n if (pos >= posMax || observableStart == observableEnd) return;\n if (src.charCodeAt(pos) !== CURLEY_CLOSE) return;\n pos++;\n\n const observableJs = src.slice(observableStart, observableEnd).trim();\n yield { type: \"placeholder\", content: observableJs, pos };\n }\n}\n\nfunction* parsePlaceholderBlock(src: string) {\n let pos = 0;\n let prevPos = 0;\n const posMax = src.length;\n while (pos < posMax) {\n if (src.charCodeAt(pos) === DOLLAR && src.charCodeAt(pos + 1) === CURLEY_OPEN) {\n yield ({ type: \"html_block\", content: src.slice(prevPos, pos) });\n for (const placeholder of parsePlaceholderInline(src, pos, posMax)) {\n yield placeholder;\n pos = placeholder.pos;\n prevPos = pos;\n }\n } else {\n pos++;\n }\n }\n if (pos > prevPos) {\n yield ({ type: \"html_block\", content: src.slice(prevPos, pos) });\n }\n}\n\nconst transformPlaceholderInline: RuleInline = (state, silent) => {\n if (silent || state.pos + 2 > state.posMax) return false;\n const marker1 = state.src.charCodeAt(state.pos);\n const marker2 = state.src.charCodeAt(state.pos + 1);\n if (marker1 !== DOLLAR || marker2 !== CURLEY_OPEN) return false;\n for (const { type, content, pos } of parsePlaceholderInline(state.src, state.pos, state.posMax)) {\n if (type !== \"placeholder\") break;\n const token = state.push(type, \"\", 0);\n token.content = content;\n state.pos = pos;\n return true;\n }\n return false;\n};\n\nconst transformPlaceholderCore: RuleCore = (state) => {\n const { tokens } = state;\n for (let i = 0, n = tokens.length; i < n; ++i) {\n const token = tokens[i];\n if (token.type === \"html_block\") {\n const children: Token[] = [];\n for (const { type, content } of parsePlaceholderBlock(token.content)) {\n const child = new state.Token(type, \"\", 0);\n child.content = content;\n children.push(child);\n }\n if (children.length === 1 && children[0].type === \"html_block\") {\n tokens[i].content = children[0].content;\n } else {\n const inline = new state.Token(\"inline\", \"\", 0);\n inline.children = children;\n tokens[i] = inline;\n }\n }\n }\n};\n\nexport function hookTemplateLiterals(md: MarkdownIt) {\n md.inline.ruler.push(\"placeholder\", transformPlaceholderInline);\n md.core.ruler.after(\"inline\", \"placeholder\", transformPlaceholderCore);\n md.renderer.rules.placeholder = (tokens: Token[], idx: number, options: any, env: any, self: Renderer) => renderObservable(tokens, idx, options, env, self);\n}\n\n", "import type MarkdownIt from \"markdown-it\";\nimport type { Options } from \"markdown-it\";\nimport type Token from \"markdown-it/lib/token.mjs\";\nimport type Renderer from \"markdown-it/lib/renderer.mjs\";\nimport { RenderNode } from \"./render.ts\";\nimport { ENV_KEY, executeSrc, FenceInfo, fenceInfoDefaults, generatePlaceholders, showSrc } from \"./util.ts\";\n\nconst deserializeFenceInfo = (attrs: string): FenceInfo =>\n attrs\n .split(/\\s+/)\n .reduce((acc: FenceInfo, pair, idx: number) => {\n if (idx === 0) {\n acc.type = pair as \"js\" | \"javascript\" | string;\n return acc;\n }\n\n const [key, value] = pair.split(\"=\") as [keyof FenceInfo, string];\n switch (key) {\n case \"exec\":\n case \"echo\":\n case \"hide\":\n acc[key] = value !== \"false\";\n break;\n }\n return acc;\n }, { ...fenceInfoDefaults })\n ;\n\nconst proxy = (tokens: Token[], idx: number, options: Options, _env: any, self: Renderer) => self.renderToken(tokens, idx, options);\n\nexport function hookFence(md: MarkdownIt) {\n const defaultFenceRenderer = md.renderer.rules.fence || proxy;\n const fenceRenderer = (tokens: Token[], idx: number, options: Options, env: { [ENV_KEY]?: RenderNode[] }, self: Renderer) => {\n const token = tokens[idx];\n const fenceInfo = deserializeFenceInfo(token.info);\n if (fenceInfo.type === \"javascript\") {\n fenceInfo.type = \"js\";\n }\n token.content += \"\\n\";\n let preHtml = \"\";\n switch (fenceInfo.type) {\n case \"js\":\n if (executeSrc(fenceInfo)) {\n if (!env[ENV_KEY]) {\n env[ENV_KEY] = [];\n }\n preHtml += generatePlaceholders(token.content, fenceInfo, env);\n }\n if (showSrc(fenceInfo)) {\n return preHtml + defaultFenceRenderer(tokens, idx, options, env, self);\n }\n break;\n default:\n return preHtml + defaultFenceRenderer(tokens, idx, options, env, self);\n }\n return preHtml;\n };\n md.renderer.rules.fence = fenceRenderer;\n}\n", "import type MarkdownIt from \"markdown-it\";\nimport { render } from \"./render.ts\";\nimport { ENV_KEY } from \"./util.ts\";\nimport { hookTemplateLiterals } from \"./template-literal.ts\";\nimport { hookFence } from \"./fence.ts\";\n\nfunction hookRender(md: MarkdownIt) {\n const originalRender = md.render;\n md.render = (src: string, _env?: any): string => {\n const env = { ..._env };\n const retVal = originalRender.call(md, src, env);\n render(env[ENV_KEY] ?? []);\n return retVal;\n };\n}\n\nfunction hookVitepressRender(md: MarkdownIt) {\n\n const originalRender = md.render;\n md.render = (src: string, env?: any): string => {\n const myEnv = env ?? {};\n let retVal = originalRender.call(md, src, myEnv);\n if (env[ENV_KEY]?.length) {\n const content = encodeURI(JSON.stringify(env[ENV_KEY]));\n retVal += `<RenderComponent content=\"${content}\" />`;\n }\n return retVal;\n };\n}\n\nexport interface ObservableOptions {\n vitePress?: boolean;\n}\n\nexport function observable(md: MarkdownIt, opts: ObservableOptions = {}) {\n hookTemplateLiterals(md);\n hookFence(md);\n if (opts.vitePress) {\n hookVitepressRender(md);\n } else {\n hookRender(md);\n }\n}\n\nexport {\n render\n};\n"],
5
- "mappings": "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",
6
- "names": ["Runtime", "Library", "BaseInspector", "compile", "ojs2notebook", "fenceInfoDefaults", "showSrc", "fetchInfo", "__name", "executeSrc", "fenceInfo", "renderExecutedSrc", "idx", "createId", "suffix", "calcPlaceholders", "content", "retVal", "cellNb", "ojs2notebook", "i", "id", "e", "ENV_KEY", "generatePlaceholders", "env", "acc", "cur", "Inspector", "BaseInspector", "placeholder", "__name", "value", "_name", "error", "render", "nodes", "displayIndex", "nb", "node", "renderExecutedSrc", "define", "compile", "runtime", "Runtime", "Library", "id", "_value", "_error", "renderObservable", "tokens", "idx", "_options", "env", "_self", "generatePlaceholders", "__name", "DOLLAR", "CURLEY_OPEN", "CURLEY_CLOSE", "parsePlaceholderInline", "src", "pos", "posMax", "observableStart", "nestedCurly", "done", "observableEnd", "parsePlaceholderBlock", "prevPos", "placeholder", "transformPlaceholderInline", "state", "silent", "marker1", "marker2", "type", "content", "token", "transformPlaceholderCore", "i", "n", "children", "child", "inline", "hookTemplateLiterals", "md", "options", "self", "deserializeFenceInfo", "__name", "attrs", "acc", "pair", "idx", "key", "value", "fenceInfoDefaults", "proxy", "tokens", "options", "_env", "self", "hookFence", "md", "defaultFenceRenderer", "fenceRenderer", "env", "token", "fenceInfo", "preHtml", "executeSrc", "ENV_KEY", "generatePlaceholders", "showSrc", "hookRender", "md", "originalRender", "src", "_env", "env", "retVal", "render", "ENV_KEY", "__name", "hookVitepressRender", "myEnv", "content", "observable", "opts", "hookTemplateLiterals", "hookFence"]
7
- }
1
+ {"version":3,"file":"index.js","sources":["../src/util.ts","../src/render.ts","../src/template-literal.ts","../src/fence.ts","../src/index.ts"],"sourcesContent":["import { ojs2notebook } from \"@hpcc-js/observablehq-compiler\";\nimport { RenderNode } from \"./render.ts\";\n\nexport interface FenceInfo {\n type: \"js\" | \"javascript\" | string;\n exec?: boolean;\n echo?: boolean;\n hide?: boolean;\n}\n\nexport const fenceInfoDefaults: Readonly<FenceInfo> = {\n type: \"js\",\n exec: false,\n echo: undefined,\n hide: undefined\n};\n\nexport function showSrc(fetchInfo: FenceInfo): boolean {\n if (fetchInfo.exec === true) {\n return fetchInfo.echo === true;\n }\n return fetchInfo.echo !== false;\n}\n\nexport function executeSrc(fenceInfo: FenceInfo): boolean {\n return fenceInfo.exec === true;\n}\n\nexport function renderExecutedSrc(fetchInfo: FenceInfo): boolean {\n return fetchInfo.exec == true && fetchInfo.hide !== true;\n}\n\nlet idx = 0;\nexport function createId(suffix?: string | number): string {\n return `fence-${++idx}${suffix ? `-${suffix}` : \"\"}`;\n}\n\nfunction calcPlaceholders(content: string, fenceInfo: FenceInfo): RenderNode[] {\n const retVal: RenderNode[] = [];\n try {\n const cellNb = ojs2notebook(content);\n for (let i = 0; i < cellNb.nodes.length; ++i) {\n const id = createId(i + 1);\n const content = cellNb.nodes[i].value;\n retVal.push({\n ...fenceInfo,\n id,\n content,\n innerHTML: `\\\n<span id=\"${id}\" >\n ${renderExecutedSrc(fenceInfo) ? \"...\" : \"\"}\n</span>`\n });\n }\n } catch (e: any) {\n const id = `fence-${idx}-error`;\n retVal.push({\n ...fenceInfo,\n id,\n content: JSON.stringify(e),\n innerHTML: `\\\n<span id=\"${id}\" class=\"red\">\n ${JSON.stringify(e)}\n</span>`\n });\n }\n return retVal;\n}\n\nexport const ENV_KEY = \"ENV_OBSERVABLE\";\n\nexport function generatePlaceholders(content: string, fenceInfo: FenceInfo, env: any): string {\n if (!env[ENV_KEY]) {\n env[ENV_KEY] = [];\n }\n return calcPlaceholders(content, fenceInfo).reduce((acc, cur) => {\n env[ENV_KEY]!.push({ ...cur, innerHTML: undefined });\n return acc + cur.innerHTML;\n }, \"\");\n}\n\n","import { Runtime, Library, Inspector as BaseInspector } from \"@observablehq/runtime\";\nimport { compile, type ohq } from \"@hpcc-js/observablehq-compiler\";\nimport { FenceInfo, renderExecutedSrc } from \"./util.ts\";\n\nclass Inspector extends BaseInspector {\n\n constructor(protected placeholder: HTMLElement) {\n super(placeholder);\n }\n\n pending() {\n super.pending();\n }\n\n fulfilled(value: any, _name?: string) {\n switch (typeof value) {\n case \"string\":\n this.placeholder.innerText = value;\n break;\n default:\n super.fulfilled(value);\n }\n }\n\n rejected(error: Error) {\n super.rejected(error);\n }\n}\n\nexport interface RenderNode extends FenceInfo {\n id: string;\n content: string;\n innerHTML?: string;\n}\n\nexport async function render(nodes: RenderNode[]) {\n const displayIndex: { [key: string]: boolean } = {};\n const nb: ohq.Notebook = { nodes: [], files: [] };\n for (const node of nodes) {\n nb.nodes.push({\n id: node.id,\n name: node.id,\n mode: \"js\",\n value: node.content\n });\n displayIndex[node.id] = renderExecutedSrc(node);\n }\n const define = await compile(nb);\n const runtime = new Runtime(new Library());\n runtime.module(define, () => {\n define(runtime, (_name: string | undefined, id: string | number) => {\n const placeholder = globalThis?.document?.getElementById(\"\" + id);\n if (placeholder && displayIndex[id]) {\n return new Inspector(placeholder);\n }\n return {\n pending() { },\n fulfilled(_value: any, _name?: string) { },\n rejected(_error: any, _name?: string) { }\n };\n });\n });\n}\n","import type MarkdownIt from \"markdown-it\";\nimport type { Options } from \"markdown-it\";\nimport type Token from \"markdown-it/lib/token.mjs\";\nimport type Renderer from \"markdown-it/lib/renderer.mjs\";\nimport type { RuleCore } from \"markdown-it/lib/parser_core.mjs\";\nimport type { RuleInline } from \"markdown-it/lib/parser_inline.mjs\";\nimport { generatePlaceholders } from \"./util.ts\";\n\nfunction renderObservable(tokens: Token[], idx: number, _options: Options, env: any, _self: Renderer) {\n return generatePlaceholders(tokens[idx].content, { type: \"js\", exec: true }, env);\n}\n\nconst DOLLAR = 0x24;\nconst CURLEY_OPEN = 0x7B;\nconst CURLEY_CLOSE = 0x7D;\n\nfunction* parsePlaceholderInline(src: string, pos: number = 0, posMax: number = src.length) {\n if (src.charCodeAt(pos) === DOLLAR && src.charCodeAt(pos + 1) === CURLEY_OPEN) {\n pos += 2;\n\n const observableStart = pos;\n let nestedCurly = 0;\n let done = false;\n while (!done && pos < posMax) {\n switch (src.charCodeAt(pos)) {\n case CURLEY_OPEN:\n nestedCurly++;\n break;\n case CURLEY_CLOSE:\n if (nestedCurly === 0) {\n done = true;\n --pos;\n } else {\n nestedCurly--;\n }\n break;\n }\n pos++;\n }\n const observableEnd = pos;\n if (pos >= posMax || observableStart == observableEnd) return;\n if (src.charCodeAt(pos) !== CURLEY_CLOSE) return;\n pos++;\n\n const observableJs = src.slice(observableStart, observableEnd).trim();\n yield { type: \"placeholder\", content: observableJs, pos };\n }\n}\n\nfunction* parsePlaceholderBlock(src: string) {\n let pos = 0;\n let prevPos = 0;\n const posMax = src.length;\n while (pos < posMax) {\n if (src.charCodeAt(pos) === DOLLAR && src.charCodeAt(pos + 1) === CURLEY_OPEN) {\n yield ({ type: \"html_block\", content: src.slice(prevPos, pos) });\n for (const placeholder of parsePlaceholderInline(src, pos, posMax)) {\n yield placeholder;\n pos = placeholder.pos;\n prevPos = pos;\n }\n } else {\n pos++;\n }\n }\n if (pos > prevPos) {\n yield ({ type: \"html_block\", content: src.slice(prevPos, pos) });\n }\n}\n\nconst transformPlaceholderInline: RuleInline = (state, silent) => {\n if (silent || state.pos + 2 > state.posMax) return false;\n const marker1 = state.src.charCodeAt(state.pos);\n const marker2 = state.src.charCodeAt(state.pos + 1);\n if (marker1 !== DOLLAR || marker2 !== CURLEY_OPEN) return false;\n for (const { type, content, pos } of parsePlaceholderInline(state.src, state.pos, state.posMax)) {\n if (type !== \"placeholder\") break;\n const token = state.push(type, \"\", 0);\n token.content = content;\n state.pos = pos;\n return true;\n }\n return false;\n};\n\nconst transformPlaceholderCore: RuleCore = (state) => {\n const { tokens } = state;\n for (let i = 0, n = tokens.length; i < n; ++i) {\n const token = tokens[i];\n if (token.type === \"html_block\") {\n const children: Token[] = [];\n for (const { type, content } of parsePlaceholderBlock(token.content)) {\n const child = new state.Token(type, \"\", 0);\n child.content = content;\n children.push(child);\n }\n if (children.length === 1 && children[0].type === \"html_block\") {\n tokens[i].content = children[0].content;\n } else {\n const inline = new state.Token(\"inline\", \"\", 0);\n inline.children = children;\n tokens[i] = inline;\n }\n }\n }\n};\n\nexport function hookTemplateLiterals(md: MarkdownIt) {\n md.inline.ruler.push(\"placeholder\", transformPlaceholderInline);\n md.core.ruler.after(\"inline\", \"placeholder\", transformPlaceholderCore);\n md.renderer.rules.placeholder = (tokens: Token[], idx: number, options: any, env: any, self: Renderer) => renderObservable(tokens, idx, options, env, self);\n}\n\n","import type MarkdownIt from \"markdown-it\";\nimport type { Options } from \"markdown-it\";\nimport type Token from \"markdown-it/lib/token.mjs\";\nimport type Renderer from \"markdown-it/lib/renderer.mjs\";\nimport { RenderNode } from \"./render.ts\";\nimport { ENV_KEY, executeSrc, FenceInfo, fenceInfoDefaults, generatePlaceholders, showSrc } from \"./util.ts\";\n\nconst deserializeFenceInfo = (attrs: string): FenceInfo =>\n attrs\n .split(/\\s+/)\n .reduce((acc: FenceInfo, pair, idx: number) => {\n if (idx === 0) {\n acc.type = pair as \"js\" | \"javascript\" | string;\n return acc;\n }\n\n const [key, value] = pair.split(\"=\") as [keyof FenceInfo, string];\n switch (key) {\n case \"exec\":\n case \"echo\":\n case \"hide\":\n acc[key] = value !== \"false\";\n break;\n }\n return acc;\n }, { ...fenceInfoDefaults })\n ;\n\nconst proxy = (tokens: Token[], idx: number, options: Options, _env: any, self: Renderer) => self.renderToken(tokens, idx, options);\n\nexport function hookFence(md: MarkdownIt) {\n const defaultFenceRenderer = md.renderer.rules.fence || proxy;\n const fenceRenderer = (tokens: Token[], idx: number, options: Options, env: { [ENV_KEY]?: RenderNode[] }, self: Renderer) => {\n const token = tokens[idx];\n const fenceInfo = deserializeFenceInfo(token.info);\n if (fenceInfo.type === \"javascript\") {\n fenceInfo.type = \"js\";\n }\n token.content += \"\\n\";\n let preHtml = \"\";\n switch (fenceInfo.type) {\n case \"js\":\n if (executeSrc(fenceInfo)) {\n if (!env[ENV_KEY]) {\n env[ENV_KEY] = [];\n }\n preHtml += generatePlaceholders(token.content, fenceInfo, env);\n }\n if (showSrc(fenceInfo)) {\n return preHtml + defaultFenceRenderer(tokens, idx, options, env, self);\n }\n break;\n default:\n return preHtml + defaultFenceRenderer(tokens, idx, options, env, self);\n }\n return preHtml;\n };\n md.renderer.rules.fence = fenceRenderer;\n}\n","import type MarkdownIt from \"markdown-it\";\nimport { render } from \"./render.ts\";\nimport { ENV_KEY } from \"./util.ts\";\nimport { hookTemplateLiterals } from \"./template-literal.ts\";\nimport { hookFence } from \"./fence.ts\";\n\nfunction hookRender(md: MarkdownIt) {\n const originalRender = md.render;\n md.render = (src: string, _env?: any): string => {\n const env = { ..._env };\n const retVal = originalRender.call(md, src, env);\n render(env[ENV_KEY] ?? []);\n return retVal;\n };\n}\n\nfunction hookVitepressRender(md: MarkdownIt) {\n\n const originalRender = md.render;\n md.render = (src: string, env?: any): string => {\n const myEnv = env ?? {};\n let retVal = originalRender.call(md, src, myEnv);\n if (env[ENV_KEY]?.length) {\n const content = encodeURI(JSON.stringify(env[ENV_KEY]));\n retVal += `<RenderComponent content=\"${content}\" />`;\n }\n return retVal;\n };\n}\n\nexport interface ObservableOptions {\n vitePress?: boolean;\n}\n\nexport function observable(md: MarkdownIt, opts: ObservableOptions = {}) {\n hookTemplateLiterals(md);\n hookFence(md);\n if (opts.vitePress) {\n hookVitepressRender(md);\n } else {\n hookRender(md);\n }\n}\n\nexport {\n render\n};\n"],"names":["content","BaseInspector","_name","idx"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ (function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@observablehq/runtime"),require("@hpcc-js/observablehq-compiler")):typeof define=="function"&&define.amd?define(["exports","@observablehq/runtime","@hpcc-js/observablehq-compiler"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global["@hpcc-js/markdown-it-plugins"]={},global["@observablehq/runtime"],global["@hpcc-js/observablehq-compiler"]))})(this,function(exports2,runtime,observablehqCompiler){"use strict";const fenceInfoDefaults={type:"js",exec:!1,echo:void 0,hide:void 0};function showSrc(fetchInfo){return fetchInfo.exec===!0?fetchInfo.echo===!0:fetchInfo.echo!==!1}function executeSrc(fenceInfo){return fenceInfo.exec===!0}function renderExecutedSrc(fetchInfo){return fetchInfo.exec==!0&&fetchInfo.hide!==!0}let idx=0;function createId(suffix){return`fence-${++idx}${suffix?`-${suffix}`:""}`}function calcPlaceholders(content,fenceInfo){const retVal=[];try{const cellNb=observablehqCompiler.ojs2notebook(content);for(let i=0;i<cellNb.nodes.length;++i){const id=createId(i+1),content2=cellNb.nodes[i].value;retVal.push({...fenceInfo,id,content:content2,innerHTML:`<span id="${id}" >
2
+ ${renderExecutedSrc(fenceInfo)?"...":""}
3
+ </span>`})}}catch(e){const id=`fence-${idx}-error`;retVal.push({...fenceInfo,id,content:JSON.stringify(e),innerHTML:`<span id="${id}" class="red">
4
+ ${JSON.stringify(e)}
5
+ </span>`})}return retVal}const ENV_KEY="ENV_OBSERVABLE";function generatePlaceholders(content,fenceInfo,env){return env[ENV_KEY]||(env[ENV_KEY]=[]),calcPlaceholders(content,fenceInfo).reduce((acc,cur)=>(env[ENV_KEY].push({...cur,innerHTML:void 0}),acc+cur.innerHTML),"")}class Inspector extends runtime.Inspector{constructor(placeholder){super(placeholder),this.placeholder=placeholder}pending(){super.pending()}fulfilled(value,_name){switch(typeof value){case"string":this.placeholder.innerText=value;break;default:super.fulfilled(value)}}rejected(error){super.rejected(error)}}async function render(nodes){const displayIndex={},nb={nodes:[],files:[]};for(const node of nodes)nb.nodes.push({id:node.id,name:node.id,mode:"js",value:node.content}),displayIndex[node.id]=renderExecutedSrc(node);const define2=await observablehqCompiler.compile(nb),runtime$1=new runtime.Runtime(new runtime.Library);runtime$1.module(define2,()=>{define2(runtime$1,(_name,id)=>{var _a;const placeholder=(_a=globalThis==null?void 0:globalThis.document)==null?void 0:_a.getElementById(""+id);return placeholder&&displayIndex[id]?new Inspector(placeholder):{pending(){},fulfilled(_value,_name2){},rejected(_error,_name2){}}})})}function renderObservable(tokens,idx2,_options,env,_self){return generatePlaceholders(tokens[idx2].content,{type:"js",exec:!0},env)}const DOLLAR=36,CURLEY_OPEN=123,CURLEY_CLOSE=125;function*parsePlaceholderInline(src,pos=0,posMax=src.length){if(src.charCodeAt(pos)===DOLLAR&&src.charCodeAt(pos+1)===CURLEY_OPEN){pos+=2;const observableStart=pos;let nestedCurly=0,done=!1;for(;!done&&pos<posMax;){switch(src.charCodeAt(pos)){case CURLEY_OPEN:nestedCurly++;break;case CURLEY_CLOSE:nestedCurly===0?(done=!0,--pos):nestedCurly--;break}pos++}const observableEnd=pos;if(pos>=posMax||observableStart==observableEnd||src.charCodeAt(pos)!==CURLEY_CLOSE)return;pos++,yield{type:"placeholder",content:src.slice(observableStart,observableEnd).trim(),pos}}}function*parsePlaceholderBlock(src){let pos=0,prevPos=0;const posMax=src.length;for(;pos<posMax;)if(src.charCodeAt(pos)===DOLLAR&&src.charCodeAt(pos+1)===CURLEY_OPEN){yield{type:"html_block",content:src.slice(prevPos,pos)};for(const placeholder of parsePlaceholderInline(src,pos,posMax))yield placeholder,pos=placeholder.pos,prevPos=pos}else pos++;pos>prevPos&&(yield{type:"html_block",content:src.slice(prevPos,pos)})}const transformPlaceholderInline=(state,silent)=>{if(silent||state.pos+2>state.posMax)return!1;const marker1=state.src.charCodeAt(state.pos),marker2=state.src.charCodeAt(state.pos+1);if(marker1!==DOLLAR||marker2!==CURLEY_OPEN)return!1;for(const{type,content,pos}of parsePlaceholderInline(state.src,state.pos,state.posMax)){if(type!=="placeholder")break;const token=state.push(type,"",0);return token.content=content,state.pos=pos,!0}return!1},transformPlaceholderCore=state=>{const{tokens}=state;for(let i=0,n=tokens.length;i<n;++i){const token=tokens[i];if(token.type==="html_block"){const children=[];for(const{type,content}of parsePlaceholderBlock(token.content)){const child=new state.Token(type,"",0);child.content=content,children.push(child)}if(children.length===1&&children[0].type==="html_block")tokens[i].content=children[0].content;else{const inline=new state.Token("inline","",0);inline.children=children,tokens[i]=inline}}}};function hookTemplateLiterals(md){md.inline.ruler.push("placeholder",transformPlaceholderInline),md.core.ruler.after("inline","placeholder",transformPlaceholderCore),md.renderer.rules.placeholder=(tokens,idx2,options,env,self2)=>renderObservable(tokens,idx2,options,env)}const deserializeFenceInfo=attrs=>attrs.split(/\s+/).reduce((acc,pair,idx2)=>{if(idx2===0)return acc.type=pair,acc;const[key,value]=pair.split("=");switch(key){case"exec":case"echo":case"hide":acc[key]=value!=="false";break}return acc},{...fenceInfoDefaults}),proxy=(tokens,idx2,options,_env,self2)=>self2.renderToken(tokens,idx2,options);function hookFence(md){const defaultFenceRenderer=md.renderer.rules.fence||proxy,fenceRenderer=(tokens,idx2,options,env,self2)=>{const token=tokens[idx2],fenceInfo=deserializeFenceInfo(token.info);fenceInfo.type==="javascript"&&(fenceInfo.type="js"),token.content+=`
6
+ `;let preHtml="";switch(fenceInfo.type){case"js":if(executeSrc(fenceInfo)&&(env[ENV_KEY]||(env[ENV_KEY]=[]),preHtml+=generatePlaceholders(token.content,fenceInfo,env)),showSrc(fenceInfo))return preHtml+defaultFenceRenderer(tokens,idx2,options,env,self2);break;default:return preHtml+defaultFenceRenderer(tokens,idx2,options,env,self2)}return preHtml};md.renderer.rules.fence=fenceRenderer}function hookRender(md){const originalRender=md.render;md.render=(src,_env)=>{const env={..._env},retVal=originalRender.call(md,src,env);return render(env[ENV_KEY]??[]),retVal}}function hookVitepressRender(md){const originalRender=md.render;md.render=(src,env)=>{var _a;const myEnv=env??{};let retVal=originalRender.call(md,src,myEnv);if((_a=env[ENV_KEY])!=null&&_a.length){const content=encodeURI(JSON.stringify(env[ENV_KEY]));retVal+=`<RenderComponent content="${content}" />`}return retVal}}function observable(md,opts={}){hookTemplateLiterals(md),hookFence(md),opts.vitePress?hookVitepressRender(md):hookRender(md)}exports2.observable=observable,exports2.render=render,Object.defineProperty(exports2,Symbol.toStringTag,{value:"Module"})});
7
+ //# sourceMappingURL=index.umd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.umd.cjs","sources":["../src/util.ts","../src/render.ts","../src/template-literal.ts","../src/fence.ts","../src/index.ts"],"sourcesContent":["import { ojs2notebook } from \"@hpcc-js/observablehq-compiler\";\nimport { RenderNode } from \"./render.ts\";\n\nexport interface FenceInfo {\n type: \"js\" | \"javascript\" | string;\n exec?: boolean;\n echo?: boolean;\n hide?: boolean;\n}\n\nexport const fenceInfoDefaults: Readonly<FenceInfo> = {\n type: \"js\",\n exec: false,\n echo: undefined,\n hide: undefined\n};\n\nexport function showSrc(fetchInfo: FenceInfo): boolean {\n if (fetchInfo.exec === true) {\n return fetchInfo.echo === true;\n }\n return fetchInfo.echo !== false;\n}\n\nexport function executeSrc(fenceInfo: FenceInfo): boolean {\n return fenceInfo.exec === true;\n}\n\nexport function renderExecutedSrc(fetchInfo: FenceInfo): boolean {\n return fetchInfo.exec == true && fetchInfo.hide !== true;\n}\n\nlet idx = 0;\nexport function createId(suffix?: string | number): string {\n return `fence-${++idx}${suffix ? `-${suffix}` : \"\"}`;\n}\n\nfunction calcPlaceholders(content: string, fenceInfo: FenceInfo): RenderNode[] {\n const retVal: RenderNode[] = [];\n try {\n const cellNb = ojs2notebook(content);\n for (let i = 0; i < cellNb.nodes.length; ++i) {\n const id = createId(i + 1);\n const content = cellNb.nodes[i].value;\n retVal.push({\n ...fenceInfo,\n id,\n content,\n innerHTML: `\\\n<span id=\"${id}\" >\n ${renderExecutedSrc(fenceInfo) ? \"...\" : \"\"}\n</span>`\n });\n }\n } catch (e: any) {\n const id = `fence-${idx}-error`;\n retVal.push({\n ...fenceInfo,\n id,\n content: JSON.stringify(e),\n innerHTML: `\\\n<span id=\"${id}\" class=\"red\">\n ${JSON.stringify(e)}\n</span>`\n });\n }\n return retVal;\n}\n\nexport const ENV_KEY = \"ENV_OBSERVABLE\";\n\nexport function generatePlaceholders(content: string, fenceInfo: FenceInfo, env: any): string {\n if (!env[ENV_KEY]) {\n env[ENV_KEY] = [];\n }\n return calcPlaceholders(content, fenceInfo).reduce((acc, cur) => {\n env[ENV_KEY]!.push({ ...cur, innerHTML: undefined });\n return acc + cur.innerHTML;\n }, \"\");\n}\n\n","import { Runtime, Library, Inspector as BaseInspector } from \"@observablehq/runtime\";\nimport { compile, type ohq } from \"@hpcc-js/observablehq-compiler\";\nimport { FenceInfo, renderExecutedSrc } from \"./util.ts\";\n\nclass Inspector extends BaseInspector {\n\n constructor(protected placeholder: HTMLElement) {\n super(placeholder);\n }\n\n pending() {\n super.pending();\n }\n\n fulfilled(value: any, _name?: string) {\n switch (typeof value) {\n case \"string\":\n this.placeholder.innerText = value;\n break;\n default:\n super.fulfilled(value);\n }\n }\n\n rejected(error: Error) {\n super.rejected(error);\n }\n}\n\nexport interface RenderNode extends FenceInfo {\n id: string;\n content: string;\n innerHTML?: string;\n}\n\nexport async function render(nodes: RenderNode[]) {\n const displayIndex: { [key: string]: boolean } = {};\n const nb: ohq.Notebook = { nodes: [], files: [] };\n for (const node of nodes) {\n nb.nodes.push({\n id: node.id,\n name: node.id,\n mode: \"js\",\n value: node.content\n });\n displayIndex[node.id] = renderExecutedSrc(node);\n }\n const define = await compile(nb);\n const runtime = new Runtime(new Library());\n runtime.module(define, () => {\n define(runtime, (_name: string | undefined, id: string | number) => {\n const placeholder = globalThis?.document?.getElementById(\"\" + id);\n if (placeholder && displayIndex[id]) {\n return new Inspector(placeholder);\n }\n return {\n pending() { },\n fulfilled(_value: any, _name?: string) { },\n rejected(_error: any, _name?: string) { }\n };\n });\n });\n}\n","import type MarkdownIt from \"markdown-it\";\nimport type { Options } from \"markdown-it\";\nimport type Token from \"markdown-it/lib/token.mjs\";\nimport type Renderer from \"markdown-it/lib/renderer.mjs\";\nimport type { RuleCore } from \"markdown-it/lib/parser_core.mjs\";\nimport type { RuleInline } from \"markdown-it/lib/parser_inline.mjs\";\nimport { generatePlaceholders } from \"./util.ts\";\n\nfunction renderObservable(tokens: Token[], idx: number, _options: Options, env: any, _self: Renderer) {\n return generatePlaceholders(tokens[idx].content, { type: \"js\", exec: true }, env);\n}\n\nconst DOLLAR = 0x24;\nconst CURLEY_OPEN = 0x7B;\nconst CURLEY_CLOSE = 0x7D;\n\nfunction* parsePlaceholderInline(src: string, pos: number = 0, posMax: number = src.length) {\n if (src.charCodeAt(pos) === DOLLAR && src.charCodeAt(pos + 1) === CURLEY_OPEN) {\n pos += 2;\n\n const observableStart = pos;\n let nestedCurly = 0;\n let done = false;\n while (!done && pos < posMax) {\n switch (src.charCodeAt(pos)) {\n case CURLEY_OPEN:\n nestedCurly++;\n break;\n case CURLEY_CLOSE:\n if (nestedCurly === 0) {\n done = true;\n --pos;\n } else {\n nestedCurly--;\n }\n break;\n }\n pos++;\n }\n const observableEnd = pos;\n if (pos >= posMax || observableStart == observableEnd) return;\n if (src.charCodeAt(pos) !== CURLEY_CLOSE) return;\n pos++;\n\n const observableJs = src.slice(observableStart, observableEnd).trim();\n yield { type: \"placeholder\", content: observableJs, pos };\n }\n}\n\nfunction* parsePlaceholderBlock(src: string) {\n let pos = 0;\n let prevPos = 0;\n const posMax = src.length;\n while (pos < posMax) {\n if (src.charCodeAt(pos) === DOLLAR && src.charCodeAt(pos + 1) === CURLEY_OPEN) {\n yield ({ type: \"html_block\", content: src.slice(prevPos, pos) });\n for (const placeholder of parsePlaceholderInline(src, pos, posMax)) {\n yield placeholder;\n pos = placeholder.pos;\n prevPos = pos;\n }\n } else {\n pos++;\n }\n }\n if (pos > prevPos) {\n yield ({ type: \"html_block\", content: src.slice(prevPos, pos) });\n }\n}\n\nconst transformPlaceholderInline: RuleInline = (state, silent) => {\n if (silent || state.pos + 2 > state.posMax) return false;\n const marker1 = state.src.charCodeAt(state.pos);\n const marker2 = state.src.charCodeAt(state.pos + 1);\n if (marker1 !== DOLLAR || marker2 !== CURLEY_OPEN) return false;\n for (const { type, content, pos } of parsePlaceholderInline(state.src, state.pos, state.posMax)) {\n if (type !== \"placeholder\") break;\n const token = state.push(type, \"\", 0);\n token.content = content;\n state.pos = pos;\n return true;\n }\n return false;\n};\n\nconst transformPlaceholderCore: RuleCore = (state) => {\n const { tokens } = state;\n for (let i = 0, n = tokens.length; i < n; ++i) {\n const token = tokens[i];\n if (token.type === \"html_block\") {\n const children: Token[] = [];\n for (const { type, content } of parsePlaceholderBlock(token.content)) {\n const child = new state.Token(type, \"\", 0);\n child.content = content;\n children.push(child);\n }\n if (children.length === 1 && children[0].type === \"html_block\") {\n tokens[i].content = children[0].content;\n } else {\n const inline = new state.Token(\"inline\", \"\", 0);\n inline.children = children;\n tokens[i] = inline;\n }\n }\n }\n};\n\nexport function hookTemplateLiterals(md: MarkdownIt) {\n md.inline.ruler.push(\"placeholder\", transformPlaceholderInline);\n md.core.ruler.after(\"inline\", \"placeholder\", transformPlaceholderCore);\n md.renderer.rules.placeholder = (tokens: Token[], idx: number, options: any, env: any, self: Renderer) => renderObservable(tokens, idx, options, env, self);\n}\n\n","import type MarkdownIt from \"markdown-it\";\nimport type { Options } from \"markdown-it\";\nimport type Token from \"markdown-it/lib/token.mjs\";\nimport type Renderer from \"markdown-it/lib/renderer.mjs\";\nimport { RenderNode } from \"./render.ts\";\nimport { ENV_KEY, executeSrc, FenceInfo, fenceInfoDefaults, generatePlaceholders, showSrc } from \"./util.ts\";\n\nconst deserializeFenceInfo = (attrs: string): FenceInfo =>\n attrs\n .split(/\\s+/)\n .reduce((acc: FenceInfo, pair, idx: number) => {\n if (idx === 0) {\n acc.type = pair as \"js\" | \"javascript\" | string;\n return acc;\n }\n\n const [key, value] = pair.split(\"=\") as [keyof FenceInfo, string];\n switch (key) {\n case \"exec\":\n case \"echo\":\n case \"hide\":\n acc[key] = value !== \"false\";\n break;\n }\n return acc;\n }, { ...fenceInfoDefaults })\n ;\n\nconst proxy = (tokens: Token[], idx: number, options: Options, _env: any, self: Renderer) => self.renderToken(tokens, idx, options);\n\nexport function hookFence(md: MarkdownIt) {\n const defaultFenceRenderer = md.renderer.rules.fence || proxy;\n const fenceRenderer = (tokens: Token[], idx: number, options: Options, env: { [ENV_KEY]?: RenderNode[] }, self: Renderer) => {\n const token = tokens[idx];\n const fenceInfo = deserializeFenceInfo(token.info);\n if (fenceInfo.type === \"javascript\") {\n fenceInfo.type = \"js\";\n }\n token.content += \"\\n\";\n let preHtml = \"\";\n switch (fenceInfo.type) {\n case \"js\":\n if (executeSrc(fenceInfo)) {\n if (!env[ENV_KEY]) {\n env[ENV_KEY] = [];\n }\n preHtml += generatePlaceholders(token.content, fenceInfo, env);\n }\n if (showSrc(fenceInfo)) {\n return preHtml + defaultFenceRenderer(tokens, idx, options, env, self);\n }\n break;\n default:\n return preHtml + defaultFenceRenderer(tokens, idx, options, env, self);\n }\n return preHtml;\n };\n md.renderer.rules.fence = fenceRenderer;\n}\n","import type MarkdownIt from \"markdown-it\";\nimport { render } from \"./render.ts\";\nimport { ENV_KEY } from \"./util.ts\";\nimport { hookTemplateLiterals } from \"./template-literal.ts\";\nimport { hookFence } from \"./fence.ts\";\n\nfunction hookRender(md: MarkdownIt) {\n const originalRender = md.render;\n md.render = (src: string, _env?: any): string => {\n const env = { ..._env };\n const retVal = originalRender.call(md, src, env);\n render(env[ENV_KEY] ?? []);\n return retVal;\n };\n}\n\nfunction hookVitepressRender(md: MarkdownIt) {\n\n const originalRender = md.render;\n md.render = (src: string, env?: any): string => {\n const myEnv = env ?? {};\n let retVal = originalRender.call(md, src, myEnv);\n if (env[ENV_KEY]?.length) {\n const content = encodeURI(JSON.stringify(env[ENV_KEY]));\n retVal += `<RenderComponent content=\"${content}\" />`;\n }\n return retVal;\n };\n}\n\nexport interface ObservableOptions {\n vitePress?: boolean;\n}\n\nexport function observable(md: MarkdownIt, opts: ObservableOptions = {}) {\n hookTemplateLiterals(md);\n hookFence(md);\n if (opts.vitePress) {\n hookVitepressRender(md);\n } else {\n hookRender(md);\n }\n}\n\nexport {\n render\n};\n"],"names":["ojs2notebook","content","BaseInspector","define","compile","runtime","Runtime","Library","_name","idx","self"],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@hpcc-js/markdown-it-plugins",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "markdown-it plugins",
5
5
  "type": "module",
6
+ "main": "./dist/index.umd.cjs",
7
+ "module": "./dist/index.js",
6
8
  "exports": {
7
9
  ".": {
8
10
  "types": "./types/index.d.ts",
9
- "import": "./dist/index.node.js",
10
- "browser": "./dist/index.js",
11
- "default": "./dist/index.js"
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.umd.cjs"
12
13
  },
13
14
  "./ecl-lang": {
14
15
  "types": "./types/ecl-lang/index.d.ts",
@@ -23,8 +24,6 @@
23
24
  }
24
25
  },
25
26
  "types": "./types/index.d.ts",
26
- "main": "./dist/index.node.js",
27
- "browser": "./dist/index.js",
28
27
  "files": [
29
28
  "dist/*",
30
29
  "src/*",
@@ -32,31 +31,31 @@
32
31
  ],
33
32
  "scripts": {
34
33
  "clean": "rimraf --glob lib* types dist dist-test .vitepress/cache .vitepress/dist *.tsbuildinfo .turbo",
35
- "bundle": "node esbuild.js",
36
- "bundle-watch": "npm run bundle -- --development --watch",
34
+ "bundle": "vite build",
35
+ "bundle-watch": "vite --port 5513",
37
36
  "gen-types": "tsc --project tsconfig.json",
38
37
  "gen-types-watch": "npm run gen-types -- --watch",
39
38
  "build": "run-p gen-types bundle",
40
- "dev": "vite",
41
39
  "dev-docs": "vitepress dev",
42
40
  "build-docs": "vitepress build",
43
41
  "preview-docs": "vitepress preview",
44
42
  "lint": "eslint ./src",
43
+ "lint-fix": "eslint --fix src/**/*.ts",
45
44
  "docs": "typedoc --options tdoptions.json .",
46
45
  "test-browser": "vitest run --project browser",
47
46
  "test-node": "vitest run --project node",
48
47
  "test": "vitest run",
49
48
  "coverage": "vitest run --coverage",
50
- "update": "npx -y npm-check-updates -u -t minor",
51
- "update-major": "npx -y npm-check-updates -u"
49
+ "update": "npx --yes npm-check-updates -u -t minor",
50
+ "update-major": "npx --yes npm-check-updates -u"
52
51
  },
53
52
  "dependencies": {
54
- "@hpcc-js/observablehq-compiler": "^3.2.0",
55
- "@observablehq/framework": "1.12.0",
53
+ "@hpcc-js/observablehq-compiler": "^3.3.0",
54
+ "@observablehq/framework": "1.13.0",
56
55
  "@observablehq/runtime": "5.9.9"
57
56
  },
58
57
  "devDependencies": {
59
- "@hpcc-js/esbuild-plugins": "^1.3.0",
58
+ "@hpcc-js/esbuild-plugins": "^1.4.0",
60
59
  "@types/markdown-it": "14.1.2",
61
60
  "apache-arrow": "17.0.0",
62
61
  "d3-dsv": "3.0.1",
@@ -77,5 +76,5 @@
77
76
  "url": "https://github.com/hpcc-systems/Visualization/issues"
78
77
  },
79
78
  "homepage": "https://github.com/hpcc-systems/Visualization/tree/trunk/packages/markdonw-it-plugins",
80
- "gitHead": "658c50fd965a7744ba8db675ba6878607c44d5e2"
79
+ "gitHead": "145a4d4c8189c70f08e9804e63959d6dd398bd9f"
81
80
  }
@@ -1,3 +1,3 @@
1
1
  export const PKG_NAME = "@hpcc-js/markdown-it-plugins";
2
2
  export const PKG_VERSION = "1.2.0";
3
- export const BUILD_VERSION = "3.2.0";
3
+ export const BUILD_VERSION = "3.2.1";
package/types/loader.d.ts CHANGED
@@ -8,7 +8,7 @@ export declare class DataFile {
8
8
  myResolve(module: string): Promise<string>;
9
9
  myImport(module: string): Promise<any>;
10
10
  buffer(): Promise<Buffer>;
11
- arrayBuffer(): Promise<ArrayBuffer>;
11
+ arrayBuffer(): Promise<ArrayBuffer | SharedArrayBuffer>;
12
12
  text(encoding?: BufferEncoding): Promise<string>;
13
13
  json(): Promise<any>;
14
14
  dsv({ delimiter, array, typed }?: {
package/dist/ecl-lang.js DELETED
@@ -1,2 +0,0 @@
1
- var e={scopeName:"source.ecl",fileTypes:["ecl"],name:"ECL",patterns:[{include:"#expression"},{name:"support.class.ecl",match:"\\b(?i:(std).(file|date|str|math|metaphone|metaphone3|uni|audit|blas|system.(debug|email|job|log|thorlib|util|workunit)))\\b"}],repository:{expression:{name:"meta.expression.ecl",patterns:[{include:"#comment"},{include:"#special-structures"},{include:"#embedded-single"},{include:"#embedded-any"},{include:"#embedded-cpp"},{include:"#function-call"},{include:"#operators"},{include:"#logicals"},{include:"#types"},{include:"#keywords-pound"},{include:"#keywords-workflow"},{include:"#keywords"},{include:"#digital-signature"},{include:"#string"},{include:"#literal"}]},operators:{name:"keyword.operator.ecl",match:"(>|>=|<|<=|<>|/|\\|+|-|=)"},logicals:{match:"\\b(?i:(and|in|not|or))\\b",name:"keyword.other.ecl"},"special-structures":{match:"\\b(?i:(endmacro|function|functionmacro|interface|macro|module|record|transform))\\b",name:"entity.name.function.ecl"},types:{name:"entity.name.type.ecl",patterns:[{include:"#real"},{include:"#decimal"},{include:"#unicode"},{include:"#integer"},{include:"#type-number"},{include:"#type-rest"}]},real:{name:"entity.name.type.ecl",match:"\\b(?i)real(?-i)(4|8)\\b"},decimal:{name:"entity.name.type.ecl",match:"\\b(?i)(u?)decimal(\\d+(_\\d+)?)\\b"},unicode:{name:"entity.name.type.ecl",match:"\\b(?i:(d|u|q|v|x))(8)?(?='.*')"},integer:{name:"entity.name.type.ecl",match:"\\b(?i:(integer|unsigned))[1-8]\\b"},"type-number":{name:"entity.name.type.ecl",match:"\\b(?i:(data|string|qstring|varstring|varunicode|unicode|utf8))\\d+\\b"},"type-rest":{name:"entity.name.type.ecl",match:"\\b(?i:(ascii|big_endian|boolean|data|decimal|ebcdic|grouped|integer|linkcounted|pattern|qstring|real|rule|set of|streamed|string|token|udecimal|unicode|utf8|unsigned|varstring|varunicode))\\b"},"function-call":{match:"([#A-Za-z_0-9]+)\\s*(\\()",captures:{"1":{patterns:[{include:"#functions"},{include:"#functions-pound"},{include:"#functions-hash"},{include:"#functions-hash2"},{include:"#functions-action"},{include:"#functions-workflow"}]}}},functions:{name:"entity.name.function.ecl",match:"\\b(?i:(abs|acos|aggregate|allnodes|apply|apply|ascii|asin|assert|asstring|atan|atan2|ave|build|buildindex|case|catch|choose|choosen|choosesets|clustersize|combine|correlation|cos|cosh|count|covariance|cron|dataset|dedup|define|denormalize|deprecated|dictionary|distribute|distributed|distribution|ebcdic|enth|evaluate|evaluate|event|eventextra|eventname|exists|exp|fail|failcode|failmessage|fetch|fromunicode|fromxml|getenv|getisvalid|graph|group|hashcrc|hashmd5|having|httpcall|httpheader|if|iff|index|interface|intformat|isvalid|iterate|join|keydiff|keypatch|keyunicode|length|library|limit|ln|loadxml|local|log|loop|map|matched|matchlength|matchposition|matchtext|matchunicode|max|merge|mergejoin|min|nofold|nolocal|nonempty|normalize|nothor|notify|opt|output|parse|pattern|penalty|pipe|power|preload|process|project|pull|random|range|rank|ranked|realformat|record|recordof|regexfind|regexfindset|regexreplace|regroup|rejected|rollup|round|roundup|row|rowdiff|rule|sample|sequential|sin|sinh|sizeof|soapcall|sort|sorted|sqrt|stepped|stored|sum|table|tan|tanh|thisnode|topn|tounicode|toxml|transfer|transform|trim|truncate|typeof|ungroup|unicodeorder|use|validate|variance|wait|when|which|xmldecode|xmlencode|xmltext|xmlunicode))\\b"},"functions-pound":{name:"keyword.other.ecl",match:"#(?i:(append|constant|declare|demangle|end|else|elseif|error|expand|export|exportXML|for|getdatatype|if|inmodule|mangle|onwarning|option|set|stored|text|uniquename|warning|webservice|workunit))\\b"},"functions-hash":{name:"entity.name.function.ecl",match:"\\b(?i:hash(32|64|crc)?)\\b"},"functions-hash2":{name:"entity.name.function.ecl",match:"\\b(?i:hashmd(5))\\b"},"functions-action":{name:"keyword.other.ecl",match:"\\b(?i:(algorithm|cluster|escape|encrypt|expire|heading|keyed|maxlength|module|named|ordered|parallel|quote|terminator|threshold|timelimit|timeout|separator|set|skew|virtual|wild))\\b"},"functions-workflow":{name:"keyword.control.ecl",match:"\\b(?i:(checkpoint|deprecated|failmessage|failure|global|onwarning|persist|priority|recovery|stored|success|when))\\b"},"keywords-workflow":{name:"keyword.control.ecl",match:"\\b(?i:(global|independent|once))\\b"},"keywords-pound":{name:"keyword.other.ecl",match:"#(?i:(break|else|end|loop))\\b"},keywords:{name:"keyword.other.ecl",match:"\\b(?i:(after|all|andor|any|as|atmost|before|best|between|case|compressed|compression|const|counter|csv|default|descend|distributed|encoding|end|endmacro|enum|error|except|exclusive|expand|export|exportxml|extend|fail|failcode|few|fileposition|first|flat|for|forward|from|full|group|grouped|hole|if|ifblock|import|inmodule|inner|internal|joined|keep|keyed|last|left|limit|linkcounted|literal|little_endian|load|local|locale|lookup|lzw|mangle|many|maxcount|maxlength|min skew|mofn|multiple|named|namespace|nocase|noroot|noscan|nosort|noxpath|of|onfail|only|opt|option|outer|overwrite|packed|partition|physicallength|pipe|prefetch|repeat|retry|return|right|right1|right2|rows|rowset|scan|scope|self|service|set|shared|skip|smart|soapaction|sql|stable|store|stored|success|thor|token|trim|type|unicodeorder|uniquename|unordered|unsorted|unstable|update|virtual|warning|whole|width|within|wnotrim|xml|xpath|__compressed_))\\b"},"embedded-single":{match:"(?i:(embed))\\s*(\\([^\\)]+\\));",captures:{"1":{name:"entity.name.function.ecl"}}},"embedded-any":{begin:"((?i:(embed)))\\s*(\\()",end:"(?i:(endembed))",beginCaptures:{"0":{name:"entity.name.function.ecl"}},endCaptures:{"0":{name:"entity.name.function.ecl"}},name:"entity.other.ecl"},"embedded-cpp":{begin:"(?i:(beginc))\\+\\+",end:"(?i:(endc))\\+\\+",beginCaptures:{"0":{name:"entity.name.function.ecl"}},endCaptures:{"0":{name:"entity.name.function.ecl"}},name:"entity.other.ecl"},comment:{name:"comment.ecl",patterns:[{include:"#comment-block-doc"},{include:"#comment-block"},{include:"#comment-line"}]},"comment-block":{begin:"/\\*",end:"\\*/",name:"comment.block.ecl"},"comment-block-doc":{begin:"/\\*\\*(?!/)",end:"\\*/",name:"comment.block.documentation.ecl"},"comment-line":{match:"(//).*$\\n?",name:"comment.line.ecl"},"digital-signature":{name:"digital-signature.ecl",patterns:[{include:"#digital-signature-header"},{include:"#digital-signature-footer"}]},"digital-signature-header":{begin:"-----BEGIN PGP SIGNED MESSAGE-----",end:"Hash: SHA512",name:"keyword.control.ecl"},"digital-signature-footer":{begin:"-----BEGIN PGP SIGNATURE-----",end:"-----END PGP SIGNATURE-----",name:"keyword.control.ecl"},string:{name:"string.ecl",patterns:[{include:"#qstring-single"}]},"qstring-single":{begin:"'",end:"\\'|(?:[^\\\\\\n]$)",name:"string.single.ecl",patterns:[{include:"#string-character-escape"}]},"string-character-escape":{match:"\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)",name:"constant.character.escape.ecl"},literal:{name:"literal.ecl",patterns:[{include:"#numeric-literal"},{include:"#boolean-literal"},{include:"#array-literal"},{include:"#self-literal"}]},"numeric-literal":{match:"\\b(?<=[^$])((0(x|X)[0-9a-fA-F]+)|([0-9a-fA-F]+(x|X))|(0(o|O)[0-7]+)|(0(b|B)(0|1)+)|((0|1)+(b|B))|(([0-9]+(\\.[0-9]+)?))([eE]([+-]?)[0-9]+(\\.[0-9]+)?)?)\\b",name:"constant.numeric.ecl"},"boolean-literal":{match:"\\b(?i:(false|true))\\b",name:"constant.language.boolean.ecl"},"self-literal":{match:"\\b(?i:(self))\\b",name:"constant.language.this.ecl"},"array-literal":{begin:"\\[",beginCaptures:{"0":{name:"meta.brace.square.ecl"}},end:"\\]",endCaptures:{"0":{name:"meta.brace.square.ecl"}},name:"meta.array.literal.ecl",patterns:[{include:"#expression"}]}}};function o(){return{...e,name:"ecl"}}export{o as eclLang};
2
- //# sourceMappingURL=ecl-lang.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/ecl-lang/ecl.tmLanguage.json", "../src/ecl-lang/index.ts"],
4
- "sourcesContent": ["{\n \"scopeName\": \"source.ecl\",\n \"fileTypes\": [\n \"ecl\"\n ],\n \"name\": \"ECL\",\n \"patterns\": [\n {\n \"include\": \"#expression\"\n },\n {\n \"name\": \"support.class.ecl\",\n \"match\": \"\\\\b(?i:(std).(file|date|str|math|metaphone|metaphone3|uni|audit|blas|system.(debug|email|job|log|thorlib|util|workunit)))\\\\b\"\n }\n ],\n \"repository\": {\n \"expression\": {\n \"name\": \"meta.expression.ecl\",\n \"patterns\": [\n {\n \"include\": \"#comment\"\n },\n {\n \"include\": \"#special-structures\"\n },\n {\n \"include\": \"#embedded-single\"\n },\n {\n \"include\": \"#embedded-any\"\n },\n {\n \"include\": \"#embedded-cpp\"\n },\n {\n \"include\": \"#function-call\"\n },\n {\n \"include\": \"#operators\"\n },\n {\n \"include\": \"#logicals\"\n },\n {\n \"include\": \"#types\"\n },\n {\n \"include\": \"#keywords-pound\"\n },\n {\n \"include\": \"#keywords-workflow\"\n },\n {\n \"include\": \"#keywords\"\n },\n {\n \"include\": \"#digital-signature\"\n },\n {\n \"include\": \"#string\"\n },\n {\n \"include\": \"#literal\"\n }\n ]\n },\n \"operators\": {\n \"name\": \"keyword.operator.ecl\",\n \"match\": \"(>|>=|<|<=|<>|/|\\\\|+|-|=)\"\n },\n \"logicals\": {\n \"match\": \"\\\\b(?i:(and|in|not|or))\\\\b\",\n \"name\": \"keyword.other.ecl\"\n },\n \"special-structures\": {\n \"match\": \"\\\\b(?i:(endmacro|function|functionmacro|interface|macro|module|record|transform))\\\\b\",\n \"name\": \"entity.name.function.ecl\"\n },\n \"types\": {\n \"name\": \"entity.name.type.ecl\",\n \"patterns\": [\n {\n \"include\": \"#real\"\n },\n {\n \"include\": \"#decimal\"\n },\n {\n \"include\": \"#unicode\"\n },\n {\n \"include\": \"#integer\"\n },\n {\n \"include\": \"#type-number\"\n },\n {\n \"include\": \"#type-rest\"\n }\n ]\n },\n \"real\": {\n \"name\": \"entity.name.type.ecl\",\n \"match\": \"\\\\b(?i)real(?-i)(4|8)\\\\b\"\n },\n \"decimal\": {\n \"name\": \"entity.name.type.ecl\",\n \"match\": \"\\\\b(?i)(u?)decimal(\\\\d+(_\\\\d+)?)\\\\b\"\n },\n \"unicode\": {\n \"name\": \"entity.name.type.ecl\",\n \"match\": \"\\\\b(?i:(d|u|q|v|x))(8)?(?='.*')\"\n },\n \"integer\": {\n \"name\": \"entity.name.type.ecl\",\n \"match\": \"\\\\b(?i:(integer|unsigned))[1-8]\\\\b\"\n },\n \"type-number\": {\n \"name\": \"entity.name.type.ecl\",\n \"match\": \"\\\\b(?i:(data|string|qstring|varstring|varunicode|unicode|utf8))\\\\d+\\\\b\"\n },\n \"type-rest\": {\n \"name\": \"entity.name.type.ecl\",\n \"match\": \"\\\\b(?i:(ascii|big_endian|boolean|data|decimal|ebcdic|grouped|integer|linkcounted|pattern|qstring|real|rule|set of|streamed|string|token|udecimal|unicode|utf8|unsigned|varstring|varunicode))\\\\b\"\n },\n \"function-call\": {\n \"match\": \"([#A-Za-z_0-9]+)\\\\s*(\\\\()\",\n \"captures\": {\n \"1\": {\n \"patterns\": [\n {\n \"include\": \"#functions\"\n },\n {\n \"include\": \"#functions-pound\"\n },\n {\n \"include\": \"#functions-hash\"\n },\n {\n \"include\": \"#functions-hash2\"\n },\n {\n \"include\": \"#functions-action\"\n },\n {\n \"include\": \"#functions-workflow\"\n }\n ]\n }\n }\n },\n \"functions\": {\n \"name\": \"entity.name.function.ecl\",\n \"match\": \"\\\\b(?i:(abs|acos|aggregate|allnodes|apply|apply|ascii|asin|assert|asstring|atan|atan2|ave|build|buildindex|case|catch|choose|choosen|choosesets|clustersize|combine|correlation|cos|cosh|count|covariance|cron|dataset|dedup|define|denormalize|deprecated|dictionary|distribute|distributed|distribution|ebcdic|enth|evaluate|evaluate|event|eventextra|eventname|exists|exp|fail|failcode|failmessage|fetch|fromunicode|fromxml|getenv|getisvalid|graph|group|hashcrc|hashmd5|having|httpcall|httpheader|if|iff|index|interface|intformat|isvalid|iterate|join|keydiff|keypatch|keyunicode|length|library|limit|ln|loadxml|local|log|loop|map|matched|matchlength|matchposition|matchtext|matchunicode|max|merge|mergejoin|min|nofold|nolocal|nonempty|normalize|nothor|notify|opt|output|parse|pattern|penalty|pipe|power|preload|process|project|pull|random|range|rank|ranked|realformat|record|recordof|regexfind|regexfindset|regexreplace|regroup|rejected|rollup|round|roundup|row|rowdiff|rule|sample|sequential|sin|sinh|sizeof|soapcall|sort|sorted|sqrt|stepped|stored|sum|table|tan|tanh|thisnode|topn|tounicode|toxml|transfer|transform|trim|truncate|typeof|ungroup|unicodeorder|use|validate|variance|wait|when|which|xmldecode|xmlencode|xmltext|xmlunicode))\\\\b\"\n },\n \"functions-pound\": {\n \"name\": \"keyword.other.ecl\",\n \"match\": \"#(?i:(append|constant|declare|demangle|end|else|elseif|error|expand|export|exportXML|for|getdatatype|if|inmodule|mangle|onwarning|option|set|stored|text|uniquename|warning|webservice|workunit))\\\\b\"\n },\n \"functions-hash\": {\n \"name\": \"entity.name.function.ecl\",\n \"match\": \"\\\\b(?i:hash(32|64|crc)?)\\\\b\"\n },\n \"functions-hash2\": {\n \"name\": \"entity.name.function.ecl\",\n \"match\": \"\\\\b(?i:hashmd(5))\\\\b\"\n },\n \"functions-action\": {\n \"name\": \"keyword.other.ecl\",\n \"match\": \"\\\\b(?i:(algorithm|cluster|escape|encrypt|expire|heading|keyed|maxlength|module|named|ordered|parallel|quote|terminator|threshold|timelimit|timeout|separator|set|skew|virtual|wild))\\\\b\"\n },\n \"functions-workflow\": {\n \"name\": \"keyword.control.ecl\",\n \"match\": \"\\\\b(?i:(checkpoint|deprecated|failmessage|failure|global|onwarning|persist|priority|recovery|stored|success|when))\\\\b\"\n },\n \"keywords-workflow\": {\n \"name\": \"keyword.control.ecl\",\n \"match\": \"\\\\b(?i:(global|independent|once))\\\\b\"\n },\n \"keywords-pound\": {\n \"name\": \"keyword.other.ecl\",\n \"match\": \"#(?i:(break|else|end|loop))\\\\b\"\n },\n \"keywords\": {\n \"name\": \"keyword.other.ecl\",\n \"match\": \"\\\\b(?i:(after|all|andor|any|as|atmost|before|best|between|case|compressed|compression|const|counter|csv|default|descend|distributed|encoding|end|endmacro|enum|error|except|exclusive|expand|export|exportxml|extend|fail|failcode|few|fileposition|first|flat|for|forward|from|full|group|grouped|hole|if|ifblock|import|inmodule|inner|internal|joined|keep|keyed|last|left|limit|linkcounted|literal|little_endian|load|local|locale|lookup|lzw|mangle|many|maxcount|maxlength|min skew|mofn|multiple|named|namespace|nocase|noroot|noscan|nosort|noxpath|of|onfail|only|opt|option|outer|overwrite|packed|partition|physicallength|pipe|prefetch|repeat|retry|return|right|right1|right2|rows|rowset|scan|scope|self|service|set|shared|skip|smart|soapaction|sql|stable|store|stored|success|thor|token|trim|type|unicodeorder|uniquename|unordered|unsorted|unstable|update|virtual|warning|whole|width|within|wnotrim|xml|xpath|__compressed_))\\\\b\"\n },\n \"embedded-single\": {\n \"match\": \"(?i:(embed))\\\\s*(\\\\([^\\\\)]+\\\\));\",\n \"captures\": {\n \"1\": {\n \"name\": \"entity.name.function.ecl\"\n }\n }\n },\n \"embedded-any\": {\n \"begin\": \"((?i:(embed)))\\\\s*(\\\\()\",\n \"end\": \"(?i:(endembed))\",\n \"beginCaptures\": {\n \"0\": {\n \"name\": \"entity.name.function.ecl\"\n }\n },\n \"endCaptures\": {\n \"0\": {\n \"name\": \"entity.name.function.ecl\"\n }\n },\n \"name\": \"entity.other.ecl\"\n },\n \"embedded-cpp\": {\n \"begin\": \"(?i:(beginc))\\\\+\\\\+\",\n \"end\": \"(?i:(endc))\\\\+\\\\+\",\n \"beginCaptures\": {\n \"0\": {\n \"name\": \"entity.name.function.ecl\"\n }\n },\n \"endCaptures\": {\n \"0\": {\n \"name\": \"entity.name.function.ecl\"\n }\n },\n \"name\": \"entity.other.ecl\"\n },\n \"comment\": {\n \"name\": \"comment.ecl\",\n \"patterns\": [\n {\n \"include\": \"#comment-block-doc\"\n },\n {\n \"include\": \"#comment-block\"\n },\n {\n \"include\": \"#comment-line\"\n }\n ]\n },\n \"comment-block\": {\n \"begin\": \"/\\\\*\",\n \"end\": \"\\\\*/\",\n \"name\": \"comment.block.ecl\"\n },\n \"comment-block-doc\": {\n \"begin\": \"/\\\\*\\\\*(?!/)\",\n \"end\": \"\\\\*/\",\n \"name\": \"comment.block.documentation.ecl\"\n },\n \"comment-line\": {\n \"match\": \"(//).*$\\\\n?\",\n \"name\": \"comment.line.ecl\"\n },\n \"digital-signature\": {\n \"name\": \"digital-signature.ecl\",\n \"patterns\": [\n {\n \"include\": \"#digital-signature-header\"\n },\n {\n \"include\": \"#digital-signature-footer\"\n }\n ]\n },\n \"digital-signature-header\": {\n \"begin\": \"-----BEGIN PGP SIGNED MESSAGE-----\",\n \"end\": \"Hash: SHA512\",\n \"name\": \"keyword.control.ecl\"\n },\n \"digital-signature-footer\": {\n \"begin\": \"-----BEGIN PGP SIGNATURE-----\",\n \"end\": \"-----END PGP SIGNATURE-----\",\n \"name\": \"keyword.control.ecl\"\n },\n \"string\": {\n \"name\": \"string.ecl\",\n \"patterns\": [\n {\n \"include\": \"#qstring-single\"\n }\n ]\n },\n \"qstring-single\": {\n \"begin\": \"'\",\n \"end\": \"\\\\'|(?:[^\\\\\\\\\\\\n]$)\",\n \"name\": \"string.single.ecl\",\n \"patterns\": [\n {\n \"include\": \"#string-character-escape\"\n }\n ]\n },\n \"string-character-escape\": {\n \"match\": \"\\\\\\\\(x\\\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\",\n \"name\": \"constant.character.escape.ecl\"\n },\n \"literal\": {\n \"name\": \"literal.ecl\",\n \"patterns\": [\n {\n \"include\": \"#numeric-literal\"\n },\n {\n \"include\": \"#boolean-literal\"\n },\n {\n \"include\": \"#array-literal\"\n },\n {\n \"include\": \"#self-literal\"\n }\n ]\n },\n \"numeric-literal\": {\n \"match\": \"\\\\b(?<=[^$])((0(x|X)[0-9a-fA-F]+)|([0-9a-fA-F]+(x|X))|(0(o|O)[0-7]+)|(0(b|B)(0|1)+)|((0|1)+(b|B))|(([0-9]+(\\\\.[0-9]+)?))([eE]([+-]?)[0-9]+(\\\\.[0-9]+)?)?)\\\\b\",\n \"name\": \"constant.numeric.ecl\"\n },\n \"boolean-literal\": {\n \"match\": \"\\\\b(?i:(false|true))\\\\b\",\n \"name\": \"constant.language.boolean.ecl\"\n },\n \"self-literal\": {\n \"match\": \"\\\\b(?i:(self))\\\\b\",\n \"name\": \"constant.language.this.ecl\"\n },\n \"array-literal\": {\n \"begin\": \"\\\\[\",\n \"beginCaptures\": {\n \"0\": {\n \"name\": \"meta.brace.square.ecl\"\n }\n },\n \"end\": \"\\\\]\",\n \"endCaptures\": {\n \"0\": {\n \"name\": \"meta.brace.square.ecl\"\n }\n },\n \"name\": \"meta.array.literal.ecl\",\n \"patterns\": [\n {\n \"include\": \"#expression\"\n }\n ]\n }\n }\n}", "import type { LanguageInput } from \"shiki\";\n\nimport ecl_lang from \"./ecl.tmLanguage.json\" with { type: \"json\" };\n\nexport function eclLang(): LanguageInput {\n const retVal = {\n ...ecl_lang,\n name: \"ecl\"\n } as unknown as LanguageInput;\n return retVal;\n}\n\n"],
5
- "mappings": "AAAA,IAAAA,EAAA,CACI,UAAa,aACb,UAAa,CACT,KACJ,EACA,KAAQ,MACR,SAAY,CACR,CACI,QAAW,aACf,EACA,CACI,KAAQ,oBACR,MAAS,8HACb,CACJ,EACA,WAAc,CACV,WAAc,CACV,KAAQ,sBACR,SAAY,CACR,CACI,QAAW,UACf,EACA,CACI,QAAW,qBACf,EACA,CACI,QAAW,kBACf,EACA,CACI,QAAW,eACf,EACA,CACI,QAAW,eACf,EACA,CACI,QAAW,gBACf,EACA,CACI,QAAW,YACf,EACA,CACI,QAAW,WACf,EACA,CACI,QAAW,QACf,EACA,CACI,QAAW,iBACf,EACA,CACI,QAAW,oBACf,EACA,CACI,QAAW,WACf,EACA,CACI,QAAW,oBACf,EACA,CACI,QAAW,SACf,EACA,CACI,QAAW,UACf,CACJ,CACJ,EACA,UAAa,CACT,KAAQ,uBACR,MAAS,2BACb,EACA,SAAY,CACR,MAAS,6BACT,KAAQ,mBACZ,EACA,qBAAsB,CAClB,MAAS,uFACT,KAAQ,0BACZ,EACA,MAAS,CACL,KAAQ,uBACR,SAAY,CACR,CACI,QAAW,OACf,EACA,CACI,QAAW,UACf,EACA,CACI,QAAW,UACf,EACA,CACI,QAAW,UACf,EACA,CACI,QAAW,cACf,EACA,CACI,QAAW,YACf,CACJ,CACJ,EACA,KAAQ,CACJ,KAAQ,uBACR,MAAS,0BACb,EACA,QAAW,CACP,KAAQ,uBACR,MAAS,qCACb,EACA,QAAW,CACP,KAAQ,uBACR,MAAS,iCACb,EACA,QAAW,CACP,KAAQ,uBACR,MAAS,oCACb,EACA,cAAe,CACX,KAAQ,uBACR,MAAS,wEACb,EACA,YAAa,CACT,KAAQ,uBACR,MAAS,kMACb,EACA,gBAAiB,CACb,MAAS,4BACT,SAAY,CACR,IAAK,CACD,SAAY,CACR,CACI,QAAW,YACf,EACA,CACI,QAAW,kBACf,EACA,CACI,QAAW,iBACf,EACA,CACI,QAAW,kBACf,EACA,CACI,QAAW,mBACf,EACA,CACI,QAAW,qBACf,CACJ,CACJ,CACJ,CACJ,EACA,UAAa,CACT,KAAQ,2BACR,MAAS,qtCACb,EACA,kBAAmB,CACf,KAAQ,oBACR,MAAS,sMACb,EACA,iBAAkB,CACd,KAAQ,2BACR,MAAS,6BACb,EACA,kBAAmB,CACf,KAAQ,2BACR,MAAS,sBACb,EACA,mBAAoB,CAChB,KAAQ,oBACR,MAAS,yLACb,EACA,qBAAsB,CAClB,KAAQ,sBACR,MAAS,uHACb,EACA,oBAAqB,CACjB,KAAQ,sBACR,MAAS,sCACb,EACA,iBAAkB,CACd,KAAQ,oBACR,MAAS,gCACb,EACA,SAAY,CACR,KAAQ,oBACR,MAAS,25BACb,EACA,kBAAmB,CACf,MAAS,mCACT,SAAY,CACR,IAAK,CACD,KAAQ,0BACZ,CACJ,CACJ,EACA,eAAgB,CACZ,MAAS,0BACT,IAAO,kBACP,cAAiB,CACb,IAAK,CACD,KAAQ,0BACZ,CACJ,EACA,YAAe,CACX,IAAK,CACD,KAAQ,0BACZ,CACJ,EACA,KAAQ,kBACZ,EACA,eAAgB,CACZ,MAAS,sBACT,IAAO,oBACP,cAAiB,CACb,IAAK,CACD,KAAQ,0BACZ,CACJ,EACA,YAAe,CACX,IAAK,CACD,KAAQ,0BACZ,CACJ,EACA,KAAQ,kBACZ,EACA,QAAW,CACP,KAAQ,cACR,SAAY,CACR,CACI,QAAW,oBACf,EACA,CACI,QAAW,gBACf,EACA,CACI,QAAW,eACf,CACJ,CACJ,EACA,gBAAiB,CACb,MAAS,OACT,IAAO,OACP,KAAQ,mBACZ,EACA,oBAAqB,CACjB,MAAS,eACT,IAAO,OACP,KAAQ,iCACZ,EACA,eAAgB,CACZ,MAAS,cACT,KAAQ,kBACZ,EACA,oBAAqB,CACjB,KAAQ,wBACR,SAAY,CACR,CACI,QAAW,2BACf,EACA,CACI,QAAW,2BACf,CACJ,CACJ,EACA,2BAA4B,CACxB,MAAS,qCACT,IAAO,eACP,KAAQ,qBACZ,EACA,2BAA4B,CACxB,MAAS,gCACT,IAAO,8BACP,KAAQ,qBACZ,EACA,OAAU,CACN,KAAQ,aACR,SAAY,CACR,CACI,QAAW,iBACf,CACJ,CACJ,EACA,iBAAkB,CACd,MAAS,IACT,IAAO,sBACP,KAAQ,oBACR,SAAY,CACR,CACI,QAAW,0BACf,CACJ,CACJ,EACA,0BAA2B,CACvB,MAAS,qEACT,KAAQ,+BACZ,EACA,QAAW,CACP,KAAQ,cACR,SAAY,CACR,CACI,QAAW,kBACf,EACA,CACI,QAAW,kBACf,EACA,CACI,QAAW,gBACf,EACA,CACI,QAAW,eACf,CACJ,CACJ,EACA,kBAAmB,CACf,MAAS,+JACT,KAAQ,sBACZ,EACA,kBAAmB,CACf,MAAS,0BACT,KAAQ,+BACZ,EACA,eAAgB,CACZ,MAAS,oBACT,KAAQ,4BACZ,EACA,gBAAiB,CACb,MAAS,MACT,cAAiB,CACb,IAAK,CACD,KAAQ,uBACZ,CACJ,EACA,IAAO,MACP,YAAe,CACX,IAAK,CACD,KAAQ,uBACZ,CACJ,EACA,KAAQ,yBACR,SAAY,CACR,CACI,QAAW,aACf,CACJ,CACJ,CACJ,CACJ,ECvVO,SAASC,GAAyB,CAKrC,MAJe,CACX,GAAGC,EACH,KAAM,KACV,CAEJ",
6
- "names": ["ecl_tmLanguage_default", "eclLang", "ecl_tmLanguage_default"]
7
- }
@@ -1,7 +0,0 @@
1
- import{Runtime as F,Library as O,Inspector as C}from"@observablehq/runtime";import{compile as M}from"@hpcc-js/observablehq-compiler";import{ojs2notebook as j}from"@hpcc-js/observablehq-compiler";var y={type:"js",exec:!1,echo:void 0,hide:void 0};function b(e){return e.exec===!0?e.echo===!0:e.echo!==!1}function g(e){return e.exec===!0}function m(e){return e.exec==!0&&e.hide!==!0}var x=0;function T(e){return`fence-${++x}${e?`-${e}`:""}`}function N(e,n){let r=[];try{let t=j(e);for(let o=0;o<t.nodes.length;++o){let i=T(o+1),c=t.nodes[o].value;r.push({...n,id:i,content:c,innerHTML:`<span id="${i}" >
2
- ${m(n)?"...":""}
3
- </span>`})}}catch(t){let o=`fence-${x}-error`;r.push({...n,id:o,content:JSON.stringify(t),innerHTML:`<span id="${o}" class="red">
4
- ${JSON.stringify(t)}
5
- </span>`})}return r}var l="ENV_OBSERVABLE";function p(e,n,r){return r[l]||(r[l]=[]),N(e,n).reduce((t,o)=>(r[l].push({...o,innerHTML:void 0}),t+o.innerHTML),"")}var h=class extends C{constructor(r){super(r);this.placeholder=r}pending(){super.pending()}fulfilled(r,t){switch(typeof r){case"string":this.placeholder.innerText=r;break;default:super.fulfilled(r)}}rejected(r){super.rejected(r)}};async function w(e){let n={},r={nodes:[],files:[]};for(let i of e)r.nodes.push({id:i.id,name:i.id,mode:"js",value:i.content}),n[i.id]=m(i);let t=await M(r),o=new F(new O);o.module(t,()=>{t(o,(i,c)=>{let s=globalThis?.document?.getElementById(""+c);return s&&n[c]?new h(s):{pending(){},fulfilled(a,d){},rejected(a,d){}}})})}function L(e,n,r,t,o){return p(e[n].content,{type:"js",exec:!0},t)}var k=36,u=123,R=125;function*I(e,n=0,r=e.length){if(e.charCodeAt(n)===k&&e.charCodeAt(n+1)===u){n+=2;let t=n,o=0,i=!1;for(;!i&&n<r;){switch(e.charCodeAt(n)){case u:o++;break;case R:o===0?(i=!0,--n):o--;break}n++}let c=n;if(n>=r||t==c||e.charCodeAt(n)!==R)return;n++,yield{type:"placeholder",content:e.slice(t,c).trim(),pos:n}}}function*P(e){let n=0,r=0,t=e.length;for(;n<t;)if(e.charCodeAt(n)===k&&e.charCodeAt(n+1)===u){yield{type:"html_block",content:e.slice(r,n)};for(let o of I(e,n,t))yield o,n=o.pos,r=n}else n++;n>r&&(yield{type:"html_block",content:e.slice(r,n)})}var S=(e,n)=>{if(n||e.pos+2>e.posMax)return!1;let r=e.src.charCodeAt(e.pos),t=e.src.charCodeAt(e.pos+1);if(r!==k||t!==u)return!1;for(let{type:o,content:i,pos:c}of I(e.src,e.pos,e.posMax)){if(o!=="placeholder")break;let s=e.push(o,"",0);return s.content=i,e.pos=c,!0}return!1},v=e=>{let{tokens:n}=e;for(let r=0,t=n.length;r<t;++r){let o=n[r];if(o.type==="html_block"){let i=[];for(let{type:c,content:s}of P(o.content)){let a=new e.Token(c,"",0);a.content=s,i.push(a)}if(i.length===1&&i[0].type==="html_block")n[r].content=i[0].content;else{let c=new e.Token("inline","",0);c.children=i,n[r]=c}}}};function E(e){e.inline.ruler.push("placeholder",S),e.core.ruler.after("inline","placeholder",v),e.renderer.rules.placeholder=(n,r,t,o,i)=>L(n,r,t,o,i)}var A=e=>e.split(/\s+/).reduce((n,r,t)=>{if(t===0)return n.type=r,n;let[o,i]=r.split("=");switch(o){case"exec":case"echo":case"hide":n[o]=i!=="false";break}return n},{...y}),V=(e,n,r,t,o)=>o.renderToken(e,n,r);function _(e){let n=e.renderer.rules.fence||V,r=(t,o,i,c,s)=>{let a=t[o],d=A(a.info);d.type==="javascript"&&(d.type="js"),a.content+=`
6
- `;let f="";switch(d.type){case"js":if(g(d)&&(c[l]||(c[l]=[]),f+=p(a.content,d,c)),b(d))return f+n(t,o,i,c,s);break;default:return f+n(t,o,i,c,s)}return f};e.renderer.rules.fence=r}function $(e){let n=e.render;e.render=(r,t)=>{let o={...t},i=n.call(e,r,o);return w(o[l]??[]),i}}function H(e){let n=e.render;e.render=(r,t)=>{let o=t??{},i=n.call(e,r,o);if(t[l]?.length){let c=encodeURI(JSON.stringify(t[l]));i+=`<RenderComponent content="${c}" />`}return i}}function oe(e,n={}){E(e),_(e),n.vitePress?H(e):$(e)}export{oe as observable,w as render};
7
- //# sourceMappingURL=index.node.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/render.ts", "../src/util.ts", "../src/template-literal.ts", "../src/fence.ts", "../src/index.ts"],
4
- "sourcesContent": ["import { Runtime, Library, Inspector as BaseInspector } from \"@observablehq/runtime\";\nimport { compile, type ohq } from \"@hpcc-js/observablehq-compiler\";\nimport { FenceInfo, renderExecutedSrc } from \"./util.ts\";\n\nclass Inspector extends BaseInspector {\n\n constructor(protected placeholder: HTMLElement) {\n super(placeholder);\n }\n\n pending() {\n super.pending();\n }\n\n fulfilled(value: any, _name?: string) {\n switch (typeof value) {\n case \"string\":\n this.placeholder.innerText = value;\n break;\n default:\n super.fulfilled(value);\n }\n }\n\n rejected(error: Error) {\n super.rejected(error);\n }\n}\n\nexport interface RenderNode extends FenceInfo {\n id: string;\n content: string;\n innerHTML?: string;\n}\n\nexport async function render(nodes: RenderNode[]) {\n const displayIndex: { [key: string]: boolean } = {};\n const nb: ohq.Notebook = { nodes: [], files: [] };\n for (const node of nodes) {\n nb.nodes.push({\n id: node.id,\n name: node.id,\n mode: \"js\",\n value: node.content\n });\n displayIndex[node.id] = renderExecutedSrc(node);\n }\n const define = await compile(nb);\n const runtime = new Runtime(new Library());\n runtime.module(define, () => {\n define(runtime, (_name: string | undefined, id: string | number) => {\n const placeholder = globalThis?.document?.getElementById(\"\" + id);\n if (placeholder && displayIndex[id]) {\n return new Inspector(placeholder);\n }\n return {\n pending() { },\n fulfilled(_value: any, _name?: string) { },\n rejected(_error: any, _name?: string) { }\n };\n });\n });\n}\n", "import { ojs2notebook } from \"@hpcc-js/observablehq-compiler\";\nimport { RenderNode } from \"./render.ts\";\n\nexport interface FenceInfo {\n type: \"js\" | \"javascript\" | string;\n exec?: boolean;\n echo?: boolean;\n hide?: boolean;\n}\n\nexport const fenceInfoDefaults: Readonly<FenceInfo> = {\n type: \"js\",\n exec: false,\n echo: undefined,\n hide: undefined\n};\n\nexport function showSrc(fetchInfo: FenceInfo): boolean {\n if (fetchInfo.exec === true) {\n return fetchInfo.echo === true;\n }\n return fetchInfo.echo !== false;\n}\n\nexport function executeSrc(fenceInfo: FenceInfo): boolean {\n return fenceInfo.exec === true;\n}\n\nexport function renderExecutedSrc(fetchInfo: FenceInfo): boolean {\n return fetchInfo.exec == true && fetchInfo.hide !== true;\n}\n\nlet idx = 0;\nexport function createId(suffix?: string | number): string {\n return `fence-${++idx}${suffix ? `-${suffix}` : \"\"}`;\n}\n\nfunction calcPlaceholders(content: string, fenceInfo: FenceInfo): RenderNode[] {\n const retVal: RenderNode[] = [];\n try {\n const cellNb = ojs2notebook(content);\n for (let i = 0; i < cellNb.nodes.length; ++i) {\n const id = createId(i + 1);\n const content = cellNb.nodes[i].value;\n retVal.push({\n ...fenceInfo,\n id,\n content,\n innerHTML: `\\\n<span id=\"${id}\" >\n ${renderExecutedSrc(fenceInfo) ? \"...\" : \"\"}\n</span>`\n });\n }\n } catch (e: any) {\n const id = `fence-${idx}-error`;\n retVal.push({\n ...fenceInfo,\n id,\n content: JSON.stringify(e),\n innerHTML: `\\\n<span id=\"${id}\" class=\"red\">\n ${JSON.stringify(e)}\n</span>`\n });\n }\n return retVal;\n}\n\nexport const ENV_KEY = \"ENV_OBSERVABLE\";\n\nexport function generatePlaceholders(content: string, fenceInfo: FenceInfo, env: any): string {\n if (!env[ENV_KEY]) {\n env[ENV_KEY] = [];\n }\n return calcPlaceholders(content, fenceInfo).reduce((acc, cur) => {\n env[ENV_KEY]!.push({ ...cur, innerHTML: undefined });\n return acc + cur.innerHTML;\n }, \"\");\n}\n\n", "import type MarkdownIt from \"markdown-it\";\nimport type { Options } from \"markdown-it\";\nimport type Token from \"markdown-it/lib/token.mjs\";\nimport type Renderer from \"markdown-it/lib/renderer.mjs\";\nimport type { RuleCore } from \"markdown-it/lib/parser_core.mjs\";\nimport type { RuleInline } from \"markdown-it/lib/parser_inline.mjs\";\nimport { generatePlaceholders } from \"./util.ts\";\n\nfunction renderObservable(tokens: Token[], idx: number, _options: Options, env: any, _self: Renderer) {\n return generatePlaceholders(tokens[idx].content, { type: \"js\", exec: true }, env);\n}\n\nconst DOLLAR = 0x24;\nconst CURLEY_OPEN = 0x7B;\nconst CURLEY_CLOSE = 0x7D;\n\nfunction* parsePlaceholderInline(src: string, pos: number = 0, posMax: number = src.length) {\n if (src.charCodeAt(pos) === DOLLAR && src.charCodeAt(pos + 1) === CURLEY_OPEN) {\n pos += 2;\n\n const observableStart = pos;\n let nestedCurly = 0;\n let done = false;\n while (!done && pos < posMax) {\n switch (src.charCodeAt(pos)) {\n case CURLEY_OPEN:\n nestedCurly++;\n break;\n case CURLEY_CLOSE:\n if (nestedCurly === 0) {\n done = true;\n --pos;\n } else {\n nestedCurly--;\n }\n break;\n }\n pos++;\n }\n const observableEnd = pos;\n if (pos >= posMax || observableStart == observableEnd) return;\n if (src.charCodeAt(pos) !== CURLEY_CLOSE) return;\n pos++;\n\n const observableJs = src.slice(observableStart, observableEnd).trim();\n yield { type: \"placeholder\", content: observableJs, pos };\n }\n}\n\nfunction* parsePlaceholderBlock(src: string) {\n let pos = 0;\n let prevPos = 0;\n const posMax = src.length;\n while (pos < posMax) {\n if (src.charCodeAt(pos) === DOLLAR && src.charCodeAt(pos + 1) === CURLEY_OPEN) {\n yield ({ type: \"html_block\", content: src.slice(prevPos, pos) });\n for (const placeholder of parsePlaceholderInline(src, pos, posMax)) {\n yield placeholder;\n pos = placeholder.pos;\n prevPos = pos;\n }\n } else {\n pos++;\n }\n }\n if (pos > prevPos) {\n yield ({ type: \"html_block\", content: src.slice(prevPos, pos) });\n }\n}\n\nconst transformPlaceholderInline: RuleInline = (state, silent) => {\n if (silent || state.pos + 2 > state.posMax) return false;\n const marker1 = state.src.charCodeAt(state.pos);\n const marker2 = state.src.charCodeAt(state.pos + 1);\n if (marker1 !== DOLLAR || marker2 !== CURLEY_OPEN) return false;\n for (const { type, content, pos } of parsePlaceholderInline(state.src, state.pos, state.posMax)) {\n if (type !== \"placeholder\") break;\n const token = state.push(type, \"\", 0);\n token.content = content;\n state.pos = pos;\n return true;\n }\n return false;\n};\n\nconst transformPlaceholderCore: RuleCore = (state) => {\n const { tokens } = state;\n for (let i = 0, n = tokens.length; i < n; ++i) {\n const token = tokens[i];\n if (token.type === \"html_block\") {\n const children: Token[] = [];\n for (const { type, content } of parsePlaceholderBlock(token.content)) {\n const child = new state.Token(type, \"\", 0);\n child.content = content;\n children.push(child);\n }\n if (children.length === 1 && children[0].type === \"html_block\") {\n tokens[i].content = children[0].content;\n } else {\n const inline = new state.Token(\"inline\", \"\", 0);\n inline.children = children;\n tokens[i] = inline;\n }\n }\n }\n};\n\nexport function hookTemplateLiterals(md: MarkdownIt) {\n md.inline.ruler.push(\"placeholder\", transformPlaceholderInline);\n md.core.ruler.after(\"inline\", \"placeholder\", transformPlaceholderCore);\n md.renderer.rules.placeholder = (tokens: Token[], idx: number, options: any, env: any, self: Renderer) => renderObservable(tokens, idx, options, env, self);\n}\n\n", "import type MarkdownIt from \"markdown-it\";\nimport type { Options } from \"markdown-it\";\nimport type Token from \"markdown-it/lib/token.mjs\";\nimport type Renderer from \"markdown-it/lib/renderer.mjs\";\nimport { RenderNode } from \"./render.ts\";\nimport { ENV_KEY, executeSrc, FenceInfo, fenceInfoDefaults, generatePlaceholders, showSrc } from \"./util.ts\";\n\nconst deserializeFenceInfo = (attrs: string): FenceInfo =>\n attrs\n .split(/\\s+/)\n .reduce((acc: FenceInfo, pair, idx: number) => {\n if (idx === 0) {\n acc.type = pair as \"js\" | \"javascript\" | string;\n return acc;\n }\n\n const [key, value] = pair.split(\"=\") as [keyof FenceInfo, string];\n switch (key) {\n case \"exec\":\n case \"echo\":\n case \"hide\":\n acc[key] = value !== \"false\";\n break;\n }\n return acc;\n }, { ...fenceInfoDefaults })\n ;\n\nconst proxy = (tokens: Token[], idx: number, options: Options, _env: any, self: Renderer) => self.renderToken(tokens, idx, options);\n\nexport function hookFence(md: MarkdownIt) {\n const defaultFenceRenderer = md.renderer.rules.fence || proxy;\n const fenceRenderer = (tokens: Token[], idx: number, options: Options, env: { [ENV_KEY]?: RenderNode[] }, self: Renderer) => {\n const token = tokens[idx];\n const fenceInfo = deserializeFenceInfo(token.info);\n if (fenceInfo.type === \"javascript\") {\n fenceInfo.type = \"js\";\n }\n token.content += \"\\n\";\n let preHtml = \"\";\n switch (fenceInfo.type) {\n case \"js\":\n if (executeSrc(fenceInfo)) {\n if (!env[ENV_KEY]) {\n env[ENV_KEY] = [];\n }\n preHtml += generatePlaceholders(token.content, fenceInfo, env);\n }\n if (showSrc(fenceInfo)) {\n return preHtml + defaultFenceRenderer(tokens, idx, options, env, self);\n }\n break;\n default:\n return preHtml + defaultFenceRenderer(tokens, idx, options, env, self);\n }\n return preHtml;\n };\n md.renderer.rules.fence = fenceRenderer;\n}\n", "import type MarkdownIt from \"markdown-it\";\nimport { render } from \"./render.ts\";\nimport { ENV_KEY } from \"./util.ts\";\nimport { hookTemplateLiterals } from \"./template-literal.ts\";\nimport { hookFence } from \"./fence.ts\";\n\nfunction hookRender(md: MarkdownIt) {\n const originalRender = md.render;\n md.render = (src: string, _env?: any): string => {\n const env = { ..._env };\n const retVal = originalRender.call(md, src, env);\n render(env[ENV_KEY] ?? []);\n return retVal;\n };\n}\n\nfunction hookVitepressRender(md: MarkdownIt) {\n\n const originalRender = md.render;\n md.render = (src: string, env?: any): string => {\n const myEnv = env ?? {};\n let retVal = originalRender.call(md, src, myEnv);\n if (env[ENV_KEY]?.length) {\n const content = encodeURI(JSON.stringify(env[ENV_KEY]));\n retVal += `<RenderComponent content=\"${content}\" />`;\n }\n return retVal;\n };\n}\n\nexport interface ObservableOptions {\n vitePress?: boolean;\n}\n\nexport function observable(md: MarkdownIt, opts: ObservableOptions = {}) {\n hookTemplateLiterals(md);\n hookFence(md);\n if (opts.vitePress) {\n hookVitepressRender(md);\n } else {\n hookRender(md);\n }\n}\n\nexport {\n render\n};\n"],
5
- "mappings": "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",
6
- "names": ["Runtime", "Library", "BaseInspector", "compile", "ojs2notebook", "fenceInfoDefaults", "showSrc", "fetchInfo", "executeSrc", "fenceInfo", "renderExecutedSrc", "idx", "createId", "suffix", "calcPlaceholders", "content", "retVal", "cellNb", "i", "id", "e", "ENV_KEY", "generatePlaceholders", "env", "acc", "cur", "Inspector", "BaseInspector", "placeholder", "value", "_name", "error", "render", "nodes", "displayIndex", "nb", "node", "renderExecutedSrc", "define", "compile", "runtime", "Runtime", "Library", "id", "_value", "_error", "renderObservable", "tokens", "idx", "_options", "env", "_self", "generatePlaceholders", "DOLLAR", "CURLEY_OPEN", "CURLEY_CLOSE", "parsePlaceholderInline", "src", "pos", "posMax", "observableStart", "nestedCurly", "done", "observableEnd", "parsePlaceholderBlock", "prevPos", "placeholder", "transformPlaceholderInline", "state", "silent", "marker1", "marker2", "type", "content", "token", "transformPlaceholderCore", "i", "n", "children", "child", "inline", "hookTemplateLiterals", "md", "options", "self", "deserializeFenceInfo", "attrs", "acc", "pair", "idx", "key", "value", "fenceInfoDefaults", "proxy", "tokens", "options", "_env", "self", "hookFence", "md", "defaultFenceRenderer", "fenceRenderer", "env", "token", "fenceInfo", "preHtml", "executeSrc", "ENV_KEY", "generatePlaceholders", "showSrc", "hookRender", "md", "originalRender", "src", "_env", "env", "retVal", "render", "ENV_KEY", "hookVitepressRender", "myEnv", "content", "observable", "opts", "hookTemplateLiterals", "hookFence"]
7
- }
@@ -1,2 +0,0 @@
1
- import{existsSync as p}from"node:fs";import{readdir as u,readFile as c}from"node:fs/promises";import n from"node:path";import{pathToFileURL as v}from"node:url";import{dsvFormat as y,autoType as d}from"d3-dsv";import{LoaderResolver as w}from"@observablehq/framework/dist/loader.js";import{getResolvers as g}from"@observablehq/framework/dist/resolvers.js";import{normalizeConfig as x}from"@observablehq/framework/dist/config.js";import{parseMarkdown as F}from"@observablehq/framework/dist/markdown.js";function b({path:o,...t}){return{...x(t),path:o}}var f=class o{filePath;options;resolvers;ext;constructor(t,e,r){this.filePath=t,this.options=e,this.resolvers=r,this.ext=n.extname(t).substring(1)}static async attach(t,e=n.resolve(".")){let r=p(n.resolve(e,t)),a=new w({root:e,interpreters:{}}).find(t);if(a){await a.load();let i=n.extname(t),m=b({root:e,path:"dummy.md"}),l=F(`\${FileAttachment('${t}')${i}()}`,m),h=await g(l,m);return h.resolveFile(t),new o(r?n.resolve(e,t):n.resolve(n.join(e,".observablehq","cache",t)),m,h)}}async myResolve(t){let e=await this.resolvers.resolveImport(t);return n.resolve(n.join(this.options.root,".observablehq","cache",e))}async myImport(t){if(t==="npm:apache-arrow")return import("apache-arrow");let e=await this.myResolve(t);return import(v(e).href).catch(s=>{console.error(s)})}buffer(){return c(this.filePath)}arrayBuffer(){return this.buffer().then(t=>t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength))}text(t="utf8"){return c(this.filePath,t)}json(){return this.text().then(t=>JSON.parse(t))}dsv({delimiter:t=",",array:e=!1,typed:r=!1}={}){return this.text().then(s=>{let a=y(t);return(e?a.parseRows:a.parse)(s,r&&d)})}csv(t){return this.dsv({...t,delimiter:","})}tsv(t){return this.dsv({...t,delimiter:" "})}arrow(){return Promise.all([this.myImport("npm:apache-arrow"),this.arrayBuffer()]).then(([t,e])=>t.tableFromIPC(e))}parquet(){return this.myResolve("npm:parquet-wasm/esm/parquet_wasm_bg.wasm").then(t=>{let e=new o(t,this.options,this.resolvers);return Promise.all([this.myImport("npm:apache-arrow"),this.myImport("npm:parquet-wasm"),e.arrayBuffer(),this.arrayBuffer()]).then(([r,s,a,i])=>(s.initSync(a),r.tableFromIPC(s.readParquet(new Uint8Array(i)).intoIPCStream())))})}fetch(){if(this[this.ext])return this[this.ext]()}},I=/^(.+\.(csv|tsv|txt|json|arrow|parquet))(?:\..*)?$/;async function q(o,t=!1){let e=await u(o,{withFileTypes:!0}),r=[];for(let s of e){let a=n.join(o,s.name);if(s.isDirectory()&&t){let i=await q(a,t);r=r.concat(i)}else if(s.isFile()){let i=s.name.match(I);if(i){let m=n.join(o,i[1]);r.push({path:m,data:await f.attach(m)})}}}return r}async function T(o){return(await f.attach(o))?.fetch()}export{f as DataFile,T as fetchData,q as findDataFiles};
2
- //# sourceMappingURL=loader.node.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/loader.ts"],
4
- "sourcesContent": ["import { existsSync } from \"node:fs\";\nimport { readdir, readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { dsvFormat, autoType } from \"d3-dsv\";\nimport { LoaderResolver, } from \"@observablehq/framework/dist/loader.js\";\nimport { getResolvers } from \"@observablehq/framework/dist/resolvers.js\";\nimport { normalizeConfig } from \"@observablehq/framework/dist/config.js\";\nimport { parseMarkdown } from \"@observablehq/framework/dist/markdown.js\";\n\nfunction getOptions({ path, ...config }) {\n return { ...normalizeConfig(config), path };\n}\n\nexport class DataFile {\n\n private filePath: string;\n private options: any;\n private resolvers: any;\n readonly ext: string;\n\n protected constructor(filePath, options, resolvers) {\n this.filePath = filePath;\n this.options = options;\n this.resolvers = resolvers;\n this.ext = path.extname(filePath).substring(1);\n }\n\n static async attach(partialPath: string, root: string = path.resolve(\".\")) {\n const exists = existsSync(path.resolve(root, partialPath));\n const loaders = new LoaderResolver({ root, interpreters: {} });\n const loader = loaders.find(partialPath);\n if (loader) {\n await loader.load();\n const ext = path.extname(partialPath);\n const options = getOptions({ root, path: \"dummy.md\" });\n const page = parseMarkdown(`\\${FileAttachment('${partialPath}')${ext}()}`, options);\n const resolvers = await getResolvers(page, options);\n resolvers.resolveFile(partialPath);\n return new DataFile(exists ? path.resolve(root, partialPath) : path.resolve(path.join(root, \".observablehq\", \"cache\", partialPath)), options, resolvers);\n }\n }\n\n async myResolve(module: string) {\n const partialPath = await this.resolvers.resolveImport(module);\n return path.resolve(path.join(this.options.root, \".observablehq\", \"cache\", partialPath));\n }\n\n async myImport(module: string) {\n if (module === \"npm:apache-arrow\") {\n return import(\"apache-arrow\");\n }\n const fullPath = await this.myResolve(module);\n const href = pathToFileURL(fullPath).href;\n return import(href).catch((error) => {\n console.error(error);\n });\n }\n\n buffer(): Promise<Buffer> {\n return readFile(this.filePath);\n }\n\n arrayBuffer() {\n return this.buffer().then(buffer => buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength));\n }\n\n text(encoding: BufferEncoding = \"utf8\") {\n return readFile(this.filePath, encoding);\n }\n\n json() {\n return this.text().then(txt => {\n return JSON.parse(txt);\n });\n }\n\n dsv({ delimiter = \",\", array = false, typed = false } = {}) {\n return this.text().then(text => {\n const format = dsvFormat(delimiter);\n const parse: any = array ? format.parseRows : format.parse;\n return parse(text, typed && autoType);\n });\n }\n\n csv(options?) {\n return this.dsv({ ...options, delimiter: \",\" });\n }\n\n tsv(options?) {\n return this.dsv({ ...options, delimiter: \"\\t\" });\n }\n\n arrow() {\n return Promise.all([this.myImport(\"npm:apache-arrow\"), this.arrayBuffer()]).then(([Arrow, response]) => {\n return Arrow.tableFromIPC(response);\n });\n }\n\n parquet() {\n return this.myResolve(\"npm:parquet-wasm/esm/parquet_wasm_bg.wasm\").then(wasmBytes => {\n const wasmFile = new DataFile(wasmBytes, this.options, this.resolvers);\n return Promise.all([\n this.myImport(\"npm:apache-arrow\"),\n this.myImport(\"npm:parquet-wasm\"),\n wasmFile.arrayBuffer(),\n this.arrayBuffer()\n ]).then(([Arrow, Parquet, wasm, buffer]) => {\n Parquet.initSync(wasm);\n return Arrow.tableFromIPC(Parquet.readParquet(new Uint8Array(buffer)).intoIPCStream());\n });\n });\n }\n\n fetch() {\n if (this[this.ext]) {\n return this[this.ext]();\n }\n }\n}\n\nconst regex = /^(.+\\.(csv|tsv|txt|json|arrow|parquet))(?:\\..*)?$/;\ninterface FileInfo {\n path: string;\n data: any;\n}\nexport async function findDataFiles(directory: string, recursive: boolean = false): Promise<FileInfo[]> {\n const files = await readdir(directory, { withFileTypes: true });\n let dataFiles: FileInfo[] = [];\n\n for (const file of files) {\n const fullPath = path.join(directory, file.name);\n if (file.isDirectory() && recursive) {\n const nestedFiles = await findDataFiles(fullPath, recursive);\n dataFiles = dataFiles.concat(nestedFiles);\n } else if (file.isFile()) {\n const match = file.name.match(regex);\n if (match) {\n const _path = path.join(directory, match[1]);\n dataFiles.push({\n path: _path,\n data: await DataFile.attach(_path)\n });\n }\n }\n }\n return dataFiles;\n}\n\nexport async function fetchData(partialPath: string) {\n const dataFile = await DataFile.attach(partialPath);\n return dataFile?.fetch();\n}\n\n"],
5
- "mappings": "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",
6
- "names": ["existsSync", "readdir", "readFile", "path", "pathToFileURL", "dsvFormat", "autoType", "LoaderResolver", "getResolvers", "normalizeConfig", "parseMarkdown", "getOptions", "config", "DataFile", "_DataFile", "filePath", "options", "resolvers", "partialPath", "root", "exists", "loader", "ext", "page", "module", "fullPath", "error", "buffer", "encoding", "txt", "delimiter", "array", "typed", "text", "format", "Arrow", "response", "wasmBytes", "wasmFile", "Parquet", "wasm", "regex", "findDataFiles", "directory", "recursive", "files", "dataFiles", "file", "nestedFiles", "match", "_path", "fetchData"]
7
- }