@hienlh/ppm 0.13.64 → 0.13.66

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 (72) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/assets/skills/ppm/SKILL.md +1 -1
  3. package/assets/skills/ppm/references/cli-reference.md +4 -4
  4. package/assets/skills/ppm/references/http-api.md +2 -1
  5. package/dist/web/assets/architecture-PBZL5I3N-CS5Rvu_a.js +1 -0
  6. package/dist/web/assets/{audio-preview-Bog1sIoF.js → audio-preview-B8XiU4Bw.js} +1 -1
  7. package/dist/web/assets/{chat-tab-B-uVAh4d.js → chat-tab-B1m7T_2n.js} +3 -3
  8. package/dist/web/assets/{code-editor-cDv3opsJ.js → code-editor-CQSDgP7X.js} +2 -2
  9. package/dist/web/assets/{conflict-editor-D5sEfbcX.js → conflict-editor-BPjmtXlC.js} +1 -1
  10. package/dist/web/assets/{database-viewer-BGBVsG5J.js → database-viewer-Cl31pR9W.js} +1 -1
  11. package/dist/web/assets/{diff-viewer-B-O1mvHO.js → diff-viewer-sbO35hMr.js} +1 -1
  12. package/dist/web/assets/{docx-preview-ByzSlSgn.js → docx-preview-D_P_e_0O.js} +1 -1
  13. package/dist/web/assets/{extension-webview-0qfU1r7z.js → extension-webview-B2Q7T_NQ.js} +1 -1
  14. package/dist/web/assets/{git-log-panel-C1T8bav0.js → git-log-panel-CAa4j8NA.js} +1 -1
  15. package/dist/web/assets/gitGraph-HDMCJU4V-BjUgCE-3.js +1 -0
  16. package/dist/web/assets/{glide-data-grid-DV8ht1BP.js → glide-data-grid-DbtdLkFk.js} +1 -1
  17. package/dist/web/assets/{image-preview-Dbo7SAVb.js → image-preview-DjWCljN-.js} +1 -1
  18. package/dist/web/assets/{index-DU_JZ5MY.js → index-PZd81rhr.js} +4 -4
  19. package/dist/web/assets/info-3K5VOQVL-Bu3VpM9a.js +1 -0
  20. package/dist/web/assets/keybindings-store-DZjJtyij.js +1 -0
  21. package/dist/web/assets/{markdown-renderer-D-QbsfIC.js → markdown-renderer-BojoStRy.js} +3 -3
  22. package/dist/web/assets/notification-store-CgsqI4c0.js +1 -0
  23. package/dist/web/assets/packet-RMMSAZCW-C83Lg2yy.js +1 -0
  24. package/dist/web/assets/{pdf-preview-DV96VPTb.js → pdf-preview-19LY16zS.js} +1 -1
  25. package/dist/web/assets/pie-UPGHQEXC-DoT-QQxi.js +1 -0
  26. package/dist/web/assets/{port-forwarding-tab-C4OYC71C.js → port-forwarding-tab-DIqVwGrL.js} +1 -1
  27. package/dist/web/assets/{postgres-viewer-hb-_twEU.js → postgres-viewer-DOTykgcg.js} +1 -1
  28. package/dist/web/assets/radar-KQ55EAFF-B6r4mqYF.js +1 -0
  29. package/dist/web/assets/{settings-store-CSDOihqv.js → settings-store-BFlBSwKg.js} +1 -1
  30. package/dist/web/assets/{settings-tab-BUCIqVAl.js → settings-tab-C5S_iYSH.js} +1 -1
  31. package/dist/web/assets/{sql-query-editor-C7YgtDR3.js → sql-query-editor-BsxW0lTw.js} +1 -1
  32. package/dist/web/assets/{sqlite-viewer-z3pGFSje.js → sqlite-viewer-Fq4NnQg6.js} +1 -1
  33. package/dist/web/assets/{system-monitor-tab-Bj6pcRmV.js → system-monitor-tab-C51mwQcv.js} +1 -1
  34. package/dist/web/assets/{terminal-tab-DbxLHofN.js → terminal-tab-Lu2U4vpg.js} +1 -1
  35. package/dist/web/assets/treemap-KZPCXAKY-3t3gW0fB.js +1 -0
  36. package/dist/web/assets/{use-monaco-theme-qx6SfVRk.js → use-monaco-theme-6AirEH08.js} +1 -1
  37. package/dist/web/assets/{vendor-mermaid-DCie7hiR.js → vendor-mermaid-DU911Xa9.js} +2 -2
  38. package/dist/web/assets/{video-preview-DylSBAzo.js → video-preview-8Vrdwy25.js} +1 -1
  39. package/dist/web/index.html +3 -3
  40. package/dist/web/sw.js +1 -1
  41. package/package.json +1 -1
  42. package/src/server/middleware/auth.ts +1 -1
  43. package/src/server/routes/files.ts +2 -2
  44. package/src/server/routes/fs-browse.ts +20 -6
  45. package/src/services/download-token.service.ts +1 -2
  46. package/src/services/resource-monitor-utils.ts +10 -1
  47. package/src/services/resource-monitor.service.ts +1 -1
  48. package/src/web/lib/file-download.ts +8 -0
  49. package/.opencode/.env.example +0 -98
  50. package/.opencode/skills/ads-management/scripts/.env.example +0 -13
  51. package/.opencode/skills/ai-multimodal/.env.example +0 -230
  52. package/.opencode/skills/cip-design/.env.example +0 -6
  53. package/.opencode/skills/devops/.env.example +0 -76
  54. package/.opencode/skills/docs-seeker/.env.example +0 -15
  55. package/.opencode/skills/elevenlabs/.env.example +0 -3
  56. package/.opencode/skills/marketing-dashboard/.env.example +0 -15
  57. package/.opencode/skills/marketing-dashboard/app/.env.example +0 -2
  58. package/.opencode/skills/marketing-dashboard/server/.env.example +0 -2
  59. package/.opencode/skills/mcp-management/scripts/dist/analyze-tools.js +0 -70
  60. package/.opencode/skills/mcp-management/scripts/dist/cli.js +0 -160
  61. package/.opencode/skills/mcp-management/scripts/dist/mcp-client.js +0 -183
  62. package/.opencode/skills/payment-integration/scripts/.env.example +0 -20
  63. package/.opencode/skills/sequential-thinking/.env.example +0 -8
  64. package/dist/web/assets/architecture-PBZL5I3N-DLKD1Xjj.js +0 -1
  65. package/dist/web/assets/gitGraph-HDMCJU4V-2a0r4GHr.js +0 -1
  66. package/dist/web/assets/info-3K5VOQVL-CWKw4e0V.js +0 -1
  67. package/dist/web/assets/keybindings-store-0FUOwc9I.js +0 -1
  68. package/dist/web/assets/notification-store-bwd1UKbs.js +0 -1
  69. package/dist/web/assets/packet-RMMSAZCW-Ar00Wbhd.js +0 -1
  70. package/dist/web/assets/pie-UPGHQEXC-Q4ssDdib.js +0 -1
  71. package/dist/web/assets/radar-KQ55EAFF-kq5v4OKX.js +0 -1
  72. package/dist/web/assets/treemap-KZPCXAKY-DChODgHt.js +0 -1
@@ -1,4 +1,4 @@
1
- import{a as e,i as t,n,o as r,r as i,t as a}from"./rolldown-runtime-FhOqtrmT.js";var o=`modulepreload`,s=function(e){return`/`+e},l={},u=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=function(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))},i=document.getElementsByTagName(`link`),a=document.querySelector(`meta[property=csp-nonce]`),u=a?.nonce||a?.getAttribute(`nonce`);r=e(t.map(e=>{if(e=s(e,n),e in l)return;l[e]=!0;let t=e.endsWith(`.css`),r=t?`[rel="stylesheet"]`:``;if(n)for(let n=i.length-1;n>=0;n--){let r=i[n];if(r.href===e&&(!t||r.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${e}"]${r}`))return;let a=document.createElement(`link`);if(a.rel=t?`stylesheet`:o,t||(a.as=`script`),a.crossOrigin=``,a.href=e,u&&a.setAttribute(`nonce`,u),document.head.appendChild(a),t)return new Promise((t,n)=>{a.addEventListener(`load`,t),a.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${e}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};function d(e){return typeof e==`object`&&!!e&&typeof e.$type==`string`}function f(e){return typeof e==`object`&&!!e&&typeof e.$refText==`string`&&`ref`in e}function p(e){return typeof e==`object`&&!!e&&typeof e.$refText==`string`&&`items`in e}function m(e){return typeof e==`object`&&!!e&&typeof e.name==`string`&&typeof e.type==`string`&&typeof e.path==`string`}function h(e){return typeof e==`object`&&!!e&&typeof e.info==`object`&&typeof e.message==`string`}var g=class{constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){let t=this.types[e.container.$type];if(!t)throw Error(`Type ${e.container.$type||`undefined`} not found.`);let n=t.properties[e.property]?.referenceType;if(!n)throw Error(`Property ${e.property||`undefined`} of type ${e.container.$type} is not a reference.`);return n}getTypeMetaData(e){return this.types[e]||{name:e,properties:{},superTypes:[]}}isInstance(e,t){return d(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let n=this.subtypes[e];n||=this.subtypes[e]={};let r=n[t];if(r!==void 0)return r;{let r=this.types[e],i=r?r.superTypes.some(e=>this.isSubtype(e,t)):!1;return n[t]=i,i}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let t=this.getAllTypes(),n=[];for(let r of t)this.isSubtype(r,e)&&n.push(r);return this.allSubtypes[e]=n,n}}};function _(e){return typeof e==`object`&&!!e&&Array.isArray(e.content)}function v(e){return typeof e==`object`&&!!e&&typeof e.tokenType==`object`}function y(e){return _(e)&&typeof e.fullText==`string`}var b=class e{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),t=0,n=e.next();for(;!n.done;)t++,n=e.next();return t}toArray(){let e=[],t=this.iterator(),n;do n=t.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,t){let n=this.map(n=>[e?e(n):n,t?t(n):n]);return new Map(n)}toString(){return this.join()}concat(t){return new e(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),e=>{let t;if(!e.firstDone){do if(t=this.nextFn(e.first),!t.done)return t;while(!t.done);e.firstDone=!0}do if(t=e.iterator.next(),!t.done)return t;while(!t.done);return w})}join(e=`,`){let t=this.iterator(),n=``,r,i=!1;do r=t.next(),r.done||(i&&(n+=e),n+=x(r.value)),i=!0;while(!r.done);return n}indexOf(e,t=0){let n=this.iterator(),r=0,i=n.next();for(;!i.done;){if(r>=t&&i.value===e)return r;i=n.next(),r++}return-1}every(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(!e(n.value))return!1;n=t.next()}return!0}some(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return!0;n=t.next()}return!1}forEach(e){let t=this.iterator(),n=0,r=t.next();for(;!r.done;)e(r.value,n),r=t.next(),n++}map(t){return new e(this.startFn,e=>{let{done:n,value:r}=this.nextFn(e);return n?w:{done:!1,value:t(r)}})}filter(t){return new e(this.startFn,e=>{let n;do if(n=this.nextFn(e),!n.done&&t(n.value))return n;while(!n.done);return w})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,t){let n=this.iterator(),r=t,i=n.next();for(;!i.done;)r=r===void 0?i.value:e(r,i.value),i=n.next();return r}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,n){let r=e.next();if(r.done)return n;let i=this.recursiveReduce(e,t,n);return i===void 0?r.value:t(i,r.value)}find(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return n.value;n=t.next()}}findIndex(e){let t=this.iterator(),n=0,r=t.next();for(;!r.done;){if(e(r.value))return n;r=t.next(),n++}return-1}includes(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(n.value===e)return!0;n=t.next()}return!1}flatMap(t){return new e(()=>({this:this.startFn()}),e=>{do{if(e.iterator){let t=e.iterator.next();if(t.done)e.iterator=void 0;else return t}let{done:n,value:r}=this.nextFn(e.this);if(!n){let n=t(r);if(S(n))e.iterator=n[Symbol.iterator]();else return{done:!1,value:n}}}while(e.iterator);return w})}flat(t){if(t===void 0&&(t=1),t<=0)return this;let n=t>1?this.flat(t-1):this;return new e(()=>({this:n.startFn()}),e=>{do{if(e.iterator){let t=e.iterator.next();if(t.done)e.iterator=void 0;else return t}let{done:t,value:r}=n.nextFn(e.this);if(!t)if(S(r))e.iterator=r[Symbol.iterator]();else return{done:!1,value:r}}while(e.iterator);return w})}head(){let e=this.iterator().next();if(!e.done)return e.value}tail(t=1){return new e(()=>{let e=this.startFn();for(let n=0;n<t;n++)if(this.nextFn(e).done)return e;return e},this.nextFn)}limit(t){return new e(()=>({size:0,state:this.startFn()}),e=>(e.size++,e.size>t?w:this.nextFn(e.state)))}distinct(t){return new e(()=>({set:new Set,internalState:this.startFn()}),e=>{let n;do if(n=this.nextFn(e.internalState),!n.done){let r=t?t(n.value):n.value;if(!e.set.has(r))return e.set.add(r),n}while(!n.done);return w})}exclude(e,t){let n=new Set;for(let r of e){let e=t?t(r):r;n.add(e)}return this.filter(e=>{let r=t?t(e):e;return!n.has(r)})}};function x(e){return typeof e==`string`?e:e===void 0?`undefined`:typeof e.toString==`function`?e.toString():Object.prototype.toString.call(e)}function S(e){return!!e&&typeof e[Symbol.iterator]==`function`}var C=new b(()=>void 0,()=>w),w=Object.freeze({done:!0,value:void 0});function T(...e){if(e.length===1){let t=e[0];if(t instanceof b)return t;if(S(t))return new b(()=>t[Symbol.iterator](),e=>e.next());if(typeof t.length==`number`)return new b(()=>({index:0}),e=>e.index<t.length?{done:!1,value:t[e.index++]}:w)}return e.length>1?new b(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){let e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}if(t.array){if(t.arrIndex<t.array.length)return{done:!1,value:t.array[t.arrIndex++]};t.array=void 0,t.arrIndex=0}if(t.collIndex<e.length){let n=e[t.collIndex++];S(n)?t.iterator=n[Symbol.iterator]():n&&typeof n.length==`number`&&(t.array=n)}}while(t.iterator||t.array||t.collIndex<e.length);return w}):C}var E=class extends b{constructor(e,t,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),e=>{for(e.pruned&&=(e.iterators.pop(),!1);e.iterators.length>0;){let n=e.iterators[e.iterators.length-1].next();if(n.done)e.iterators.pop();else return e.iterators.push(t(n.value)[Symbol.iterator]()),n}return w})}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}},D;(function(e){function t(e){return e.reduce((e,t)=>e+t,0)}e.sum=t;function n(e){return e.reduce((e,t)=>e*t,0)}e.product=n;function r(e){return e.reduce((e,t)=>Math.min(e,t))}e.min=r;function i(e){return e.reduce((e,t)=>Math.max(e,t))}e.max=i})(D||={});function O(e,t={}){for(let[n,r]of Object.entries(e))n.startsWith(`$`)||(Array.isArray(r)?r.forEach((r,i)=>{d(r)&&(r.$container=e,r.$containerProperty=n,r.$containerIndex=i,t.deep&&O(r,t))}):d(r)&&(r.$container=e,r.$containerProperty=n,t.deep&&O(r,t)))}function k(e,t){let n=e;for(;n;){if(t(n))return n;n=n.$container}}function A(e){let t=j(e).$document;if(!t)throw Error(`AST node has no document.`);return t}function j(e){for(;e.$container;)e=e.$container;return e}function M(e){return f(e)?e.ref?[e.ref]:[]:p(e)?e.items.map(e=>e.ref):[]}function N(e,t){if(!e)throw Error(`Node must be an AstNode.`);let n=t?.range;return new b(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){let r=t.keys[t.keyIndex];if(!r.startsWith(`$`)){let i=e[r];if(d(i)){if(t.keyIndex++,I(i,n))return{done:!1,value:i}}else if(Array.isArray(i)){for(;t.arrayIndex<i.length;){let e=i[t.arrayIndex++];if(d(e)&&I(e,n))return{done:!1,value:e}}t.arrayIndex=0}}t.keyIndex++}return w})}function P(e,t){if(!e)throw Error(`Root node must be an AstNode.`);return new E(e,e=>N(e,t))}function F(e,t){if(!e)throw Error(`Root node must be an AstNode.`);return t?.range&&!I(e,t.range)?new E(e,()=>[]):new E(e,e=>N(e,t),{includeRoot:!0})}function I(e,t){if(!t)return!0;let n=e.$cstNode?.range;return n?Ot(n,t):!1}function L(e){return new b(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){let n=t.keys[t.keyIndex];if(!n.startsWith(`$`)){let r=e[n];if(f(r)||p(r))return t.keyIndex++,{done:!1,value:{reference:r,container:e,property:n}};if(Array.isArray(r)){for(;t.arrayIndex<r.length;){let i=t.arrayIndex++,a=r[i];if(f(a)||p(r))return{done:!1,value:{reference:a,container:e,property:n,index:i}}}t.arrayIndex=0}}t.keyIndex++}return w})}function R(e,t){let n=e.getTypeMetaData(t.$type),r=t;for(let e of Object.values(n.properties))e.defaultValue!==void 0&&r[e.name]===void 0&&(r[e.name]=z(e.defaultValue))}function z(e){return Array.isArray(e)?[...e.map(z)]:e}var B={$type:`AbstractElement`,cardinality:`cardinality`};function V(e){return St.isInstance(e,B.$type)}var H={$type:`AbstractParserRule`};function ee(e){return St.isInstance(e,H.$type)}var te={$type:`AbstractRule`},U={$type:`AbstractType`},ne={$type:`Action`,cardinality:`cardinality`,feature:`feature`,inferredType:`inferredType`,operator:`operator`,type:`type`};function re(e){return St.isInstance(e,ne.$type)}var W={$type:`Alternatives`,cardinality:`cardinality`,elements:`elements`};function G(e){return St.isInstance(e,W.$type)}var K={$type:`ArrayLiteral`,elements:`elements`},ie={$type:`ArrayType`,elementType:`elementType`},ae={$type:`Assignment`,cardinality:`cardinality`,feature:`feature`,operator:`operator`,predicate:`predicate`,terminal:`terminal`};function oe(e){return St.isInstance(e,ae.$type)}var se={$type:`BooleanLiteral`,true:`true`};function ce(e){return St.isInstance(e,se.$type)}var le={$type:`CharacterRange`,cardinality:`cardinality`,left:`left`,lookahead:`lookahead`,parenthesized:`parenthesized`,right:`right`};function ue(e){return St.isInstance(e,le.$type)}var de={$type:`Condition`},fe={$type:`Conjunction`,left:`left`,right:`right`};function pe(e){return St.isInstance(e,fe.$type)}var me={$type:`CrossReference`,cardinality:`cardinality`,deprecatedSyntax:`deprecatedSyntax`,isMulti:`isMulti`,terminal:`terminal`,type:`type`};function he(e){return St.isInstance(e,me.$type)}var ge={$type:`Disjunction`,left:`left`,right:`right`};function _e(e){return St.isInstance(e,ge.$type)}var ve={$type:`EndOfFile`,cardinality:`cardinality`};function ye(e){return St.isInstance(e,ve.$type)}var be={$type:`Grammar`,imports:`imports`,interfaces:`interfaces`,isDeclared:`isDeclared`,name:`name`,rules:`rules`,types:`types`},xe={$type:`GrammarImport`,path:`path`},Se={$type:`Group`,cardinality:`cardinality`,elements:`elements`,guardCondition:`guardCondition`,predicate:`predicate`};function Ce(e){return St.isInstance(e,Se.$type)}var we={$type:`InferredType`,name:`name`};function Te(e){return St.isInstance(e,we.$type)}var Ee={$type:`InfixRule`,call:`call`,dataType:`dataType`,inferredType:`inferredType`,name:`name`,operators:`operators`,parameters:`parameters`,returnType:`returnType`};function De(e){return St.isInstance(e,Ee.$type)}var Oe={$type:`InfixRuleOperatorList`,associativity:`associativity`,operators:`operators`},ke={$type:`InfixRuleOperators`,precedences:`precedences`},Ae={$type:`Interface`,attributes:`attributes`,name:`name`,superTypes:`superTypes`};function je(e){return St.isInstance(e,Ae.$type)}var Me={$type:`Keyword`,cardinality:`cardinality`,predicate:`predicate`,value:`value`};function Ne(e){return St.isInstance(e,Me.$type)}var Pe={$type:`NamedArgument`,calledByName:`calledByName`,parameter:`parameter`,value:`value`},Fe={$type:`NegatedToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,terminal:`terminal`};function Ie(e){return St.isInstance(e,Fe.$type)}var Le={$type:`Negation`,value:`value`};function Re(e){return St.isInstance(e,Le.$type)}var ze={$type:`NumberLiteral`,value:`value`},Be={$type:`Parameter`,name:`name`},Ve={$type:`ParameterReference`,parameter:`parameter`};function He(e){return St.isInstance(e,Ve.$type)}var Ue={$type:`ParserRule`,dataType:`dataType`,definition:`definition`,entry:`entry`,fragment:`fragment`,inferredType:`inferredType`,name:`name`,parameters:`parameters`,returnType:`returnType`};function We(e){return St.isInstance(e,Ue.$type)}var Ge={$type:`ReferenceType`,isMulti:`isMulti`,referenceType:`referenceType`},Ke={$type:`RegexToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,regex:`regex`};function qe(e){return St.isInstance(e,Ke.$type)}var Je={$type:`ReturnType`,name:`name`};function Ye(e){return St.isInstance(e,Je.$type)}var Xe={$type:`RuleCall`,arguments:`arguments`,cardinality:`cardinality`,predicate:`predicate`,rule:`rule`};function Ze(e){return St.isInstance(e,Xe.$type)}var Qe={$type:`SimpleType`,primitiveType:`primitiveType`,stringType:`stringType`,typeRef:`typeRef`};function $e(e){return St.isInstance(e,Qe.$type)}var et={$type:`StringLiteral`,value:`value`},tt={$type:`TerminalAlternatives`,cardinality:`cardinality`,elements:`elements`,lookahead:`lookahead`,parenthesized:`parenthesized`};function nt(e){return St.isInstance(e,tt.$type)}var rt={$type:`TerminalElement`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`},it={$type:`TerminalGroup`,cardinality:`cardinality`,elements:`elements`,lookahead:`lookahead`,parenthesized:`parenthesized`};function at(e){return St.isInstance(e,it.$type)}var ot={$type:`TerminalRule`,definition:`definition`,fragment:`fragment`,hidden:`hidden`,name:`name`,type:`type`};function st(e){return St.isInstance(e,ot.$type)}var ct={$type:`TerminalRuleCall`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,rule:`rule`};function lt(e){return St.isInstance(e,ct.$type)}var ut={$type:`Type`,name:`name`,type:`type`};function dt(e){return St.isInstance(e,ut.$type)}var ft={$type:`TypeAttribute`,defaultValue:`defaultValue`,isOptional:`isOptional`,name:`name`,type:`type`},pt={$type:`TypeDefinition`},mt={$type:`UnionType`,types:`types`},ht={$type:`UnorderedGroup`,cardinality:`cardinality`,elements:`elements`};function gt(e){return St.isInstance(e,ht.$type)}var _t={$type:`UntilToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,terminal:`terminal`};function eee(e){return St.isInstance(e,_t.$type)}var vt={$type:`ValueLiteral`},yt={$type:`Wildcard`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`};function bt(e){return St.isInstance(e,yt.$type)}var xt=class extends g{constructor(){super(...arguments),this.types={AbstractElement:{name:B.$type,properties:{cardinality:{name:B.cardinality}},superTypes:[]},AbstractParserRule:{name:H.$type,properties:{},superTypes:[te.$type,U.$type]},AbstractRule:{name:te.$type,properties:{},superTypes:[]},AbstractType:{name:U.$type,properties:{},superTypes:[]},Action:{name:ne.$type,properties:{cardinality:{name:ne.cardinality},feature:{name:ne.feature},inferredType:{name:ne.inferredType},operator:{name:ne.operator},type:{name:ne.type,referenceType:U.$type}},superTypes:[B.$type]},Alternatives:{name:W.$type,properties:{cardinality:{name:W.cardinality},elements:{name:W.elements,defaultValue:[]}},superTypes:[B.$type]},ArrayLiteral:{name:K.$type,properties:{elements:{name:K.elements,defaultValue:[]}},superTypes:[vt.$type]},ArrayType:{name:ie.$type,properties:{elementType:{name:ie.elementType}},superTypes:[pt.$type]},Assignment:{name:ae.$type,properties:{cardinality:{name:ae.cardinality},feature:{name:ae.feature},operator:{name:ae.operator},predicate:{name:ae.predicate},terminal:{name:ae.terminal}},superTypes:[B.$type]},BooleanLiteral:{name:se.$type,properties:{true:{name:se.true,defaultValue:!1}},superTypes:[de.$type,vt.$type]},CharacterRange:{name:le.$type,properties:{cardinality:{name:le.cardinality},left:{name:le.left},lookahead:{name:le.lookahead},parenthesized:{name:le.parenthesized,defaultValue:!1},right:{name:le.right}},superTypes:[rt.$type]},Condition:{name:de.$type,properties:{},superTypes:[]},Conjunction:{name:fe.$type,properties:{left:{name:fe.left},right:{name:fe.right}},superTypes:[de.$type]},CrossReference:{name:me.$type,properties:{cardinality:{name:me.cardinality},deprecatedSyntax:{name:me.deprecatedSyntax,defaultValue:!1},isMulti:{name:me.isMulti,defaultValue:!1},terminal:{name:me.terminal},type:{name:me.type,referenceType:U.$type}},superTypes:[B.$type]},Disjunction:{name:ge.$type,properties:{left:{name:ge.left},right:{name:ge.right}},superTypes:[de.$type]},EndOfFile:{name:ve.$type,properties:{cardinality:{name:ve.cardinality}},superTypes:[B.$type]},Grammar:{name:be.$type,properties:{imports:{name:be.imports,defaultValue:[]},interfaces:{name:be.interfaces,defaultValue:[]},isDeclared:{name:be.isDeclared,defaultValue:!1},name:{name:be.name},rules:{name:be.rules,defaultValue:[]},types:{name:be.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:xe.$type,properties:{path:{name:xe.path}},superTypes:[]},Group:{name:Se.$type,properties:{cardinality:{name:Se.cardinality},elements:{name:Se.elements,defaultValue:[]},guardCondition:{name:Se.guardCondition},predicate:{name:Se.predicate}},superTypes:[B.$type]},InferredType:{name:we.$type,properties:{name:{name:we.name}},superTypes:[U.$type]},InfixRule:{name:Ee.$type,properties:{call:{name:Ee.call},dataType:{name:Ee.dataType},inferredType:{name:Ee.inferredType},name:{name:Ee.name},operators:{name:Ee.operators},parameters:{name:Ee.parameters,defaultValue:[]},returnType:{name:Ee.returnType,referenceType:U.$type}},superTypes:[H.$type]},InfixRuleOperatorList:{name:Oe.$type,properties:{associativity:{name:Oe.associativity},operators:{name:Oe.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:ke.$type,properties:{precedences:{name:ke.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:Ae.$type,properties:{attributes:{name:Ae.attributes,defaultValue:[]},name:{name:Ae.name},superTypes:{name:Ae.superTypes,defaultValue:[],referenceType:U.$type}},superTypes:[U.$type]},Keyword:{name:Me.$type,properties:{cardinality:{name:Me.cardinality},predicate:{name:Me.predicate},value:{name:Me.value}},superTypes:[B.$type]},NamedArgument:{name:Pe.$type,properties:{calledByName:{name:Pe.calledByName,defaultValue:!1},parameter:{name:Pe.parameter,referenceType:Be.$type},value:{name:Pe.value}},superTypes:[]},NegatedToken:{name:Fe.$type,properties:{cardinality:{name:Fe.cardinality},lookahead:{name:Fe.lookahead},parenthesized:{name:Fe.parenthesized,defaultValue:!1},terminal:{name:Fe.terminal}},superTypes:[rt.$type]},Negation:{name:Le.$type,properties:{value:{name:Le.value}},superTypes:[de.$type]},NumberLiteral:{name:ze.$type,properties:{value:{name:ze.value}},superTypes:[vt.$type]},Parameter:{name:Be.$type,properties:{name:{name:Be.name}},superTypes:[]},ParameterReference:{name:Ve.$type,properties:{parameter:{name:Ve.parameter,referenceType:Be.$type}},superTypes:[de.$type]},ParserRule:{name:Ue.$type,properties:{dataType:{name:Ue.dataType},definition:{name:Ue.definition},entry:{name:Ue.entry,defaultValue:!1},fragment:{name:Ue.fragment,defaultValue:!1},inferredType:{name:Ue.inferredType},name:{name:Ue.name},parameters:{name:Ue.parameters,defaultValue:[]},returnType:{name:Ue.returnType,referenceType:U.$type}},superTypes:[H.$type]},ReferenceType:{name:Ge.$type,properties:{isMulti:{name:Ge.isMulti,defaultValue:!1},referenceType:{name:Ge.referenceType}},superTypes:[pt.$type]},RegexToken:{name:Ke.$type,properties:{cardinality:{name:Ke.cardinality},lookahead:{name:Ke.lookahead},parenthesized:{name:Ke.parenthesized,defaultValue:!1},regex:{name:Ke.regex}},superTypes:[rt.$type]},ReturnType:{name:Je.$type,properties:{name:{name:Je.name}},superTypes:[]},RuleCall:{name:Xe.$type,properties:{arguments:{name:Xe.arguments,defaultValue:[]},cardinality:{name:Xe.cardinality},predicate:{name:Xe.predicate},rule:{name:Xe.rule,referenceType:te.$type}},superTypes:[B.$type]},SimpleType:{name:Qe.$type,properties:{primitiveType:{name:Qe.primitiveType},stringType:{name:Qe.stringType},typeRef:{name:Qe.typeRef,referenceType:U.$type}},superTypes:[pt.$type]},StringLiteral:{name:et.$type,properties:{value:{name:et.value}},superTypes:[vt.$type]},TerminalAlternatives:{name:tt.$type,properties:{cardinality:{name:tt.cardinality},elements:{name:tt.elements,defaultValue:[]},lookahead:{name:tt.lookahead},parenthesized:{name:tt.parenthesized,defaultValue:!1}},superTypes:[rt.$type]},TerminalElement:{name:rt.$type,properties:{cardinality:{name:rt.cardinality},lookahead:{name:rt.lookahead},parenthesized:{name:rt.parenthesized,defaultValue:!1}},superTypes:[B.$type]},TerminalGroup:{name:it.$type,properties:{cardinality:{name:it.cardinality},elements:{name:it.elements,defaultValue:[]},lookahead:{name:it.lookahead},parenthesized:{name:it.parenthesized,defaultValue:!1}},superTypes:[rt.$type]},TerminalRule:{name:ot.$type,properties:{definition:{name:ot.definition},fragment:{name:ot.fragment,defaultValue:!1},hidden:{name:ot.hidden,defaultValue:!1},name:{name:ot.name},type:{name:ot.type}},superTypes:[te.$type]},TerminalRuleCall:{name:ct.$type,properties:{cardinality:{name:ct.cardinality},lookahead:{name:ct.lookahead},parenthesized:{name:ct.parenthesized,defaultValue:!1},rule:{name:ct.rule,referenceType:ot.$type}},superTypes:[rt.$type]},Type:{name:ut.$type,properties:{name:{name:ut.name},type:{name:ut.type}},superTypes:[U.$type]},TypeAttribute:{name:ft.$type,properties:{defaultValue:{name:ft.defaultValue},isOptional:{name:ft.isOptional,defaultValue:!1},name:{name:ft.name},type:{name:ft.type}},superTypes:[]},TypeDefinition:{name:pt.$type,properties:{},superTypes:[]},UnionType:{name:mt.$type,properties:{types:{name:mt.types,defaultValue:[]}},superTypes:[pt.$type]},UnorderedGroup:{name:ht.$type,properties:{cardinality:{name:ht.cardinality},elements:{name:ht.elements,defaultValue:[]}},superTypes:[B.$type]},UntilToken:{name:_t.$type,properties:{cardinality:{name:_t.cardinality},lookahead:{name:_t.lookahead},parenthesized:{name:_t.parenthesized,defaultValue:!1},terminal:{name:_t.terminal}},superTypes:[rt.$type]},ValueLiteral:{name:vt.$type,properties:{},superTypes:[]},Wildcard:{name:yt.$type,properties:{cardinality:{name:yt.cardinality},lookahead:{name:yt.lookahead},parenthesized:{name:yt.parenthesized,defaultValue:!1}},superTypes:[rt.$type]}}}},St=new xt;function Ct(e){return new E(e,e=>_(e)?e.content:[],{includeRoot:!0})}function tee(e,t){for(;e.container;)if(e=e.container,e===t)return!0;return!1}function wt(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function Tt(e){if(!e)return;let{offset:t,end:n,range:r}=e;return{range:r,offset:t,end:n,length:n-t}}var Et;(function(e){e[e.Before=0]=`Before`,e[e.After=1]=`After`,e[e.OverlapFront=2]=`OverlapFront`,e[e.OverlapBack=3]=`OverlapBack`,e[e.Inside=4]=`Inside`,e[e.Outside=5]=`Outside`})(Et||={});function Dt(e,t){if(e.end.line<t.start.line||e.end.line===t.start.line&&e.end.character<=t.start.character)return Et.Before;if(e.start.line>t.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return Et.After;let n=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,r=e.end.line<t.end.line||e.end.line===t.end.line&&e.end.character<=t.end.character;return n&&r?Et.Inside:n?Et.OverlapBack:r?Et.OverlapFront:Et.Outside}function Ot(e,t){return Dt(e,t)>Et.After}var nee=/^[\w\p{L}]$/u;function ree(e,t){if(e){let n=iee(e,!0);if(n&&kt(n,t))return n;if(y(e)){let n=e.content.findIndex(e=>!e.hidden);for(let r=n-1;r>=0;r--){let n=e.content[r];if(kt(n,t))return n}}}}function kt(e,t){return v(e)&&t.includes(e.tokenType.name)}function iee(e,t=!0){for(;e.container;){let n=e.container,r=n.content.indexOf(e);for(;r>0;){r--;let e=n.content[r];if(t||!e.hidden)return e}e=n}}var At=class extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};function jt(e,t=`Error: Got unexpected value.`){throw Error(t)}function Mt(e){return e.charCodeAt(0)}function Nt(e,t){Array.isArray(e)?e.forEach(function(e){t.push(e)}):t.push(e)}function Pt(e,t){if(e[t]===!0)throw`duplicate flag `+t;e[t],e[t]=!0}function Ft(e){if(e===void 0)throw Error(`Internal Error - Should never get here!`);return!0}function It(){throw Error(`Internal Error - Should never get here!`)}function Lt(e){return e.type===`Character`}var Rt=[];for(let e=Mt(`0`);e<=Mt(`9`);e++)Rt.push(e);var zt=[Mt(`_`)].concat(Rt);for(let e=Mt(`a`);e<=Mt(`z`);e++)zt.push(e);for(let e=Mt(`A`);e<=Mt(`Z`);e++)zt.push(e);var Bt=[Mt(` `),Mt(`\f`),Mt(`
1
+ import{a as e,i as t,n,o as r,r as i,t as a}from"./rolldown-runtime-FhOqtrmT.js";var o=`modulepreload`,s=function(e){return`/`+e},l={},u=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function u(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=u(t.map(t=>{if(t=s(t,n),t in l)return;l[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let u=document.createElement(`link`);if(u.rel=r?`stylesheet`:o,r||(u.as=`script`),u.crossOrigin=``,u.href=t,a&&u.setAttribute(`nonce`,a),document.head.appendChild(u),r)return new Promise((e,n)=>{u.addEventListener(`load`,e),u.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};function d(e){return typeof e==`object`&&!!e&&typeof e.$type==`string`}function f(e){return typeof e==`object`&&!!e&&typeof e.$refText==`string`&&`ref`in e}function p(e){return typeof e==`object`&&!!e&&typeof e.$refText==`string`&&`items`in e}function m(e){return typeof e==`object`&&!!e&&typeof e.name==`string`&&typeof e.type==`string`&&typeof e.path==`string`}function h(e){return typeof e==`object`&&!!e&&typeof e.info==`object`&&typeof e.message==`string`}var g=class{constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){let t=this.types[e.container.$type];if(!t)throw Error(`Type ${e.container.$type||`undefined`} not found.`);let n=t.properties[e.property]?.referenceType;if(!n)throw Error(`Property ${e.property||`undefined`} of type ${e.container.$type} is not a reference.`);return n}getTypeMetaData(e){return this.types[e]||{name:e,properties:{},superTypes:[]}}isInstance(e,t){return d(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let n=this.subtypes[e];n||=this.subtypes[e]={};let r=n[t];if(r!==void 0)return r;{let r=this.types[e],i=r?r.superTypes.some(e=>this.isSubtype(e,t)):!1;return n[t]=i,i}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let t=this.getAllTypes(),n=[];for(let r of t)this.isSubtype(r,e)&&n.push(r);return this.allSubtypes[e]=n,n}}};function _(e){return typeof e==`object`&&!!e&&Array.isArray(e.content)}function v(e){return typeof e==`object`&&!!e&&typeof e.tokenType==`object`}function y(e){return _(e)&&typeof e.fullText==`string`}var b=class e{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),t=0,n=e.next();for(;!n.done;)t++,n=e.next();return t}toArray(){let e=[],t=this.iterator(),n;do n=t.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,t){let n=this.map(n=>[e?e(n):n,t?t(n):n]);return new Map(n)}toString(){return this.join()}concat(t){return new e(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),e=>{let t;if(!e.firstDone){do if(t=this.nextFn(e.first),!t.done)return t;while(!t.done);e.firstDone=!0}do if(t=e.iterator.next(),!t.done)return t;while(!t.done);return w})}join(e=`,`){let t=this.iterator(),n=``,r,i=!1;do r=t.next(),r.done||(i&&(n+=e),n+=x(r.value)),i=!0;while(!r.done);return n}indexOf(e,t=0){let n=this.iterator(),r=0,i=n.next();for(;!i.done;){if(r>=t&&i.value===e)return r;i=n.next(),r++}return-1}every(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(!e(n.value))return!1;n=t.next()}return!0}some(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return!0;n=t.next()}return!1}forEach(e){let t=this.iterator(),n=0,r=t.next();for(;!r.done;)e(r.value,n),r=t.next(),n++}map(t){return new e(this.startFn,e=>{let{done:n,value:r}=this.nextFn(e);return n?w:{done:!1,value:t(r)}})}filter(t){return new e(this.startFn,e=>{let n;do if(n=this.nextFn(e),!n.done&&t(n.value))return n;while(!n.done);return w})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,t){let n=this.iterator(),r=t,i=n.next();for(;!i.done;)r=r===void 0?i.value:e(r,i.value),i=n.next();return r}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,n){let r=e.next();if(r.done)return n;let i=this.recursiveReduce(e,t,n);return i===void 0?r.value:t(i,r.value)}find(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return n.value;n=t.next()}}findIndex(e){let t=this.iterator(),n=0,r=t.next();for(;!r.done;){if(e(r.value))return n;r=t.next(),n++}return-1}includes(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(n.value===e)return!0;n=t.next()}return!1}flatMap(t){return new e(()=>({this:this.startFn()}),e=>{do{if(e.iterator){let t=e.iterator.next();if(t.done)e.iterator=void 0;else return t}let{done:n,value:r}=this.nextFn(e.this);if(!n){let n=t(r);if(S(n))e.iterator=n[Symbol.iterator]();else return{done:!1,value:n}}}while(e.iterator);return w})}flat(t){if(t===void 0&&(t=1),t<=0)return this;let n=t>1?this.flat(t-1):this;return new e(()=>({this:n.startFn()}),e=>{do{if(e.iterator){let t=e.iterator.next();if(t.done)e.iterator=void 0;else return t}let{done:t,value:r}=n.nextFn(e.this);if(!t)if(S(r))e.iterator=r[Symbol.iterator]();else return{done:!1,value:r}}while(e.iterator);return w})}head(){let e=this.iterator().next();if(!e.done)return e.value}tail(t=1){return new e(()=>{let e=this.startFn();for(let n=0;n<t;n++)if(this.nextFn(e).done)return e;return e},this.nextFn)}limit(t){return new e(()=>({size:0,state:this.startFn()}),e=>(e.size++,e.size>t?w:this.nextFn(e.state)))}distinct(t){return new e(()=>({set:new Set,internalState:this.startFn()}),e=>{let n;do if(n=this.nextFn(e.internalState),!n.done){let r=t?t(n.value):n.value;if(!e.set.has(r))return e.set.add(r),n}while(!n.done);return w})}exclude(e,t){let n=new Set;for(let r of e){let e=t?t(r):r;n.add(e)}return this.filter(e=>{let r=t?t(e):e;return!n.has(r)})}};function x(e){return typeof e==`string`?e:e===void 0?`undefined`:typeof e.toString==`function`?e.toString():Object.prototype.toString.call(e)}function S(e){return!!e&&typeof e[Symbol.iterator]==`function`}var C=new b(()=>void 0,()=>w),w=Object.freeze({done:!0,value:void 0});function T(...e){if(e.length===1){let t=e[0];if(t instanceof b)return t;if(S(t))return new b(()=>t[Symbol.iterator](),e=>e.next());if(typeof t.length==`number`)return new b(()=>({index:0}),e=>e.index<t.length?{done:!1,value:t[e.index++]}:w)}return e.length>1?new b(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){let e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}if(t.array){if(t.arrIndex<t.array.length)return{done:!1,value:t.array[t.arrIndex++]};t.array=void 0,t.arrIndex=0}if(t.collIndex<e.length){let n=e[t.collIndex++];S(n)?t.iterator=n[Symbol.iterator]():n&&typeof n.length==`number`&&(t.array=n)}}while(t.iterator||t.array||t.collIndex<e.length);return w}):C}var E=class extends b{constructor(e,t,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),e=>{for(e.pruned&&=(e.iterators.pop(),!1);e.iterators.length>0;){let n=e.iterators[e.iterators.length-1].next();if(n.done)e.iterators.pop();else return e.iterators.push(t(n.value)[Symbol.iterator]()),n}return w})}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}},D;(function(e){function t(e){return e.reduce((e,t)=>e+t,0)}e.sum=t;function n(e){return e.reduce((e,t)=>e*t,0)}e.product=n;function r(e){return e.reduce((e,t)=>Math.min(e,t))}e.min=r;function i(e){return e.reduce((e,t)=>Math.max(e,t))}e.max=i})(D||={});function O(e,t={}){for(let[n,r]of Object.entries(e))n.startsWith(`$`)||(Array.isArray(r)?r.forEach((r,i)=>{d(r)&&(r.$container=e,r.$containerProperty=n,r.$containerIndex=i,t.deep&&O(r,t))}):d(r)&&(r.$container=e,r.$containerProperty=n,t.deep&&O(r,t)))}function k(e,t){let n=e;for(;n;){if(t(n))return n;n=n.$container}}function A(e){let t=j(e).$document;if(!t)throw Error(`AST node has no document.`);return t}function j(e){for(;e.$container;)e=e.$container;return e}function M(e){return f(e)?e.ref?[e.ref]:[]:p(e)?e.items.map(e=>e.ref):[]}function N(e,t){if(!e)throw Error(`Node must be an AstNode.`);let n=t?.range;return new b(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){let r=t.keys[t.keyIndex];if(!r.startsWith(`$`)){let i=e[r];if(d(i)){if(t.keyIndex++,I(i,n))return{done:!1,value:i}}else if(Array.isArray(i)){for(;t.arrayIndex<i.length;){let e=i[t.arrayIndex++];if(d(e)&&I(e,n))return{done:!1,value:e}}t.arrayIndex=0}}t.keyIndex++}return w})}function P(e,t){if(!e)throw Error(`Root node must be an AstNode.`);return new E(e,e=>N(e,t))}function F(e,t){if(!e)throw Error(`Root node must be an AstNode.`);return t?.range&&!I(e,t.range)?new E(e,()=>[]):new E(e,e=>N(e,t),{includeRoot:!0})}function I(e,t){if(!t)return!0;let n=e.$cstNode?.range;return n?Ot(n,t):!1}function L(e){return new b(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){let n=t.keys[t.keyIndex];if(!n.startsWith(`$`)){let r=e[n];if(f(r)||p(r))return t.keyIndex++,{done:!1,value:{reference:r,container:e,property:n}};if(Array.isArray(r)){for(;t.arrayIndex<r.length;){let i=t.arrayIndex++,a=r[i];if(f(a)||p(r))return{done:!1,value:{reference:a,container:e,property:n,index:i}}}t.arrayIndex=0}}t.keyIndex++}return w})}function R(e,t){let n=e.getTypeMetaData(t.$type),r=t;for(let e of Object.values(n.properties))e.defaultValue!==void 0&&r[e.name]===void 0&&(r[e.name]=z(e.defaultValue))}function z(e){return Array.isArray(e)?[...e.map(z)]:e}var B={$type:`AbstractElement`,cardinality:`cardinality`};function V(e){return St.isInstance(e,B.$type)}var H={$type:`AbstractParserRule`};function ee(e){return St.isInstance(e,H.$type)}var te={$type:`AbstractRule`},U={$type:`AbstractType`},ne={$type:`Action`,cardinality:`cardinality`,feature:`feature`,inferredType:`inferredType`,operator:`operator`,type:`type`};function re(e){return St.isInstance(e,ne.$type)}var W={$type:`Alternatives`,cardinality:`cardinality`,elements:`elements`};function G(e){return St.isInstance(e,W.$type)}var K={$type:`ArrayLiteral`,elements:`elements`},ie={$type:`ArrayType`,elementType:`elementType`},ae={$type:`Assignment`,cardinality:`cardinality`,feature:`feature`,operator:`operator`,predicate:`predicate`,terminal:`terminal`};function oe(e){return St.isInstance(e,ae.$type)}var se={$type:`BooleanLiteral`,true:`true`};function ce(e){return St.isInstance(e,se.$type)}var le={$type:`CharacterRange`,cardinality:`cardinality`,left:`left`,lookahead:`lookahead`,parenthesized:`parenthesized`,right:`right`};function ue(e){return St.isInstance(e,le.$type)}var de={$type:`Condition`},fe={$type:`Conjunction`,left:`left`,right:`right`};function pe(e){return St.isInstance(e,fe.$type)}var me={$type:`CrossReference`,cardinality:`cardinality`,deprecatedSyntax:`deprecatedSyntax`,isMulti:`isMulti`,terminal:`terminal`,type:`type`};function he(e){return St.isInstance(e,me.$type)}var ge={$type:`Disjunction`,left:`left`,right:`right`};function _e(e){return St.isInstance(e,ge.$type)}var ve={$type:`EndOfFile`,cardinality:`cardinality`};function ye(e){return St.isInstance(e,ve.$type)}var be={$type:`Grammar`,imports:`imports`,interfaces:`interfaces`,isDeclared:`isDeclared`,name:`name`,rules:`rules`,types:`types`},xe={$type:`GrammarImport`,path:`path`},Se={$type:`Group`,cardinality:`cardinality`,elements:`elements`,guardCondition:`guardCondition`,predicate:`predicate`};function Ce(e){return St.isInstance(e,Se.$type)}var we={$type:`InferredType`,name:`name`};function Te(e){return St.isInstance(e,we.$type)}var Ee={$type:`InfixRule`,call:`call`,dataType:`dataType`,inferredType:`inferredType`,name:`name`,operators:`operators`,parameters:`parameters`,returnType:`returnType`};function De(e){return St.isInstance(e,Ee.$type)}var Oe={$type:`InfixRuleOperatorList`,associativity:`associativity`,operators:`operators`},ke={$type:`InfixRuleOperators`,precedences:`precedences`},Ae={$type:`Interface`,attributes:`attributes`,name:`name`,superTypes:`superTypes`};function je(e){return St.isInstance(e,Ae.$type)}var Me={$type:`Keyword`,cardinality:`cardinality`,predicate:`predicate`,value:`value`};function Ne(e){return St.isInstance(e,Me.$type)}var Pe={$type:`NamedArgument`,calledByName:`calledByName`,parameter:`parameter`,value:`value`},Fe={$type:`NegatedToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,terminal:`terminal`};function Ie(e){return St.isInstance(e,Fe.$type)}var Le={$type:`Negation`,value:`value`};function Re(e){return St.isInstance(e,Le.$type)}var ze={$type:`NumberLiteral`,value:`value`},Be={$type:`Parameter`,name:`name`},Ve={$type:`ParameterReference`,parameter:`parameter`};function He(e){return St.isInstance(e,Ve.$type)}var Ue={$type:`ParserRule`,dataType:`dataType`,definition:`definition`,entry:`entry`,fragment:`fragment`,inferredType:`inferredType`,name:`name`,parameters:`parameters`,returnType:`returnType`};function We(e){return St.isInstance(e,Ue.$type)}var Ge={$type:`ReferenceType`,isMulti:`isMulti`,referenceType:`referenceType`},Ke={$type:`RegexToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,regex:`regex`};function qe(e){return St.isInstance(e,Ke.$type)}var Je={$type:`ReturnType`,name:`name`};function Ye(e){return St.isInstance(e,Je.$type)}var Xe={$type:`RuleCall`,arguments:`arguments`,cardinality:`cardinality`,predicate:`predicate`,rule:`rule`};function Ze(e){return St.isInstance(e,Xe.$type)}var Qe={$type:`SimpleType`,primitiveType:`primitiveType`,stringType:`stringType`,typeRef:`typeRef`};function $e(e){return St.isInstance(e,Qe.$type)}var et={$type:`StringLiteral`,value:`value`},tt={$type:`TerminalAlternatives`,cardinality:`cardinality`,elements:`elements`,lookahead:`lookahead`,parenthesized:`parenthesized`};function nt(e){return St.isInstance(e,tt.$type)}var rt={$type:`TerminalElement`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`},it={$type:`TerminalGroup`,cardinality:`cardinality`,elements:`elements`,lookahead:`lookahead`,parenthesized:`parenthesized`};function at(e){return St.isInstance(e,it.$type)}var ot={$type:`TerminalRule`,definition:`definition`,fragment:`fragment`,hidden:`hidden`,name:`name`,type:`type`};function st(e){return St.isInstance(e,ot.$type)}var ct={$type:`TerminalRuleCall`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,rule:`rule`};function lt(e){return St.isInstance(e,ct.$type)}var ut={$type:`Type`,name:`name`,type:`type`};function dt(e){return St.isInstance(e,ut.$type)}var ft={$type:`TypeAttribute`,defaultValue:`defaultValue`,isOptional:`isOptional`,name:`name`,type:`type`},pt={$type:`TypeDefinition`},mt={$type:`UnionType`,types:`types`},ht={$type:`UnorderedGroup`,cardinality:`cardinality`,elements:`elements`};function gt(e){return St.isInstance(e,ht.$type)}var _t={$type:`UntilToken`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`,terminal:`terminal`};function eee(e){return St.isInstance(e,_t.$type)}var vt={$type:`ValueLiteral`},yt={$type:`Wildcard`,cardinality:`cardinality`,lookahead:`lookahead`,parenthesized:`parenthesized`};function bt(e){return St.isInstance(e,yt.$type)}var xt=class extends g{constructor(){super(...arguments),this.types={AbstractElement:{name:B.$type,properties:{cardinality:{name:B.cardinality}},superTypes:[]},AbstractParserRule:{name:H.$type,properties:{},superTypes:[te.$type,U.$type]},AbstractRule:{name:te.$type,properties:{},superTypes:[]},AbstractType:{name:U.$type,properties:{},superTypes:[]},Action:{name:ne.$type,properties:{cardinality:{name:ne.cardinality},feature:{name:ne.feature},inferredType:{name:ne.inferredType},operator:{name:ne.operator},type:{name:ne.type,referenceType:U.$type}},superTypes:[B.$type]},Alternatives:{name:W.$type,properties:{cardinality:{name:W.cardinality},elements:{name:W.elements,defaultValue:[]}},superTypes:[B.$type]},ArrayLiteral:{name:K.$type,properties:{elements:{name:K.elements,defaultValue:[]}},superTypes:[vt.$type]},ArrayType:{name:ie.$type,properties:{elementType:{name:ie.elementType}},superTypes:[pt.$type]},Assignment:{name:ae.$type,properties:{cardinality:{name:ae.cardinality},feature:{name:ae.feature},operator:{name:ae.operator},predicate:{name:ae.predicate},terminal:{name:ae.terminal}},superTypes:[B.$type]},BooleanLiteral:{name:se.$type,properties:{true:{name:se.true,defaultValue:!1}},superTypes:[de.$type,vt.$type]},CharacterRange:{name:le.$type,properties:{cardinality:{name:le.cardinality},left:{name:le.left},lookahead:{name:le.lookahead},parenthesized:{name:le.parenthesized,defaultValue:!1},right:{name:le.right}},superTypes:[rt.$type]},Condition:{name:de.$type,properties:{},superTypes:[]},Conjunction:{name:fe.$type,properties:{left:{name:fe.left},right:{name:fe.right}},superTypes:[de.$type]},CrossReference:{name:me.$type,properties:{cardinality:{name:me.cardinality},deprecatedSyntax:{name:me.deprecatedSyntax,defaultValue:!1},isMulti:{name:me.isMulti,defaultValue:!1},terminal:{name:me.terminal},type:{name:me.type,referenceType:U.$type}},superTypes:[B.$type]},Disjunction:{name:ge.$type,properties:{left:{name:ge.left},right:{name:ge.right}},superTypes:[de.$type]},EndOfFile:{name:ve.$type,properties:{cardinality:{name:ve.cardinality}},superTypes:[B.$type]},Grammar:{name:be.$type,properties:{imports:{name:be.imports,defaultValue:[]},interfaces:{name:be.interfaces,defaultValue:[]},isDeclared:{name:be.isDeclared,defaultValue:!1},name:{name:be.name},rules:{name:be.rules,defaultValue:[]},types:{name:be.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:xe.$type,properties:{path:{name:xe.path}},superTypes:[]},Group:{name:Se.$type,properties:{cardinality:{name:Se.cardinality},elements:{name:Se.elements,defaultValue:[]},guardCondition:{name:Se.guardCondition},predicate:{name:Se.predicate}},superTypes:[B.$type]},InferredType:{name:we.$type,properties:{name:{name:we.name}},superTypes:[U.$type]},InfixRule:{name:Ee.$type,properties:{call:{name:Ee.call},dataType:{name:Ee.dataType},inferredType:{name:Ee.inferredType},name:{name:Ee.name},operators:{name:Ee.operators},parameters:{name:Ee.parameters,defaultValue:[]},returnType:{name:Ee.returnType,referenceType:U.$type}},superTypes:[H.$type]},InfixRuleOperatorList:{name:Oe.$type,properties:{associativity:{name:Oe.associativity},operators:{name:Oe.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:ke.$type,properties:{precedences:{name:ke.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:Ae.$type,properties:{attributes:{name:Ae.attributes,defaultValue:[]},name:{name:Ae.name},superTypes:{name:Ae.superTypes,defaultValue:[],referenceType:U.$type}},superTypes:[U.$type]},Keyword:{name:Me.$type,properties:{cardinality:{name:Me.cardinality},predicate:{name:Me.predicate},value:{name:Me.value}},superTypes:[B.$type]},NamedArgument:{name:Pe.$type,properties:{calledByName:{name:Pe.calledByName,defaultValue:!1},parameter:{name:Pe.parameter,referenceType:Be.$type},value:{name:Pe.value}},superTypes:[]},NegatedToken:{name:Fe.$type,properties:{cardinality:{name:Fe.cardinality},lookahead:{name:Fe.lookahead},parenthesized:{name:Fe.parenthesized,defaultValue:!1},terminal:{name:Fe.terminal}},superTypes:[rt.$type]},Negation:{name:Le.$type,properties:{value:{name:Le.value}},superTypes:[de.$type]},NumberLiteral:{name:ze.$type,properties:{value:{name:ze.value}},superTypes:[vt.$type]},Parameter:{name:Be.$type,properties:{name:{name:Be.name}},superTypes:[]},ParameterReference:{name:Ve.$type,properties:{parameter:{name:Ve.parameter,referenceType:Be.$type}},superTypes:[de.$type]},ParserRule:{name:Ue.$type,properties:{dataType:{name:Ue.dataType},definition:{name:Ue.definition},entry:{name:Ue.entry,defaultValue:!1},fragment:{name:Ue.fragment,defaultValue:!1},inferredType:{name:Ue.inferredType},name:{name:Ue.name},parameters:{name:Ue.parameters,defaultValue:[]},returnType:{name:Ue.returnType,referenceType:U.$type}},superTypes:[H.$type]},ReferenceType:{name:Ge.$type,properties:{isMulti:{name:Ge.isMulti,defaultValue:!1},referenceType:{name:Ge.referenceType}},superTypes:[pt.$type]},RegexToken:{name:Ke.$type,properties:{cardinality:{name:Ke.cardinality},lookahead:{name:Ke.lookahead},parenthesized:{name:Ke.parenthesized,defaultValue:!1},regex:{name:Ke.regex}},superTypes:[rt.$type]},ReturnType:{name:Je.$type,properties:{name:{name:Je.name}},superTypes:[]},RuleCall:{name:Xe.$type,properties:{arguments:{name:Xe.arguments,defaultValue:[]},cardinality:{name:Xe.cardinality},predicate:{name:Xe.predicate},rule:{name:Xe.rule,referenceType:te.$type}},superTypes:[B.$type]},SimpleType:{name:Qe.$type,properties:{primitiveType:{name:Qe.primitiveType},stringType:{name:Qe.stringType},typeRef:{name:Qe.typeRef,referenceType:U.$type}},superTypes:[pt.$type]},StringLiteral:{name:et.$type,properties:{value:{name:et.value}},superTypes:[vt.$type]},TerminalAlternatives:{name:tt.$type,properties:{cardinality:{name:tt.cardinality},elements:{name:tt.elements,defaultValue:[]},lookahead:{name:tt.lookahead},parenthesized:{name:tt.parenthesized,defaultValue:!1}},superTypes:[rt.$type]},TerminalElement:{name:rt.$type,properties:{cardinality:{name:rt.cardinality},lookahead:{name:rt.lookahead},parenthesized:{name:rt.parenthesized,defaultValue:!1}},superTypes:[B.$type]},TerminalGroup:{name:it.$type,properties:{cardinality:{name:it.cardinality},elements:{name:it.elements,defaultValue:[]},lookahead:{name:it.lookahead},parenthesized:{name:it.parenthesized,defaultValue:!1}},superTypes:[rt.$type]},TerminalRule:{name:ot.$type,properties:{definition:{name:ot.definition},fragment:{name:ot.fragment,defaultValue:!1},hidden:{name:ot.hidden,defaultValue:!1},name:{name:ot.name},type:{name:ot.type}},superTypes:[te.$type]},TerminalRuleCall:{name:ct.$type,properties:{cardinality:{name:ct.cardinality},lookahead:{name:ct.lookahead},parenthesized:{name:ct.parenthesized,defaultValue:!1},rule:{name:ct.rule,referenceType:ot.$type}},superTypes:[rt.$type]},Type:{name:ut.$type,properties:{name:{name:ut.name},type:{name:ut.type}},superTypes:[U.$type]},TypeAttribute:{name:ft.$type,properties:{defaultValue:{name:ft.defaultValue},isOptional:{name:ft.isOptional,defaultValue:!1},name:{name:ft.name},type:{name:ft.type}},superTypes:[]},TypeDefinition:{name:pt.$type,properties:{},superTypes:[]},UnionType:{name:mt.$type,properties:{types:{name:mt.types,defaultValue:[]}},superTypes:[pt.$type]},UnorderedGroup:{name:ht.$type,properties:{cardinality:{name:ht.cardinality},elements:{name:ht.elements,defaultValue:[]}},superTypes:[B.$type]},UntilToken:{name:_t.$type,properties:{cardinality:{name:_t.cardinality},lookahead:{name:_t.lookahead},parenthesized:{name:_t.parenthesized,defaultValue:!1},terminal:{name:_t.terminal}},superTypes:[rt.$type]},ValueLiteral:{name:vt.$type,properties:{},superTypes:[]},Wildcard:{name:yt.$type,properties:{cardinality:{name:yt.cardinality},lookahead:{name:yt.lookahead},parenthesized:{name:yt.parenthesized,defaultValue:!1}},superTypes:[rt.$type]}}}},St=new xt;function Ct(e){return new E(e,e=>_(e)?e.content:[],{includeRoot:!0})}function tee(e,t){for(;e.container;)if(e=e.container,e===t)return!0;return!1}function wt(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function Tt(e){if(!e)return;let{offset:t,end:n,range:r}=e;return{range:r,offset:t,end:n,length:n-t}}var Et;(function(e){e[e.Before=0]=`Before`,e[e.After=1]=`After`,e[e.OverlapFront=2]=`OverlapFront`,e[e.OverlapBack=3]=`OverlapBack`,e[e.Inside=4]=`Inside`,e[e.Outside=5]=`Outside`})(Et||={});function Dt(e,t){if(e.end.line<t.start.line||e.end.line===t.start.line&&e.end.character<=t.start.character)return Et.Before;if(e.start.line>t.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return Et.After;let n=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,r=e.end.line<t.end.line||e.end.line===t.end.line&&e.end.character<=t.end.character;return n&&r?Et.Inside:n?Et.OverlapBack:r?Et.OverlapFront:Et.Outside}function Ot(e,t){return Dt(e,t)>Et.After}var nee=/^[\w\p{L}]$/u;function ree(e,t){if(e){let n=iee(e,!0);if(n&&kt(n,t))return n;if(y(e)){let n=e.content.findIndex(e=>!e.hidden);for(let r=n-1;r>=0;r--){let n=e.content[r];if(kt(n,t))return n}}}}function kt(e,t){return v(e)&&t.includes(e.tokenType.name)}function iee(e,t=!0){for(;e.container;){let n=e.container,r=n.content.indexOf(e);for(;r>0;){r--;let e=n.content[r];if(t||!e.hidden)return e}e=n}}var At=class extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};function jt(e,t=`Error: Got unexpected value.`){throw Error(t)}function Mt(e){return e.charCodeAt(0)}function Nt(e,t){Array.isArray(e)?e.forEach(function(e){t.push(e)}):t.push(e)}function Pt(e,t){if(e[t]===!0)throw`duplicate flag `+t;e[t],e[t]=!0}function Ft(e){if(e===void 0)throw Error(`Internal Error - Should never get here!`);return!0}function It(){throw Error(`Internal Error - Should never get here!`)}function Lt(e){return e.type===`Character`}var Rt=[];for(let e=Mt(`0`);e<=Mt(`9`);e++)Rt.push(e);var zt=[Mt(`_`)].concat(Rt);for(let e=Mt(`a`);e<=Mt(`z`);e++)zt.push(e);for(let e=Mt(`A`);e<=Mt(`Z`);e++)zt.push(e);var Bt=[Mt(` `),Mt(`\f`),Mt(`
2
2
  `),Mt(`\r`),Mt(` `),Mt(`\v`),Mt(` `),Mt(`\xA0`),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(` `),Mt(`\u2028`),Mt(`\u2029`),Mt(` `),Mt(` `),Mt(` `),Mt(``)],aee=/[0-9a-fA-F]/,Vt=/[0-9]/,oee=/[1-9]/,Ht=class{constructor(){this.idx=0,this.input=``,this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar(`/`);let t=this.disjunction();this.consumeChar(`/`);let n={type:`Flags`,loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case`g`:Pt(n,`global`);break;case`i`:Pt(n,`ignoreCase`);break;case`m`:Pt(n,`multiLine`);break;case`u`:Pt(n,`unicode`);break;case`y`:Pt(n,`sticky`);break}if(this.idx!==this.input.length)throw Error(`Redundant input: `+this.input.substring(this.idx));return{type:`Pattern`,flags:n,value:t,loc:this.loc(0)}}disjunction(){let e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()===`|`;)this.consumeChar(`|`),e.push(this.alternative());return{type:`Disjunction`,value:e,loc:this.loc(t)}}alternative(){let e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:`Alternative`,value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case`^`:return{type:`StartAnchor`,loc:this.loc(e)};case`$`:return{type:`EndAnchor`,loc:this.loc(e)};case`\\`:switch(this.popChar()){case`b`:return{type:`WordBoundary`,loc:this.loc(e)};case`B`:return{type:`NonWordBoundary`,loc:this.loc(e)}}throw Error(`Invalid Assertion Escape`);case`(`:this.consumeChar(`?`);let t;switch(this.popChar()){case`=`:t=`Lookahead`;break;case`!`:t=`NegativeLookahead`;break;case`<`:switch(this.popChar()){case`=`:t=`Lookbehind`;break;case`!`:t=`NegativeLookbehind`}break}Ft(t);let n=this.disjunction();return this.consumeChar(`)`),{type:t,value:n,loc:this.loc(e)}}return It()}quantifier(e=!1){let t,n=this.idx;switch(this.popChar()){case`*`:t={atLeast:0,atMost:1/0};break;case`+`:t={atLeast:1,atMost:1/0};break;case`?`:t={atLeast:0,atMost:1};break;case`{`:let n=this.integerIncludingZero();switch(this.popChar()){case`}`:t={atLeast:n,atMost:n};break;case`,`:let e;this.isDigit()?(e=this.integerIncludingZero(),t={atLeast:n,atMost:e}):t={atLeast:n,atMost:1/0},this.consumeChar(`}`);break}if(e===!0&&t===void 0)return;Ft(t);break}if(!(e===!0&&t===void 0)&&Ft(t))return this.peekChar(0)===`?`?(this.consumeChar(`?`),t.greedy=!1):t.greedy=!0,t.type=`Quantifier`,t.loc=this.loc(n),t}atom(){let e,t=this.idx;switch(this.peekChar()){case`.`:e=this.dotAll();break;case`\\`:e=this.atomEscape();break;case`[`:e=this.characterClass();break;case`(`:e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),Ft(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):It()}dotAll(){return this.consumeChar(`.`),{type:`Set`,complement:!0,value:[Mt(`
3
3
  `),Mt(`\r`),Mt(`\u2028`),Mt(`\u2029`)]}}atomEscape(){switch(this.consumeChar(`\\`),this.peekChar()){case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:return this.decimalEscapeAtom();case`d`:case`D`:case`s`:case`S`:case`w`:case`W`:return this.characterClassEscape();case`f`:case`n`:case`r`:case`t`:case`v`:return this.controlEscapeAtom();case`c`:return this.controlLetterEscapeAtom();case`0`:return this.nulCharacterAtom();case`x`:return this.hexEscapeSequenceAtom();case`u`:return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:`GroupBackReference`,value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case`d`:e=Rt;break;case`D`:e=Rt,t=!0;break;case`s`:e=Bt;break;case`S`:e=Bt,t=!0;break;case`w`:e=zt;break;case`W`:e=zt,t=!0;break}return Ft(e)?{type:`Set`,value:e,complement:t}:It()}controlEscapeAtom(){let e;switch(this.popChar()){case`f`:e=Mt(`\f`);break;case`n`:e=Mt(`
4
4
  `);break;case`r`:e=Mt(`\r`);break;case`t`:e=Mt(` `);break;case`v`:e=Mt(`\v`);break}return Ft(e)?{type:`Character`,value:e}:It()}controlLetterEscapeAtom(){this.consumeChar(`c`);let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error(`Invalid `);return{type:`Character`,value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar(`0`),{type:`Character`,value:Mt(`\0`)}}hexEscapeSequenceAtom(){return this.consumeChar(`x`),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar(`u`),this.parseHexDigits(4)}identityEscapeAtom(){return{type:`Character`,value:Mt(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){case`
@@ -240,7 +240,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
240
240
  `))}Y(Rk,`preprocessMarkdown`);function zk(e){return e.split(/\\n|\n|<br\s*\/?>/gi).map(e=>e.trim().match(/<[^>]+>|[^\s<>]+/g)?.map(e=>({content:e,type:`normal`}))??[])}Y(zk,`nonMarkdownToLines`);function Bk(e,t={}){let n=Rk(e,t),r=Ak.lexer(n),i=[[]],a=0;function o(e,t=`normal`){e.type===`text`?e.text.split(`
241
241
  `).forEach((e,n)=>{n!==0&&(a++,i.push([])),e.split(` `).forEach(e=>{e=e.replace(/&#39;/g,`'`),e&&i[a].push({content:e,type:t})})}):e.type===`strong`||e.type===`em`?e.tokens.forEach(t=>{o(t,e.type)}):e.type===`html`&&i[a].push({content:e.text,type:`normal`})}return Y(o,`processNode`),r.forEach(e=>{e.type===`paragraph`?e.tokens?.forEach(e=>{o(e)}):e.type===`html`?i[a].push({content:e.text,type:`normal`}):i[a].push({content:e.raw,type:`normal`})}),i}Y(Bk,`markdownToLines`);function Vk(e){return e?`<p>${e.replace(/\\n|\n/g,`<br />`)}</p>`:``}Y(Vk,`nonMarkdownToHTML`);function Hk(e,{markdownAutoWrap:t}={}){let n=Ak.lexer(e);function r(e){return e.type===`text`?t===!1?e.text.replace(/\n */g,`<br/>`).replace(/ /g,`&nbsp;`):e.text.replace(/\n */g,`<br/>`):e.type===`strong`?`<strong>${e.tokens?.map(r).join(``)}</strong>`:e.type===`em`?`<em>${e.tokens?.map(r).join(``)}</em>`:e.type===`paragraph`?`<p>${e.tokens?.map(r).join(``)}</p>`:e.type===`space`?``:e.type===`html`?`${e.text}`:e.type===`escape`?e.text:(X.warn(`Unsupported markdown: ${e.type}`),e.raw)}return Y(r,`output`),n.map(r).join(``)}Y(Hk,`markdownToHTML`);function Uk(e){return Intl.Segmenter?[...new Intl.Segmenter().segment(e)].map(e=>e.segment):[...e]}Y(Uk,`splitTextToChars`);function Wk(e,t){return Gk(e,[],Uk(t.content),t.type)}Y(Wk,`splitWordToFitWidth`);function Gk(e,t,n,r){if(n.length===0)return[{content:t.join(``),type:r},{content:``,type:r}];let[i,...a]=n,o=[...t,i];return e([{content:o.join(``),type:r}])?Gk(e,o,a,r):(t.length===0&&i&&(t.push(i),n.shift()),[{content:t.join(``),type:r},{content:n.join(``),type:r}])}Y(Gk,`splitWordToFitWidthRecursion`);function Kk(e,t){if(e.some(({content:e})=>e.includes(`
242
242
  `)))throw Error(`splitLineToFitWidth does not support newlines in the line`);return qk(e,t)}Y(Kk,`splitLineToFitWidth`);function qk(e,t,n=[],r=[]){if(e.length===0)return r.length>0&&n.push(r),n.length>0?n:[];let i=``;e[0].content===` `&&(i=` `,e.shift());let a=e.shift()??{content:` `,type:`normal`},o=[...r];if(i!==``&&o.push({content:i,type:`normal`}),o.push(a),t(o))return qk(e,t,n,o);if(r.length>0)n.push(r),e.unshift(a);else if(a.content){let[r,i]=Wk(t,a);n.push([r]),i.content&&e.unshift(i)}return qk(e,t,n)}Y(qk,`splitLineToFitWidthRecursion`);function Jk(e,t){t&&e.attr(`style`,t)}Y(Jk,`applyStyle`);var Yk=16384;async function Xk(e,t,n,r,i=!1,a=Sv()){let o=e.append(`foreignObject`);o.attr(`width`,`${Math.min(10*n,Yk)}px`),o.attr(`height`,`${Math.min(10*n,Yk)}px`);let s=o.append(`xhtml:div`),l=Bv(t.label)?await Hv(t.label.replace(Uv.lineBreakRegex,`
243
- `),a):Nv(t.label,a),u=t.isNode?`nodeLabel`:`edgeLabel`,d=s.append(`span`);d.html(l),Jk(d,t.labelStyle),d.attr(`class`,`${u} ${r}`),Jk(s,t.labelStyle),s.style(`display`,`table-cell`),s.style(`white-space`,`nowrap`),s.style(`line-height`,`1.5`),n!==1/0&&(s.style(`max-width`,n+`px`),s.style(`text-align`,`center`)),s.attr(`xmlns`,`http://www.w3.org/1999/xhtml`),i&&s.attr(`class`,`labelBkg`);let f=s.node().getBoundingClientRect();return f.width===n&&(s.style(`display`,`table`),s.style(`white-space`,`break-spaces`),s.style(`width`,n+`px`),f=s.node().getBoundingClientRect()),o.node()}Y(Xk,`addHtmlSpan`);function Zk(e,t,n,r=!1){let i=e.append(`tspan`).attr(`class`,`text-outer-tspan`).attr(`x`,0).attr(`y`,t*n-.1+`em`).attr(`dy`,n+`em`);return r&&i.attr(`text-anchor`,`middle`),i}Y(Zk,`createTspan`);function Qk(e,t,n){let r=e.append(`text`),i=Zk(r,1,t);tA(i,n);let a=i.node().getComputedTextLength();return r.remove(),a}Y(Qk,`computeWidthOfText`);function $k(e,t,n){let r=e.append(`text`),i=Zk(r,1,t);tA(i,[{content:n,type:`normal`}]);let a=i.node()?.getBoundingClientRect();return a&&r.remove(),a}Y($k,`computeDimensionOfText`);function eA(e,t,n,r=!1,i=!1){let a=1.1,o=t.append(`g`),s=o.insert(`rect`).attr(`class`,`background`).attr(`style`,`stroke: none`),l=o.append(`text`).attr(`y`,`-10.1`);i&&l.attr(`text-anchor`,`middle`);let u=0;for(let t of n){let n=Y(t=>Qk(o,a,t)<=e,`checkWidth`),r=n(t)?[t]:Kk(t,n);for(let e of r)tA(Zk(l,u,a,i),e),u++}if(r){let e=l.node().getBBox();return s.attr(`x`,e.x-2).attr(`y`,e.y-2).attr(`width`,e.width+4).attr(`height`,e.height+4),o.node()}else return l.node()}Y(eA,`createFormattedText`);function tA(e,t){e.text(``),t.forEach((t,n)=>{let r=e.append(`tspan`).attr(`font-style`,t.type===`em`?`italic`:`normal`).attr(`class`,`text-inner-tspan`).attr(`font-weight`,t.type===`strong`?`bold`:`normal`);n===0?r.text(t.content):r.text(` `+t.content)})}Y(tA,`updateTextContentAndStyles`);async function nA(e,t={}){let n=[];e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(e,r,i)=>(n.push((async()=>{let n=`${r}:${i}`;return await Npe(n)?await Lk(n,void 0,{class:`label-icon`}):`<i class='${Nv(e,t).replace(`:`,` `)}'></i>`})()),e));let r=await Promise.all(n);return e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>r.shift()??``)}Y(nA,`replaceIconSubstring`);var rA=Y(async(e,t=``,{style:n=``,isTitle:r=!1,classes:i=``,useHtmlLabels:a=!0,markdown:o=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},d)=>{if(X.debug(`XYZ createText`,t,n,r,i,a,s,`addSvgBackground: `,u),a){let r=await nA(OO(o?Hk(t,d):Vk(t)),d),a=t.replace(/\\\\/g,`\\`);return await Xk(e,{isNode:s,label:Bv(t)?a:r,labelStyle:n.replace(`fill:`,`color:`)},l,i,u,d)}else{let i=t.replace(/<br\s*\/?>/g,`<br/>`),a=eA(l,e,o?Bk(i.replace(`<br>`,`<br/>`),d):zk(i),t?u:!1,!s);if(s){/stroke:/.exec(n)&&(n=n.replace(`stroke:`,`lineColor:`));let e=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/color:/g,`fill:`);bx(a).attr(`style`,e)}else{let e=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/background:/g,`fill:`);bx(a).select(`rect`).attr(`style`,e.replace(/background:/g,`fill:`));let t=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/color:/g,`fill:`);bx(a).select(`text`).attr(`style`,t)}return r?bx(a).selectAll(`tspan.text-outer-tspan`).classed(`title-row`,!0):bx(a).selectAll(`tspan.text-outer-tspan`).classed(`row`,!0),a}},`createText`);function iA(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}Y(iA,`populateCommonDb`);var aA={},Ppe={info:Ih(async()=>{let{createInfoServices:e}=await u(async()=>{let{createInfoServices:e}=await import(`./info-3K5VOQVL-CWKw4e0V.js`);return{createInfoServices:e}},[]);aA.info=e().Info.parser.LangiumParser},`info`),packet:Ih(async()=>{let{createPacketServices:e}=await u(async()=>{let{createPacketServices:e}=await import(`./packet-RMMSAZCW-Ar00Wbhd.js`);return{createPacketServices:e}},[]);aA.packet=e().Packet.parser.LangiumParser},`packet`),pie:Ih(async()=>{let{createPieServices:e}=await u(async()=>{let{createPieServices:e}=await import(`./pie-UPGHQEXC-Q4ssDdib.js`);return{createPieServices:e}},[]);aA.pie=e().Pie.parser.LangiumParser},`pie`),architecture:Ih(async()=>{let{createArchitectureServices:e}=await u(async()=>{let{createArchitectureServices:e}=await import(`./architecture-PBZL5I3N-DLKD1Xjj.js`);return{createArchitectureServices:e}},[]);aA.architecture=e().Architecture.parser.LangiumParser},`architecture`),gitGraph:Ih(async()=>{let{createGitGraphServices:e}=await u(async()=>{let{createGitGraphServices:e}=await import(`./gitGraph-HDMCJU4V-2a0r4GHr.js`);return{createGitGraphServices:e}},[]);aA.gitGraph=e().GitGraph.parser.LangiumParser},`gitGraph`),radar:Ih(async()=>{let{createRadarServices:e}=await u(async()=>{let{createRadarServices:e}=await import(`./radar-KQ55EAFF-kq5v4OKX.js`);return{createRadarServices:e}},[]);aA.radar=e().Radar.parser.LangiumParser},`radar`),treemap:Ih(async()=>{let{createTreemapServices:e}=await u(async()=>{let{createTreemapServices:e}=await import(`./treemap-KZPCXAKY-DChODgHt.js`);return{createTreemapServices:e}},[]);aA.treemap=e().Treemap.parser.LangiumParser},`treemap`)};async function oA(e,t){let n=Ppe[e];if(!n)throw Error(`Unknown diagram type: ${e}`);aA[e]||await n();let r=aA[e].parse(t);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new Fpe(r);return r.value}Ih(oA,`parse`);var Fpe=class extends Error{constructor(e){let t=e.lexerErrors.map(e=>`Lexer error on line ${e.line!==void 0&&!isNaN(e.line)?e.line:`?`}, column ${e.column!==void 0&&!isNaN(e.column)?e.column:`?`}: ${e.message}`).join(`
243
+ `),a):Nv(t.label,a),u=t.isNode?`nodeLabel`:`edgeLabel`,d=s.append(`span`);d.html(l),Jk(d,t.labelStyle),d.attr(`class`,`${u} ${r}`),Jk(s,t.labelStyle),s.style(`display`,`table-cell`),s.style(`white-space`,`nowrap`),s.style(`line-height`,`1.5`),n!==1/0&&(s.style(`max-width`,n+`px`),s.style(`text-align`,`center`)),s.attr(`xmlns`,`http://www.w3.org/1999/xhtml`),i&&s.attr(`class`,`labelBkg`);let f=s.node().getBoundingClientRect();return f.width===n&&(s.style(`display`,`table`),s.style(`white-space`,`break-spaces`),s.style(`width`,n+`px`),f=s.node().getBoundingClientRect()),o.node()}Y(Xk,`addHtmlSpan`);function Zk(e,t,n,r=!1){let i=e.append(`tspan`).attr(`class`,`text-outer-tspan`).attr(`x`,0).attr(`y`,t*n-.1+`em`).attr(`dy`,n+`em`);return r&&i.attr(`text-anchor`,`middle`),i}Y(Zk,`createTspan`);function Qk(e,t,n){let r=e.append(`text`),i=Zk(r,1,t);tA(i,n);let a=i.node().getComputedTextLength();return r.remove(),a}Y(Qk,`computeWidthOfText`);function $k(e,t,n){let r=e.append(`text`),i=Zk(r,1,t);tA(i,[{content:n,type:`normal`}]);let a=i.node()?.getBoundingClientRect();return a&&r.remove(),a}Y($k,`computeDimensionOfText`);function eA(e,t,n,r=!1,i=!1){let a=1.1,o=t.append(`g`),s=o.insert(`rect`).attr(`class`,`background`).attr(`style`,`stroke: none`),l=o.append(`text`).attr(`y`,`-10.1`);i&&l.attr(`text-anchor`,`middle`);let u=0;for(let t of n){let n=Y(t=>Qk(o,a,t)<=e,`checkWidth`),r=n(t)?[t]:Kk(t,n);for(let e of r)tA(Zk(l,u,a,i),e),u++}if(r){let e=l.node().getBBox();return s.attr(`x`,e.x-2).attr(`y`,e.y-2).attr(`width`,e.width+4).attr(`height`,e.height+4),o.node()}else return l.node()}Y(eA,`createFormattedText`);function tA(e,t){e.text(``),t.forEach((t,n)=>{let r=e.append(`tspan`).attr(`font-style`,t.type===`em`?`italic`:`normal`).attr(`class`,`text-inner-tspan`).attr(`font-weight`,t.type===`strong`?`bold`:`normal`);n===0?r.text(t.content):r.text(` `+t.content)})}Y(tA,`updateTextContentAndStyles`);async function nA(e,t={}){let n=[];e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(e,r,i)=>(n.push((async()=>{let n=`${r}:${i}`;return await Npe(n)?await Lk(n,void 0,{class:`label-icon`}):`<i class='${Nv(e,t).replace(`:`,` `)}'></i>`})()),e));let r=await Promise.all(n);return e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>r.shift()??``)}Y(nA,`replaceIconSubstring`);var rA=Y(async(e,t=``,{style:n=``,isTitle:r=!1,classes:i=``,useHtmlLabels:a=!0,markdown:o=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},d)=>{if(X.debug(`XYZ createText`,t,n,r,i,a,s,`addSvgBackground: `,u),a){let r=await nA(OO(o?Hk(t,d):Vk(t)),d),a=t.replace(/\\\\/g,`\\`);return await Xk(e,{isNode:s,label:Bv(t)?a:r,labelStyle:n.replace(`fill:`,`color:`)},l,i,u,d)}else{let i=t.replace(/<br\s*\/?>/g,`<br/>`),a=eA(l,e,o?Bk(i.replace(`<br>`,`<br/>`),d):zk(i),t?u:!1,!s);if(s){/stroke:/.exec(n)&&(n=n.replace(`stroke:`,`lineColor:`));let e=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/color:/g,`fill:`);bx(a).attr(`style`,e)}else{let e=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/background:/g,`fill:`);bx(a).select(`rect`).attr(`style`,e.replace(/background:/g,`fill:`));let t=n.replace(/stroke:[^;]+;?/g,``).replace(/stroke-width:[^;]+;?/g,``).replace(/fill:[^;]+;?/g,``).replace(/color:/g,`fill:`);bx(a).select(`text`).attr(`style`,t)}return r?bx(a).selectAll(`tspan.text-outer-tspan`).classed(`title-row`,!0):bx(a).selectAll(`tspan.text-outer-tspan`).classed(`row`,!0),a}},`createText`);function iA(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}Y(iA,`populateCommonDb`);var aA={},Ppe={info:Ih(async()=>{let{createInfoServices:e}=await u(async()=>{let{createInfoServices:e}=await import(`./info-3K5VOQVL-Bu3VpM9a.js`);return{createInfoServices:e}},[]);aA.info=e().Info.parser.LangiumParser},`info`),packet:Ih(async()=>{let{createPacketServices:e}=await u(async()=>{let{createPacketServices:e}=await import(`./packet-RMMSAZCW-C83Lg2yy.js`);return{createPacketServices:e}},[]);aA.packet=e().Packet.parser.LangiumParser},`packet`),pie:Ih(async()=>{let{createPieServices:e}=await u(async()=>{let{createPieServices:e}=await import(`./pie-UPGHQEXC-DoT-QQxi.js`);return{createPieServices:e}},[]);aA.pie=e().Pie.parser.LangiumParser},`pie`),architecture:Ih(async()=>{let{createArchitectureServices:e}=await u(async()=>{let{createArchitectureServices:e}=await import(`./architecture-PBZL5I3N-CS5Rvu_a.js`);return{createArchitectureServices:e}},[]);aA.architecture=e().Architecture.parser.LangiumParser},`architecture`),gitGraph:Ih(async()=>{let{createGitGraphServices:e}=await u(async()=>{let{createGitGraphServices:e}=await import(`./gitGraph-HDMCJU4V-BjUgCE-3.js`);return{createGitGraphServices:e}},[]);aA.gitGraph=e().GitGraph.parser.LangiumParser},`gitGraph`),radar:Ih(async()=>{let{createRadarServices:e}=await u(async()=>{let{createRadarServices:e}=await import(`./radar-KQ55EAFF-B6r4mqYF.js`);return{createRadarServices:e}},[]);aA.radar=e().Radar.parser.LangiumParser},`radar`),treemap:Ih(async()=>{let{createTreemapServices:e}=await u(async()=>{let{createTreemapServices:e}=await import(`./treemap-KZPCXAKY-3t3gW0fB.js`);return{createTreemapServices:e}},[]);aA.treemap=e().Treemap.parser.LangiumParser},`treemap`)};async function oA(e,t){let n=Ppe[e];if(!n)throw Error(`Unknown diagram type: ${e}`);aA[e]||await n();let r=aA[e].parse(t);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new Fpe(r);return r.value}Ih(oA,`parse`);var Fpe=class extends Error{constructor(e){let t=e.lexerErrors.map(e=>`Lexer error on line ${e.line!==void 0&&!isNaN(e.line)?e.line:`?`}, column ${e.column!==void 0&&!isNaN(e.column)?e.column:`?`}: ${e.message}`).join(`
244
244
  `),n=e.parserErrors.map(e=>`Parse error on line ${e.token.startLine!==void 0&&!isNaN(e.token.startLine)?e.token.startLine:`?`}, column ${e.token.startColumn!==void 0&&!isNaN(e.token.startColumn)?e.token.startColumn:`?`}: ${e.message}`).join(`
245
245
  `);super(`Parsing failed: ${t} ${n}`),this.result=e}static{Ih(this,`MermaidParseError`)}};function sA(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Ipe(e){if(Array.isArray(e))return e}function Lpe(e){if(Array.isArray(e))return sA(e)}function cA(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function Rpe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,mA(r.key),r)}}function lA(e,t,n){return t&&Rpe(e.prototype,t),Object.defineProperty(e,`prototype`,{writable:!1}),e}function uA(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=gA(e))||t){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
246
246
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||n.return==null||n.return()}finally{if(s)throw a}}}}function dA(e,t,n){return(t=mA(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function zpe(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function Bpe(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],l=!0,u=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,i=e}finally{try{if(!l&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}function Vpe(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
@@ -1 +1 @@
1
- import{b as e}from"./vendor-markdown-0Mxgxy0L.js";import{t}from"./file-exclamation-point-B__2Hrd6.js";import"./api-client-DiZgVOok.js";import{et as n}from"./index-DU_JZ5MY.js";import{t as r}from"./use-blob-url-DCUIEzjB.js";var i=e();function a({filePath:e,projectName:a}){let{blobUrl:o,error:s}=r(e,a);return s?(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,i.jsx)(t,{className:`size-10 text-text-subtle`}),(0,i.jsx)(`p`,{className:`text-sm`,children:`Failed to load video.`})]}):o?(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full p-4 bg-surface overflow-auto`,children:(0,i.jsx)(`video`,{src:o,controls:!0,className:`max-w-full max-h-full`})}):(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,i.jsx)(n,{className:`size-5 animate-spin text-text-subtle`})})}export{a as VideoPreview};
1
+ import{b as e}from"./vendor-markdown-0Mxgxy0L.js";import{t}from"./file-exclamation-point-B__2Hrd6.js";import"./api-client-DiZgVOok.js";import{et as n}from"./index-PZd81rhr.js";import{t as r}from"./use-blob-url-DCUIEzjB.js";var i=e();function a({filePath:e,projectName:a}){let{blobUrl:o,error:s}=r(e,a);return s?(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,i.jsx)(t,{className:`size-10 text-text-subtle`}),(0,i.jsx)(`p`,{className:`text-sm`,children:`Failed to load video.`})]}):o?(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full p-4 bg-surface overflow-auto`,children:(0,i.jsx)(`video`,{src:o,controls:!0,className:`max-w-full max-h-full`})}):(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,i.jsx)(n,{className:`size-5 animate-spin text-text-subtle`})})}export{a as VideoPreview};
@@ -39,9 +39,9 @@
39
39
  <link rel="preconnect" href="https://fonts.googleapis.com" />
40
40
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
41
41
  <link href="https://fonts.googleapis.com/css2?family=Geist+Mono:wght@400;500;600;700&family=Geist:wght@400;500;600;700&display=swap" rel="stylesheet" />
42
- <script type="module" crossorigin src="/assets/index-DU_JZ5MY.js"></script>
42
+ <script type="module" crossorigin src="/assets/index-PZd81rhr.js"></script>
43
43
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-FhOqtrmT.js">
44
- <link rel="modulepreload" crossorigin href="/assets/vendor-mermaid-DCie7hiR.js">
44
+ <link rel="modulepreload" crossorigin href="/assets/vendor-mermaid-DU911Xa9.js">
45
45
  <link rel="modulepreload" crossorigin href="/assets/vendor-markdown-0Mxgxy0L.js">
46
46
  <link rel="modulepreload" crossorigin href="/assets/vendor-ui-UXCWAcmi.js">
47
47
  <link rel="modulepreload" crossorigin href="/assets/utils-E0yyGxXt.js">
@@ -50,7 +50,7 @@
50
50
  <link rel="modulepreload" crossorigin href="/assets/input-B78ol0hV.js">
51
51
  <link rel="modulepreload" crossorigin href="/assets/react-CfveccaI.js">
52
52
  <link rel="modulepreload" crossorigin href="/assets/api-client-DiZgVOok.js">
53
- <link rel="modulepreload" crossorigin href="/assets/settings-store-CSDOihqv.js">
53
+ <link rel="modulepreload" crossorigin href="/assets/settings-store-BFlBSwKg.js">
54
54
  <link rel="modulepreload" crossorigin href="/assets/eye-off-BacF7RVS.js">
55
55
  <link rel="modulepreload" crossorigin href="/assets/chevron-down-BMo4cBth.js">
56
56
  <link rel="modulepreload" crossorigin href="/assets/globe-CQ8NAYvi.js">
package/dist/web/sw.js CHANGED
@@ -1 +1 @@
1
- try{self[`workbox:core:7.3.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}},n={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},r=e=>[n.prefix,e,n.suffix].filter(e=>e&&e.length>0).join(`-`),i=e=>{for(let t of Object.keys(n))e(t)},a={updateDetails:e=>{i(t=>{typeof e[t]==`string`&&(n[t]=e[t])})},getGoogleAnalyticsName:e=>e||r(n.googleAnalytics),getPrecacheName:e=>e||r(n.precache),getPrefix:()=>n.prefix,getRuntimeName:e=>e||r(n.runtime),getSuffix:()=>n.suffix};function o(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.3.0`]&&_()}catch{}var s=`__WB_REVISION__`;function c(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(s,n),{cacheKey:i.href,url:a.href}}var l=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},u=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},d;function f(){if(d===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),d=!0}catch{d=!1}d=!1}return d}async function p(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=f()?i.body:await i.blob();return new Response(s,o)}var m=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function h(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function g(e,t,n,r){let i=h(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===h(t.url,n))return e.match(t,r)}var v=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},y=new Set;async function b(){for(let e of y)await e()}function x(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.3.0`]&&_()}catch{}function S(e){return typeof e==`string`?new Request(e):e}var C=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=S(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=S(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=S(e);await x(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:m(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await g(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await b(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=S(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},w=class{constructor(e={}){this.cacheName=a.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new C(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},T=class e extends w{constructor(t={}){t.cacheName=a.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};T.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},T.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await p(e):e}};var E=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new T({cacheName:a.getPrecacheName(e),plugins:[...t,new u({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=c(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return o(e,async()=>{let t=new l;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return o(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},D,O=()=>(D||=new E,D);try{self[`workbox:routing:7.3.0`]&&_()}catch{}var k=e=>e&&typeof e==`object`?e:{handle:e},A=class{constructor(e,t,n=`GET`){this.handler=k(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=k(e)}},j=class extends A{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},M=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,k(e))}setCatchHandler(e){this._catchHandler=k(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},N,P=()=>(N||(N=new M,N.addFetchListener(),N.addCacheListener()),N);function F(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new A(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new j(e,n,r);else if(typeof e==`function`)i=new A(e,n,r);else if(e instanceof A)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return P().registerRoute(i),i}function I(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*L(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=I(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var R=class extends A{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of L(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function z(e){F(new R(O(),e))}function B(e){O().precache(e)}function V(e,t){B(e),z(t)}V([{"revision":"1872c500de691dce40960bb85481de07","url":"registerSW.js"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"df3ac56b54813e3e0cd57f64f3c6ce7f","url":"index.html"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":null,"url":"assets/vendor-xterm-msgiskDb.js"},{"revision":null,"url":"assets/react-CfveccaI.js"},{"revision":null,"url":"assets/extension-webview-0qfU1r7z.js"},{"revision":null,"url":"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2"},{"revision":null,"url":"assets/api-settings-uQKmeGkl.js"},{"revision":null,"url":"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2"},{"revision":null,"url":"assets/project-store-BnvrVKBw.js"},{"revision":null,"url":"assets/sqlite-viewer-z3pGFSje.js"},{"revision":null,"url":"assets/keybindings-store-0FUOwc9I.js"},{"revision":null,"url":"assets/table-2wDtM4_B.js"},{"revision":null,"url":"assets/packet-RMMSAZCW-Ar00Wbhd.js"},{"revision":null,"url":"assets/arrow-down-D825m4vm.js"},{"revision":null,"url":"assets/notification-store-bwd1UKbs.js"},{"revision":null,"url":"assets/markdown-renderer-D-QbsfIC.js"},{"revision":null,"url":"assets/use-blob-url-DCUIEzjB.js"},{"revision":null,"url":"assets/settings-tab-BUCIqVAl.js"},{"revision":null,"url":"assets/KaTeX_Main-Regular-B22Nviop.woff2"},{"revision":null,"url":"assets/conflict-editor-D5sEfbcX.js"},{"revision":null,"url":"assets/chevron-down-BMo4cBth.js"},{"revision":null,"url":"assets/dist-DeY41KFi.js"},{"revision":null,"url":"assets/pie-UPGHQEXC-Q4ssDdib.js"},{"revision":null,"url":"assets/github.min-D2BCvnWf.css"},{"revision":null,"url":"assets/radar-KQ55EAFF-kq5v4OKX.js"},{"revision":null,"url":"assets/settings-store-CSDOihqv.js"},{"revision":null,"url":"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2"},{"revision":null,"url":"assets/info-3K5VOQVL-CWKw4e0V.js"},{"revision":null,"url":"assets/glide-data-grid-nthEL3fk.css"},{"revision":null,"url":"assets/esm-JPvheKDJ.js"},{"revision":null,"url":"assets/index-BuXdQZjD.css"},{"revision":null,"url":"assets/lib-DrypSCq8.js"},{"revision":null,"url":"assets/database-viewer-BGBVsG5J.js"},{"revision":null,"url":"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2"},{"revision":null,"url":"assets/panel-store-B1pOXkyS.js"},{"revision":null,"url":"assets/vendor-markdown-0Mxgxy0L.js"},{"revision":null,"url":"assets/wifi-LJEyIdXf.js"},{"revision":null,"url":"assets/sql-query-editor-C7YgtDR3.js"},{"revision":null,"url":"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2"},{"revision":null,"url":"assets/port-forwarding-tab-C4OYC71C.js"},{"revision":null,"url":"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2"},{"revision":null,"url":"assets/chevron-right-CD8e6Aj4.js"},{"revision":null,"url":"assets/vendor-mermaid-DCie7hiR.js"},{"revision":null,"url":"assets/trash-2-DkIfBY8d.js"},{"revision":null,"url":"assets/text-wrap-AZErifCu.js"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2"},{"revision":null,"url":"assets/system-monitor-tab-Bj6pcRmV.js"},{"revision":null,"url":"assets/globe-CQ8NAYvi.js"},{"revision":null,"url":"assets/glide-data-grid-DV8ht1BP.js"},{"revision":null,"url":"assets/utils-E0yyGxXt.js"},{"revision":null,"url":"assets/rolldown-runtime-FhOqtrmT.js"},{"revision":null,"url":"assets/use-monaco-theme-qx6SfVRk.js"},{"revision":null,"url":"assets/input-B78ol0hV.js"},{"revision":null,"url":"assets/code-DiNmA3eR.js"},{"revision":null,"url":"assets/refresh-cw-CRD2qr4U.js"},{"revision":null,"url":"assets/search-D90WJ5fo.js"},{"revision":null,"url":"assets/vendor-ui-UXCWAcmi.js"},{"revision":null,"url":"assets/file-exclamation-point-B__2Hrd6.js"},{"revision":null,"url":"assets/KaTeX_Math-Italic-t53AETM-.woff2"},{"revision":null,"url":"assets/data-grid-types-C29KDkZJ.js"},{"revision":null,"url":"assets/katex-DUj5OG1J.js"},{"revision":null,"url":"assets/diff-viewer-B-O1mvHO.js"},{"revision":null,"url":"assets/github-dark-dimmed.min-BrpRStFV.css"},{"revision":null,"url":"assets/image-preview-Dbo7SAVb.js"},{"revision":null,"url":"assets/number-overlay-editor-DS-qf63L.js"},{"revision":null,"url":"assets/video-preview-DylSBAzo.js"},{"revision":null,"url":"assets/audio-preview-Bog1sIoF.js"},{"revision":null,"url":"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2"},{"revision":null,"url":"assets/KaTeX_Script-Regular-D3wIWfF6.woff2"},{"revision":null,"url":"assets/arrow-up-Rcw6_KKu.js"},{"revision":null,"url":"assets/ai-settings-section-BH2UOQH-.js"},{"revision":null,"url":"assets/database-Dc8mr-dP.js"},{"revision":null,"url":"assets/eye-off-BacF7RVS.js"},{"revision":null,"url":"assets/git-log-panel-C1T8bav0.js"},{"revision":null,"url":"assets/KaTeX_Main-Bold-Cx986IdX.woff2"},{"revision":null,"url":"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2"},{"revision":null,"url":"assets/api-client-DiZgVOok.js"},{"revision":null,"url":"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2"},{"revision":null,"url":"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2"},{"revision":null,"url":"assets/x-DfF6D5Js.js"},{"revision":null,"url":"assets/treemap-KZPCXAKY-DChODgHt.js"},{"revision":null,"url":"assets/createLucideIcon-BjHrJDVb.js"},{"revision":null,"url":"assets/data-grid-overlay-editor-CmduzuPM.js"},{"revision":null,"url":"assets/index-DU_JZ5MY.js"},{"revision":null,"url":"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2"},{"revision":null,"url":"assets/docx-preview-ByzSlSgn.js"},{"revision":null,"url":"assets/gitGraph-HDMCJU4V-2a0r4GHr.js"},{"revision":null,"url":"assets/pdf-preview-DV96VPTb.js"},{"revision":null,"url":"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2"},{"revision":null,"url":"assets/terminal-tab-DbxLHofN.js"},{"revision":null,"url":"assets/sparkles-KCOEy7QI.js"},{"revision":null,"url":"assets/architecture-PBZL5I3N-DLKD1Xjj.js"},{"revision":null,"url":"assets/code-editor-cDv3opsJ.js"},{"revision":null,"url":"assets/postgres-viewer-hb-_twEU.js"},{"revision":null,"url":"assets/csv-parser-D8VHWVA6.js"},{"revision":null,"url":"assets/csv-preview-DgArUJhd.js"},{"revision":null,"url":"assets/tab-store-DzftzxTL.js"},{"revision":null,"url":"assets/vendor-xterm-BrP-ENHg.css"},{"revision":null,"url":"assets/chat-tab-B-uVAh4d.js"},{"revision":null,"url":"assets/dist-PPUhQONj.js"},{"revision":null,"url":"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2"},{"revision":"d0f94ce046cf8cf09605ee7664dac557","url":"monacoeditorwork/html.worker.bundle.js"},{"revision":"a424156a79b9c1b907db93aa3180585a","url":"monacoeditorwork/editor.worker.bundle.js"},{"revision":"b3a7f967560c9816492a1567b3f7f0dc","url":"monacoeditorwork/css.worker.bundle.js"},{"revision":"a5d8a1acfc29c2a4c882a54ffc93def3","url":"monacoeditorwork/json.worker.bundle.js"},{"revision":"948e060affb598c339be40d69e1f6f9c","url":"monacoeditorwork/ts.worker.bundle.js"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"26dccd02a2ef7522892015154f5e3680","url":"manifest.webmanifest"}]),self.addEventListener(`push`,e=>{e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(t=>{if(t.some(e=>e.visibilityState===`visible`))return;let n=e.data?.json()??{title:`PPM`,body:`Chat completed`};return self.registration.showNotification(n.title,{body:n.body,icon:`/icon-192.svg`,badge:`/icon-192.svg`,tag:`ppm-chat-done`,silent:!1,data:{url:self.location.origin}})}))}),self.addEventListener(`notificationclick`,e=>{e.notification.close(),e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(t=>{for(let e of t)if(e.url.includes(self.location.origin)&&`focus`in e)return e.focus();return self.clients.openWindow(e.notification.data?.url||`/`)}))});
1
+ try{self[`workbox:core:7.3.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}},n={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},r=e=>[n.prefix,e,n.suffix].filter(e=>e&&e.length>0).join(`-`),i=e=>{for(let t of Object.keys(n))e(t)},a={updateDetails:e=>{i(t=>{typeof e[t]==`string`&&(n[t]=e[t])})},getGoogleAnalyticsName:e=>e||r(n.googleAnalytics),getPrecacheName:e=>e||r(n.precache),getPrefix:()=>n.prefix,getRuntimeName:e=>e||r(n.runtime),getSuffix:()=>n.suffix};function o(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.3.0`]&&_()}catch{}var s=`__WB_REVISION__`;function c(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(s,n),{cacheKey:i.href,url:a.href}}var l=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},u=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},d;function f(){if(d===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),d=!0}catch{d=!1}d=!1}return d}async function p(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=f()?i.body:await i.blob();return new Response(s,o)}var m=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function h(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function g(e,t,n,r){let i=h(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===h(t.url,n))return e.match(t,r)}var v=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},y=new Set;async function b(){for(let e of y)await e()}function x(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.3.0`]&&_()}catch{}function S(e){return typeof e==`string`?new Request(e):e}var C=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=S(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=S(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=S(e);await x(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:m(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await g(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await b(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=S(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},w=class{constructor(e={}){this.cacheName=a.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new C(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},T=class e extends w{constructor(t={}){t.cacheName=a.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};T.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},T.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await p(e):e}};var E=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new T({cacheName:a.getPrecacheName(e),plugins:[...t,new u({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=c(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return o(e,async()=>{let t=new l;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return o(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},D,O=()=>(D||=new E,D);try{self[`workbox:routing:7.3.0`]&&_()}catch{}var k=e=>e&&typeof e==`object`?e:{handle:e},A=class{constructor(e,t,n=`GET`){this.handler=k(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=k(e)}},j=class extends A{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},M=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,k(e))}setCatchHandler(e){this._catchHandler=k(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},N,P=()=>(N||(N=new M,N.addFetchListener(),N.addCacheListener()),N);function F(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new A(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new j(e,n,r);else if(typeof e==`function`)i=new A(e,n,r);else if(e instanceof A)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return P().registerRoute(i),i}function I(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*L(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=I(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var R=class extends A{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of L(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function z(e){F(new R(O(),e))}function B(e){O().precache(e)}function V(e,t){B(e),z(t)}V([{"revision":"1872c500de691dce40960bb85481de07","url":"registerSW.js"},{"revision":"9ef9ae0f89e98b3c9ca7f652eb11a15a","url":"index.html"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"948e060affb598c339be40d69e1f6f9c","url":"monacoeditorwork/ts.worker.bundle.js"},{"revision":"a5d8a1acfc29c2a4c882a54ffc93def3","url":"monacoeditorwork/json.worker.bundle.js"},{"revision":"d0f94ce046cf8cf09605ee7664dac557","url":"monacoeditorwork/html.worker.bundle.js"},{"revision":"a424156a79b9c1b907db93aa3180585a","url":"monacoeditorwork/editor.worker.bundle.js"},{"revision":"b3a7f967560c9816492a1567b3f7f0dc","url":"monacoeditorwork/css.worker.bundle.js"},{"revision":null,"url":"assets/x-DfF6D5Js.js"},{"revision":null,"url":"assets/wifi-LJEyIdXf.js"},{"revision":null,"url":"assets/video-preview-8Vrdwy25.js"},{"revision":null,"url":"assets/vendor-xterm-msgiskDb.js"},{"revision":null,"url":"assets/vendor-xterm-BrP-ENHg.css"},{"revision":null,"url":"assets/vendor-ui-UXCWAcmi.js"},{"revision":null,"url":"assets/vendor-mermaid-DU911Xa9.js"},{"revision":null,"url":"assets/vendor-markdown-0Mxgxy0L.js"},{"revision":null,"url":"assets/utils-E0yyGxXt.js"},{"revision":null,"url":"assets/use-monaco-theme-6AirEH08.js"},{"revision":null,"url":"assets/use-blob-url-DCUIEzjB.js"},{"revision":null,"url":"assets/treemap-KZPCXAKY-3t3gW0fB.js"},{"revision":null,"url":"assets/trash-2-DkIfBY8d.js"},{"revision":null,"url":"assets/text-wrap-AZErifCu.js"},{"revision":null,"url":"assets/terminal-tab-Lu2U4vpg.js"},{"revision":null,"url":"assets/table-2wDtM4_B.js"},{"revision":null,"url":"assets/tab-store-DzftzxTL.js"},{"revision":null,"url":"assets/system-monitor-tab-C51mwQcv.js"},{"revision":null,"url":"assets/sqlite-viewer-Fq4NnQg6.js"},{"revision":null,"url":"assets/sql-query-editor-BsxW0lTw.js"},{"revision":null,"url":"assets/sparkles-KCOEy7QI.js"},{"revision":null,"url":"assets/settings-tab-C5S_iYSH.js"},{"revision":null,"url":"assets/settings-store-BFlBSwKg.js"},{"revision":null,"url":"assets/search-D90WJ5fo.js"},{"revision":null,"url":"assets/rolldown-runtime-FhOqtrmT.js"},{"revision":null,"url":"assets/refresh-cw-CRD2qr4U.js"},{"revision":null,"url":"assets/react-CfveccaI.js"},{"revision":null,"url":"assets/radar-KQ55EAFF-B6r4mqYF.js"},{"revision":null,"url":"assets/project-store-BnvrVKBw.js"},{"revision":null,"url":"assets/postgres-viewer-DOTykgcg.js"},{"revision":null,"url":"assets/port-forwarding-tab-DIqVwGrL.js"},{"revision":null,"url":"assets/pie-UPGHQEXC-DoT-QQxi.js"},{"revision":null,"url":"assets/pdf-preview-19LY16zS.js"},{"revision":null,"url":"assets/panel-store-B1pOXkyS.js"},{"revision":null,"url":"assets/packet-RMMSAZCW-C83Lg2yy.js"},{"revision":null,"url":"assets/number-overlay-editor-DS-qf63L.js"},{"revision":null,"url":"assets/notification-store-CgsqI4c0.js"},{"revision":null,"url":"assets/markdown-renderer-BojoStRy.js"},{"revision":null,"url":"assets/lib-DrypSCq8.js"},{"revision":null,"url":"assets/keybindings-store-DZjJtyij.js"},{"revision":null,"url":"assets/katex-DUj5OG1J.js"},{"revision":null,"url":"assets/input-B78ol0hV.js"},{"revision":null,"url":"assets/info-3K5VOQVL-Bu3VpM9a.js"},{"revision":null,"url":"assets/index-PZd81rhr.js"},{"revision":null,"url":"assets/index-BuXdQZjD.css"},{"revision":null,"url":"assets/image-preview-DjWCljN-.js"},{"revision":null,"url":"assets/globe-CQ8NAYvi.js"},{"revision":null,"url":"assets/glide-data-grid-nthEL3fk.css"},{"revision":null,"url":"assets/glide-data-grid-DbtdLkFk.js"},{"revision":null,"url":"assets/github.min-D2BCvnWf.css"},{"revision":null,"url":"assets/github-dark-dimmed.min-BrpRStFV.css"},{"revision":null,"url":"assets/gitGraph-HDMCJU4V-BjUgCE-3.js"},{"revision":null,"url":"assets/git-log-panel-CAa4j8NA.js"},{"revision":null,"url":"assets/file-exclamation-point-B__2Hrd6.js"},{"revision":null,"url":"assets/eye-off-BacF7RVS.js"},{"revision":null,"url":"assets/extension-webview-B2Q7T_NQ.js"},{"revision":null,"url":"assets/esm-JPvheKDJ.js"},{"revision":null,"url":"assets/docx-preview-D_P_e_0O.js"},{"revision":null,"url":"assets/dist-PPUhQONj.js"},{"revision":null,"url":"assets/dist-DeY41KFi.js"},{"revision":null,"url":"assets/diff-viewer-sbO35hMr.js"},{"revision":null,"url":"assets/database-viewer-Cl31pR9W.js"},{"revision":null,"url":"assets/database-Dc8mr-dP.js"},{"revision":null,"url":"assets/data-grid-types-C29KDkZJ.js"},{"revision":null,"url":"assets/data-grid-overlay-editor-CmduzuPM.js"},{"revision":null,"url":"assets/csv-preview-DgArUJhd.js"},{"revision":null,"url":"assets/csv-parser-D8VHWVA6.js"},{"revision":null,"url":"assets/createLucideIcon-BjHrJDVb.js"},{"revision":null,"url":"assets/conflict-editor-BPjmtXlC.js"},{"revision":null,"url":"assets/code-editor-CQSDgP7X.js"},{"revision":null,"url":"assets/code-DiNmA3eR.js"},{"revision":null,"url":"assets/chevron-right-CD8e6Aj4.js"},{"revision":null,"url":"assets/chevron-down-BMo4cBth.js"},{"revision":null,"url":"assets/chat-tab-B1m7T_2n.js"},{"revision":null,"url":"assets/audio-preview-B8XiU4Bw.js"},{"revision":null,"url":"assets/arrow-up-Rcw6_KKu.js"},{"revision":null,"url":"assets/arrow-down-D825m4vm.js"},{"revision":null,"url":"assets/architecture-PBZL5I3N-CS5Rvu_a.js"},{"revision":null,"url":"assets/api-settings-uQKmeGkl.js"},{"revision":null,"url":"assets/api-client-DiZgVOok.js"},{"revision":null,"url":"assets/ai-settings-section-BH2UOQH-.js"},{"revision":null,"url":"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2"},{"revision":null,"url":"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2"},{"revision":null,"url":"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2"},{"revision":null,"url":"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2"},{"revision":null,"url":"assets/KaTeX_Script-Regular-D3wIWfF6.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2"},{"revision":null,"url":"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2"},{"revision":null,"url":"assets/KaTeX_Math-Italic-t53AETM-.woff2"},{"revision":null,"url":"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Regular-B22Nviop.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2"},{"revision":null,"url":"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2"},{"revision":null,"url":"assets/KaTeX_Main-Bold-Cx986IdX.woff2"},{"revision":null,"url":"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2"},{"revision":null,"url":"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2"},{"revision":null,"url":"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2"},{"revision":null,"url":"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"26dccd02a2ef7522892015154f5e3680","url":"manifest.webmanifest"}]),self.addEventListener(`push`,e=>{e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(t=>{if(t.some(e=>e.visibilityState===`visible`))return;let n=e.data?.json()??{title:`PPM`,body:`Chat completed`};return self.registration.showNotification(n.title,{body:n.body,icon:`/icon-192.svg`,badge:`/icon-192.svg`,tag:`ppm-chat-done`,silent:!1,data:{url:self.location.origin}})}))}),self.addEventListener(`notificationclick`,e=>{e.notification.close(),e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(t=>{for(let e of t)if(e.url.includes(self.location.origin)&&`focus`in e)return e.focus();return self.clients.openWindow(e.notification.data?.url||`/`)}))});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hienlh/ppm",
3
- "version": "0.13.64",
3
+ "version": "0.13.66",
4
4
  "description": "Personal Project Manager — mobile-first web IDE with AI assistance",
5
5
  "author": "hienlh",
6
6
  "license": "MIT",
@@ -40,7 +40,7 @@ export async function authMiddleware(c: Context, next: Next) {
40
40
  // Fallback: short-lived download token for browser-initiated downloads only
41
41
  if (c.req.method === "GET") {
42
42
  const path = c.req.path;
43
- const isDownloadPath = path.endsWith("/files/raw") || path.endsWith("/files/download/zip");
43
+ const isDownloadPath = path.endsWith("/files/raw") || path.endsWith("/files/download/zip") || path.endsWith("/fs/raw");
44
44
  if (isDownloadPath) {
45
45
  const dlToken = c.req.query("dl_token");
46
46
  if (dlToken && consumeDownloadToken(dlToken)) {
@@ -105,8 +105,8 @@ fileRoutes.get("/docx-html", async (c) => {
105
105
  if (!absPath.startsWith(projectPath)) return c.json(err("Access denied"), 403);
106
106
  if (!existsSync(absPath)) return c.json(err("File not found"), 404);
107
107
 
108
- const buffer = await Bun.file(absPath).arrayBuffer();
109
- const result = await mammoth.convertToHtml({ arrayBuffer: buffer });
108
+ const arrayBuf = await Bun.file(absPath).arrayBuffer();
109
+ const result = await mammoth.convertToHtml({ buffer: Buffer.from(arrayBuf) });
110
110
  return c.json(ok({ html: result.value, warnings: result.messages }));
111
111
  } catch (e) {
112
112
  return c.json(err((e as Error).message), errorStatus(e));
@@ -8,8 +8,11 @@ import {
8
8
  list,
9
9
  readSystemFile,
10
10
  writeSystemFile,
11
+ isAllowedPath,
12
+ resolvePath,
11
13
  } from "../../services/fs-browse.service.ts";
12
14
  import { ok, err } from "../../types/api.ts";
15
+ import { createDownloadToken } from "../../services/download-token.service.ts";
13
16
 
14
17
  export const fsBrowseRoutes = new Hono();
15
18
 
@@ -56,18 +59,29 @@ fsBrowseRoutes.get("/read", (c) => {
56
59
  }
57
60
  });
58
61
 
62
+ /** POST /api/fs/download/token — generate a short-lived token for external file downloads */
63
+ fsBrowseRoutes.post("/download/token", (c) => {
64
+ const token = createDownloadToken();
65
+ return c.json(ok({ token }));
66
+ });
67
+
59
68
  /** GET /api/fs/raw?path=/some/file — serve file as binary (for images in markdown, etc.) */
60
69
  fsBrowseRoutes.get("/raw", (c) => {
61
70
  try {
62
71
  const filePath = c.req.query("path");
63
72
  if (!filePath) return c.json(err("path is required"), 400);
64
- if (!existsSync(filePath)) return c.json(err("File not found"), 404);
65
73
 
66
- const file = Bun.file(filePath);
74
+ const resolved = resolvePath(filePath);
75
+ if (!isAllowedPath(resolved)) return c.json(err("Access denied"), 403);
76
+ if (!existsSync(resolved)) return c.json(err("File not found"), 404);
77
+
78
+ const download = c.req.query("download") === "true";
79
+ const filename = resolved.split("/").pop() ?? "download";
80
+ const file = Bun.file(resolved);
67
81
  return new Response(file.stream(), {
68
82
  headers: {
69
- "Content-Type": file.type || "application/octet-stream",
70
- "Content-Disposition": "inline",
83
+ "Content-Type": download ? "application/octet-stream" : (file.type || "application/octet-stream"),
84
+ "Content-Disposition": download ? `attachment; filename="${filename}"` : "inline",
71
85
  "Cache-Control": "private, max-age=3600",
72
86
  },
73
87
  });
@@ -83,8 +97,8 @@ fsBrowseRoutes.get("/docx-html", async (c) => {
83
97
  if (!filePath) return c.json(err("path is required"), 400);
84
98
  if (!existsSync(filePath)) return c.json(err("File not found"), 404);
85
99
 
86
- const buffer = await Bun.file(filePath).arrayBuffer();
87
- const result = await mammoth.convertToHtml({ arrayBuffer: buffer });
100
+ const arrayBuf = await Bun.file(filePath).arrayBuffer();
101
+ const result = await mammoth.convertToHtml({ buffer: Buffer.from(arrayBuf) });
88
102
  return c.json(ok({ html: result.value, warnings: result.messages }));
89
103
  } catch (e) {
90
104
  return c.json(err((e as Error).message), errorStatus(e));
@@ -16,7 +16,7 @@ export function createDownloadToken(): string {
16
16
  return token;
17
17
  }
18
18
 
19
- /** Validate and consume a download token (one-time use) */
19
+ /** Validate a download token (TTL-based, allows multiple uses within window) */
20
20
  export function consumeDownloadToken(token: string): boolean {
21
21
  const entry = tokens.get(token);
22
22
  if (!entry) return false;
@@ -24,7 +24,6 @@ export function consumeDownloadToken(token: string): boolean {
24
24
  tokens.delete(token);
25
25
  return false;
26
26
  }
27
- tokens.delete(token);
28
27
  return true;
29
28
  }
30
29
 
@@ -14,6 +14,8 @@ const CATEGORY_PATTERNS: [ResourceGroup["type"], RegExp][] = [
14
14
  ];
15
15
 
16
16
  function categorize(cmd: string): ResourceGroup["type"] {
17
+ // Check full command for well-known AI tool paths before extracting basename
18
+ if (/claude-agent-sdk|@anthropic-ai\/claude/.test(cmd)) return "ai-tool";
17
19
  const basename = cmd.split("/").pop()?.split(" ")[0] ?? cmd;
18
20
  for (const [type, re] of CATEGORY_PATTERNS) {
19
21
  if (re.test(basename)) return type;
@@ -92,6 +94,7 @@ const TYPE_LABELS: Record<ResourceGroup["type"], string> = {
92
94
  export function groupProcesses(
93
95
  serverEntry: ProcessEntry | undefined,
94
96
  children: ProcessEntry[],
97
+ allEntries: ProcessEntry[] = [],
95
98
  ): ResourceGroup[] {
96
99
  const groups: ResourceGroup[] = [];
97
100
 
@@ -105,8 +108,14 @@ export function groupProcesses(
105
108
  });
106
109
  }
107
110
 
111
+ // Include external AI tool processes not in PPM's process tree (e.g. Claude Code sessions)
112
+ const ppmPids = new Set([serverEntry?.pid, ...children.map((c) => c.pid)].filter(Boolean));
113
+ const externalAiProcs = allEntries.filter(
114
+ (e) => !ppmPids.has(e.pid) && categorize(e.command) === "ai-tool",
115
+ );
116
+
108
117
  const buckets = new Map<ResourceGroup["type"], ProcessEntry[]>();
109
- for (const child of children) {
118
+ for (const child of [...children, ...externalAiProcs]) {
110
119
  const type = categorize(child.command);
111
120
  const list = buckets.get(type) ?? [];
112
121
  list.push(child);
@@ -89,7 +89,7 @@ class ResourceMonitorService {
89
89
  const rootPid = process.pid;
90
90
  const serverEntry = entries.find((e) => e.pid === rootPid);
91
91
  const children = buildTree(entries, rootPid);
92
- const groups = groupProcesses(serverEntry, children);
92
+ const groups = groupProcesses(serverEntry, children, entries);
93
93
 
94
94
  const allProcs = serverEntry ? [serverEntry, ...children] : children;
95
95
  const snapshot: ResourceSnapshot = {
@@ -2,6 +2,14 @@ import { api, projectUrl } from "./api-client";
2
2
 
3
3
  /** Trigger browser-native file download via hidden <a> tag */
4
4
  export async function downloadFile(projectName: string, filePath: string): Promise<void> {
5
+ // Absolute paths (external files opened from filesystem browser) use /api/fs routes
6
+ const isAbsolute = /^(\/|[A-Za-z]:[/\\])/.test(filePath);
7
+ if (isAbsolute) {
8
+ const { token } = await api.post<{ token: string }>("/api/fs/download/token");
9
+ const url = `/api/fs/raw?path=${encodeURIComponent(filePath)}&download=true&dl_token=${encodeURIComponent(token)}`;
10
+ triggerDownload(url, filePath.split("/").pop() ?? "download");
11
+ return;
12
+ }
5
13
  const { token } = await api.post<{ token: string }>(`${projectUrl(projectName)}/files/download/token`);
6
14
  const url = `${projectUrl(projectName)}/files/raw?path=${encodeURIComponent(filePath)}&download=true&dl_token=${encodeURIComponent(token)}`;
7
15
  triggerDownload(url, filePath.split("/").pop() ?? "download");
@@ -1,98 +0,0 @@
1
- # Claude Code - Global Environment Variables
2
- # Location: .claude/.env
3
- # Priority: LOWEST (overridden by skills/.env and skill-specific .env)
4
- # Scope: Project-wide configuration, global defaults
5
- # Setup: Copy to .claude/.env and configure
6
-
7
- # ============================================
8
- # Environment Variable Hierarchy
9
- # ============================================
10
- # Priority order (highest to lowest):
11
- # 1. process.env - Runtime environment (HIGHEST)
12
- # 2. .claude/skills/<skill>/.env - Skill-specific overrides
13
- # 3. .claude/skills/.env - Shared across all skills
14
- # 4. .claude/.env - Global defaults (this file, LOWEST)
15
- #
16
- # All skills use centralized resolver: ~/.claude/scripts/resolve_env.py
17
- # Debug hierarchy: python ~/.claude/scripts/resolve_env.py --show-hierarchy
18
-
19
- # ============================================
20
- # ClaudeKit API Key (for VidCap, ReviewWeb services)
21
- # ============================================
22
- # Get your API key from https://claudekit.cc/api-keys
23
- # Required for accessing ClaudeKit services via skills
24
- CLAUDEKIT_API_KEY=
25
-
26
- # ============================================
27
- # Claude Code Notification Hooks
28
- # ============================================
29
- # Discord Webhook URL (for Discord notifications)
30
- # Get from: Server Settings → Integrations → Webhooks → New Webhook
31
- DISCORD_WEBHOOK_URL=
32
-
33
- # Telegram Bot Token (for Telegram notifications)
34
- # Get from: @BotFather in Telegram
35
- TELEGRAM_BOT_TOKEN=
36
-
37
- # Telegram Chat ID (your chat ID or group ID)
38
- # Get from: https://api.telegram.org/bot<BOT_TOKEN>/getUpdates
39
- TELEGRAM_CHAT_ID=
40
-
41
- # ============================================
42
- # AI/ML API Keys (Global Defaults)
43
- # ============================================
44
- # Google Gemini API (for ai-multimodal, docs-seeker skills)
45
- # Get from: https://aistudio.google.com/apikey
46
- GEMINI_API_KEY=
47
-
48
- # Vertex AI Configuration (Optional alternative to AI Studio)
49
- # GEMINI_USE_VERTEX=true
50
- # VERTEX_PROJECT_ID=
51
- # VERTEX_LOCATION=us-central1
52
-
53
- # OpenAI API Key (if using OpenAI-based skills)
54
- # OPENAI_API_KEY=
55
-
56
- # Anthropic API Key (if using Claude API directly)
57
- # ANTHROPIC_API_KEY=
58
-
59
- # ElevenLabs API Key
60
- # Get your key at: https://elevenlabs.io/app/settings/api-keys
61
- # ELEVENLABS_API_KEY=
62
-
63
- # ============================================
64
- # Development & CI/CD
65
- # ============================================
66
- # NODE_ENV=development
67
- # DEBUG=false
68
- # LOG_LEVEL=info
69
-
70
- # ============================================
71
- # Project Configuration
72
- # ============================================
73
- # PROJECT_NAME=claudekit-engineer
74
- # ENVIRONMENT=local
75
-
76
- # ============================================
77
- # Example Usage Scenarios
78
- # ============================================
79
- # Scenario 1: Global default for all skills
80
- # .claude/.env (this file): GEMINI_API_KEY=global-dev-key
81
- # Result: All skills use global-dev-key
82
- #
83
- # Scenario 2: Override for all skills
84
- # .claude/.env (this file): GEMINI_API_KEY=global-dev-key
85
- # .claude/skills/.env: GEMINI_API_KEY=skills-prod-key
86
- # Result: All skills use skills-prod-key
87
- #
88
- # Scenario 3: Skill-specific override
89
- # .claude/.env (this file): GEMINI_API_KEY=global-key
90
- # .claude/skills/.env: GEMINI_API_KEY=shared-key
91
- # .claude/skills/ai-multimodal/.env: GEMINI_API_KEY=high-quota-key
92
- # Result: ai-multimodal uses high-quota-key, other skills use shared-key
93
- #
94
- # Scenario 4: Runtime testing
95
- # export GEMINI_API_KEY=test-key
96
- # Result: All skills use test-key regardless of config files
97
- #
98
- # Priority: runtime > skill-specific > shared > global (this file)