@facet-coverage/core 0.3.0 → 0.5.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.
Files changed (75) hide show
  1. package/README.md +64 -574
  2. package/dist/cli/commands/generate.d.ts.map +1 -1
  3. package/dist/cli/commands/generate.js +224 -25
  4. package/dist/cli/commands/generate.js.map +1 -1
  5. package/dist/cli/commands/serve.d.ts +12 -0
  6. package/dist/cli/commands/serve.d.ts.map +1 -0
  7. package/dist/cli/commands/serve.js +76 -0
  8. package/dist/cli/commands/serve.js.map +1 -0
  9. package/dist/cli/index.js +10 -0
  10. package/dist/cli/index.js.map +1 -1
  11. package/dist/client/index.js +60 -0
  12. package/dist/core/FacetParser.d.ts +37 -1
  13. package/dist/core/FacetParser.d.ts.map +1 -1
  14. package/dist/core/FacetParser.js +123 -5
  15. package/dist/core/FacetParser.js.map +1 -1
  16. package/dist/core/TestScanner.d.ts +4 -1
  17. package/dist/core/TestScanner.d.ts.map +1 -1
  18. package/dist/core/TestScanner.js +42 -13
  19. package/dist/core/TestScanner.js.map +1 -1
  20. package/dist/core/Validator.d.ts +4 -0
  21. package/dist/core/Validator.d.ts.map +1 -1
  22. package/dist/core/Validator.js +22 -4
  23. package/dist/core/Validator.js.map +1 -1
  24. package/dist/server/DevServer.d.ts +48 -0
  25. package/dist/server/DevServer.d.ts.map +1 -0
  26. package/dist/server/DevServer.js +126 -0
  27. package/dist/server/DevServer.js.map +1 -0
  28. package/dist/server/HotReloadManager.d.ts +49 -0
  29. package/dist/server/HotReloadManager.d.ts.map +1 -0
  30. package/dist/server/HotReloadManager.js +187 -0
  31. package/dist/server/HotReloadManager.js.map +1 -0
  32. package/dist/server/index.d.ts +3 -0
  33. package/dist/server/index.d.ts.map +1 -0
  34. package/dist/server/index.js +6 -0
  35. package/dist/server/index.js.map +1 -0
  36. package/dist/server/routes.d.ts +12 -0
  37. package/dist/server/routes.d.ts.map +1 -0
  38. package/dist/server/routes.js +272 -0
  39. package/dist/server/routes.js.map +1 -0
  40. package/dist/server/views/Dashboard.d.ts +6 -0
  41. package/dist/server/views/Dashboard.d.ts.map +1 -0
  42. package/dist/server/views/Dashboard.js +121 -0
  43. package/dist/server/views/Dashboard.js.map +1 -0
  44. package/dist/server/views/FacetPage.d.ts +6 -0
  45. package/dist/server/views/FacetPage.d.ts.map +1 -0
  46. package/dist/server/views/FacetPage.js +190 -0
  47. package/dist/server/views/FacetPage.js.map +1 -0
  48. package/dist/server/views/FeaturePage.d.ts +6 -0
  49. package/dist/server/views/FeaturePage.d.ts.map +1 -0
  50. package/dist/server/views/FeaturePage.js +98 -0
  51. package/dist/server/views/FeaturePage.js.map +1 -0
  52. package/dist/server/views/Layout.d.ts +17 -0
  53. package/dist/server/views/Layout.d.ts.map +1 -0
  54. package/dist/server/views/Layout.js +59 -0
  55. package/dist/server/views/Layout.js.map +1 -0
  56. package/dist/server/views/Sidebar.d.ts +6 -0
  57. package/dist/server/views/Sidebar.d.ts.map +1 -0
  58. package/dist/server/views/Sidebar.js +59 -0
  59. package/dist/server/views/Sidebar.js.map +1 -0
  60. package/dist/server/views/TestPanel.d.ts +6 -0
  61. package/dist/server/views/TestPanel.d.ts.map +1 -0
  62. package/dist/server/views/TestPanel.js +69 -0
  63. package/dist/server/views/TestPanel.js.map +1 -0
  64. package/dist/server/views/scripts.d.ts +5 -0
  65. package/dist/server/views/scripts.d.ts.map +1 -0
  66. package/dist/server/views/scripts.js +203 -0
  67. package/dist/server/views/scripts.js.map +1 -0
  68. package/dist/server/views/styles.d.ts +6 -0
  69. package/dist/server/views/styles.d.ts.map +1 -0
  70. package/dist/server/views/styles.js +608 -0
  71. package/dist/server/views/styles.js.map +1 -0
  72. package/dist/types.d.ts +27 -3
  73. package/dist/types.d.ts.map +1 -1
  74. package/dist/types.js.map +1 -1
  75. package/package.json +9 -4
@@ -0,0 +1,60 @@
1
+ var i,W,D0,Zb,F,H0,R0,y0,C0,X0,b0,v0,P0,j={},U0=[],Qb=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,c=Array.isArray;function M(b,v){for(var g in v)b[g]=v[g];return b}function Y0(b){b&&b.parentNode&&b.parentNode.removeChild(b)}function a(b,v,g){var X,Q,$,Y={};for($ in v)$=="key"?X=v[$]:$=="ref"?Q=v[$]:Y[$]=v[$];if(arguments.length>2&&(Y.children=arguments.length>3?i.call(arguments,2):g),typeof b=="function"&&b.defaultProps!=null)for($ in b.defaultProps)Y[$]===void 0&&(Y[$]=b.defaultProps[$]);return o(b,Y,X,Q,null)}function o(b,v,g,X,Q){var $={type:b,props:v,key:g,ref:X,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:Q==null?++D0:Q,__i:-1,__u:0};return Q==null&&W.vnode!=null&&W.vnode($),$}function p(b){return b.children}function I(b,v){this.props=b,this.context=v}function k(b,v){if(v==null)return b.__?k(b.__,b.__i+1):null;for(var g;v<b.__k.length;v++)if((g=b.__k[v])!=null&&g.__e!=null)return g.__e;return typeof b.type=="function"?k(b):null}function _0(b){var v,g;if((b=b.__)!=null&&b.__c!=null){for(b.__e=b.__c.base=null,v=0;v<b.__k.length;v++)if((g=b.__k[v])!=null&&g.__e!=null){b.__e=b.__c.base=g.__e;break}return _0(b)}}function g0(b){(!b.__d&&(b.__d=!0)&&F.push(b)&&!s.__r++||H0!=W.debounceRendering)&&((H0=W.debounceRendering)||R0)(s)}function s(){for(var b,v,g,X,Q,$,Y,J=1;F.length;)F.length>J&&F.sort(y0),b=F.shift(),J=F.length,b.__d&&(g=void 0,X=void 0,Q=(X=(v=b).__v).__e,$=[],Y=[],v.__P&&((g=M({},X)).__v=X.__v+1,W.vnode&&W.vnode(g),Z0(v.__P,g,X,v.__n,v.__P.namespaceURI,32&X.__u?[Q]:null,$,Q==null?k(X):Q,!!(32&X.__u),Y),g.__v=X.__v,g.__.__k[g.__i]=g,L0($,g,Y),X.__e=X.__=null,g.__e!=Q&&_0(g)));s.__r=0}function T0(b,v,g,X,Q,$,Y,J,G,V,N){var q,O,K,H,y,d,B,z=X&&X.__k||U0,U=v.length;for(G=qb(g,v,z,G,U),q=0;q<U;q++)(K=g.__k[q])!=null&&(O=K.__i==-1?j:z[K.__i]||j,K.__i=q,d=Z0(b,K,O,Q,$,Y,J,G,V,N),H=K.__e,K.ref&&O.ref!=K.ref&&(O.ref&&Q0(O.ref,null,K),N.push(K.ref,K.__c||H,K)),y==null&&H!=null&&(y=H),(B=!!(4&K.__u))||O.__k===K.__k?G=M0(K,G,b,B):typeof K.type=="function"&&d!==void 0?G=d:H&&(G=H.nextSibling),K.__u&=-7);return g.__e=y,G}function qb(b,v,g,X,Q){var $,Y,J,G,V,N=g.length,q=N,O=0;for(b.__k=Array(Q),$=0;$<Q;$++)(Y=v[$])!=null&&typeof Y!="boolean"&&typeof Y!="function"?(typeof Y=="string"||typeof Y=="number"||typeof Y=="bigint"||Y.constructor==String?Y=b.__k[$]=o(null,Y,null,null,null):c(Y)?Y=b.__k[$]=o(p,{children:Y},null,null,null):Y.constructor===void 0&&Y.__b>0?Y=b.__k[$]=o(Y.type,Y.props,Y.key,Y.ref?Y.ref:null,Y.__v):b.__k[$]=Y,G=$+O,Y.__=b,Y.__b=b.__b+1,J=null,(V=Y.__i=Jb(Y,g,G,q))!=-1&&(q--,(J=g[V])&&(J.__u|=2)),J==null||J.__v==null?(V==-1&&(Q>N?O--:Q<N&&O++),typeof Y.type!="function"&&(Y.__u|=4)):V!=G&&(V==G-1?O--:V==G+1?O++:(V>G?O--:O++,Y.__u|=4))):b.__k[$]=null;if(q)for($=0;$<N;$++)(J=g[$])!=null&&(2&J.__u)==0&&(J.__e==X&&(X=k(J)),w0(J,J));return X}function M0(b,v,g,X){var Q,$;if(typeof b.type=="function"){for(Q=b.__k,$=0;Q&&$<Q.length;$++)Q[$]&&(Q[$].__=b,v=M0(Q[$],v,g,X));return v}b.__e!=v&&(X&&(v&&b.type&&!v.parentNode&&(v=k(b)),g.insertBefore(b.__e,v||null)),v=b.__e);do v=v&&v.nextSibling;while(v!=null&&v.nodeType==8);return v}function l(b,v){return v=v||[],b==null||typeof b=="boolean"||(c(b)?b.some(function(g){l(g,v)}):v.push(b)),v}function Jb(b,v,g,X){var Q,$,Y,J=b.key,G=b.type,V=v[g],N=V!=null&&(2&V.__u)==0;if(V===null&&J==null||N&&J==V.key&&G==V.type)return g;if(X>(N?1:0)){for(Q=g-1,$=g+1;Q>=0||$<v.length;)if((V=v[Y=Q>=0?Q--:$++])!=null&&(2&V.__u)==0&&J==V.key&&G==V.type)return Y}return-1}function E0(b,v,g){v[0]=="-"?b.setProperty(v,g==null?"":g):b[v]=g==null?"":typeof g!="number"||Qb.test(v)?g:g+"px"}function f(b,v,g,X,Q){var $,Y;b:if(v=="style")if(typeof g=="string")b.style.cssText=g;else{if(typeof X=="string"&&(b.style.cssText=X=""),X)for(v in X)g&&v in g||E0(b.style,v,"");if(g)for(v in g)X&&g[v]==X[v]||E0(b.style,v,g[v])}else if(v[0]=="o"&&v[1]=="n")$=v!=(v=v.replace(C0,"$1")),Y=v.toLowerCase(),v=Y in b||v=="onFocusOut"||v=="onFocusIn"?Y.slice(2):v.slice(2),b.l||(b.l={}),b.l[v+$]=g,g?X?g.u=X.u:(g.u=X0,b.addEventListener(v,$?v0:b0,$)):b.removeEventListener(v,$?v0:b0,$);else{if(Q=="http://www.w3.org/2000/svg")v=v.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(v!="width"&&v!="height"&&v!="href"&&v!="list"&&v!="form"&&v!="tabIndex"&&v!="download"&&v!="rowSpan"&&v!="colSpan"&&v!="role"&&v!="popover"&&v in b)try{b[v]=g==null?"":g;break b}catch(J){}typeof g=="function"||(g==null||g===!1&&v[4]!="-"?b.removeAttribute(v):b.setAttribute(v,v=="popover"&&g==1?"":g))}}function d0(b){return function(v){if(this.l){var g=this.l[v.type+b];if(v.t==null)v.t=X0++;else if(v.t<g.u)return;return g(W.event?W.event(v):v)}}}function Z0(b,v,g,X,Q,$,Y,J,G,V){var N,q,O,K,H,y,d,B,z,U,_,A,E,B0,h,x,t,T=v.type;if(v.constructor!==void 0)return null;128&g.__u&&(G=!!(32&g.__u),$=[J=v.__e=g.__e]),(N=W.__b)&&N(v);b:if(typeof T=="function")try{if(B=v.props,z="prototype"in T&&T.prototype.render,U=(N=T.contextType)&&X[N.__c],_=N?U?U.props.value:N.__:X,g.__c?d=(q=v.__c=g.__c).__=q.__E:(z?v.__c=q=new T(B,_):(v.__c=q=new I(B,_),q.constructor=T,q.render=Gb),U&&U.sub(q),q.state||(q.state={}),q.__n=X,O=q.__d=!0,q.__h=[],q._sb=[]),z&&q.__s==null&&(q.__s=q.state),z&&T.getDerivedStateFromProps!=null&&(q.__s==q.state&&(q.__s=M({},q.__s)),M(q.__s,T.getDerivedStateFromProps(B,q.__s))),K=q.props,H=q.state,q.__v=v,O)z&&T.getDerivedStateFromProps==null&&q.componentWillMount!=null&&q.componentWillMount(),z&&q.componentDidMount!=null&&q.__h.push(q.componentDidMount);else{if(z&&T.getDerivedStateFromProps==null&&B!==K&&q.componentWillReceiveProps!=null&&q.componentWillReceiveProps(B,_),v.__v==g.__v||!q.__e&&q.shouldComponentUpdate!=null&&q.shouldComponentUpdate(B,q.__s,_)===!1){for(v.__v!=g.__v&&(q.props=B,q.state=q.__s,q.__d=!1),v.__e=g.__e,v.__k=g.__k,v.__k.some(function(S){S&&(S.__=v)}),A=0;A<q._sb.length;A++)q.__h.push(q._sb[A]);q._sb=[],q.__h.length&&Y.push(q);break b}q.componentWillUpdate!=null&&q.componentWillUpdate(B,q.__s,_),z&&q.componentDidUpdate!=null&&q.__h.push(function(){q.componentDidUpdate(K,H,y)})}if(q.context=_,q.props=B,q.__P=b,q.__e=!1,E=W.__r,B0=0,z){for(q.state=q.__s,q.__d=!1,E&&E(v),N=q.render(q.props,q.state,q.context),h=0;h<q._sb.length;h++)q.__h.push(q._sb[h]);q._sb=[]}else do q.__d=!1,E&&E(v),N=q.render(q.props,q.state,q.context),q.state=q.__s;while(q.__d&&++B0<25);q.state=q.__s,q.getChildContext!=null&&(X=M(M({},X),q.getChildContext())),z&&!O&&q.getSnapshotBeforeUpdate!=null&&(y=q.getSnapshotBeforeUpdate(K,H)),x=N,N!=null&&N.type===p&&N.key==null&&(x=F0(N.props.children)),J=T0(b,c(x)?x:[x],v,g,X,Q,$,Y,J,G,V),q.base=v.__e,v.__u&=-161,q.__h.length&&Y.push(q),d&&(q.__E=q.__=null)}catch(S){if(v.__v=null,G||$!=null)if(S.then){for(v.__u|=G?160:128;J&&J.nodeType==8&&J.nextSibling;)J=J.nextSibling;$[$.indexOf(J)]=null,v.__e=J}else{for(t=$.length;t--;)Y0($[t]);$0(v)}else v.__e=g.__e,v.__k=g.__k,S.then||$0(v);W.__e(S,v,g)}else $==null&&v.__v==g.__v?(v.__k=g.__k,v.__e=g.__e):J=v.__e=Vb(g.__e,v,g,X,Q,$,Y,G,V);return(N=W.diffed)&&N(v),128&v.__u?void 0:J}function $0(b){b&&b.__c&&(b.__c.__e=!0),b&&b.__k&&b.__k.forEach($0)}function L0(b,v,g){for(var X=0;X<g.length;X++)Q0(g[X],g[++X],g[++X]);W.__c&&W.__c(v,b),b.some(function(Q){try{b=Q.__h,Q.__h=[],b.some(function($){$.call(Q)})}catch($){W.__e($,Q.__v)}})}function F0(b){return typeof b!="object"||b==null||b.__b&&b.__b>0?b:c(b)?b.map(F0):M({},b)}function Vb(b,v,g,X,Q,$,Y,J,G){var V,N,q,O,K,H,y,d=g.props||j,B=v.props,z=v.type;if(z=="svg"?Q="http://www.w3.org/2000/svg":z=="math"?Q="http://www.w3.org/1998/Math/MathML":Q||(Q="http://www.w3.org/1999/xhtml"),$!=null){for(V=0;V<$.length;V++)if((K=$[V])&&"setAttribute"in K==!!z&&(z?K.localName==z:K.nodeType==3)){b=K,$[V]=null;break}}if(b==null){if(z==null)return document.createTextNode(B);b=document.createElementNS(Q,z,B.is&&B),J&&(W.__m&&W.__m(v,$),J=!1),$=null}if(z==null)d===B||J&&b.data==B||(b.data=B);else{if($=$&&i.call(b.childNodes),!J&&$!=null)for(d={},V=0;V<b.attributes.length;V++)d[(K=b.attributes[V]).name]=K.value;for(V in d)if(K=d[V],V=="children");else if(V=="dangerouslySetInnerHTML")q=K;else if(!(V in B)){if(V=="value"&&"defaultValue"in B||V=="checked"&&"defaultChecked"in B)continue;f(b,V,null,K,Q)}for(V in B)K=B[V],V=="children"?O=K:V=="dangerouslySetInnerHTML"?N=K:V=="value"?H=K:V=="checked"?y=K:J&&typeof K!="function"||d[V]===K||f(b,V,K,d[V],Q);if(N)J||q&&(N.__html==q.__html||N.__html==b.innerHTML)||(b.innerHTML=N.__html),v.__k=[];else if(q&&(b.innerHTML=""),T0(v.type=="template"?b.content:b,c(O)?O:[O],v,g,X,z=="foreignObject"?"http://www.w3.org/1999/xhtml":Q,$,Y,$?$[0]:g.__k&&k(g,0),J,G),$!=null)for(V=$.length;V--;)Y0($[V]);J||(V="value",z=="progress"&&H==null?b.removeAttribute("value"):H!=null&&(H!==b[V]||z=="progress"&&!H||z=="option"&&H!=d[V])&&f(b,V,H,d[V],Q),V="checked",y!=null&&y!=b[V]&&f(b,V,y,d[V],Q))}return b}function Q0(b,v,g){try{if(typeof b=="function"){var X=typeof b.__u=="function";X&&b.__u(),X&&v==null||(b.__u=b(v))}else b.current=v}catch(Q){W.__e(Q,g)}}function w0(b,v,g){var X,Q;if(W.unmount&&W.unmount(b),(X=b.ref)&&(X.current&&X.current!=b.__e||Q0(X,null,v)),(X=b.__c)!=null){if(X.componentWillUnmount)try{X.componentWillUnmount()}catch($){W.__e($,v)}X.base=X.__P=null}if(X=b.__k)for(Q=0;Q<X.length;Q++)X[Q]&&w0(X[Q],v,g||typeof b.type!="function");g||Y0(b.__e),b.__c=b.__=b.__e=void 0}function Gb(b,v,g){return this.constructor(b,g)}function S0(b,v,g){var X,Q,$,Y;v==document&&(v=document.documentElement),W.__&&W.__(b,v),Q=(X=typeof g=="function")?null:g&&g.__k||v.__k,$=[],Y=[],Z0(v,b=(!X&&g||v).__k=a(p,null,[b]),Q||j,j,v.namespaceURI,!X&&g?[g]:Q?null:v.firstChild?i.call(v.childNodes):null,$,!X&&g?g:Q?Q.__e:v.firstChild,X,Y),L0($,b,Y)}function I0(b,v,g){var X,Q,$,Y,J=M({},b.props);for($ in b.type&&b.type.defaultProps&&(Y=b.type.defaultProps),v)$=="key"?X=v[$]:$=="ref"?Q=v[$]:J[$]=v[$]===void 0&&Y!=null?Y[$]:v[$];return arguments.length>2&&(J.children=arguments.length>3?i.call(arguments,2):g),o(b.type,J,X||b.key,Q||b.ref,null)}function k0(b){function v(g){var X,Q;return this.getChildContext||(X=new Set,(Q={})[v.__c]=this,this.getChildContext=function(){return Q},this.componentWillUnmount=function(){X=null},this.shouldComponentUpdate=function($){this.props.value!=$.value&&X.forEach(function(Y){Y.__e=!0,g0(Y)})},this.sub=function($){X.add($);var Y=$.componentWillUnmount;$.componentWillUnmount=function(){X&&X.delete($),Y&&Y.call($)}}),g.children}return v.__c="__cC"+P0++,v.__=b,v.Provider=v.__l=(v.Consumer=function(g,X){return g.children(X)}).contextType=v,v}i=U0.slice,W={__e:function(b,v,g,X){for(var Q,$,Y;v=v.__;)if((Q=v.__c)&&!Q.__)try{if(($=Q.constructor)&&$.getDerivedStateFromError!=null&&(Q.setState($.getDerivedStateFromError(b)),Y=Q.__d),Q.componentDidCatch!=null&&(Q.componentDidCatch(b,X||{}),Y=Q.__d),Y)return Q.__E=Q}catch(J){b=J}throw b}},D0=0,Zb=function(b){return b!=null&&b.constructor===void 0},I.prototype.setState=function(b,v){var g;g=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=M({},this.state),typeof b=="function"&&(b=b(M({},g),this.props)),b&&M(g,b),b!=null&&this.__v&&(v&&this._sb.push(v),g0(this))},I.prototype.forceUpdate=function(b){this.__v&&(this.__e=!0,b&&this.__h.push(b),g0(this))},I.prototype.render=p,F=[],R0=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,y0=function(b,v){return b.__v.__b-v.__v.__b},s.__r=0,C0=/(PointerCapture)$|Capture$/i,X0=0,b0=d0(!1),v0=d0(!0),P0=0;var e,D,q0,p0,J0=0,f0=[],R=W,m0=R.__b,x0=R.__r,o0=R.diffed,j0=R.__c,i0=R.unmount,c0=R.__;function s0(b,v){R.__h&&R.__h(D,b,J0||v),J0=0;var g=D.__H||(D.__H={__:[],__h:[]});return b>=g.__.length&&g.__.push({}),g.__[b]}function C(b){return J0=1,Kb(a0,b)}function Kb(b,v,g){var X=s0(e++,2);if(X.t=b,!X.__c&&(X.__=[g?g(v):a0(void 0,v),function(J){var G=X.__N?X.__N[0]:X.__[0],V=X.t(G,J);G!==V&&(X.__N=[V,X.__[1]],X.__c.setState({}))}],X.__c=D,!D.__f)){var Q=function(J,G,V){if(!X.__c.__H)return!0;var N=X.__c.__H.__.filter(function(O){return!!O.__c});if(N.every(function(O){return!O.__N}))return!$||$.call(this,J,G,V);var q=X.__c.props!==J;return N.forEach(function(O){if(O.__N){var K=O.__[0];O.__=O.__N,O.__N=void 0,K!==O.__[0]&&(q=!0)}}),$&&$.call(this,J,G,V)||q};D.__f=!0;var{shouldComponentUpdate:$,componentWillUpdate:Y}=D;D.componentWillUpdate=function(J,G,V){if(this.__e){var N=$;$=void 0,Q(J,G,V),$=N}Y&&Y.call(this,J,G,V)},D.shouldComponentUpdate=Q}return X.__N||X.__}function m(b,v){var g=s0(e++,3);!R.__s&&Ab(g.__H,v)&&(g.__=b,g.u=v,D.__H.__h.push(g))}function Nb(){for(var b;b=f0.shift();)if(b.__P&&b.__H)try{b.__H.__h.forEach(r),b.__H.__h.forEach(V0),b.__H.__h=[]}catch(v){b.__H.__h=[],R.__e(v,b.__v)}}R.__b=function(b){D=null,m0&&m0(b)},R.__=function(b,v){b&&v.__k&&v.__k.__m&&(b.__m=v.__k.__m),c0&&c0(b,v)},R.__r=function(b){x0&&x0(b),e=0;var v=(D=b.__c).__H;v&&(q0===D?(v.__h=[],D.__h=[],v.__.forEach(function(g){g.__N&&(g.__=g.__N),g.u=g.__N=void 0})):(v.__h.forEach(r),v.__h.forEach(V0),v.__h=[],e=0)),q0=D},R.diffed=function(b){o0&&o0(b);var v=b.__c;v&&v.__H&&(v.__H.__h.length&&(f0.push(v)!==1&&p0===R.requestAnimationFrame||((p0=R.requestAnimationFrame)||Ob)(Nb)),v.__H.__.forEach(function(g){g.u&&(g.__H=g.u),g.u=void 0})),q0=D=null},R.__c=function(b,v){v.some(function(g){try{g.__h.forEach(r),g.__h=g.__h.filter(function(X){return!X.__||V0(X)})}catch(X){v.some(function(Q){Q.__h&&(Q.__h=[])}),v=[],R.__e(X,g.__v)}}),j0&&j0(b,v)},R.unmount=function(b){i0&&i0(b);var v,g=b.__c;g&&g.__H&&(g.__H.__.forEach(function(X){try{r(X)}catch(Q){v=Q}}),g.__H=void 0,v&&R.__e(v,g.__v))};var h0=typeof requestAnimationFrame=="function";function Ob(b){var v,g=function(){clearTimeout(X),h0&&cancelAnimationFrame(v),setTimeout(b)},X=setTimeout(g,35);h0&&(v=requestAnimationFrame(g))}function r(b){var v=D,g=b.__c;typeof g=="function"&&(b.__c=void 0,g()),D=v}function V0(b){var v=D;b.__c=b.__(),D=v}function Ab(b,v){return!b||b.length!==v.length||v.some(function(g,X){return g!==b[X]})}function a0(b,v){return typeof v=="function"?v(b):v}var zb={};function u(b,v){for(var g in v)b[g]=v[g];return b}function Wb(b,v,g){var X,Q=/(?:\?([^#]*))?(#.*)?$/,$=b.match(Q),Y={};if($&&$[1])for(var J=$[1].split("&"),G=0;G<J.length;G++){var V=J[G].split("=");Y[decodeURIComponent(V[0])]=decodeURIComponent(V.slice(1).join("="))}b=G0(b.replace(Q,"")),v=G0(v||"");for(var N=Math.max(b.length,v.length),q=0;q<N;q++)if(v[q]&&v[q].charAt(0)===":"){var O=v[q].replace(/(^:|[+*?]+$)/g,""),K=(v[q].match(/[+*?]+$/)||zb)[0]||"",H=~K.indexOf("+"),y=~K.indexOf("*"),d=b[q]||"";if(!d&&!y&&(K.indexOf("?")<0||H)){X=!1;break}if(Y[O]=decodeURIComponent(d),H||y){Y[O]=b.slice(q).map(decodeURIComponent).join("/");break}}else if(v[q]!==b[q]){X=!1;break}return(g.default===!0||X!==!1)&&Y}function Bb(b,v){return b.rank<v.rank?1:b.rank>v.rank?-1:b.index-v.index}function Hb(b,v){return b.index=v,b.rank=function(g){return g.props.default?0:G0(g.props.path).map(Eb).join("")}(b),b.props}function G0(b){return b.replace(/(^\/+|\/+$)/g,"").split("/")}function Eb(b){return b.charAt(0)==":"?1+"*+?".indexOf(b.charAt(b.length-1))||4:5}var db={},w=[],l0=[],P=null,e0={url:K0()},Db=k0(e0);function K0(){var b;return""+((b=P&&P.location?P.location:P&&P.getCurrentLocation?P.getCurrentLocation():typeof location<"u"?location:db).pathname||"")+(b.search||"")}function L(b,v){return v===void 0&&(v=!1),typeof b!="string"&&b.url&&(v=b.replace,b=b.url),function(g){for(var X=w.length;X--;)if(w[X].canRoute(g))return!0;return!1}(b)&&function(g,X){X===void 0&&(X="push"),P&&P[X]?P[X](g):typeof history<"u"&&history[X+"State"]&&history[X+"State"](null,null,g)}(b,v?"replace":"push"),u0(b)}function u0(b){for(var v=!1,g=0;g<w.length;g++)w[g].routeTo(b)&&(v=!0);return v}function Rb(b){if(b&&b.getAttribute){var v=b.getAttribute("href"),g=b.getAttribute("target");if(v&&v.match(/^\//g)&&(!g||g.match(/^_?self$/i)))return L(v)}}function yb(b){return b.stopImmediatePropagation&&b.stopImmediatePropagation(),b.stopPropagation&&b.stopPropagation(),b.preventDefault(),!1}function Cb(b){if(!(b.ctrlKey||b.metaKey||b.altKey||b.shiftKey||b.button)){var v=b.target;do if(v.localName==="a"&&v.getAttribute("href")){if(v.hasAttribute("data-native")||v.hasAttribute("native"))return;if(Rb(v))return yb(b)}while(v=v.parentNode)}}var r0=!1;function N0(b){b.history&&(P=b.history),this.state={url:b.url||K0()}}u(N0.prototype=new I,{shouldComponentUpdate:function(b){return b.static!==!0||b.url!==this.props.url||b.onChange!==this.props.onChange},canRoute:function(b){var v=l(this.props.children);return this.g(v,b)!==void 0},routeTo:function(b){this.setState({url:b});var v=this.canRoute(b);return this.p||this.forceUpdate(),v},componentWillMount:function(){this.p=!0},componentDidMount:function(){var b=this;r0||(r0=!0,P||addEventListener("popstate",function(){u0(K0())}),addEventListener("click",Cb)),w.push(this),P&&(this.u=P.listen(function(v){var g=v.location||v;b.routeTo(""+(g.pathname||"")+(g.search||""))})),this.p=!1},componentWillUnmount:function(){typeof this.u=="function"&&this.u(),w.splice(w.indexOf(this),1)},componentWillUpdate:function(){this.p=!0},componentDidUpdate:function(){this.p=!1},g:function(b,v){b=b.filter(Hb).sort(Bb);for(var g=0;g<b.length;g++){var X=b[g],Q=Wb(v,X.props.path,X.props);if(Q)return[X,Q]}},render:function(b,v){var g,X,Q=b.onChange,$=v.url,Y=this.c,J=this.g(l(b.children),$);if(J&&(X=I0(J[0],u(u({url:$,matches:g=J[1]},g),{key:void 0,ref:void 0}))),$!==(Y&&Y.url)){u(e0,Y=this.c={url:$,previous:Y&&Y.url,current:X,path:X?X.props.path:null,matches:g}),Y.router=this,Y.active=X?[X]:[];for(var G=l0.length;G--;)l0[G]({});typeof Q=="function"&&Q(Y)}return a(Db.Provider,{value:Y},X)}});var O0=function(b){return a(b.component,b)};var Pb=0;function Z(b,v,g,X,Q,$){v||(v={});var Y,J,G=v;if("ref"in G)for(J in G={},v)J=="ref"?Y=v[J]:G[J]=v[J];var V={type:b,props:G,key:g,ref:Y,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Pb,__i:-1,__u:0,__source:Q,__self:$};if(typeof b=="function"&&(Y=b.defaultProps))for(J in Y)G[J]===void 0&&(G[J]=Y[J]);return W.vnode&&W.vnode(V),V}function t0({report:b}){let[v,g]=C(new Set(b.features.map(($)=>$.feature))),X=($)=>{let Y=new Set(v);if(Y.has($))Y.delete($);else Y.add($);g(Y)},Q=b.features.map(($)=>{let Y=new Map;for(let J of $.facets){let G=J.facet.source.file;if(!Y.has(G))Y.set(G,{covered:0,total:0});let V=Y.get(G);if(V.total++,J.covered)V.covered++}return{feature:$.feature,path:$.path,percentage:$.percentage,files:Array.from(Y.entries()).map(([J,G])=>({file:J,fileName:J.split("/").pop()||J,covered:G.covered,total:G.total,percentage:G.total>0?Math.round(G.covered/G.total*100):0}))}});return Z("aside",{class:"w-72 flex-shrink-0 border-r border-slate-700 bg-slate-800 flex flex-col",children:[Z("div",{class:"p-4 border-b border-slate-700",children:Z("h1",{class:"text-lg font-semibold flex items-center gap-2",children:[Z("span",{class:"text-blue-400",children:"\uD83D\uDC8E"}),"Facet Docs"]})}),Z("nav",{class:"flex-1 overflow-y-auto p-2",children:[Z("a",{href:"/",onClick:($)=>{$.preventDefault(),L("/")},class:"flex items-center justify-between px-3 py-2 rounded-md hover:bg-slate-700 cursor-pointer mb-3",children:[Z("div",{class:"flex items-center gap-2",children:[Z("span",{class:"text-slate-400",children:"\uD83D\uDCCA"}),Z("span",{class:"font-medium",children:"Dashboard"})]}),Z(n0,{percentage:b.summary.percentage})]}),Z("div",{class:"text-xs text-slate-500 uppercase tracking-wider px-3 mb-2",children:"Features"}),Q.map(($)=>Z("div",{class:"mb-1",children:[Z("div",{onClick:()=>X($.feature),class:"flex items-center justify-between px-3 py-2 rounded-md hover:bg-slate-700 cursor-pointer",children:[Z("div",{class:"flex items-center gap-2",children:[Z("span",{class:`text-xs transition-transform ${v.has($.feature)?"rotate-90":""}`,children:"▶"}),Z("span",{class:"text-slate-400",children:"\uD83D\uDCC1"}),Z("span",{class:"font-medium text-sm",children:$.feature})]}),Z(n0,{percentage:$.percentage,small:!0})]}),v.has($.feature)&&Z("div",{class:"ml-4 border-l border-slate-700",children:$.files.map((Y)=>Z("a",{href:`/doc/${$.feature}/${Y.fileName}`,onClick:(J)=>{J.preventDefault(),L(`/doc/${$.feature}/${Y.fileName}`)},class:"flex items-center justify-between px-3 py-1.5 rounded hover:bg-slate-700/50 cursor-pointer group",children:[Z("div",{class:"flex items-center gap-2",children:[Z("span",{class:"text-slate-500 group-hover:text-slate-400",children:"\uD83D\uDCC4"}),Z("span",{class:"text-sm text-slate-300 group-hover:text-slate-100",children:Y.fileName})]}),Z("span",{class:"text-xs text-slate-500",children:[Y.covered,"/",Y.total]})]},Y.file))})]},$.feature))]}),Z("div",{class:"p-3 border-t border-slate-700 text-xs text-slate-500",children:[Z("div",{class:"flex justify-between",children:[Z("span",{children:"Total Coverage"}),Z("span",{children:[b.summary.percentage,"%"]})]}),Z("div",{class:"flex justify-between mt-1",children:[Z("span",{children:"Facets"}),Z("span",{children:[b.summary.coveredFacets,"/",b.summary.totalFacets]})]})]})]})}function n0({percentage:b,small:v}){let g=b>=80?"bg-green-500/20 text-green-400":b>=50?"bg-yellow-500/20 text-yellow-400":"bg-red-500/20 text-red-400";return Z("span",{class:`${g} ${v?"text-xs px-1.5 py-0.5":"text-xs px-2 py-1"} rounded font-medium`,children:[b,"%"]})}function bb({report:b}){let{summary:v,byType:g,features:X,uncovered:Q}=b,$=A0(v.percentage);return Z("div",{class:"h-full overflow-y-auto p-6",children:[Z("div",{class:"grid grid-cols-4 gap-4 mb-6",children:[Z(n,{label:"Coverage",value:`${v.percentage}%`,colorClass:$,showBar:!0,barValue:v.percentage}),Z(n,{label:"Total Facets",value:v.totalFacets}),Z(n,{label:"Covered",value:v.coveredFacets,colorClass:"text-green-400"}),Z(n,{label:"Uncovered",value:v.uncoveredFacets,colorClass:"text-red-400"})]}),g.length>0&&Z("div",{class:"bg-slate-800 rounded-xl p-5 mb-6 border border-slate-700",children:[Z("h2",{class:"text-lg font-semibold mb-4",children:"Coverage by Type"}),Z("div",{class:"grid grid-cols-3 gap-4",children:g.map((Y)=>Z(Ub,{type:Y},Y.type))})]}),Z("div",{class:"bg-slate-800 rounded-xl p-5 mb-6 border border-slate-700",children:[Z("h2",{class:"text-lg font-semibold mb-4",children:"Features"}),Z("div",{class:"grid grid-cols-2 gap-4",children:X.map((Y)=>Z(_b,{feature:Y},Y.feature))})]}),Q.length>0&&Z("div",{class:"bg-slate-800 rounded-xl p-5 border border-slate-700",children:[Z("h2",{class:"text-lg font-semibold mb-4",children:["Uncovered Facets",Q.length>10&&Z("span",{class:"text-sm font-normal text-slate-400 ml-2",children:["(showing 10 of ",Q.length,")"]})]}),Z("div",{class:"space-y-2",children:Q.slice(0,10).map((Y)=>Z("div",{onClick:()=>L(`/facet/${encodeURIComponent(Y.id)}`),class:"p-3 bg-slate-900 rounded-lg border-l-2 border-red-500 hover:bg-slate-700 cursor-pointer",children:[Z("div",{class:"flex items-center justify-between",children:[Z("code",{class:"text-sm font-medium",children:Y.id}),Z("span",{class:"text-xs px-2 py-0.5 bg-slate-700 rounded capitalize",children:Y.type})]}),Z("div",{class:"text-xs text-slate-400 mt-1",children:[Y.source.file,"#",Y.source.section]})]},Y.id))})]})]})}function n({label:b,value:v,colorClass:g="text-white",showBar:X,barValue:Q}){return Z("div",{class:"bg-slate-800 rounded-xl p-4 border border-slate-700",children:[Z("div",{class:`text-3xl font-bold ${g}`,children:v}),Z("div",{class:"text-sm text-slate-400 mt-1",children:b}),X&&Q!==void 0&&Z("div",{class:"mt-2 h-1.5 bg-slate-700 rounded-full overflow-hidden",children:Z("div",{class:`h-full ${z0(Q)} transition-all`,style:{width:`${Q}%`}})})]})}function Ub({type:b}){let v=A0(b.percentage),g=z0(b.percentage);return Z("div",{class:"bg-slate-900 rounded-lg p-4",children:[Z("div",{class:"flex items-center justify-between mb-2",children:[Z("span",{class:"font-medium capitalize",children:b.type}),Z("span",{class:`text-sm font-bold ${v}`,children:[b.percentage,"%"]})]}),Z("div",{class:"h-1.5 bg-slate-700 rounded-full overflow-hidden mb-2",children:Z("div",{class:`h-full ${g}`,style:{width:`${b.percentage}%`}})}),Z("div",{class:"text-xs text-slate-400",children:[b.covered," / ",b.total," covered"]})]})}function _b({feature:b}){let v=A0(b.percentage),g=z0(b.percentage);return Z("div",{onClick:()=>L(`/feature/${encodeURIComponent(b.feature)}`),class:"bg-slate-900 rounded-lg p-4 hover:bg-slate-700 cursor-pointer transition-colors border border-transparent hover:border-blue-500",children:[Z("div",{class:"font-medium mb-2",children:b.feature}),Z("div",{class:"h-1.5 bg-slate-700 rounded-full overflow-hidden mb-2",children:Z("div",{class:`h-full ${g}`,style:{width:`${b.percentage}%`}})}),Z("div",{class:"flex items-center justify-between",children:[Z("span",{class:"text-xs text-slate-400",children:[b.coveredFacets,"/",b.totalFacets," facets"]}),Z("span",{class:`text-sm font-bold ${v}`,children:[b.percentage,"%"]})]})]})}function A0(b){if(b>=80)return"text-green-400";if(b>=50)return"text-yellow-400";return"text-red-400"}function z0(b){if(b>=80)return"bg-green-500";if(b>=50)return"bg-yellow-500";return"bg-red-500"}function vb({markdown:b,report:v,featurePath:g,sourceFile:X,onFacetClick:Q,selectedFacetId:$}){let Y=Tb(v,g,X),J=Mb(b,Y,$);return Z("div",{class:"markdown-content prose prose-invert prose-slate max-w-none",dangerouslySetInnerHTML:{__html:J},onClick:(G)=>{let N=G.target.closest("[data-facet-id]");if(N){let q=N.dataset.facetId;if(q&&Y[q]){let{fullId:O,coverage:K}=Y[q];Q(O,K.coveredBy)}else if(q){let K=v.features.find((H)=>H.path===g)?.facets.find((H)=>H.facet.id===q);if(K)Q(q,K.coveredBy)}}}})}function Tb(b,v,g){let X={},Q=b.features.find(($)=>$.path===v);if(!Q)return X;for(let $ of Q.facets)if($.facet.source.file===g){let Y=$.facet.id,J=Y.split(":").pop()||"";X[Y]={fullId:Y,coverage:$},X[J]={fullId:Y,coverage:$};let G=J.split("/").pop()||"";if(G&&!X[G])X[G]={fullId:Y,coverage:$};if($.facet.source.section){let V=$.facet.source.section;if(!X[V])X[V]={fullId:Y,coverage:$}}}return X}function Mb(b,v,g){let X=b;return X=Lb(X),X=X.replace(/<a href="#([^"]+)"><\/a>/g,(Q,$)=>W0($,v,g)),X=X.replace(/&lt;!-- @facet:(\w+) --&gt;/g,(Q,$)=>W0($,v,g)),X=X.replace(/<!-- @facet:(\w+) -->/g,(Q,$)=>W0($,v,g)),X}function W0(b,v,g){let X=v[b];if(!X)return`<span class="facet-chip unknown" data-facet-id="${b}" title="Unknown facet: ${b}">? ${b}</span>`;let{fullId:Q,coverage:$}=X,Y=$.coveredBy.length,J=$.covered,G=g===Q,V=J?"covered":"uncovered",N=G?"selected":"",q=J?"✓":"✗",O=Y===1?"1 test":`${Y} tests`;return`<span class="facet-chip ${V} ${N}" data-facet-id="${b}" title="${Q}">${q} ${O}</span>`}function Lb(b){let v=b;v=v.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),v=v.replace(/&lt;!-- @facet:/g,"<!-- @facet:"),v=v.replace(/ --&gt;/g," -->"),v=v.replace(/^###### (.+)$/gm,"<h6>$1</h6>"),v=v.replace(/^##### (.+)$/gm,"<h5>$1</h5>"),v=v.replace(/^#### (.+)$/gm,"<h4>$1</h4>"),v=v.replace(/^### (.+)$/gm,"<h3>$1</h3>"),v=v.replace(/^## (.+)$/gm,"<h2>$1</h2>"),v=v.replace(/^# (.+)$/gm,"<h1>$1</h1>"),v=v.replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2">$1</a>'),v=v.replace(/\[\]\(#([^)]+)\)/g,'<a href="#$1"></a>'),v=v.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),v=v.replace(/(?<!\*)\*([^*]+)\*(?!\*)/g,"<em>$1</em>"),v=v.replace(/`([^`]+)`/g,"<code>$1</code>"),v=v.replace(/```(\w*)\n([\s\S]*?)```/g,(Y,J,G)=>{let V=G.trim();return`<pre><code class="language-${J||"text"}">${V}</code></pre>`}),v=v.replace(/^---$/gm,"<hr>"),v=v.replace(/^\*\*\*$/gm,"<hr>"),v=v.replace(/^- (.+)$/gm,"<li>$1</li>"),v=v.replace(/^(\s*)- (.+)$/gm,'<li class="ml-4">$2</li>'),v=v.replace(/^\d+\. (.+)$/gm,"<li>$1</li>"),v=v.replace(/(<li[^>]*>.*<\/li>\n?)+/g,(Y)=>{let G=Y.includes("1.")?"ol":"ul";return`<${G} class="list-disc ml-6 my-2">${Y}</${G}>`});let g=v.split(`
2
+ `),X=[],Q=!1,$=[];for(let Y of g){let J=Y.trim();if(J.startsWith("<h")||J.startsWith("<ul")||J.startsWith("<ol")||J.startsWith("<li")||J.startsWith("<pre")||J.startsWith("<hr")||J.startsWith("</ul")||J.startsWith("</ol")||J.startsWith("</pre")||J===""){if(Q&&$.length>0)X.push(`<p>${$.join(" ")}</p>`),$=[],Q=!1;if(J)X.push(Y)}else Q=!0,$.push(J)}if($.length>0)X.push(`<p>${$.join(" ")}</p>`);return X.join(`
3
+ `)}function gb({report:b,feature:v,file:g}){let[X,Q]=C(""),[$,Y]=C(!0),[J,G]=C(null),[V,N]=C([]),[q,O]=C(null),K=b.features.find((A)=>A.feature===v),H=K?.path||`features/${v}`,y=`facets/${g}`,d=K?.facets.filter((A)=>A.facet.source.file===y)||[],B=d.filter((A)=>A.covered).length,z=d.length,U=z>0?Math.round(B/z*100):0;m(()=>{Y(!0);let A=`features/${v}/${y}`;fetch(`/api/markdown?path=${encodeURIComponent(A)}`).then((E)=>E.json()).then((E)=>{if(E.content)Q(E.content);else Q(`# Error
4
+
5
+ Could not load ${g}`);Y(!1)}).catch((E)=>{console.error("Failed to fetch markdown:",E),Q(`# Error
6
+
7
+ Failed to load document: ${E.message}`),Y(!1)})},[v,g,y]),m(()=>{if(V.length>0){let A=V[0];fetch(`/api/test-source?file=${encodeURIComponent(A.file)}&line=${A.line||1}`).then((E)=>E.json()).then((E)=>{if(E.code)O({code:E.code,startLine:E.startLine||1})}).catch((E)=>console.error("Failed to fetch test source:",E))}else O(null)},[V]);let _=(A,E)=>{G(A),N(E)};if($)return Z("div",{class:"flex h-full items-center justify-center",children:Z("div",{class:"text-slate-400",children:"Loading document..."})});return Z("div",{class:"flex h-full",children:[Z("div",{class:"flex-1 overflow-y-auto p-6 border-r border-slate-700",children:[Z("div",{class:"mb-6 pb-4 border-b border-slate-700",children:[Z("div",{class:"flex items-center gap-2 text-sm text-slate-400 mb-2",children:[Z("button",{onClick:()=>L("/"),class:"hover:text-slate-200 transition-colors",children:"Dashboard"}),Z("span",{children:"/"}),Z("span",{children:v}),Z("span",{children:"/"}),Z("span",{class:"text-slate-200",children:g})]}),Z("div",{class:"flex items-center justify-between",children:[Z("h1",{class:"text-2xl font-bold",children:g.replace(".md","")}),Z("div",{class:"flex items-center gap-3",children:[Z("span",{class:"text-sm text-slate-400",children:[B,"/",z," facets covered"]}),Z(Fb,{percentage:U})]})]})]}),Z(vb,{markdown:X,report:b,featurePath:H,sourceFile:y,onFacetClick:_,selectedFacetId:J||void 0}),Z("style",{children:`
8
+ .facet-chip {
9
+ display: inline-flex;
10
+ align-items: center;
11
+ gap: 0.25rem;
12
+ padding: 0.125rem 0.5rem;
13
+ margin: 0 0.25rem;
14
+ border-radius: 9999px;
15
+ font-size: 0.75rem;
16
+ font-weight: 500;
17
+ cursor: pointer;
18
+ transition: all 0.15s;
19
+ vertical-align: middle;
20
+ }
21
+ .facet-chip.covered {
22
+ background: rgba(34, 197, 94, 0.2);
23
+ color: rgb(74, 222, 128);
24
+ border: 1px solid rgba(34, 197, 94, 0.3);
25
+ }
26
+ .facet-chip.covered:hover {
27
+ background: rgba(34, 197, 94, 0.3);
28
+ }
29
+ .facet-chip.uncovered {
30
+ background: rgba(239, 68, 68, 0.2);
31
+ color: rgb(248, 113, 113);
32
+ border: 1px solid rgba(239, 68, 68, 0.3);
33
+ }
34
+ .facet-chip.uncovered:hover {
35
+ background: rgba(239, 68, 68, 0.3);
36
+ }
37
+ .facet-chip.unknown {
38
+ background: rgba(148, 163, 184, 0.2);
39
+ color: rgb(148, 163, 184);
40
+ border: 1px solid rgba(148, 163, 184, 0.3);
41
+ }
42
+ .facet-chip.selected {
43
+ ring: 2px;
44
+ ring-offset: 2px;
45
+ box-shadow: 0 0 0 2px rgb(59, 130, 246);
46
+ }
47
+ .markdown-content h1 { font-size: 1.875rem; font-weight: 700; margin: 1.5rem 0 1rem; }
48
+ .markdown-content h2 { font-size: 1.5rem; font-weight: 600; margin: 1.25rem 0 0.75rem; border-bottom: 1px solid rgb(51, 65, 85); padding-bottom: 0.5rem; }
49
+ .markdown-content h3 { font-size: 1.25rem; font-weight: 600; margin: 1rem 0 0.5rem; }
50
+ .markdown-content h4 { font-size: 1.125rem; font-weight: 600; margin: 0.75rem 0 0.5rem; }
51
+ .markdown-content p { margin: 0.75rem 0; line-height: 1.625; }
52
+ .markdown-content ul, .markdown-content ol { margin: 0.5rem 0; padding-left: 1.5rem; }
53
+ .markdown-content li { margin: 0.25rem 0; }
54
+ .markdown-content code { background: rgba(30, 41, 59, 0.8); padding: 0.125rem 0.375rem; border-radius: 0.25rem; font-size: 0.875em; }
55
+ .markdown-content pre { background: rgb(15, 23, 42); padding: 1rem; border-radius: 0.5rem; overflow-x: auto; margin: 1rem 0; }
56
+ .markdown-content pre code { background: transparent; padding: 0; }
57
+ .markdown-content strong { font-weight: 600; }
58
+ .markdown-content a:not(.facet-chip) { color: rgb(96, 165, 250); text-decoration: underline; }
59
+ .markdown-content hr { border-color: rgb(51, 65, 85); margin: 1.5rem 0; }
60
+ `})]}),Z("div",{class:"w-96 flex-shrink-0 bg-slate-800/50 overflow-y-auto",children:J?Z("div",{class:"p-4",children:[Z("div",{class:"mb-4",children:[Z("h2",{class:"text-lg font-semibold mb-1",children:"Tests"}),Z("p",{class:"text-sm text-slate-400",children:[V.length," test",V.length!==1?"s":""," covering this facet"]})]}),V.length===0?Z("div",{class:"text-center py-8 text-slate-500",children:[Z("div",{class:"text-4xl mb-2",children:"\uD83E\uDDEA"}),Z("p",{children:"No tests cover this facet"}),Z("p",{class:"text-sm mt-1",children:"Add tests to improve coverage"})]}):Z("div",{class:"space-y-3",children:V.map((A,E)=>Z("div",{class:"bg-slate-900 rounded-lg overflow-hidden",children:[Z("div",{class:"p-3 border-b border-slate-700",children:[Z("div",{class:"font-medium text-sm",children:A.title}),Z("div",{class:"text-xs text-slate-400 mt-1",children:[A.file,":",A.line]})]}),q&&E===0&&Z("pre",{class:"p-3 text-xs overflow-x-auto bg-slate-950",children:Z("code",{children:q.code})})]},E))})]}):Z("div",{class:"p-4",children:[Z("h2",{class:"text-lg font-semibold mb-4",children:"Document Coverage"}),Z("div",{class:"space-y-2",children:d.map((A)=>Z("button",{onClick:()=>_(A.facet.id,A.coveredBy),class:`w-full text-left p-3 rounded-lg transition-colors ${A.covered?"bg-green-500/10 hover:bg-green-500/20 border border-green-500/20":"bg-red-500/10 hover:bg-red-500/20 border border-red-500/20"}`,children:[Z("div",{class:"flex items-center justify-between",children:[Z("span",{class:"text-sm font-medium",children:A.facet.title||A.facet.id.split(":").pop()}),Z("span",{class:`text-xs ${A.covered?"text-green-400":"text-red-400"}`,children:A.covered?`✓ ${A.coveredBy.length}`:"✗ 0"})]}),A.facet.isSubFacet&&Z("div",{class:"text-xs text-slate-500 mt-1",children:"Sub-facet"})]},A.facet.id))})]})})]})}function Fb({percentage:b}){let v=b>=80?"bg-green-500/20 text-green-400 border-green-500/30":b>=50?"bg-yellow-500/20 text-yellow-400 border-yellow-500/30":"bg-red-500/20 text-red-400 border-red-500/30";return Z("span",{class:`${v} text-sm px-2 py-1 rounded border font-medium`,children:[b,"%"]})}function $b({status:b}){if(!b)return null;let v={connected:{text:"Connected",bgClass:"bg-green-500/20 border-green-500/50",textClass:"text-green-400"},updating:{text:"Updating...",bgClass:"bg-yellow-500/20 border-yellow-500/50",textClass:"text-yellow-400"},error:{text:"Connection error",bgClass:"bg-red-500/20 border-red-500/50",textClass:"text-red-400"}},{text:g,bgClass:X,textClass:Q}=v[b];return Z("div",{class:`fixed bottom-4 right-4 px-4 py-2 rounded-lg border ${X} flex items-center gap-2`,children:[b==="updating"&&Z("div",{class:"w-4 h-4 border-2 border-yellow-500/30 border-t-yellow-500 rounded-full animate-spin"}),Z("span",{class:`text-sm ${Q}`,children:g})]})}function Xb(){let[b,v]=C(null),[g,X]=C(!0),[Q,$]=C(null);m(()=>{Y(),J()},[]);async function Y(){try{let V=await(await fetch("/api/coverage")).json();v(V),X(!1)}catch(G){console.error("Failed to fetch coverage:",G),X(!1)}}function J(){let G=window.location.protocol==="https:"?"wss:":"ws:",V=new WebSocket(`${G}//${window.location.host}/ws`);V.onopen=()=>{$("connected"),setTimeout(()=>$(null),2000)},V.onmessage=(N)=>{let q=JSON.parse(N.data);if(q.type==="file-change")$("updating");else if(q.type==="coverage-update")Y(),$("connected"),setTimeout(()=>$(null),2000);else if(q.type==="client-reload")console.log("Client bundle updated, reloading..."),window.location.reload()},V.onclose=()=>{setTimeout(J,1000)}}if(g)return Z("div",{class:"flex h-screen items-center justify-center bg-slate-900 text-white",children:Z("div",{class:"text-center",children:[Z("div",{class:"mb-4 h-8 w-8 animate-spin rounded-full border-2 border-slate-600 border-t-blue-500 mx-auto"}),Z("p",{class:"text-slate-400",children:"Loading coverage data..."})]})});if(!b)return Z("div",{class:"flex h-screen items-center justify-center bg-slate-900 text-white",children:Z("p",{class:"text-red-400",children:"Failed to load coverage data"})});return Z("div",{class:"flex h-screen bg-slate-900 text-slate-100",children:[Z(t0,{report:b}),Z("main",{class:"flex-1 overflow-hidden",children:Z(N0,{children:[Z(O0,{path:"/",component:()=>Z(bb,{report:b})}),Z(O0,{path:"/doc/:feature/:file",component:({feature:G,file:V})=>Z(gb,{report:b,feature:decodeURIComponent(G),file:decodeURIComponent(V)})})]})}),Z($b,{status:Q})]})}var Yb=document.getElementById("app");if(Yb)S0(Z(Xb,{}),Yb);
@@ -1,4 +1,4 @@
1
- import type { MarkdownSection, ParsedMarkdown } from '../types.js';
1
+ import type { MarkdownSection, ParsedMarkdown, SubFacetMarker } from '../types.js';
2
2
  /**
3
3
  * Parses markdown files and extracts sections
4
4
  */
@@ -7,6 +7,19 @@ export declare class FacetParser {
7
7
  * Convert a title to a URL-friendly slug
8
8
  */
9
9
  static slugify(title: string): string;
10
+ /**
11
+ * Parse sub-facet markers from content lines.
12
+ * Supports two patterns:
13
+ * 1. Comment markers: `<!-- @facet:sub-id -->`
14
+ * 2. Empty link anchors: `[](#sub-id)` - renders invisibly in markdown
15
+ *
16
+ * Skips content inside fenced code blocks and inline backticks.
17
+ *
18
+ * @param lines - Array of content lines
19
+ * @param startLineNumber - The 1-indexed line number of the first line in the array
20
+ * @returns Array of SubFacetMarker objects
21
+ */
22
+ static parseSubFacets(lines: string[], startLineNumber: number): SubFacetMarker[];
10
23
  /**
11
24
  * Parse a markdown file and extract all sections
12
25
  */
@@ -52,5 +65,28 @@ export declare class FacetParser {
52
65
  * @returns ID like "checkout/payments/pci:section-slug" or "business:section-slug"
53
66
  */
54
67
  static generateHierarchicalFacetId(rootDir: string, facetFile: string, sectionSlug: string): string;
68
+ /**
69
+ * Generate a sub-facet ID from a parent facet ID and sub-facet marker ID.
70
+ * Creates hierarchical ID like "type:parent/child"
71
+ *
72
+ * @param parentFacetId - The parent facet ID (e.g., "compliance:pci-dss")
73
+ * @param subFacetId - The local sub-facet ID from marker (e.g., "tls")
74
+ * @returns Combined ID like "compliance:pci-dss/tls"
75
+ */
76
+ static generateSubFacetId(parentFacetId: string, subFacetId: string): string;
77
+ /**
78
+ * Check if a facet ID is a sub-facet (contains "/" after the ":")
79
+ *
80
+ * @param facetId - The facet ID to check
81
+ * @returns true if this is a sub-facet ID
82
+ */
83
+ static isSubFacetId(facetId: string): boolean;
84
+ /**
85
+ * Extract parent facet ID from a sub-facet ID
86
+ *
87
+ * @param subFacetId - The sub-facet ID (e.g., "compliance:pci-dss/tls")
88
+ * @returns The parent ID (e.g., "compliance:pci-dss") or null if not a sub-facet
89
+ */
90
+ static getParentFacetId(subFacetId: string): string | null;
55
91
  }
56
92
  //# sourceMappingURL=FacetParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FacetParser.d.ts","sourceRoot":"","sources":["../../src/core/FacetParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnE;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAUrC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAS3C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,cAAc;IAoDpE;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9E;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAS7D;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAK3C;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI/C;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ9C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAKrE;;;;;;;;OAQG;IACH,MAAM,CAAC,2BAA2B,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM;CAoBV"}
1
+ {"version":3,"file":"FacetParser.d.ts","sourceRoot":"","sources":["../../src/core/FacetParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnF;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAUrC;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,cAAc,EAAE;IAuDjF;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAS3C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,cAAc;IA+EpE;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9E;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAS7D;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAK3C;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI/C;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ9C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAKrE;;;;;;;;OAQG;IACH,MAAM,CAAC,2BAA2B,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM;IAqBT;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAI5E;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAM7C;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAS3D"}
@@ -19,6 +19,63 @@ class FacetParser {
19
19
  .replace(/-+/g, '-') // Replace multiple hyphens with single
20
20
  .replace(/^-|-$/g, ''); // Remove leading/trailing hyphens
21
21
  }
22
+ /**
23
+ * Parse sub-facet markers from content lines.
24
+ * Supports two patterns:
25
+ * 1. Comment markers: `<!-- @facet:sub-id -->`
26
+ * 2. Empty link anchors: `[](#sub-id)` - renders invisibly in markdown
27
+ *
28
+ * Skips content inside fenced code blocks and inline backticks.
29
+ *
30
+ * @param lines - Array of content lines
31
+ * @param startLineNumber - The 1-indexed line number of the first line in the array
32
+ * @returns Array of SubFacetMarker objects
33
+ */
34
+ static parseSubFacets(lines, startLineNumber) {
35
+ const subFacets = [];
36
+ // Pattern for comment markers: <!-- @facet:id --> or <!-- @facet: id -->
37
+ const commentPattern = /<!--\s*@facet:\s*([a-z0-9-]+)\s*-->/g;
38
+ // Pattern for empty link anchors: [](#id) or []( #id ) with optional whitespace
39
+ const emptyLinkPattern = /\[\]\(\s*#([a-z0-9-]+)\s*\)/g;
40
+ // Track if we're inside a fenced code block
41
+ let inCodeBlock = false;
42
+ for (let i = 0; i < lines.length; i++) {
43
+ const line = lines[i];
44
+ const lineNumber = startLineNumber + i;
45
+ // Check for fenced code block markers (``` or ~~~)
46
+ if (line.trim().startsWith('```') || line.trim().startsWith('~~~')) {
47
+ inCodeBlock = !inCodeBlock;
48
+ continue;
49
+ }
50
+ // Skip lines inside code blocks
51
+ if (inCodeBlock) {
52
+ continue;
53
+ }
54
+ // Check for comment markers (can have multiple per line)
55
+ let commentMatch;
56
+ while ((commentMatch = commentPattern.exec(line)) !== null) {
57
+ subFacets.push({
58
+ id: commentMatch[1],
59
+ line: lineNumber,
60
+ type: 'comment',
61
+ });
62
+ }
63
+ commentPattern.lastIndex = 0;
64
+ // Check for empty link anchors, but skip those inside backticks
65
+ // Remove backticked content before matching
66
+ const lineWithoutBackticks = line.replace(/`[^`]+`/g, '');
67
+ let linkMatch;
68
+ while ((linkMatch = emptyLinkPattern.exec(lineWithoutBackticks)) !== null) {
69
+ subFacets.push({
70
+ id: linkMatch[1],
71
+ line: lineNumber,
72
+ type: 'link',
73
+ });
74
+ }
75
+ emptyLinkPattern.lastIndex = 0;
76
+ }
77
+ return subFacets;
78
+ }
22
79
  /**
23
80
  * Parse a markdown file and extract all sections
24
81
  */
@@ -35,18 +92,31 @@ class FacetParser {
35
92
  parseContent(content, filePath = '') {
36
93
  const lines = content.split('\n');
37
94
  const sections = [];
95
+ // Pattern for standalone explicit ID anchor: [](#id) on its own line
96
+ const explicitIdPattern = /^\s*\[\]\(\s*#([a-z0-9-]+)\s*\)\s*$/;
38
97
  // First pass: find all headings
39
- // Supports explicit anchor syntax: ## Heading {#custom-id}
40
98
  const headings = [];
41
99
  for (let i = 0; i < lines.length; i++) {
42
100
  const line = lines[i];
43
- // Match heading with optional {#anchor-id} at the end
44
- const match = line.match(/^(#{1,6})\s+(.+?)(?:\s*\{#([a-z0-9-]+)\})?\s*$/);
101
+ // Match heading
102
+ const match = line.match(/^(#{1,6})\s+(.+?)\s*$/);
45
103
  if (match) {
104
+ // Check if the next non-empty line is an explicit ID anchor
105
+ let explicitId;
106
+ for (let j = i + 1; j < lines.length; j++) {
107
+ const nextLine = lines[j];
108
+ if (nextLine.trim() === '')
109
+ continue; // Skip empty lines
110
+ const idMatch = nextLine.match(explicitIdPattern);
111
+ if (idMatch) {
112
+ explicitId = idMatch[1];
113
+ }
114
+ break; // Only check the first non-empty line after heading
115
+ }
46
116
  headings.push({
47
117
  level: match[1].length,
48
118
  title: match[2].trim(),
49
- explicitId: match[3] || undefined,
119
+ explicitId,
50
120
  line: i + 1, // 1-indexed
51
121
  });
52
122
  }
@@ -60,14 +130,24 @@ class FacetParser {
60
130
  // Extract content between headings
61
131
  const contentLines = lines.slice(startLine, endLine - 1);
62
132
  const sectionContent = contentLines.join('\n').trim();
133
+ // Parse sub-facets from section content
134
+ // Content starts at line after heading (startLine is the heading itself)
135
+ let subFacets = FacetParser.parseSubFacets(contentLines, startLine + 1);
136
+ // Use explicit ID if provided, otherwise generate from title
137
+ const slug = heading.explicitId || FacetParser.slugify(heading.title);
138
+ // If heading has explicit ID, filter it out from sub-facets (it was used for heading slug)
139
+ if (heading.explicitId) {
140
+ subFacets = subFacets.filter(sf => sf.id !== heading.explicitId);
141
+ }
63
142
  sections.push({
64
143
  title: heading.title,
65
- slug: heading.explicitId || FacetParser.slugify(heading.title),
144
+ slug,
66
145
  level: heading.level,
67
146
  startLine,
68
147
  endLine,
69
148
  content: sectionContent,
70
149
  explicitId: heading.explicitId,
150
+ subFacets: subFacets.length > 0 ? subFacets : undefined,
71
151
  });
72
152
  }
73
153
  return {
@@ -151,6 +231,44 @@ class FacetParser {
151
231
  }
152
232
  return `${prefix}:${sectionSlug}`;
153
233
  }
234
+ /**
235
+ * Generate a sub-facet ID from a parent facet ID and sub-facet marker ID.
236
+ * Creates hierarchical ID like "type:parent/child"
237
+ *
238
+ * @param parentFacetId - The parent facet ID (e.g., "compliance:pci-dss")
239
+ * @param subFacetId - The local sub-facet ID from marker (e.g., "tls")
240
+ * @returns Combined ID like "compliance:pci-dss/tls"
241
+ */
242
+ static generateSubFacetId(parentFacetId, subFacetId) {
243
+ return `${parentFacetId}/${subFacetId}`;
244
+ }
245
+ /**
246
+ * Check if a facet ID is a sub-facet (contains "/" after the ":")
247
+ *
248
+ * @param facetId - The facet ID to check
249
+ * @returns true if this is a sub-facet ID
250
+ */
251
+ static isSubFacetId(facetId) {
252
+ const colonIndex = facetId.indexOf(':');
253
+ if (colonIndex === -1)
254
+ return false;
255
+ return facetId.indexOf('/', colonIndex) !== -1;
256
+ }
257
+ /**
258
+ * Extract parent facet ID from a sub-facet ID
259
+ *
260
+ * @param subFacetId - The sub-facet ID (e.g., "compliance:pci-dss/tls")
261
+ * @returns The parent ID (e.g., "compliance:pci-dss") or null if not a sub-facet
262
+ */
263
+ static getParentFacetId(subFacetId) {
264
+ const colonIndex = subFacetId.indexOf(':');
265
+ if (colonIndex === -1)
266
+ return null;
267
+ const slashIndex = subFacetId.indexOf('/', colonIndex);
268
+ if (slashIndex === -1)
269
+ return null;
270
+ return subFacetId.substring(0, slashIndex);
271
+ }
154
272
  }
155
273
  exports.FacetParser = FacetParser;
156
274
  //# sourceMappingURL=FacetParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FacetParser.js","sourceRoot":"","sources":["../../src/core/FacetParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FacetParser.js","sourceRoot":"","sources":["../../src/core/FacetParser.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,13 @@ export declare class TestScanner {
7
7
  constructor(config?: Partial<FacetConfig>);
8
8
  /**
9
9
  * Convert a Facets constant name to a facet ID.
10
- * Handles hierarchical IDs like:
10
+ * Handles hierarchical IDs and sub-facets:
11
11
  * - FEATURES_CORE_PRODUCT_STRUCTURE_READING -> features/core/product:structure-reading
12
12
  * - FEATURES_CLI_DX_CLI_ERGONOMICS -> features/cli/dx:cli-ergonomics
13
13
  * - PRODUCT_STRUCTURE_READING -> product:structure-reading (legacy)
14
+ * - COMPLIANCE_PCI_DSS__TLS -> compliance:pci-dss/tls (sub-facet with __)
15
+ *
16
+ * Convention: Double underscore (__) in the constant name indicates a sub-facet separator (/)
14
17
  */
15
18
  private convertConstantToFacetId;
16
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TestScanner.d.ts","sourceRoot":"","sources":["../../src/core/TestScanner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGzD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAI7C;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IA8ChC;;OAEG;IACG,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwBnE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,QAAQ,EAAE;IASnE;;;;;;OAMG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,QAAQ,EAAE;IA0MvF;;OAEG;IACG,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgBpE;;OAEG;IACG,wBAAwB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAajF;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAI1F"}
1
+ {"version":3,"file":"TestScanner.d.ts","sourceRoot":"","sources":["../../src/core/TestScanner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGzD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAI7C;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IA0EhC;;OAEG;IACG,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwBnE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,QAAQ,EAAE;IASnE;;;;;;OAMG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,QAAQ,EAAE;IA0MvF;;OAEG;IACG,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgBpE;;OAEG;IACG,wBAAwB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAajF;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAI1F"}
@@ -15,16 +15,29 @@ class TestScanner {
15
15
  }
16
16
  /**
17
17
  * Convert a Facets constant name to a facet ID.
18
- * Handles hierarchical IDs like:
18
+ * Handles hierarchical IDs and sub-facets:
19
19
  * - FEATURES_CORE_PRODUCT_STRUCTURE_READING -> features/core/product:structure-reading
20
20
  * - FEATURES_CLI_DX_CLI_ERGONOMICS -> features/cli/dx:cli-ergonomics
21
21
  * - PRODUCT_STRUCTURE_READING -> product:structure-reading (legacy)
22
+ * - COMPLIANCE_PCI_DSS__TLS -> compliance:pci-dss/tls (sub-facet with __)
23
+ *
24
+ * Convention: Double underscore (__) in the constant name indicates a sub-facet separator (/)
22
25
  */
23
26
  convertConstantToFacetId(constName) {
24
27
  // Get facet types from config
25
28
  const knownTypes = this.config.facetTypes || [];
26
- // Split by underscore and lowercase
27
- const parts = constName.toLowerCase().split('_');
29
+ // First, check for double underscore which indicates sub-facet
30
+ // We need to handle this before splitting by single underscore
31
+ let subFacetPart = null;
32
+ let mainConstName = constName;
33
+ const doubleUnderscoreIndex = constName.indexOf('__');
34
+ if (doubleUnderscoreIndex !== -1) {
35
+ mainConstName = constName.substring(0, doubleUnderscoreIndex);
36
+ subFacetPart = constName.substring(doubleUnderscoreIndex + 2).toLowerCase().replace(/_/g, '-');
37
+ }
38
+ // Split by single underscore and lowercase
39
+ const parts = mainConstName.toLowerCase().split('_');
40
+ let facetId = '';
28
41
  // Check if it starts with 'features' (hierarchical ID)
29
42
  if (parts[0] === 'features' && parts.length > 2) {
30
43
  // Find where the type is in the parts
@@ -42,21 +55,37 @@ class TestScanner {
42
55
  const sectionParts = parts.slice(typeIndex + 1);
43
56
  const path = pathParts.join('/');
44
57
  const section = sectionParts.join('-');
45
- return `${path}/${type}:${section}`;
58
+ facetId = `${path}/${type}:${section}`;
59
+ }
60
+ else {
61
+ // Fallback for features path without recognized type
62
+ facetId = `${parts[0]}:${parts.slice(1).join('-')}`;
46
63
  }
47
64
  }
48
- // Legacy format: PRODUCT_STRUCTURE_READING -> product:structure-reading
49
- // Find the type at the beginning
50
- for (const type of knownTypes) {
51
- if (parts[0] === type) {
65
+ else {
66
+ // Legacy format: PRODUCT_STRUCTURE_READING -> product:structure-reading
67
+ // Find the type at the beginning
68
+ let foundType = false;
69
+ for (const type of knownTypes) {
70
+ if (parts[0] === type) {
71
+ const section = parts.slice(1).join('-');
72
+ facetId = `${type}:${section}`;
73
+ foundType = true;
74
+ break;
75
+ }
76
+ }
77
+ if (!foundType) {
78
+ // Fallback: treat first part as type, rest as section
79
+ const type = parts[0];
52
80
  const section = parts.slice(1).join('-');
53
- return `${type}:${section}`;
81
+ facetId = `${type}:${section}`;
54
82
  }
55
83
  }
56
- // Fallback: treat first part as type, rest as section
57
- const type = parts[0];
58
- const section = parts.slice(1).join('-');
59
- return `${type}:${section}`;
84
+ // Append sub-facet if present
85
+ if (subFacetPart) {
86
+ facetId = `${facetId}/${subFacetPart}`;
87
+ }
88
+ return facetId;
60
89
  }
61
90
  /**
62
91
  * Find all test files matching configured patterns
@@ -1 +1 @@
1
- {"version":3,"file":"TestScanner.js","sourceRoot":"","sources":["../../src/core/TestScanner.ts"],"names":[],"mappings":";;;AAAA,2BAA8C;AAC9C,+BAA4B;AAC5B,+BAAyC;AAEzC,0CAA4C;AAE5C;;GAEG;AACH,MAAa,WAAW;IACd,MAAM,CAAc;IAE5B,YAAY,SAA+B,EAAE;QAC3C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,wBAAa,EAAE,GAAG,MAAM,EAAE,CAAC;IAChD,CAAC;IAED;;;;;;OAMG;IACK,wBAAwB,CAAC,SAAiB;QAChD,8BAA8B;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAEhD,oCAAoC;QACpC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjD,uDAAuD;QACvD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,sCAAsC;YACtC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClC,SAAS,GAAG,CAAC,CAAC;oBACd,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClB,oDAAoD;gBACpD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,+BAA+B;gBAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBAEhD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEvC,OAAO,GAAG,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,iCAAiC;QACjC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzC,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,yBAAyB;QACzB,MAAM,QAAQ,GAAG,MAAM,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1E,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,MAAM,IAAA,WAAI,EAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,mEAAmE;QACnE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;YACxD,MAAM,OAAO,GAAG,MAAM,IAAA,WAAI,EAAC,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB;IAClD,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAAgB,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;QACpD,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,OAAe,EAAE,QAAgB,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;QACxE,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,uCAAuC;QACvC,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,gCAAgC;QAChC,MAAM,WAAW,GAAG,6CAA6C,CAAC;QAClE,MAAM,iBAAiB,GAAG,wCAAwC,CAAC;QACnE,MAAM,eAAe,GAAG,iCAAiC,CAAC;QAE1D,iDAAiD;QACjD,MAAM,sBAAsB,GAAG,6CAA6C,CAAC;QAE7E,sDAAsD;QACtD,oFAAoF;QACpF,MAAM,gBAAgB,GAAG,wCAAwC,CAAC;QAElE,qCAAqC;QACrC,MAAM,eAAe,GAAG,qBAAqB,CAAC;QAE9C,gDAAgD;QAChD,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;QAEzD,kEAAkE;QAClE,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;QAExD,kDAAkD;QAClD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,wCAAwC;QACxC,IAAI,eAAe,GAAa,EAAE,CAAC;QACnC,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC;QAE1B,4DAA4D;QAC5D,IAAI,WAAW,GAAkF,IAAI,CAAC;QACtG,IAAI,mBAAmB,GAAa,EAAE,CAAC;QAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;YAEzB,2CAA2C;YAC3C,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBACpC,uDAAuD;gBACvD,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC1F,gBAAgB,GAAG,UAAU,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,wBAAwB;YACxB,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;YAChC,CAAC;YAED,kCAAkC;YAClC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACpD,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAErD,sDAAsD;YACtD,IAAI,WAAW,IAAI,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;gBACvD,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;oBAEpC,mCAAmC;oBACnC,IAAI,OAAO,CAAC;oBACZ,OAAO,CAAC,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBAC5D,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvC,CAAC;oBACD,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;oBAE9B,kEAAkE;oBAClE,OAAO,CAAC,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;wBACzD,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACpC,CAAC;oBACD,kBAAkB,CAAC,SAAS,GAAG,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,UAAU,IAAI,UAAU,GAAG,WAAW,CAAC;YAEvC,+CAA+C;YAC/C,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC5F,aAAa,CAAC,GAAG,EAAE,CAAC;gBACpB,cAAc,CAAC,GAAG,EAAE,CAAC;YACvB,CAAC;YAED,0CAA0C;YAC1C,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gBACxD,yCAAyC;gBACzC,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,IAAA,eAAQ,EAAC,GAAG,EAAE,QAAQ,CAAC;wBAC7B,KAAK,EAAE,WAAW,CAAC,KAAK;wBACxB,SAAS,EAAE,WAAW,CAAC,SAAS;wBAChC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,EAAE,cAAc;wBAC3D,IAAI,EAAE,WAAW,CAAC,IAAI;qBACvB,CAAC,CAAC;gBACL,CAAC;gBACD,WAAW,GAAG,IAAI,CAAC;gBACnB,mBAAmB,GAAG,EAAE,CAAC;YAC3B,CAAC;YAED,4BAA4B;YAC5B,0CAA0C;YAC1C,IAAI,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;YAE1B,6DAA6D;YAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,QAAQ,GAAa,EAAE,CAAC;gBAE5B,6DAA6D;gBAC7D,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,GAAG,gBAAgB,IAAI,CAAC,EAAE,CAAC;oBACrE,QAAQ,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC;oBAChC,eAAe,GAAG,EAAE,CAAC;oBACrB,gBAAgB,GAAG,CAAC,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,mEAAmE;oBACnE,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClF,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAChE,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;oBAErC,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBAEhC,IAAI,OAAO,CAAC;wBACZ,OAAO,CAAC,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;4BAC5D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC5B,CAAC;wBACD,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;wBAE9B,+CAA+C;wBAC/C,OAAO,CAAC,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;4BAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;4BAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;4BACzD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACzB,CAAC;wBACD,kBAAkB,CAAC,SAAS,GAAG,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAED,MAAM,SAAS,GAAG,CAAC,GAAG,aAAa,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE5D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,6DAA6D;oBAC7D,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,IAAA,eAAQ,EAAC,GAAG,EAAE,QAAQ,CAAC;wBAC7B,KAAK,EAAE,SAAS;wBAChB,SAAS;wBACT,QAAQ;wBACR,IAAI,EAAE,UAAU;qBACjB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,qEAAqE;oBACrE,WAAW,GAAG;wBACZ,KAAK,EAAE,SAAS;wBAChB,SAAS;wBACT,IAAI,EAAE,UAAU;wBAChB,UAAU,EAAE,UAAU,GAAG,UAAU,EAAE,4CAA4C;qBAClF,CAAC;oBACF,mBAAmB,GAAG,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC;YAED,2DAA2D;YAC3D,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,GAAG,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBACpE,eAAe,GAAG,EAAE,CAAC;gBACrB,gBAAgB,GAAG,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,WAAW,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,IAAA,eAAQ,EAAC,GAAG,EAAE,QAAQ,CAAC;gBAC7B,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBAC3C,IAAI,EAAE,WAAW,CAAC,IAAI;aACvB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;QAC5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAe,EAAE,CAAC;QAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,qCAAqC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;QACxD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;QACjE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF;AA9VD,kCA8VC"}
1
+ {"version":3,"file":"TestScanner.js","sourceRoot":"","sources":["../../src/core/TestScanner.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,10 @@ export declare class Validator {
18
18
  validateStructure(structure: FacetStructure, structureFile: string, cwd: string): ValidationResult;
19
19
  /**
20
20
  * Check if a facet ID is valid
21
+ * Valid formats:
22
+ * - type:section (e.g., "business:guest-purchase-flow")
23
+ * - path/type:section (e.g., "features/cli/product:generate-command")
24
+ * - type:section/sub-id (e.g., "compliance:pci-dss/tls") - sub-facet
21
25
  */
22
26
  private isValidFacetId;
23
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/core/Validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAGd,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAc;gBAErB,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAO7C;;OAEG;IACG,QAAQ,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+EtE;;OAEG;IACH,iBAAiB,CACf,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,gBAAgB;IAuDnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;IACG,OAAO,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;CAI7D"}
1
+ {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/core/Validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAGd,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAc;gBAErB,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAO7C;;OAEG;IACG,QAAQ,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+EtE;;OAEG;IACH,iBAAiB,CACf,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,gBAAgB;IAsEnB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAMtB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;IACG,OAAO,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;CAI7D"}