@domphy/doctor 0.15.0 → 0.16.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.
@@ -1,5 +1,5 @@
1
- "use strict";var Domphy=(()=>{var w=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var T=(e,s)=>{for(var t in s)w(e,t,{get:s[t],enumerable:!0})},B=(e,s,t,i)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of j(s))!N.call(e,r)&&r!==t&&w(e,r,{get:()=>s[r],enumerable:!(i=M(s,r))||i.enumerable});return e};var D=e=>B(w({},"__esModule",{value:!0}),e);var Y={};T(Y,{doctor:()=>v});var v={};T(v,{diagnose:()=>S,fix:()=>L,format:()=>$,validate:()=>_});var m=["a","abbr","address","article","aside","audio","b","base","blockquote","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","i","iframe","img","input","ins","kbd","label","legend","li","main","map","mark","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","slot","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","bdi","bdo","math","menu","search","area","embed","hr","animate","animateMotion","animateTransform","circle","clipPath","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","prefetch","radialGradient","rect","set","solidColor","stop","svg","switch","symbol","tbreak","text","textPath","tspan","use","view"];var p=["svg","circle","path","rect","ellipse","line","polyline","polygon","g","defs","use","symbol","linearGradient","radialGradient","stop","clipPath","mask","filter","text","tspan","textPath","image","pattern","marker","animate","animateTransform","animateMotion","feGaussianBlur","feComposite","feColorMatrix","feMerge","feMergeNode","feOffset","feFlood","feBlend","foreignObject"],y=["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"],A=["onAbort","onAuxClick","onBeforeMatch","onBeforeToggle","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClick","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onFormData","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLoad","onLoadedData","onLoadedMetadata","onLoadStart","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPaste","onPause","onPlay","onPlaying","onProgress","onRateChange","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onSubmit","onSuspend","onTimeUpdate","onToggle","onVolumeChange","onWaiting","onWheel","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onGotPointerCapture","onLostPointerCapture","onCompositionStart","onCompositionUpdate","onCompositionEnd","onTransitionEnd","onTransitionStart","onAnimationStart","onAnimationEnd","onAnimationIteration","onFullscreenChange","onFullscreenError","onFocusIn","onFocusOut"],X=A.reduce((e,s)=>{let t=s.slice(2).toLowerCase();return e[t]=s,e},{});var Z=typeof process!="undefined"&&process.env!=null&&process.env.NODE_ENV!=="production";var P=new Set([...m,...p]),I=new Set(y),F=new Set(["$","style","_key","_portal","_context","_metadata"]),U=new Set(["fontSize","lineHeight","fontWeight","letterSpacing"]),W=new Set(["color","backgroundColor","background","borderColor","border","outlineColor","outline","fill","stroke"]),H=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?)\s*\(/,V=/^(?:increase|decrease|shift)-\d+$/;function z(e){return e==="inherit"||e==="base"||/^-?\d+$/.test(e)?!0:V.test(e)}function k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function C(e){for(let s in e)if(P.has(s))return s}function S(e,s={}){let t=[];return g(e,"",t,!1,s.runReactive!==!1),t}function g(e,s,t,i,r){var R;if(typeof e=="function"){if(!r)return;let l;try{l=e(()=>{})}catch(o){return}g(l,s,t,!0,r);return}if(Array.isArray(e)){let l=e.filter(n=>k(n)&&C(n));i&&(l.length>1&&l.some(n=>n._key===void 0)&&t.push({rule:"missing-key",severity:"warning",path:s||"(list)",message:"Dynamic list child without `_key` \u2014 reordered/keyed lists need a stable `_key` for correct reconcile.",hint:"Add `_key: <stable id>` to each item produced by the reactive function."}),l.length>1&&l.every((n,a)=>n._key===a)&&t.push({rule:"unstable-key",severity:"warning",path:s||"(list)",message:"Dynamic list `_key` values are the array index (0, 1, 2, \u2026) \u2014 index keys are unstable across reorders/inserts.",hint:"Key by a stable identity from the data (e.g. `_key: item.id`), not the loop index."}));let o=new Map;for(let n of l){let a=n._key;if(a==null)continue;let f=`${typeof a}:${String(a)}`;o.set(f,((R=o.get(f))!=null?R:0)+1)}for(let[n,a]of o)if(a>1){let f=n.slice(n.indexOf(":")+1);t.push({rule:"duplicate-key",severity:"error",path:s||"(list)",message:`Duplicate \`_key\` "${f}" among ${a} siblings \u2014 keys must be unique within a list.`,hint:"Give each sibling a distinct stable `_key` (e.g. a record id, not a constant)."})}e.forEach((n,a)=>{g(n,`${s}[${a}]`,t,!1,r)});return}if(!k(e))return;let u=e,h=C(u),d=h?s?`${s} > ${h}`:h:s||"(root)";if(!h){let l=Object.keys(u).filter(o=>!F.has(o)&&!o.startsWith("_on")&&!o.startsWith("on")&&!o.startsWith("data")&&!o.startsWith("aria"));l.length===1&&t.push({rule:"unknown-tag",severity:"warning",path:d,message:`"${l[0]}" is not a known HTML/SVG tag \u2014 likely a typo.`,hint:"An element's first key must be a valid tag (div, button, span, \u2026)."});return}let c=u[h];if(I.has(h)&&c!==null&&c!==void 0&&t.push({rule:"void-content",severity:"error",path:d,message:`Void tag "${h}" must have null content (got ${Array.isArray(c)?"array":typeof c}).`,hint:`Write { ${h}: null, \u2026 } and put attributes as sibling keys.`}),k(u.style)){let l=u.style;for(let o in l){let n=l[o];U.has(o)&&typeof n!="function"&&t.push({rule:"inline-typography",severity:"warning",path:d,message:`Inline \`${o}\` \u2014 avoid inline typography styles.`,hint:"Use a typography patch (paragraph()/heading()/small()/strong()/\u2026) via $ so the theme owns the type scale."}),W.has(o)&&typeof n=="string"&&H.test(n)&&t.push({rule:"raw-theme-value",severity:"info",path:d,message:`Inline \`${o}\` uses a literal color (${n}).`,hint:"Prefer a theme token \u2014 (l) => themeColor(l, tone, color) \u2014 so theming and dark mode apply."})}}let b=u.dataTone;typeof b=="string"&&!z(b)&&t.push({rule:"unknown-tone",severity:"warning",path:d,message:`\`dataTone\` "${b}" is not a valid tone.`,hint:'Use "inherit", "base", a number, or "increase-N"/"decrease-N"/"shift-N" (e.g. "shift-9"). Words like "surface"/"text" are not Domphy tones.'}),g(c,d,t,!1,r)}function _(e,s={}){let t=S(e,s),i={error:0,warning:0,info:0,total:t.length};for(let r of t)i[r.severity]+=1;return{ok:i.error===0,issues:t,summary:i}}function $(e){if(e.length===0)return"\u2713 No issues found.";let s=t=>t==="error"?"\u2717":t==="warning"?"\u26A0":"i";return e.map(t=>`${s(t.severity)} [${t.rule}] ${t.path}
2
- ${t.message}${t.hint?`
3
- \u2192 ${t.hint}`:""}`).join(`
4
- `)}var G=new Set([...m,...p]),q=new Set(y);function O(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function K(e){for(let s in e)if(G.has(s))return s}function x(e){if(Array.isArray(e))return e.map(x);if(O(e)){let s={};for(let t in e)s[t]=x(e[t]);return s}return e}function L(e,s={}){let t=x(e),i=[];return E(t,"",i),{tree:t,applied:i,report:_(t,s)}}function E(e,s,t){if(Array.isArray(e)){e.forEach((u,h)=>E(u,`${s}[${h}]`,t));return}if(!O(e))return;let i=K(e);if(!i)return;let r=i?s?`${s} > ${i}`:i:s||"(root)";q.has(i)&&e[i]!==null&&e[i]!==void 0&&(e[i]=null,t.push({rule:"void-content",path:r,message:`Void tag <${i}> cannot have content \u2014 cleared to null.`})),E(e[i],r,t)}return D(Y);})();
1
+ "use strict";var Domphy=(()=>{var M=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var R=(e,t)=>{for(var s in t)M(e,s,{get:t[s],enumerable:!0})},q=(e,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of B(t))!I.call(e,r)&&r!==s&&M(e,r,{get:()=>t[r],enumerable:!(n=D(t,r))||n.enumerable});return e};var F=e=>q(M({},"__esModule",{value:!0}),e);var lt={};R(lt,{doctor:()=>_});var _={};R(_,{diagnose:()=>x,fix:()=>P,format:()=>N,validate:()=>v});var g=["a","abbr","address","article","aside","audio","b","base","blockquote","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","i","iframe","img","input","ins","kbd","label","legend","li","main","map","mark","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","slot","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","bdi","bdo","math","menu","search","area","embed","hr","animate","animateMotion","animateTransform","circle","clipPath","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","prefetch","radialGradient","rect","set","solidColor","stop","svg","switch","symbol","tbreak","text","textPath","tspan","use","view"];var y=["svg","circle","path","rect","ellipse","line","polyline","polygon","g","defs","use","symbol","linearGradient","radialGradient","stop","clipPath","mask","filter","text","tspan","textPath","image","pattern","marker","animate","animateTransform","animateMotion","feGaussianBlur","feComposite","feColorMatrix","feMerge","feMergeNode","feOffset","feFlood","feBlend","foreignObject"],b=["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"],U=["onAbort","onAuxClick","onBeforeMatch","onBeforeToggle","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClick","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onFormData","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLoad","onLoadedData","onLoadedMetadata","onLoadStart","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPaste","onPause","onPlay","onPlaying","onProgress","onRateChange","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onSubmit","onSuspend","onTimeUpdate","onToggle","onVolumeChange","onWaiting","onWheel","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onGotPointerCapture","onLostPointerCapture","onCompositionStart","onCompositionUpdate","onCompositionEnd","onTransitionEnd","onTransitionStart","onAnimationStart","onAnimationEnd","onAnimationIteration","onFullscreenChange","onFullscreenError","onFocusIn","onFocusOut"],ut=U.reduce((e,t)=>{let s=t.slice(2).toLowerCase();return e[s]=t,e},{});var ct=typeof process!="undefined"&&process.env!=null&&process.env.NODE_ENV!=="production";var H=e=>{let t=s=>s>.04045?Math.pow((s+.055)/1.055,2.4):s/12.92;return e.map(t)};var T=e=>{let t=parseInt(e.slice(1,3),16)/255,s=parseInt(e.slice(3,5),16)/255,n=parseInt(e.slice(5,7),16)/255;return H([t,s,n])};var $=e=>{let[t,s,n]=e,r=.4124564*t+.3575761*s+.1804375*n,i=.2126729*t+.7151522*s+.072175*n,h=.0193339*t+.119192*s+.9503041*n,u=.95047,f=1,p=1.08883,d=l=>l>.008856?Math.cbrt(l):7.787*l+16/116,c=d(r/u),a=d(i/f),o=d(h/p);return[116*a-16,500*(c-a),200*(a-o)]};var C=e=>{let[t,s,n]=e,r=Math.sqrt(s*s+n*n);if(r<1e-4)return[t,0,0];let i=(Math.atan2(n,s)*180/Math.PI+360)%360;return i>=359.9999&&(i=0),[t,r,i]};var L=e=>{let t=e.match(/\d+(\.\d+)?/g);if(!t||t.length<3)throw new Error("Invalid CSS rgb()");let s=n=>{let r=n/255;return r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)};return[s(Number(t[0])),s(Number(t[1])),s(Number(t[2]))]};var O={step:.005,p:.605,q:.685,avgScore:90.64326865384558,coverage:.9590384615384615,exact:.8847884615384616,spanError:.11521153846153846},dt=O.p,mt=O.q;var W=42;function V(e){return function(){let t=e+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}var pt=V(W);var z=new Set([...g,...y]),G=new Set(b),K=new Set(["$","style","_key","_portal","_context","_metadata"]),Y=new Set(["fontSize","lineHeight","fontWeight","letterSpacing","fontFamily","textDecoration"]),J=new Set(["color","backgroundColor","background","borderColor","border","outlineColor","outline","fill","stroke"]),X=/#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?)\s*\(/,Z=new Set(["margin","marginTop","marginRight","marginBottom","marginLeft","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","gap","rowGap","columnGap"]),Q=/^(\d+(?:\.\d+)?)(rem|em|px)$/,tt=/^(?:increase|decrease|shift)-\d+$/;function et(e){return e==="inherit"||e==="base"||/^-?\d+$/.test(e)?!0:tt.test(e)}function st(e){try{let t=e.trim(),s;if(t.startsWith("#")){let i=t;if(i.length===9&&(i=i.slice(0,7)),i.length===5&&(i=i.slice(0,4)),i.length===4&&(i="#"+i[1]+i[1]+i[2]+i[2]+i[3]+i[3]),i.length!==7)return null;s=T(i)}else if(/^rgba?\s*\(/.test(t))s=L(t);else return null;let n=$(s),r=C(n);return[r[0],r[1],r[2]]}catch(t){return null}}function nt(e){let[t,s,n]=e,r=Math.round((t-50)/10),i=Math.max(-9,Math.min(9,r)),h;Math.abs(i)<=1?h='"base"':i<0?h=`"decrease-${Math.abs(i)}"`:h=`"increase-${i}"`;let u;return s<12?u="neutral":n<30||n>=330?u="error":n<75?u="warning":n<165?u="success":(n<265,u="primary"),`(l) => themeColor(l, ${h}, "${u}") [perceptual LCH L=${Math.round(t)} C=${Math.round(s)} h=${Math.round(n)}\xB0]`}function it(e,t){let s=Q.exec(t);if(!s)return null;let n=parseFloat(s[1]),r=s[2],i;return r==="rem"||r==="em"?i=Math.round(n*4):i=Math.round(n/4),i<=0?null:`${e}: themeSpacing(${i}) \u2014 themeSpacing(n)=n/4em, so ${i}/4=${i/4}em \u2248 ${t} at default density`}function k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function A(e){for(let t in e)if(z.has(t))return t}function x(e,t={}){let s=[];return w(e,"",s,!1,t.runReactive!==!1),s}function w(e,t,s,n,r){var d;if(typeof e=="function"){if(!r)return;let c;try{c=e(()=>{})}catch(a){return}w(c,t,s,!0,r);return}if(Array.isArray(e)){let c=e.filter(o=>k(o)&&A(o));n&&(c.length>1&&c.some(o=>o._key===void 0)&&s.push({rule:"missing-key",severity:"warning",path:t||"(list)",message:"Dynamic list child without `_key` \u2014 reordered/keyed lists need a stable `_key` for correct reconcile.",hint:"Add `_key: <stable id>` to each item produced by the reactive function."}),c.length>1&&c.every((o,l)=>o._key===l)&&s.push({rule:"unstable-key",severity:"warning",path:t||"(list)",message:"Dynamic list `_key` values are the array index (0, 1, 2, \u2026) \u2014 index keys are unstable across reorders/inserts.",hint:"Key by a stable identity from the data (e.g. `_key: item.id`), not the loop index."}));let a=new Map;for(let o of c){let l=o._key;if(l==null)continue;let m=`${typeof l}:${String(l)}`;a.set(m,((d=a.get(m))!=null?d:0)+1)}for(let[o,l]of a)if(l>1){let m=o.slice(o.indexOf(":")+1);s.push({rule:"duplicate-key",severity:"error",path:t||"(list)",message:`Duplicate \`_key\` "${m}" among ${l} siblings \u2014 keys must be unique within a list.`,hint:"Give each sibling a distinct stable `_key` (e.g. a record id, not a constant)."})}e.forEach((o,l)=>{w(o,`${t}[${l}]`,s,!1,r)});return}if(!k(e))return;let i=e,h=A(i),u=h?t?`${t} > ${h}`:h:t||"(root)";if(!h){let c=Object.keys(i).filter(a=>!K.has(a)&&!a.startsWith("_on")&&!a.startsWith("on")&&!a.startsWith("data")&&!a.startsWith("aria"));c.length===1&&s.push({rule:"unknown-tag",severity:"warning",path:u,message:`"${c[0]}" is not a known HTML/SVG tag \u2014 likely a typo.`,hint:"An element's first key must be a valid tag (div, button, span, \u2026)."});return}let f=i[h];if(G.has(h)&&f!==null&&f!==void 0&&s.push({rule:"void-content",severity:"error",path:u,message:`Void tag "${h}" must have null content (got ${Array.isArray(f)?"array":typeof f}).`,hint:`Write { ${h}: null, \u2026 } and put attributes as sibling keys.`}),k(i.style)){let c=i.style;for(let a in c){let o=c[a];if(Y.has(a)&&typeof o!="function"&&s.push({rule:"inline-typography",severity:"warning",path:u,message:`Inline \`${a}\` \u2014 avoid inline typography styles.`,hint:"Use a typography patch (paragraph()/heading()/small()/strong()/\u2026) via $ so the theme owns the type scale."}),J.has(a)&&typeof o=="string"&&X.test(o)){let l=st(o),m=l?nt(l):"(l) => themeColor(l, tone, colorName)";s.push({rule:"raw-theme-value",severity:"info",path:u,message:`Inline \`${a}\` uses a literal color (${o}).`,hint:`Prefer a theme token \u2014 ${m} \u2014 so theming and dark mode apply.`})}if(Z.has(a)&&typeof o=="string"){let l=it(a,o);l&&s.push({rule:"raw-spacing-value",severity:"info",path:u,message:`Inline \`${a}: "${o}"\` uses a literal spacing value.`,hint:`Prefer themeSpacing() for theme density: ${l}`})}}}let p=i.dataTone;typeof p=="string"&&!et(p)&&s.push({rule:"unknown-tone",severity:"warning",path:u,message:`\`dataTone\` "${p}" is not a valid tone.`,hint:'Use "inherit", "base", a number, or "increase-N"/"decrease-N"/"shift-N" (e.g. "shift-9"). Words like "surface"/"text" are not Domphy tones.'}),w(f,u,s,!1,r)}function v(e,t={}){let s=x(e,t),n={error:0,warning:0,info:0,total:s.length};for(let r of s)n[r.severity]+=1;return{ok:n.error===0,issues:s,summary:n}}function N(e){if(e.length===0)return"\u2713 No issues found.";let t=s=>s==="error"?"\u2717":s==="warning"?"\u26A0":"i";return e.map(s=>`${t(s.severity)} [${s.rule}] ${s.path}
2
+ ${s.message}${s.hint?`
3
+ \u2192 ${s.hint}`:""}`).join(`
4
+ `)}var rt=new Set([...g,...y]),ot=new Set(b);function j(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function at(e){for(let t in e)if(rt.has(t))return t}function S(e){if(Array.isArray(e))return e.map(S);if(j(e)){let t={};for(let s in e)t[s]=S(e[s]);return t}return e}function P(e,t={}){let s=S(e),n=[];return E(s,"",n),{tree:s,applied:n,report:v(s,t)}}function E(e,t,s){if(Array.isArray(e)){e.forEach((i,h)=>E(i,`${t}[${h}]`,s));return}if(!j(e))return;let n=at(e);if(!n)return;let r=n?t?`${t} > ${n}`:n:t||"(root)";ot.has(n)&&e[n]!==null&&e[n]!==void 0&&(e[n]=null,s.push({rule:"void-content",path:r,message:`Void tag <${n}> cannot have content \u2014 cleared to null.`})),E(e[n],r,s)}return F(lt);})();
5
5
  //# sourceMappingURL=doctor.global.js.map