Spaces:
Running
Running
Upload 395 files
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- assets/@braintree-DY5JYOZd.js +2 -0
- assets/@braintree-DY5JYOZd.js.map +1 -0
- assets/@chevrotain-DMYZVohV.js +10 -0
- assets/@chevrotain-DMYZVohV.js.map +1 -0
- assets/@google-xfXoiafW.js +14 -0
- assets/@google-xfXoiafW.js.map +0 -0
- assets/@iconify-D2F_yRRF.js +2 -0
- assets/@iconify-D2F_yRRF.js.map +1 -0
- assets/@mermaid-js-Ce0__7Tp.js +5 -0
- assets/@mermaid-js-Ce0__7Tp.js.map +0 -0
- assets/@octokit-XqW7jd-l.js +4 -0
- assets/@octokit-XqW7jd-l.js.map +0 -0
- assets/ABTestAssistant-CYTkocO5.js +2 -0
- assets/ABTestAssistant-CYTkocO5.js.map +1 -0
- assets/AccessibilityAnnotation-qrX9Fzr2.js +6 -0
- assets/AccessibilityAnnotation-qrX9Fzr2.js.map +1 -0
- assets/AccessibilityAuditor-uF6Qx8UH.js +2 -0
- assets/AccessibilityAuditor-uF6Qx8UH.js.map +1 -0
- assets/AiCodeExplainer-DBywGusR.js +12 -0
- assets/AiCodeExplainer-DBywGusR.js.map +1 -0
- assets/AiCodeMigrator-DyYOOclS.js +8 -0
- assets/AiCodeMigrator-DyYOOclS.js.map +1 -0
- assets/AiCodingChallenge-CHN_Dy1Y.js +2 -0
- assets/AiCodingChallenge-CHN_Dy1Y.js.map +1 -0
- assets/AiCommandCenter-C1fx3T9b.js +7 -0
- assets/AiCommandCenter-C1fx3T9b.js.map +1 -0
- assets/AiCommitGenerator-BDAAla-r.js +14 -0
- assets/AiCommitGenerator-BDAAla-r.js.map +1 -0
- assets/AiFeatureBuilder-sYGqVH2W.js +6 -0
- assets/AiFeatureBuilder-sYGqVH2W.js.map +1 -0
- assets/AiImageGenerator-BuAzPwpb.js +2 -0
- assets/AiImageGenerator-BuAzPwpb.js.map +1 -0
- assets/AiPersonalityForge-DXnPiFSx.js +4 -0
- assets/AiPersonalityForge-DXnPiFSx.js.map +1 -0
- assets/AiPullRequestAssistant-CQFgU8gB.js +12 -0
- assets/AiPullRequestAssistant-CQFgU8gB.js.map +1 -0
- assets/AiStyleTransfer-4K23Hln9.js +4 -0
- assets/AiStyleTransfer-4K23Hln9.js.map +1 -0
- assets/AiUnitTestGenerator-B0mTatHg.js +9 -0
- assets/AiUnitTestGenerator-B0mTatHg.js.map +1 -0
- assets/AiVideoGenerator-BlSkwEXh.js +2 -0
- assets/AiVideoGenerator-BlSkwEXh.js.map +1 -0
- assets/ApiClientGenerator-CKm58gQ7.js +13 -0
- assets/ApiClientGenerator-CKm58gQ7.js.map +1 -0
- assets/ApiEndpointTester-CdpMBY-S.js +4 -0
- assets/ApiEndpointTester-CdpMBY-S.js.map +1 -0
- assets/ApiMockGenerator-B5sh0eFd.js +78 -0
- assets/ApiMockGenerator-B5sh0eFd.js.map +1 -0
- assets/AsyncCallTreeViewer-1EkgwVJg.js +23 -0
- assets/AsyncCallTreeViewer-1EkgwVJg.js.map +1 -0
assets/@braintree-DY5JYOZd.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
var v=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function C(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var s={},e={};Object.defineProperty(e,"__esModule",{value:!0});e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0;e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;e.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;e.htmlCtrlEntityRegex=/&(newline|tab);/gi;e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;e.urlSchemeRegex=/^.+(:|:)/gim;e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;e.relativeFirstCharacters=[".","/"];e.BLANK_URL="about:blank";Object.defineProperty(s,"__esModule",{value:!0});var g=s.sanitizeUrl=void 0,r=e;function m(t){return r.relativeFirstCharacters.indexOf(t[0])>-1}function R(t){var n=t.replace(r.ctrlCharactersRegex,"");return n.replace(r.htmlEntitiesRegex,function(a,i){return String.fromCharCode(i)})}function f(t){return URL.canParse(t)}function d(t){try{return decodeURIComponent(t)}catch{return t}}function p(t){if(!t)return r.BLANK_URL;var n,a=d(t.trim());do a=R(a).replace(r.htmlCtrlEntityRegex,"").replace(r.ctrlCharactersRegex,"").replace(r.whitespaceEscapeCharsRegex,"").trim(),a=d(a),n=a.match(r.ctrlCharactersRegex)||a.match(r.htmlEntitiesRegex)||a.match(r.htmlCtrlEntityRegex)||a.match(r.whitespaceEscapeCharsRegex);while(n&&n.length>0);var i=a;if(!i)return r.BLANK_URL;if(m(i))return i;var h=i.trimStart(),u=h.match(r.urlSchemeRegex);if(!u)return i;var l=u[0].toLowerCase().trim();if(r.invalidProtocolRegex.test(l))return r.BLANK_URL;var c=h.replace(/\\/g,"/");if(l==="mailto:"||l.includes("://"))return c;if(l==="http:"||l==="https:"){if(!f(c))return r.BLANK_URL;var o=new URL(c);return o.protocol=o.protocol.toLowerCase(),o.hostname=o.hostname.toLowerCase(),o.toString()}return c}g=s.sanitizeUrl=p;export{v as c,C as g,g as s};
|
| 2 |
+
//# sourceMappingURL=@braintree-DY5JYOZd.js.map
|
assets/@braintree-DY5JYOZd.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"@braintree-DY5JYOZd.js","sources":["../../node_modules/@braintree/sanitize-url/dist/constants.js","../../node_modules/@braintree/sanitize-url/dist/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BLANK_URL = exports.relativeFirstCharacters = exports.whitespaceEscapeCharsRegex = exports.urlSchemeRegex = exports.ctrlCharactersRegex = exports.htmlCtrlEntityRegex = exports.htmlEntitiesRegex = exports.invalidProtocolRegex = void 0;\nexports.invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nexports.htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nexports.htmlCtrlEntityRegex = /&(newline|tab);/gi;\nexports.ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nexports.urlSchemeRegex = /^.+(:|:)/gim;\nexports.whitespaceEscapeCharsRegex = /(\\\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;\nexports.relativeFirstCharacters = [\".\", \"/\"];\nexports.BLANK_URL = \"about:blank\";\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar constants_1 = require(\"./constants\");\nfunction isRelativeUrlWithoutProtocol(url) {\n return constants_1.relativeFirstCharacters.indexOf(url[0]) > -1;\n}\nfunction decodeHtmlCharacters(str) {\n var removedNullByte = str.replace(constants_1.ctrlCharactersRegex, \"\");\n return removedNullByte.replace(constants_1.htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction isValidUrl(url) {\n return URL.canParse(url);\n}\nfunction decodeURI(uri) {\n try {\n return decodeURIComponent(uri);\n }\n catch (e) {\n // Ignoring error\n // It is possible that the URI contains a `%` not associated\n // with URI/URL-encoding.\n return uri;\n }\n}\nfunction sanitizeUrl(url) {\n if (!url) {\n return constants_1.BLANK_URL;\n }\n var charsToDecode;\n var decodedUrl = decodeURI(url.trim());\n do {\n decodedUrl = decodeHtmlCharacters(decodedUrl)\n .replace(constants_1.htmlCtrlEntityRegex, \"\")\n .replace(constants_1.ctrlCharactersRegex, \"\")\n .replace(constants_1.whitespaceEscapeCharsRegex, \"\")\n .trim();\n decodedUrl = decodeURI(decodedUrl);\n charsToDecode =\n decodedUrl.match(constants_1.ctrlCharactersRegex) ||\n decodedUrl.match(constants_1.htmlEntitiesRegex) ||\n decodedUrl.match(constants_1.htmlCtrlEntityRegex) ||\n decodedUrl.match(constants_1.whitespaceEscapeCharsRegex);\n } while (charsToDecode && charsToDecode.length > 0);\n var sanitizedUrl = decodedUrl;\n if (!sanitizedUrl) {\n return constants_1.BLANK_URL;\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n // Remove any leading whitespace before checking the URL scheme\n var trimmedUrl = sanitizedUrl.trimStart();\n var urlSchemeParseResults = trimmedUrl.match(constants_1.urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0].toLowerCase().trim();\n if (constants_1.invalidProtocolRegex.test(urlScheme)) {\n return constants_1.BLANK_URL;\n }\n var backSanitized = trimmedUrl.replace(/\\\\/g, \"/\");\n // Handle special cases for mailto: and custom deep-link protocols\n if (urlScheme === \"mailto:\" || urlScheme.includes(\"://\")) {\n return backSanitized;\n }\n // For http and https URLs, perform additional validation\n if (urlScheme === \"http:\" || urlScheme === \"https:\") {\n if (!isValidUrl(backSanitized)) {\n return constants_1.BLANK_URL;\n }\n var url_1 = new URL(backSanitized);\n url_1.protocol = url_1.protocol.toLowerCase();\n url_1.hostname = url_1.hostname.toLowerCase();\n return url_1.toString();\n }\n return backSanitized;\n}\nexports.sanitizeUrl = sanitizeUrl;\n"],"names":["constants","dist","sanitizeUrl_1","constants_1","require$$0","isRelativeUrlWithoutProtocol","url","decodeHtmlCharacters","str","removedNullByte","match","dec","isValidUrl","decodeURI","uri","sanitizeUrl","charsToDecode","decodedUrl","sanitizedUrl","trimmedUrl","urlSchemeParseResults","urlScheme","backSanitized","url_1"],"mappings":"mOACA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,UAAoBA,EAAA,wBAAkCA,EAAA,4CAA8DA,EAAA,oBAA8BA,EAAA,oBAA8BA,EAAA,yCAA2D,OAC3OA,EAAA,qBAA+B,wCAC/BA,EAAA,kBAA4B,mBAC5BA,EAAA,oBAA8B,oBAC9BA,EAAA,oBAA8B,qDAC9BA,EAAA,eAAyB,oBACzBA,EAAA,2BAAqC,uCACrCA,EAAA,wBAAkC,CAAC,IAAK,GAAG,EAC3CA,EAAA,UAAoB,cCTpB,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,IAAAC,EAAAD,EAAA,YAAsB,OAClBE,EAAcC,EAClB,SAASC,EAA6BC,EAAK,CACvC,OAAOH,EAAY,wBAAwB,QAAQG,EAAI,CAAC,CAAC,EAAI,EACjE,CACA,SAASC,EAAqBC,EAAK,CAC/B,IAAIC,EAAkBD,EAAI,QAAQL,EAAY,oBAAqB,EAAE,EACrE,OAAOM,EAAgB,QAAQN,EAAY,kBAAmB,SAAUO,EAAOC,EAAK,CAChF,OAAO,OAAO,aAAaA,CAAG,CACtC,CAAK,CACL,CACA,SAASC,EAAWN,EAAK,CACrB,OAAO,IAAI,SAASA,CAAG,CAC3B,CACA,SAASO,EAAUC,EAAK,CACpB,GAAI,CACA,OAAO,mBAAmBA,CAAG,CACrC,MACc,CAIN,OAAOA,CACf,CACA,CACA,SAASC,EAAYT,EAAK,CACtB,GAAI,CAACA,EACD,OAAOH,EAAY,UAEvB,IAAIa,EACAC,EAAaJ,EAAUP,EAAI,KAAI,CAAE,EACrC,GACIW,EAAaV,EAAqBU,CAAU,EACvC,QAAQd,EAAY,oBAAqB,EAAE,EAC3C,QAAQA,EAAY,oBAAqB,EAAE,EAC3C,QAAQA,EAAY,2BAA4B,EAAE,EAClD,KAAI,EACTc,EAAaJ,EAAUI,CAAU,EACjCD,EACIC,EAAW,MAAMd,EAAY,mBAAmB,GAC5Cc,EAAW,MAAMd,EAAY,iBAAiB,GAC9Cc,EAAW,MAAMd,EAAY,mBAAmB,GAChDc,EAAW,MAAMd,EAAY,0BAA0B,QAC1Da,GAAiBA,EAAc,OAAS,GACjD,IAAIE,EAAeD,EACnB,GAAI,CAACC,EACD,OAAOf,EAAY,UAEvB,GAAIE,EAA6Ba,CAAY,EACzC,OAAOA,EAGX,IAAIC,EAAaD,EAAa,UAAS,EACnCE,EAAwBD,EAAW,MAAMhB,EAAY,cAAc,EACvE,GAAI,CAACiB,EACD,OAAOF,EAEX,IAAIG,EAAYD,EAAsB,CAAC,EAAE,YAAW,EAAG,KAAI,EAC3D,GAAIjB,EAAY,qBAAqB,KAAKkB,CAAS,EAC/C,OAAOlB,EAAY,UAEvB,IAAImB,EAAgBH,EAAW,QAAQ,MAAO,GAAG,EAEjD,GAAIE,IAAc,WAAaA,EAAU,SAAS,KAAK,EACnD,OAAOC,EAGX,GAAID,IAAc,SAAWA,IAAc,SAAU,CACjD,GAAI,CAACT,EAAWU,CAAa,EACzB,OAAOnB,EAAY,UAEvB,IAAIoB,EAAQ,IAAI,IAAID,CAAa,EACjC,OAAAC,EAAM,SAAWA,EAAM,SAAS,YAAW,EAC3CA,EAAM,SAAWA,EAAM,SAAS,YAAW,EACpCA,EAAM,SAAQ,CAC7B,CACI,OAAOD,CACX,CACApB,EAAAD,EAAA,YAAsBc","x_google_ignoreList":[0,1]}
|
assets/@chevrotain-DMYZVohV.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{a as n,p as c,f as I,m as P,i as w,b as D,s as B,c as W,e as M}from"./lodash-es-CKTcnrxn.js";function s(t){return t.charCodeAt(0)}function b(t,e){Array.isArray(t)?t.forEach(function(i){e.push(i)}):e.push(t)}function f(t,e){if(t[e]===!0)throw"duplicate flag "+e;t[e],t[e]=!0}function h(t){if(t===void 0)throw Error("Internal Error - Should never get here!");return!0}function _(){throw Error("Internal Error - Should never get here!")}function T(t){return t.type==="Character"}const A=[];for(let t=s("0");t<=s("9");t++)A.push(t);const k=[s("_")].concat(A);for(let t=s("a");t<=s("z");t++)k.push(t);for(let t=s("A");t<=s("Z");t++)k.push(t);const L=[s(" "),s("\f"),s(`
|
| 2 |
+
`),s("\r"),s(" "),s("\v"),s(" "),s(" "),s(" "),s(" "),s(" "),s(" "),s(" "),s(" "),s(" "),s(" "),s(" "),s(" "),s(" "),s(" "),s("\u2028"),s("\u2029"),s(" "),s(" "),s(" "),s("\uFEFF")],O=/[0-9a-fA-F]/,x=/[0-9]/,G=/[1-9]/;class j{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("/");const i=this.disjunction();this.consumeChar("/");const r={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":f(r,"global");break;case"i":f(r,"ignoreCase");break;case"m":f(r,"multiLine");break;case"u":f(r,"unicode");break;case"y":f(r,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:r,value:i,loc:this.loc(0)}}disjunction(){const e=[],i=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(i)}}alternative(){const e=[],i=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(i)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const 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 i;switch(this.popChar()){case"=":i="Lookahead";break;case"!":i="NegativeLookahead";break}h(i);const r=this.disjunction();return this.consumeChar(")"),{type:i,value:r,loc:this.loc(e)}}return _()}quantifier(e=!1){let i;const r=this.idx;switch(this.popChar()){case"*":i={atLeast:0,atMost:1/0};break;case"+":i={atLeast:1,atMost:1/0};break;case"?":i={atLeast:0,atMost:1};break;case"{":const a=this.integerIncludingZero();switch(this.popChar()){case"}":i={atLeast:a,atMost:a};break;case",":let l;this.isDigit()?(l=this.integerIncludingZero(),i={atLeast:a,atMost:l}):i={atLeast:a,atMost:1/0},this.consumeChar("}");break}if(e===!0&&i===void 0)return;h(i);break}if(!(e===!0&&i===void 0)&&h(i))return this.peekChar(0)==="?"?(this.consumeChar("?"),i.greedy=!1):i.greedy=!0,i.type="Quantifier",i.loc=this.loc(r),i}atom(){let e;const i=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}if(e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),h(e))return e.loc=this.loc(i),this.isQuantifier()&&(e.quantifier=this.quantifier()),e}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[s(`
|
| 3 |
+
`),s("\r"),s("\u2028"),s("\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,i=!1;switch(this.popChar()){case"d":e=A;break;case"D":e=A,i=!0;break;case"s":e=L;break;case"S":e=L,i=!0;break;case"w":e=k;break;case"W":e=k,i=!0;break}if(h(e))return{type:"Set",value:e,complement:i}}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=s("\f");break;case"n":e=s(`
|
| 4 |
+
`);break;case"r":e=s("\r");break;case"t":e=s(" ");break;case"v":e=s("\v");break}if(h(e))return{type:"Character",value:e}}controlLetterEscapeAtom(){this.consumeChar("c");const 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:s("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){const e=this.popChar();return{type:"Character",value:s(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case`
|
| 5 |
+
`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:const e=this.popChar();return{type:"Character",value:s(e)}}}characterClass(){const e=[];let i=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),i=!0);this.isClassAtom();){const r=this.classAtom();if(r.type,T(r)&&this.isRangeDash()){this.consumeChar("-");const a=this.classAtom();if(a.type,T(a)){if(a.value<r.value)throw Error("Range out of order in character class");e.push({from:r.value,to:a.value})}else b(r.value,e),e.push(s("-")),b(a.value,e)}else b(r.value,e)}return this.consumeChar("]"),{type:"Set",complement:i,value:e}}classAtom(){switch(this.peekChar()){case"]":case`
|
| 6 |
+
`:case"\r":case"\u2028":case"\u2029":throw Error("TBD");case"\\":return this.classEscape();default:return this.classPatternCharacterAtom()}}classEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"b":return this.consumeChar("b"),{type:"Character",value:s("\b")};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()}}group(){let e=!0;switch(this.consumeChar("("),this.peekChar(0)){case"?":this.consumeChar("?"),this.consumeChar(":"),e=!1;break;default:this.groupIdx++;break}const i=this.disjunction();this.consumeChar(")");const r={type:"Group",capturing:e,value:i};return e&&(r.idx=this.groupIdx),r}positiveInteger(){let e=this.popChar();if(G.test(e)===!1)throw Error("Expecting a positive integer");for(;x.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}integerIncludingZero(){let e=this.popChar();if(x.test(e)===!1)throw Error("Expecting an integer");for(;x.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}patternCharacter(){const e=this.popChar();switch(e){case`
|
| 7 |
+
`:case"\r":case"\u2028":case"\u2029":case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":throw Error("TBD");default:return{type:"Character",value:s(e)}}}isRegExpFlag(){switch(this.peekChar(0)){case"g":case"i":case"m":case"u":case"y":return!0;default:return!1}}isRangeDash(){return this.peekChar()==="-"&&this.isClassAtom(1)}isDigit(){return x.test(this.peekChar(0))}isClassAtom(e=0){switch(this.peekChar(e)){case"]":case`
|
| 8 |
+
`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}isTerm(){return this.isAtom()||this.isAssertion()}isAtom(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case".":case"\\":case"[":case"(":return!0;default:return!1}}isAssertion(){switch(this.peekChar(0)){case"^":case"$":return!0;case"\\":switch(this.peekChar(1)){case"b":case"B":return!0;default:return!1}case"(":return this.peekChar(1)==="?"&&(this.peekChar(2)==="="||this.peekChar(2)==="!");default:return!1}}isQuantifier(){const e=this.saveState();try{return this.quantifier(!0)!==void 0}catch{return!1}finally{this.restoreState(e)}}isPatternCharacter(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case`
|
| 9 |
+
`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(e){let i="";for(let a=0;a<e;a++){const l=this.popChar();if(O.test(l)===!1)throw Error("Expecting a HexDecimal digits");i+=l}return{type:"Character",value:parseInt(i,16)}}peekChar(e=0){return this.input[this.idx+e]}popChar(){const e=this.peekChar(0);return this.consumeChar(void 0),e}consumeChar(e){if(e!==void 0&&this.input[this.idx]!==e)throw Error("Expected: '"+e+"' but found: '"+this.input[this.idx]+"' at offset: "+this.idx);if(this.idx>=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}class z{visitChildren(e){for(const i in e){const r=e[i];e.hasOwnProperty(i)&&(r.type!==void 0?this.visit(r):Array.isArray(r)&&r.forEach(a=>{this.visit(a)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}function H(t){console&&console.error&&console.error(`Error: ${t}`)}function Q(t){console&&console.warn&&console.warn(`Warning: ${t}`)}function Z(t){const e=new Date().getTime(),i=t();return{time:new Date().getTime()-e,value:i}}function $(t){function e(){}e.prototype=t;const i=new e;function r(){return typeof i.bar}return r(),r(),t}function q(t){return F(t)?t.LABEL:t.name}function F(t){return w(t.LABEL)&&t.LABEL!==""}class o{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),I(this.definition,i=>{i.accept(e)})}}class p extends o{constructor(e){super([]),this.idx=1,n(this,c(e,i=>i!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}}class R extends o{constructor(e){super(e.definition),this.orgText="",n(this,c(e,i=>i!==void 0))}}class S extends o{constructor(e){super(e.definition),this.ignoreAmbiguities=!1,n(this,c(e,i=>i!==void 0))}}class d extends o{constructor(e){super(e.definition),this.idx=1,n(this,c(e,i=>i!==void 0))}}class E extends o{constructor(e){super(e.definition),this.idx=1,n(this,c(e,i=>i!==void 0))}}class y extends o{constructor(e){super(e.definition),this.idx=1,n(this,c(e,i=>i!==void 0))}}class m extends o{constructor(e){super(e.definition),this.idx=1,n(this,c(e,i=>i!==void 0))}}class C extends o{constructor(e){super(e.definition),this.idx=1,n(this,c(e,i=>i!==void 0))}}class v extends o{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,n(this,c(e,i=>i!==void 0))}}class u{constructor(e){this.idx=1,n(this,c(e,i=>i!==void 0))}accept(e){e.visit(this)}}function Y(t){return P(t,g)}function g(t){function e(i){return P(i,g)}if(t instanceof p){const i={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return w(t.label)&&(i.label=t.label),i}else{if(t instanceof S)return{type:"Alternative",definition:e(t.definition)};if(t instanceof d)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof E)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof y)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:g(new u({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof C)return{type:"RepetitionWithSeparator",idx:t.idx,separator:g(new u({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof m)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof v)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof u){const i={type:"Terminal",name:t.terminalType.name,label:q(t.terminalType),idx:t.idx};w(t.label)&&(i.terminalLabel=t.label);const r=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(i.pattern=D(r)?r.source:r),i}else{if(t instanceof R)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}class X{visit(e){const i=e;switch(i.constructor){case p:return this.visitNonTerminal(i);case S:return this.visitAlternative(i);case d:return this.visitOption(i);case E:return this.visitRepetitionMandatory(i);case y:return this.visitRepetitionMandatoryWithSeparator(i);case C:return this.visitRepetitionWithSeparator(i);case m:return this.visitRepetition(i);case v:return this.visitAlternation(i);case u:return this.visitTerminal(i);case R:return this.visitRule(i);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}function J(t){return t instanceof S||t instanceof d||t instanceof m||t instanceof E||t instanceof y||t instanceof C||t instanceof u||t instanceof R}function N(t,e=[]){return t instanceof d||t instanceof m||t instanceof C?!0:t instanceof v?B(t.definition,r=>N(r,e)):t instanceof p&&W(e,t)?!1:t instanceof o?(t instanceof p&&e.push(t),M(t.definition,r=>N(r,e))):!1}function V(t){return t instanceof v}function K(t){if(t instanceof p)return"SUBRULE";if(t instanceof d)return"OPTION";if(t instanceof v)return"OR";if(t instanceof E)return"AT_LEAST_ONE";if(t instanceof y)return"AT_LEAST_ONE_SEP";if(t instanceof C)return"MANY_SEP";if(t instanceof m)return"MANY";if(t instanceof u)return"CONSUME";throw Error("non exhaustive match")}export{S as A,z as B,X as G,p as N,d as O,Q as P,E as R,u as T,y as a,C as b,m as c,v as d,V as e,N as f,j as g,H as h,J as i,$ as j,R as k,K as l,Y as s,Z as t};
|
| 10 |
+
//# sourceMappingURL=@chevrotain-DMYZVohV.js.map
|
assets/@chevrotain-DMYZVohV.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"@chevrotain-DMYZVohV.js","sources":["../../node_modules/@chevrotain/regexp-to-ast/lib/src/utils.js","../../node_modules/@chevrotain/regexp-to-ast/lib/src/character-classes.js","../../node_modules/@chevrotain/regexp-to-ast/lib/src/regexp-parser.js","../../node_modules/@chevrotain/regexp-to-ast/lib/src/base-regexp-visitor.js","../../node_modules/@chevrotain/utils/lib/src/print.js","../../node_modules/@chevrotain/utils/lib/src/timer.js","../../node_modules/@chevrotain/utils/lib/src/to-fast-properties.js","../../node_modules/@chevrotain/gast/lib/src/model.js","../../node_modules/@chevrotain/gast/lib/src/visitor.js","../../node_modules/@chevrotain/gast/lib/src/helpers.js"],"sourcesContent":["export function cc(char) {\n return char.charCodeAt(0);\n}\nexport function insertToSet(item, set) {\n if (Array.isArray(item)) {\n item.forEach(function (subItem) {\n set.push(subItem);\n });\n }\n else {\n set.push(item);\n }\n}\nexport function addFlag(flagObj, flagKey) {\n if (flagObj[flagKey] === true) {\n throw \"duplicate flag \" + flagKey;\n }\n const x = flagObj[flagKey];\n flagObj[flagKey] = true;\n}\nexport function ASSERT_EXISTS(obj) {\n // istanbul ignore next\n if (obj === undefined) {\n throw Error(\"Internal Error - Should never get here!\");\n }\n return true;\n}\n// istanbul ignore next\nexport function ASSERT_NEVER_REACH_HERE() {\n throw Error(\"Internal Error - Should never get here!\");\n}\nexport function isCharacter(obj) {\n return obj[\"type\"] === \"Character\";\n}\n//# sourceMappingURL=utils.js.map","import { cc } from \"./utils.js\";\nexport const digitsCharCodes = [];\nfor (let i = cc(\"0\"); i <= cc(\"9\"); i++) {\n digitsCharCodes.push(i);\n}\nexport const wordCharCodes = [cc(\"_\")].concat(digitsCharCodes);\nfor (let i = cc(\"a\"); i <= cc(\"z\"); i++) {\n wordCharCodes.push(i);\n}\nfor (let i = cc(\"A\"); i <= cc(\"Z\"); i++) {\n wordCharCodes.push(i);\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#character-classes\nexport const whitespaceCodes = [\n cc(\" \"),\n cc(\"\\f\"),\n cc(\"\\n\"),\n cc(\"\\r\"),\n cc(\"\\t\"),\n cc(\"\\v\"),\n cc(\"\\t\"),\n cc(\"\\u00a0\"),\n cc(\"\\u1680\"),\n cc(\"\\u2000\"),\n cc(\"\\u2001\"),\n cc(\"\\u2002\"),\n cc(\"\\u2003\"),\n cc(\"\\u2004\"),\n cc(\"\\u2005\"),\n cc(\"\\u2006\"),\n cc(\"\\u2007\"),\n cc(\"\\u2008\"),\n cc(\"\\u2009\"),\n cc(\"\\u200a\"),\n cc(\"\\u2028\"),\n cc(\"\\u2029\"),\n cc(\"\\u202f\"),\n cc(\"\\u205f\"),\n cc(\"\\u3000\"),\n cc(\"\\ufeff\"),\n];\n//# sourceMappingURL=character-classes.js.map","import { addFlag, ASSERT_EXISTS, ASSERT_NEVER_REACH_HERE, cc, insertToSet, isCharacter, } from \"./utils.js\";\nimport { digitsCharCodes, whitespaceCodes, wordCharCodes, } from \"./character-classes.js\";\n// consts and utilities\nconst hexDigitPattern = /[0-9a-fA-F]/;\nconst decimalPattern = /[0-9]/;\nconst decimalPatternNoZero = /[1-9]/;\n// https://hackernoon.com/the-madness-of-parsing-real-world-javascript-regexps-d9ee336df983\n// https://www.ecma-international.org/ecma-262/8.0/index.html#prod-Pattern\nexport class RegExpParser {\n constructor() {\n this.idx = 0;\n this.input = \"\";\n this.groupIdx = 0;\n }\n saveState() {\n return {\n idx: this.idx,\n input: this.input,\n groupIdx: this.groupIdx,\n };\n }\n restoreState(newState) {\n this.idx = newState.idx;\n this.input = newState.input;\n this.groupIdx = newState.groupIdx;\n }\n pattern(input) {\n // parser state\n this.idx = 0;\n this.input = input;\n this.groupIdx = 0;\n this.consumeChar(\"/\");\n const value = this.disjunction();\n this.consumeChar(\"/\");\n const flags = {\n type: \"Flags\",\n loc: { begin: this.idx, end: input.length },\n global: false,\n ignoreCase: false,\n multiLine: false,\n unicode: false,\n sticky: false,\n };\n while (this.isRegExpFlag()) {\n switch (this.popChar()) {\n case \"g\":\n addFlag(flags, \"global\");\n break;\n case \"i\":\n addFlag(flags, \"ignoreCase\");\n break;\n case \"m\":\n addFlag(flags, \"multiLine\");\n break;\n case \"u\":\n addFlag(flags, \"unicode\");\n break;\n case \"y\":\n addFlag(flags, \"sticky\");\n break;\n }\n }\n if (this.idx !== this.input.length) {\n throw Error(\"Redundant input: \" + this.input.substring(this.idx));\n }\n return {\n type: \"Pattern\",\n flags: flags,\n value: value,\n loc: this.loc(0),\n };\n }\n disjunction() {\n const alts = [];\n const begin = this.idx;\n alts.push(this.alternative());\n while (this.peekChar() === \"|\") {\n this.consumeChar(\"|\");\n alts.push(this.alternative());\n }\n return { type: \"Disjunction\", value: alts, loc: this.loc(begin) };\n }\n alternative() {\n const terms = [];\n const begin = this.idx;\n while (this.isTerm()) {\n terms.push(this.term());\n }\n return { type: \"Alternative\", value: terms, loc: this.loc(begin) };\n }\n term() {\n if (this.isAssertion()) {\n return this.assertion();\n }\n else {\n return this.atom();\n }\n }\n assertion() {\n const begin = this.idx;\n switch (this.popChar()) {\n case \"^\":\n return {\n type: \"StartAnchor\",\n loc: this.loc(begin),\n };\n case \"$\":\n return { type: \"EndAnchor\", loc: this.loc(begin) };\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.popChar()) {\n case \"b\":\n return {\n type: \"WordBoundary\",\n loc: this.loc(begin),\n };\n case \"B\":\n return {\n type: \"NonWordBoundary\",\n loc: this.loc(begin),\n };\n }\n // istanbul ignore next\n throw Error(\"Invalid Assertion Escape\");\n // '(?=' or '(?!'\n case \"(\":\n this.consumeChar(\"?\");\n let type;\n switch (this.popChar()) {\n case \"=\":\n type = \"Lookahead\";\n break;\n case \"!\":\n type = \"NegativeLookahead\";\n break;\n }\n ASSERT_EXISTS(type);\n const disjunction = this.disjunction();\n this.consumeChar(\")\");\n return {\n type: type,\n value: disjunction,\n loc: this.loc(begin),\n };\n }\n // istanbul ignore next\n return ASSERT_NEVER_REACH_HERE();\n }\n quantifier(isBacktracking = false) {\n let range = undefined;\n const begin = this.idx;\n switch (this.popChar()) {\n case \"*\":\n range = {\n atLeast: 0,\n atMost: Infinity,\n };\n break;\n case \"+\":\n range = {\n atLeast: 1,\n atMost: Infinity,\n };\n break;\n case \"?\":\n range = {\n atLeast: 0,\n atMost: 1,\n };\n break;\n case \"{\":\n const atLeast = this.integerIncludingZero();\n switch (this.popChar()) {\n case \"}\":\n range = {\n atLeast: atLeast,\n atMost: atLeast,\n };\n break;\n case \",\":\n let atMost;\n if (this.isDigit()) {\n atMost = this.integerIncludingZero();\n range = {\n atLeast: atLeast,\n atMost: atMost,\n };\n }\n else {\n range = {\n atLeast: atLeast,\n atMost: Infinity,\n };\n }\n this.consumeChar(\"}\");\n break;\n }\n // throwing exceptions from \"ASSERT_EXISTS\" during backtracking\n // causes severe performance degradations\n if (isBacktracking === true && range === undefined) {\n return undefined;\n }\n ASSERT_EXISTS(range);\n break;\n }\n // throwing exceptions from \"ASSERT_EXISTS\" during backtracking\n // causes severe performance degradations\n if (isBacktracking === true && range === undefined) {\n return undefined;\n }\n // istanbul ignore else\n if (ASSERT_EXISTS(range)) {\n if (this.peekChar(0) === \"?\") {\n this.consumeChar(\"?\");\n range.greedy = false;\n }\n else {\n range.greedy = true;\n }\n range.type = \"Quantifier\";\n range.loc = this.loc(begin);\n return range;\n }\n }\n atom() {\n let atom;\n const begin = this.idx;\n switch (this.peekChar()) {\n case \".\":\n atom = this.dotAll();\n break;\n case \"\\\\\":\n atom = this.atomEscape();\n break;\n case \"[\":\n atom = this.characterClass();\n break;\n case \"(\":\n atom = this.group();\n break;\n }\n if (atom === undefined && this.isPatternCharacter()) {\n atom = this.patternCharacter();\n }\n // istanbul ignore else\n if (ASSERT_EXISTS(atom)) {\n atom.loc = this.loc(begin);\n if (this.isQuantifier()) {\n atom.quantifier = this.quantifier();\n }\n return atom;\n }\n // istanbul ignore next\n return ASSERT_NEVER_REACH_HERE();\n }\n dotAll() {\n this.consumeChar(\".\");\n return {\n type: \"Set\",\n complement: true,\n value: [cc(\"\\n\"), cc(\"\\r\"), cc(\"\\u2028\"), cc(\"\\u2029\")],\n };\n }\n atomEscape() {\n this.consumeChar(\"\\\\\");\n switch (this.peekChar()) {\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n return this.decimalEscapeAtom();\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape();\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom();\n case \"c\":\n return this.controlLetterEscapeAtom();\n case \"0\":\n return this.nulCharacterAtom();\n case \"x\":\n return this.hexEscapeSequenceAtom();\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom();\n default:\n return this.identityEscapeAtom();\n }\n }\n decimalEscapeAtom() {\n const value = this.positiveInteger();\n return { type: \"GroupBackReference\", value: value };\n }\n characterClassEscape() {\n let set;\n let complement = false;\n switch (this.popChar()) {\n case \"d\":\n set = digitsCharCodes;\n break;\n case \"D\":\n set = digitsCharCodes;\n complement = true;\n break;\n case \"s\":\n set = whitespaceCodes;\n break;\n case \"S\":\n set = whitespaceCodes;\n complement = true;\n break;\n case \"w\":\n set = wordCharCodes;\n break;\n case \"W\":\n set = wordCharCodes;\n complement = true;\n break;\n }\n // istanbul ignore else\n if (ASSERT_EXISTS(set)) {\n return { type: \"Set\", value: set, complement: complement };\n }\n // istanbul ignore next\n return ASSERT_NEVER_REACH_HERE();\n }\n controlEscapeAtom() {\n let escapeCode;\n switch (this.popChar()) {\n case \"f\":\n escapeCode = cc(\"\\f\");\n break;\n case \"n\":\n escapeCode = cc(\"\\n\");\n break;\n case \"r\":\n escapeCode = cc(\"\\r\");\n break;\n case \"t\":\n escapeCode = cc(\"\\t\");\n break;\n case \"v\":\n escapeCode = cc(\"\\v\");\n break;\n }\n // istanbul ignore else\n if (ASSERT_EXISTS(escapeCode)) {\n return { type: \"Character\", value: escapeCode };\n }\n // istanbul ignore next\n return ASSERT_NEVER_REACH_HERE();\n }\n controlLetterEscapeAtom() {\n this.consumeChar(\"c\");\n const letter = this.popChar();\n if (/[a-zA-Z]/.test(letter) === false) {\n throw Error(\"Invalid \");\n }\n const letterCode = letter.toUpperCase().charCodeAt(0) - 64;\n return { type: \"Character\", value: letterCode };\n }\n nulCharacterAtom() {\n // TODO implement '[lookahead ∉ DecimalDigit]'\n // TODO: for the deprecated octal escape sequence\n this.consumeChar(\"0\");\n return { type: \"Character\", value: cc(\"\\0\") };\n }\n hexEscapeSequenceAtom() {\n this.consumeChar(\"x\");\n return this.parseHexDigits(2);\n }\n regExpUnicodeEscapeSequenceAtom() {\n this.consumeChar(\"u\");\n return this.parseHexDigits(4);\n }\n identityEscapeAtom() {\n // TODO: implement \"SourceCharacter but not UnicodeIDContinue\"\n // // http://unicode.org/reports/tr31/#Specific_Character_Adjustments\n const escapedChar = this.popChar();\n return { type: \"Character\", value: cc(escapedChar) };\n }\n classPatternCharacterAtom() {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \"]\":\n throw Error(\"TBD\");\n default:\n const nextChar = this.popChar();\n return { type: \"Character\", value: cc(nextChar) };\n }\n }\n characterClass() {\n const set = [];\n let complement = false;\n this.consumeChar(\"[\");\n if (this.peekChar(0) === \"^\") {\n this.consumeChar(\"^\");\n complement = true;\n }\n while (this.isClassAtom()) {\n const from = this.classAtom();\n const isFromSingleChar = from.type === \"Character\";\n if (isCharacter(from) && this.isRangeDash()) {\n this.consumeChar(\"-\");\n const to = this.classAtom();\n const isToSingleChar = to.type === \"Character\";\n // a range can only be used when both sides are single characters\n if (isCharacter(to)) {\n if (to.value < from.value) {\n throw Error(\"Range out of order in character class\");\n }\n set.push({ from: from.value, to: to.value });\n }\n else {\n // literal dash\n insertToSet(from.value, set);\n set.push(cc(\"-\"));\n insertToSet(to.value, set);\n }\n }\n else {\n insertToSet(from.value, set);\n }\n }\n this.consumeChar(\"]\");\n return { type: \"Set\", complement: complement, value: set };\n }\n classAtom() {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"]\":\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n throw Error(\"TBD\");\n case \"\\\\\":\n return this.classEscape();\n default:\n return this.classPatternCharacterAtom();\n }\n }\n classEscape() {\n this.consumeChar(\"\\\\\");\n switch (this.peekChar()) {\n // Matches a backspace.\n // (Not to be confused with \\b word boundary outside characterClass)\n case \"b\":\n this.consumeChar(\"b\");\n return { type: \"Character\", value: cc(\"\\u0008\") };\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape();\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom();\n case \"c\":\n return this.controlLetterEscapeAtom();\n case \"0\":\n return this.nulCharacterAtom();\n case \"x\":\n return this.hexEscapeSequenceAtom();\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom();\n default:\n return this.identityEscapeAtom();\n }\n }\n group() {\n let capturing = true;\n this.consumeChar(\"(\");\n switch (this.peekChar(0)) {\n case \"?\":\n this.consumeChar(\"?\");\n this.consumeChar(\":\");\n capturing = false;\n break;\n default:\n this.groupIdx++;\n break;\n }\n const value = this.disjunction();\n this.consumeChar(\")\");\n const groupAst = {\n type: \"Group\",\n capturing: capturing,\n value: value,\n };\n if (capturing) {\n groupAst[\"idx\"] = this.groupIdx;\n }\n return groupAst;\n }\n positiveInteger() {\n let number = this.popChar();\n // istanbul ignore next - can't ever get here due to previous lookahead checks\n // still implementing this error checking in case this ever changes.\n if (decimalPatternNoZero.test(number) === false) {\n throw Error(\"Expecting a positive integer\");\n }\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar();\n }\n return parseInt(number, 10);\n }\n integerIncludingZero() {\n let number = this.popChar();\n if (decimalPattern.test(number) === false) {\n throw Error(\"Expecting an integer\");\n }\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar();\n }\n return parseInt(number, 10);\n }\n patternCharacter() {\n const nextChar = this.popChar();\n switch (nextChar) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"^\":\n // istanbul ignore next\n case \"$\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \".\":\n // istanbul ignore next\n case \"*\":\n // istanbul ignore next\n case \"+\":\n // istanbul ignore next\n case \"?\":\n // istanbul ignore next\n case \"(\":\n // istanbul ignore next\n case \")\":\n // istanbul ignore next\n case \"[\":\n // istanbul ignore next\n case \"|\":\n // istanbul ignore next\n throw Error(\"TBD\");\n default:\n return { type: \"Character\", value: cc(nextChar) };\n }\n }\n isRegExpFlag() {\n switch (this.peekChar(0)) {\n case \"g\":\n case \"i\":\n case \"m\":\n case \"u\":\n case \"y\":\n return true;\n default:\n return false;\n }\n }\n isRangeDash() {\n return this.peekChar() === \"-\" && this.isClassAtom(1);\n }\n isDigit() {\n return decimalPattern.test(this.peekChar(0));\n }\n isClassAtom(howMuch = 0) {\n switch (this.peekChar(howMuch)) {\n case \"]\":\n case \"\\n\":\n case \"\\r\":\n case \"\\u2028\":\n case \"\\u2029\":\n return false;\n default:\n return true;\n }\n }\n isTerm() {\n return this.isAtom() || this.isAssertion();\n }\n isAtom() {\n if (this.isPatternCharacter()) {\n return true;\n }\n switch (this.peekChar(0)) {\n case \".\":\n case \"\\\\\": // atomEscape\n case \"[\": // characterClass\n // TODO: isAtom must be called before isAssertion - disambiguate\n case \"(\": // group\n return true;\n default:\n return false;\n }\n }\n isAssertion() {\n switch (this.peekChar(0)) {\n case \"^\":\n case \"$\":\n return true;\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.peekChar(1)) {\n case \"b\":\n case \"B\":\n return true;\n default:\n return false;\n }\n // '(?=' or '(?!'\n case \"(\":\n return (this.peekChar(1) === \"?\" &&\n (this.peekChar(2) === \"=\" || this.peekChar(2) === \"!\"));\n default:\n return false;\n }\n }\n isQuantifier() {\n const prevState = this.saveState();\n try {\n return this.quantifier(true) !== undefined;\n }\n catch (e) {\n return false;\n }\n finally {\n this.restoreState(prevState);\n }\n }\n isPatternCharacter() {\n switch (this.peekChar()) {\n case \"^\":\n case \"$\":\n case \"\\\\\":\n case \".\":\n case \"*\":\n case \"+\":\n case \"?\":\n case \"(\":\n case \")\":\n case \"[\":\n case \"|\":\n case \"/\":\n case \"\\n\":\n case \"\\r\":\n case \"\\u2028\":\n case \"\\u2029\":\n return false;\n default:\n return true;\n }\n }\n parseHexDigits(howMany) {\n let hexString = \"\";\n for (let i = 0; i < howMany; i++) {\n const hexChar = this.popChar();\n if (hexDigitPattern.test(hexChar) === false) {\n throw Error(\"Expecting a HexDecimal digits\");\n }\n hexString += hexChar;\n }\n const charCode = parseInt(hexString, 16);\n return { type: \"Character\", value: charCode };\n }\n peekChar(howMuch = 0) {\n return this.input[this.idx + howMuch];\n }\n popChar() {\n const nextChar = this.peekChar(0);\n this.consumeChar(undefined);\n return nextChar;\n }\n consumeChar(char) {\n if (char !== undefined && this.input[this.idx] !== char) {\n throw Error(\"Expected: '\" +\n char +\n \"' but found: '\" +\n this.input[this.idx] +\n \"' at offset: \" +\n this.idx);\n }\n if (this.idx >= this.input.length) {\n throw Error(\"Unexpected end of input\");\n }\n this.idx++;\n }\n loc(begin) {\n return { begin: begin, end: this.idx };\n }\n}\n//# sourceMappingURL=regexp-parser.js.map","export class BaseRegExpVisitor {\n visitChildren(node) {\n for (const key in node) {\n const child = node[key];\n /* istanbul ignore else */\n if (node.hasOwnProperty(key)) {\n if (child.type !== undefined) {\n this.visit(child);\n }\n else if (Array.isArray(child)) {\n child.forEach((subChild) => {\n this.visit(subChild);\n }, this);\n }\n }\n }\n }\n visit(node) {\n switch (node.type) {\n case \"Pattern\":\n this.visitPattern(node);\n break;\n case \"Flags\":\n this.visitFlags(node);\n break;\n case \"Disjunction\":\n this.visitDisjunction(node);\n break;\n case \"Alternative\":\n this.visitAlternative(node);\n break;\n case \"StartAnchor\":\n this.visitStartAnchor(node);\n break;\n case \"EndAnchor\":\n this.visitEndAnchor(node);\n break;\n case \"WordBoundary\":\n this.visitWordBoundary(node);\n break;\n case \"NonWordBoundary\":\n this.visitNonWordBoundary(node);\n break;\n case \"Lookahead\":\n this.visitLookahead(node);\n break;\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node);\n break;\n case \"Character\":\n this.visitCharacter(node);\n break;\n case \"Set\":\n this.visitSet(node);\n break;\n case \"Group\":\n this.visitGroup(node);\n break;\n case \"GroupBackReference\":\n this.visitGroupBackReference(node);\n break;\n case \"Quantifier\":\n this.visitQuantifier(node);\n break;\n }\n this.visitChildren(node);\n }\n visitPattern(node) { }\n visitFlags(node) { }\n visitDisjunction(node) { }\n visitAlternative(node) { }\n // Assertion\n visitStartAnchor(node) { }\n visitEndAnchor(node) { }\n visitWordBoundary(node) { }\n visitNonWordBoundary(node) { }\n visitLookahead(node) { }\n visitNegativeLookahead(node) { }\n // atoms\n visitCharacter(node) { }\n visitSet(node) { }\n visitGroup(node) { }\n visitGroupBackReference(node) { }\n visitQuantifier(node) { }\n}\n//# sourceMappingURL=base-regexp-visitor.js.map","export function PRINT_ERROR(msg) {\n /* istanbul ignore else - can't override global.console in node.js */\n if (console && console.error) {\n console.error(`Error: ${msg}`);\n }\n}\nexport function PRINT_WARNING(msg) {\n /* istanbul ignore else - can't override global.console in node.js*/\n if (console && console.warn) {\n // TODO: modify docs accordingly\n console.warn(`Warning: ${msg}`);\n }\n}\n//# sourceMappingURL=print.js.map","export function timer(func) {\n const start = new Date().getTime();\n const val = func();\n const end = new Date().getTime();\n const total = end - start;\n return { time: total, value: val };\n}\n//# sourceMappingURL=timer.js.map","// based on: https://github.com/petkaantonov/bluebird/blob/b97c0d2d487e8c5076e8bd897e0dcd4622d31846/src/util.js#L201-L216\nexport function toFastProperties(toBecomeFast) {\n function FakeConstructor() { }\n // If our object is used as a constructor, it would receive\n FakeConstructor.prototype = toBecomeFast;\n const fakeInstance = new FakeConstructor();\n function fakeAccess() {\n return typeof fakeInstance.bar;\n }\n // help V8 understand this is a \"real\" prototype by actually using\n // the fake instance.\n fakeAccess();\n fakeAccess();\n // Always true condition to suppress the Firefox warning of unreachable\n // code after a return statement.\n if (1)\n return toBecomeFast;\n // Eval prevents optimization of this method (even though this is dead code)\n // - https://esbuild.github.io/content-types/#direct-eval\n /* istanbul ignore next */\n // tslint:disable-next-line\n (0, eval)(toBecomeFast);\n}\n//# sourceMappingURL=to-fast-properties.js.map","import { assign, forEach, isRegExp, isString, map, pickBy } from \"lodash-es\";\n// TODO: duplicated code to avoid extracting another sub-package -- how to avoid?\nfunction tokenLabel(tokType) {\n if (hasTokenLabel(tokType)) {\n return tokType.LABEL;\n }\n else {\n return tokType.name;\n }\n}\n// TODO: duplicated code to avoid extracting another sub-package -- how to avoid?\nfunction hasTokenLabel(obj) {\n return isString(obj.LABEL) && obj.LABEL !== \"\";\n}\nexport class AbstractProduction {\n get definition() {\n return this._definition;\n }\n set definition(value) {\n this._definition = value;\n }\n constructor(_definition) {\n this._definition = _definition;\n }\n accept(visitor) {\n visitor.visit(this);\n forEach(this.definition, (prod) => {\n prod.accept(visitor);\n });\n }\n}\nexport class NonTerminal extends AbstractProduction {\n constructor(options) {\n super([]);\n this.idx = 1;\n assign(this, pickBy(options, (v) => v !== undefined));\n }\n set definition(definition) {\n // immutable\n }\n get definition() {\n if (this.referencedRule !== undefined) {\n return this.referencedRule.definition;\n }\n return [];\n }\n accept(visitor) {\n visitor.visit(this);\n // don't visit children of a reference, we will get cyclic infinite loops if we do so\n }\n}\nexport class Rule extends AbstractProduction {\n constructor(options) {\n super(options.definition);\n this.orgText = \"\";\n assign(this, pickBy(options, (v) => v !== undefined));\n }\n}\nexport class Alternative extends AbstractProduction {\n constructor(options) {\n super(options.definition);\n this.ignoreAmbiguities = false;\n assign(this, pickBy(options, (v) => v !== undefined));\n }\n}\nexport class Option extends AbstractProduction {\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n assign(this, pickBy(options, (v) => v !== undefined));\n }\n}\nexport class RepetitionMandatory extends AbstractProduction {\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n assign(this, pickBy(options, (v) => v !== undefined));\n }\n}\nexport class RepetitionMandatoryWithSeparator extends AbstractProduction {\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n assign(this, pickBy(options, (v) => v !== undefined));\n }\n}\nexport class Repetition extends AbstractProduction {\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n assign(this, pickBy(options, (v) => v !== undefined));\n }\n}\nexport class RepetitionWithSeparator extends AbstractProduction {\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n assign(this, pickBy(options, (v) => v !== undefined));\n }\n}\nexport class Alternation extends AbstractProduction {\n get definition() {\n return this._definition;\n }\n set definition(value) {\n this._definition = value;\n }\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n this.ignoreAmbiguities = false;\n this.hasPredicates = false;\n assign(this, pickBy(options, (v) => v !== undefined));\n }\n}\nexport class Terminal {\n constructor(options) {\n this.idx = 1;\n assign(this, pickBy(options, (v) => v !== undefined));\n }\n accept(visitor) {\n visitor.visit(this);\n }\n}\nexport function serializeGrammar(topRules) {\n return map(topRules, serializeProduction);\n}\nexport function serializeProduction(node) {\n function convertDefinition(definition) {\n return map(definition, serializeProduction);\n }\n /* istanbul ignore else */\n if (node instanceof NonTerminal) {\n const serializedNonTerminal = {\n type: \"NonTerminal\",\n name: node.nonTerminalName,\n idx: node.idx,\n };\n if (isString(node.label)) {\n serializedNonTerminal.label = node.label;\n }\n return serializedNonTerminal;\n }\n else if (node instanceof Alternative) {\n return {\n type: \"Alternative\",\n definition: convertDefinition(node.definition),\n };\n }\n else if (node instanceof Option) {\n return {\n type: \"Option\",\n idx: node.idx,\n definition: convertDefinition(node.definition),\n };\n }\n else if (node instanceof RepetitionMandatory) {\n return {\n type: \"RepetitionMandatory\",\n idx: node.idx,\n definition: convertDefinition(node.definition),\n };\n }\n else if (node instanceof RepetitionMandatoryWithSeparator) {\n return {\n type: \"RepetitionMandatoryWithSeparator\",\n idx: node.idx,\n separator: (serializeProduction(new Terminal({ terminalType: node.separator }))),\n definition: convertDefinition(node.definition),\n };\n }\n else if (node instanceof RepetitionWithSeparator) {\n return {\n type: \"RepetitionWithSeparator\",\n idx: node.idx,\n separator: (serializeProduction(new Terminal({ terminalType: node.separator }))),\n definition: convertDefinition(node.definition),\n };\n }\n else if (node instanceof Repetition) {\n return {\n type: \"Repetition\",\n idx: node.idx,\n definition: convertDefinition(node.definition),\n };\n }\n else if (node instanceof Alternation) {\n return {\n type: \"Alternation\",\n idx: node.idx,\n definition: convertDefinition(node.definition),\n };\n }\n else if (node instanceof Terminal) {\n const serializedTerminal = {\n type: \"Terminal\",\n name: node.terminalType.name,\n label: tokenLabel(node.terminalType),\n idx: node.idx,\n };\n if (isString(node.label)) {\n serializedTerminal.terminalLabel = node.label;\n }\n const pattern = node.terminalType.PATTERN;\n if (node.terminalType.PATTERN) {\n serializedTerminal.pattern = isRegExp(pattern)\n ? pattern.source\n : pattern;\n }\n return serializedTerminal;\n }\n else if (node instanceof Rule) {\n return {\n type: \"Rule\",\n name: node.name,\n orgText: node.orgText,\n definition: convertDefinition(node.definition),\n };\n /* c8 ignore next 3 */\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\n//# sourceMappingURL=model.js.map","import { Alternation, Alternative, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal, } from \"./model.js\";\nexport class GAstVisitor {\n visit(node) {\n const nodeAny = node;\n switch (nodeAny.constructor) {\n case NonTerminal:\n return this.visitNonTerminal(nodeAny);\n case Alternative:\n return this.visitAlternative(nodeAny);\n case Option:\n return this.visitOption(nodeAny);\n case RepetitionMandatory:\n return this.visitRepetitionMandatory(nodeAny);\n case RepetitionMandatoryWithSeparator:\n return this.visitRepetitionMandatoryWithSeparator(nodeAny);\n case RepetitionWithSeparator:\n return this.visitRepetitionWithSeparator(nodeAny);\n case Repetition:\n return this.visitRepetition(nodeAny);\n case Alternation:\n return this.visitAlternation(nodeAny);\n case Terminal:\n return this.visitTerminal(nodeAny);\n case Rule:\n return this.visitRule(nodeAny);\n /* c8 ignore next 2 */\n default:\n throw Error(\"non exhaustive match\");\n }\n }\n /* c8 ignore next */\n visitNonTerminal(node) { }\n /* c8 ignore next */\n visitAlternative(node) { }\n /* c8 ignore next */\n visitOption(node) { }\n /* c8 ignore next */\n visitRepetition(node) { }\n /* c8 ignore next */\n visitRepetitionMandatory(node) { }\n /* c8 ignore next 3 */\n visitRepetitionMandatoryWithSeparator(node) { }\n /* c8 ignore next */\n visitRepetitionWithSeparator(node) { }\n /* c8 ignore next */\n visitAlternation(node) { }\n /* c8 ignore next */\n visitTerminal(node) { }\n /* c8 ignore next */\n visitRule(node) { }\n}\n//# sourceMappingURL=visitor.js.map","import { every, includes, some } from \"lodash-es\";\nimport { AbstractProduction, Alternation, Alternative, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal, } from \"./model.js\";\nexport function isSequenceProd(prod) {\n return (prod instanceof Alternative ||\n prod instanceof Option ||\n prod instanceof Repetition ||\n prod instanceof RepetitionMandatory ||\n prod instanceof RepetitionMandatoryWithSeparator ||\n prod instanceof RepetitionWithSeparator ||\n prod instanceof Terminal ||\n prod instanceof Rule);\n}\nexport function isOptionalProd(prod, alreadyVisited = []) {\n const isDirectlyOptional = prod instanceof Option ||\n prod instanceof Repetition ||\n prod instanceof RepetitionWithSeparator;\n if (isDirectlyOptional) {\n return true;\n }\n // note that this can cause infinite loop if one optional empty TOP production has a cyclic dependency with another\n // empty optional top rule\n // may be indirectly optional ((A?B?C?) | (D?E?F?))\n if (prod instanceof Alternation) {\n // for OR its enough for just one of the alternatives to be optional\n return some(prod.definition, (subProd) => {\n return isOptionalProd(subProd, alreadyVisited);\n });\n }\n else if (prod instanceof NonTerminal && includes(alreadyVisited, prod)) {\n // avoiding stack overflow due to infinite recursion\n return false;\n }\n else if (prod instanceof AbstractProduction) {\n if (prod instanceof NonTerminal) {\n alreadyVisited.push(prod);\n }\n return every(prod.definition, (subProd) => {\n return isOptionalProd(subProd, alreadyVisited);\n });\n }\n else {\n return false;\n }\n}\nexport function isBranchingProd(prod) {\n return prod instanceof Alternation;\n}\nexport function getProductionDslName(prod) {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n return \"SUBRULE\";\n }\n else if (prod instanceof Option) {\n return \"OPTION\";\n }\n else if (prod instanceof Alternation) {\n return \"OR\";\n }\n else if (prod instanceof RepetitionMandatory) {\n return \"AT_LEAST_ONE\";\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return \"AT_LEAST_ONE_SEP\";\n }\n else if (prod instanceof RepetitionWithSeparator) {\n return \"MANY_SEP\";\n }\n else if (prod instanceof Repetition) {\n return \"MANY\";\n }\n else if (prod instanceof Terminal) {\n return \"CONSUME\";\n /* c8 ignore next 3 */\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\n//# sourceMappingURL=helpers.js.map"],"names":["cc","char","insertToSet","item","set","subItem","addFlag","flagObj","flagKey","ASSERT_EXISTS","obj","ASSERT_NEVER_REACH_HERE","isCharacter","digitsCharCodes","i","wordCharCodes","whitespaceCodes","hexDigitPattern","decimalPattern","decimalPatternNoZero","RegExpParser","newState","input","value","flags","alts","begin","terms","type","disjunction","isBacktracking","range","atLeast","atMost","atom","complement","escapeCode","letter","escapedChar","nextChar","from","to","capturing","groupAst","number","howMuch","prevState","howMany","hexString","hexChar","BaseRegExpVisitor","node","key","child","subChild","PRINT_ERROR","msg","PRINT_WARNING","timer","func","start","val","toFastProperties","toBecomeFast","FakeConstructor","fakeInstance","fakeAccess","tokenLabel","tokType","hasTokenLabel","isString","AbstractProduction","_definition","visitor","forEach","prod","NonTerminal","options","assign","pickBy","v","definition","Rule","Alternative","Option","RepetitionMandatory","RepetitionMandatoryWithSeparator","Repetition","RepetitionWithSeparator","Alternation","Terminal","serializeGrammar","topRules","map","serializeProduction","convertDefinition","serializedNonTerminal","serializedTerminal","pattern","isRegExp","GAstVisitor","nodeAny","isSequenceProd","isOptionalProd","alreadyVisited","some","subProd","includes","every","isBranchingProd","getProductionDslName"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
|
assets/@google-xfXoiafW.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* @license
|
| 3 |
+
* Copyright 2025 Google LLC
|
| 4 |
+
* SPDX-License-Identifier: Apache-2.0
|
| 5 |
+
*//**
|
| 6 |
+
* @license
|
| 7 |
+
* Copyright 2025 Google LLC
|
| 8 |
+
* SPDX-License-Identifier: Apache-2.0
|
| 9 |
+
*/var _;(function(E){E.PAGED_ITEM_BATCH_JOBS="batchJobs",E.PAGED_ITEM_MODELS="models",E.PAGED_ITEM_TUNING_JOBS="tuningJobs",E.PAGED_ITEM_FILES="files",E.PAGED_ITEM_CACHED_CONTENTS="cachedContents"})(_||(_={}));/**
|
| 10 |
+
* @license
|
| 11 |
+
* Copyright 2025 Google LLC
|
| 12 |
+
* SPDX-License-Identifier: Apache-2.0
|
| 13 |
+
*/var I;(function(E){E.OUTCOME_UNSPECIFIED="OUTCOME_UNSPECIFIED",E.OUTCOME_OK="OUTCOME_OK",E.OUTCOME_FAILED="OUTCOME_FAILED",E.OUTCOME_DEADLINE_EXCEEDED="OUTCOME_DEADLINE_EXCEEDED"})(I||(I={}));var T;(function(E){E.LANGUAGE_UNSPECIFIED="LANGUAGE_UNSPECIFIED",E.PYTHON="PYTHON"})(T||(T={}));var O;(function(E){E.HARM_CATEGORY_UNSPECIFIED="HARM_CATEGORY_UNSPECIFIED",E.HARM_CATEGORY_HATE_SPEECH="HARM_CATEGORY_HATE_SPEECH",E.HARM_CATEGORY_DANGEROUS_CONTENT="HARM_CATEGORY_DANGEROUS_CONTENT",E.HARM_CATEGORY_HARASSMENT="HARM_CATEGORY_HARASSMENT",E.HARM_CATEGORY_SEXUALLY_EXPLICIT="HARM_CATEGORY_SEXUALLY_EXPLICIT",E.HARM_CATEGORY_CIVIC_INTEGRITY="HARM_CATEGORY_CIVIC_INTEGRITY"})(O||(O={}));var A;(function(E){E.HARM_BLOCK_METHOD_UNSPECIFIED="HARM_BLOCK_METHOD_UNSPECIFIED",E.SEVERITY="SEVERITY",E.PROBABILITY="PROBABILITY"})(A||(A={}));var N;(function(E){E.HARM_BLOCK_THRESHOLD_UNSPECIFIED="HARM_BLOCK_THRESHOLD_UNSPECIFIED",E.BLOCK_LOW_AND_ABOVE="BLOCK_LOW_AND_ABOVE",E.BLOCK_MEDIUM_AND_ABOVE="BLOCK_MEDIUM_AND_ABOVE",E.BLOCK_ONLY_HIGH="BLOCK_ONLY_HIGH",E.BLOCK_NONE="BLOCK_NONE",E.OFF="OFF"})(N||(N={}));var D;(function(E){E.MODE_UNSPECIFIED="MODE_UNSPECIFIED",E.MODE_DYNAMIC="MODE_DYNAMIC"})(D||(D={}));var S;(function(E){E.AUTH_TYPE_UNSPECIFIED="AUTH_TYPE_UNSPECIFIED",E.NO_AUTH="NO_AUTH",E.API_KEY_AUTH="API_KEY_AUTH",E.HTTP_BASIC_AUTH="HTTP_BASIC_AUTH",E.GOOGLE_SERVICE_ACCOUNT_AUTH="GOOGLE_SERVICE_ACCOUNT_AUTH",E.OAUTH="OAUTH",E.OIDC_AUTH="OIDC_AUTH"})(S||(S={}));var C;(function(E){E.TYPE_UNSPECIFIED="TYPE_UNSPECIFIED",E.STRING="STRING",E.NUMBER="NUMBER",E.INTEGER="INTEGER",E.BOOLEAN="BOOLEAN",E.ARRAY="ARRAY",E.OBJECT="OBJECT"})(C||(C={}));var U;(function(E){E.FINISH_REASON_UNSPECIFIED="FINISH_REASON_UNSPECIFIED",E.STOP="STOP",E.MAX_TOKENS="MAX_TOKENS",E.SAFETY="SAFETY",E.RECITATION="RECITATION",E.LANGUAGE="LANGUAGE",E.OTHER="OTHER",E.BLOCKLIST="BLOCKLIST",E.PROHIBITED_CONTENT="PROHIBITED_CONTENT",E.SPII="SPII",E.MALFORMED_FUNCTION_CALL="MALFORMED_FUNCTION_CALL",E.IMAGE_SAFETY="IMAGE_SAFETY"})(U||(U={}));var R;(function(E){E.HARM_PROBABILITY_UNSPECIFIED="HARM_PROBABILITY_UNSPECIFIED",E.NEGLIGIBLE="NEGLIGIBLE",E.LOW="LOW",E.MEDIUM="MEDIUM",E.HIGH="HIGH"})(R||(R={}));var L;(function(E){E.HARM_SEVERITY_UNSPECIFIED="HARM_SEVERITY_UNSPECIFIED",E.HARM_SEVERITY_NEGLIGIBLE="HARM_SEVERITY_NEGLIGIBLE",E.HARM_SEVERITY_LOW="HARM_SEVERITY_LOW",E.HARM_SEVERITY_MEDIUM="HARM_SEVERITY_MEDIUM",E.HARM_SEVERITY_HIGH="HARM_SEVERITY_HIGH"})(L||(L={}));var P;(function(E){E.BLOCKED_REASON_UNSPECIFIED="BLOCKED_REASON_UNSPECIFIED",E.SAFETY="SAFETY",E.OTHER="OTHER",E.BLOCKLIST="BLOCKLIST",E.PROHIBITED_CONTENT="PROHIBITED_CONTENT"})(P||(P={}));var M;(function(E){E.TRAFFIC_TYPE_UNSPECIFIED="TRAFFIC_TYPE_UNSPECIFIED",E.ON_DEMAND="ON_DEMAND",E.PROVISIONED_THROUGHPUT="PROVISIONED_THROUGHPUT"})(M||(M={}));var Y;(function(E){E.MODALITY_UNSPECIFIED="MODALITY_UNSPECIFIED",E.TEXT="TEXT",E.IMAGE="IMAGE",E.AUDIO="AUDIO"})(Y||(Y={}));var B;(function(E){E.MEDIA_RESOLUTION_UNSPECIFIED="MEDIA_RESOLUTION_UNSPECIFIED",E.MEDIA_RESOLUTION_LOW="MEDIA_RESOLUTION_LOW",E.MEDIA_RESOLUTION_MEDIUM="MEDIA_RESOLUTION_MEDIUM",E.MEDIA_RESOLUTION_HIGH="MEDIA_RESOLUTION_HIGH"})(B||(B={}));var G;(function(E){E.JOB_STATE_UNSPECIFIED="JOB_STATE_UNSPECIFIED",E.JOB_STATE_QUEUED="JOB_STATE_QUEUED",E.JOB_STATE_PENDING="JOB_STATE_PENDING",E.JOB_STATE_RUNNING="JOB_STATE_RUNNING",E.JOB_STATE_SUCCEEDED="JOB_STATE_SUCCEEDED",E.JOB_STATE_FAILED="JOB_STATE_FAILED",E.JOB_STATE_CANCELLING="JOB_STATE_CANCELLING",E.JOB_STATE_CANCELLED="JOB_STATE_CANCELLED",E.JOB_STATE_PAUSED="JOB_STATE_PAUSED",E.JOB_STATE_EXPIRED="JOB_STATE_EXPIRED",E.JOB_STATE_UPDATING="JOB_STATE_UPDATING",E.JOB_STATE_PARTIALLY_SUCCEEDED="JOB_STATE_PARTIALLY_SUCCEEDED"})(G||(G={}));var H;(function(E){E.ADAPTER_SIZE_UNSPECIFIED="ADAPTER_SIZE_UNSPECIFIED",E.ADAPTER_SIZE_ONE="ADAPTER_SIZE_ONE",E.ADAPTER_SIZE_TWO="ADAPTER_SIZE_TWO",E.ADAPTER_SIZE_FOUR="ADAPTER_SIZE_FOUR",E.ADAPTER_SIZE_EIGHT="ADAPTER_SIZE_EIGHT",E.ADAPTER_SIZE_SIXTEEN="ADAPTER_SIZE_SIXTEEN",E.ADAPTER_SIZE_THIRTY_TWO="ADAPTER_SIZE_THIRTY_TWO"})(H||(H={}));var F;(function(E){E.FEATURE_SELECTION_PREFERENCE_UNSPECIFIED="FEATURE_SELECTION_PREFERENCE_UNSPECIFIED",E.PRIORITIZE_QUALITY="PRIORITIZE_QUALITY",E.BALANCED="BALANCED",E.PRIORITIZE_COST="PRIORITIZE_COST"})(F||(F={}));var V;(function(E){E.MODE_UNSPECIFIED="MODE_UNSPECIFIED",E.MODE_DYNAMIC="MODE_DYNAMIC"})(V||(V={}));var K;(function(E){E.MODE_UNSPECIFIED="MODE_UNSPECIFIED",E.AUTO="AUTO",E.ANY="ANY",E.NONE="NONE"})(K||(K={}));var J;(function(E){E.BLOCK_LOW_AND_ABOVE="BLOCK_LOW_AND_ABOVE",E.BLOCK_MEDIUM_AND_ABOVE="BLOCK_MEDIUM_AND_ABOVE",E.BLOCK_ONLY_HIGH="BLOCK_ONLY_HIGH",E.BLOCK_NONE="BLOCK_NONE"})(J||(J={}));var v;(function(E){E.DONT_ALLOW="DONT_ALLOW",E.ALLOW_ADULT="ALLOW_ADULT",E.ALLOW_ALL="ALLOW_ALL"})(v||(v={}));var W;(function(E){E.auto="auto",E.en="en",E.ja="ja",E.ko="ko",E.hi="hi"})(W||(W={}));var n;(function(E){E.MASK_MODE_DEFAULT="MASK_MODE_DEFAULT",E.MASK_MODE_USER_PROVIDED="MASK_MODE_USER_PROVIDED",E.MASK_MODE_BACKGROUND="MASK_MODE_BACKGROUND",E.MASK_MODE_FOREGROUND="MASK_MODE_FOREGROUND",E.MASK_MODE_SEMANTIC="MASK_MODE_SEMANTIC"})(n||(n={}));var u;(function(E){E.CONTROL_TYPE_DEFAULT="CONTROL_TYPE_DEFAULT",E.CONTROL_TYPE_CANNY="CONTROL_TYPE_CANNY",E.CONTROL_TYPE_SCRIBBLE="CONTROL_TYPE_SCRIBBLE",E.CONTROL_TYPE_FACE_MESH="CONTROL_TYPE_FACE_MESH"})(u||(u={}));var f;(function(E){E.SUBJECT_TYPE_DEFAULT="SUBJECT_TYPE_DEFAULT",E.SUBJECT_TYPE_PERSON="SUBJECT_TYPE_PERSON",E.SUBJECT_TYPE_ANIMAL="SUBJECT_TYPE_ANIMAL",E.SUBJECT_TYPE_PRODUCT="SUBJECT_TYPE_PRODUCT"})(f||(f={}));var Z;(function(E){E.EDIT_MODE_DEFAULT="EDIT_MODE_DEFAULT",E.EDIT_MODE_INPAINT_REMOVAL="EDIT_MODE_INPAINT_REMOVAL",E.EDIT_MODE_INPAINT_INSERTION="EDIT_MODE_INPAINT_INSERTION",E.EDIT_MODE_OUTPAINT="EDIT_MODE_OUTPAINT",E.EDIT_MODE_CONTROLLED_EDITING="EDIT_MODE_CONTROLLED_EDITING",E.EDIT_MODE_STYLE="EDIT_MODE_STYLE",E.EDIT_MODE_BGSWAP="EDIT_MODE_BGSWAP",E.EDIT_MODE_PRODUCT_IMAGE="EDIT_MODE_PRODUCT_IMAGE"})(Z||(Z={}));var X;(function(E){E.STATE_UNSPECIFIED="STATE_UNSPECIFIED",E.PROCESSING="PROCESSING",E.ACTIVE="ACTIVE",E.FAILED="FAILED"})(X||(X={}));var c;(function(E){E.SOURCE_UNSPECIFIED="SOURCE_UNSPECIFIED",E.UPLOADED="UPLOADED",E.GENERATED="GENERATED"})(c||(c={}));var Q;(function(E){E.MODALITY_UNSPECIFIED="MODALITY_UNSPECIFIED",E.TEXT="TEXT",E.IMAGE="IMAGE",E.VIDEO="VIDEO",E.AUDIO="AUDIO",E.DOCUMENT="DOCUMENT"})(Q||(Q={}));var w;(function(E){E.START_SENSITIVITY_UNSPECIFIED="START_SENSITIVITY_UNSPECIFIED",E.START_SENSITIVITY_HIGH="START_SENSITIVITY_HIGH",E.START_SENSITIVITY_LOW="START_SENSITIVITY_LOW"})(w||(w={}));var x;(function(E){E.END_SENSITIVITY_UNSPECIFIED="END_SENSITIVITY_UNSPECIFIED",E.END_SENSITIVITY_HIGH="END_SENSITIVITY_HIGH",E.END_SENSITIVITY_LOW="END_SENSITIVITY_LOW"})(x||(x={}));var j;(function(E){E.ACTIVITY_HANDLING_UNSPECIFIED="ACTIVITY_HANDLING_UNSPECIFIED",E.START_OF_ACTIVITY_INTERRUPTS="START_OF_ACTIVITY_INTERRUPTS",E.NO_INTERRUPTION="NO_INTERRUPTION"})(j||(j={}));var q;(function(E){E.TURN_COVERAGE_UNSPECIFIED="TURN_COVERAGE_UNSPECIFIED",E.TURN_INCLUDES_ONLY_ACTIVITY="TURN_INCLUDES_ONLY_ACTIVITY",E.TURN_INCLUDES_ALL_INPUT="TURN_INCLUDES_ALL_INPUT"})(q||(q={}));export{C as T};
|
| 14 |
+
//# sourceMappingURL=@google-xfXoiafW.js.map
|
assets/@google-xfXoiafW.js.map
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/@iconify-D2F_yRRF.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const v=Object.freeze({left:0,top:0,width:16,height:16}),w=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),k=Object.freeze({...v,...w}),T=Object.freeze({...k,body:"",hidden:!1}),E=Object.freeze({width:null,height:null}),M=Object.freeze({...E,...w}),L=(t,s,i,n="")=>{const e=t.split(":");if(t.slice(0,1)==="@"){if(e.length<2||e.length>3)return null;n=e.shift().slice(1)}if(e.length>3||!e.length)return null;if(e.length>1){const l=e.pop(),u=e.pop(),h={provider:e.length>0?e[0]:n,prefix:u,name:l};return S(h)?h:null}const r=e[0],o=r.split("-");if(o.length>1){const l={provider:n,prefix:o.shift(),name:o.join("-")};return S(l)?l:null}if(i&&n===""){const l={provider:n,prefix:"",name:r};return S(l,i)?l:null}return null},S=(t,s)=>t?!!((s&&t.prefix===""||t.prefix)&&t.name):!1;function P(t,s){const i={};!t.hFlip!=!s.hFlip&&(i.hFlip=!0),!t.vFlip!=!s.vFlip&&(i.vFlip=!0);const n=((t.rotate||0)+(s.rotate||0))%4;return n&&(i.rotate=n),i}function b(t,s){const i=P(t,s);for(const n in T)n in w?n in t&&!(n in i)&&(i[n]=w[n]):n in s?i[n]=s[n]:n in t&&(i[n]=t[n]);return i}function C(t,s){const i=t.icons,n=t.aliases||Object.create(null),e=Object.create(null);function r(o){if(i[o])return e[o]=[];if(!(o in e)){e[o]=null;const l=n[o]&&n[o].parent,u=l&&r(l);u&&(e[o]=[l].concat(u))}return e[o]}return(s||Object.keys(i).concat(Object.keys(n))).forEach(r),e}function F(t,s,i){const n=t.icons,e=t.aliases||Object.create(null);let r={};function o(l){r=b(n[l]||e[l],r)}return o(s),i.forEach(o),b(t,r)}function R(t,s){if(t.icons[s])return F(t,s,[]);const i=C(t,[s])[s];return i?F(t,s,i):null}const $=/(-?[0-9.]*[0-9]+[0-9.]*)/g,y=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function j(t,s,i){if(s===1)return t;if(i=i||100,typeof t=="number")return Math.ceil(t*s*i)/i;if(typeof t!="string")return t;const n=t.split($);if(n===null||!n.length)return t;const e=[];let r=n.shift(),o=y.test(r);for(;;){if(o){const l=parseFloat(r);isNaN(l)?e.push(r):e.push(Math.ceil(l*s*i)/i)}else e.push(r);if(r=n.shift(),r===void 0)return e.join("");o=!o}}function G(t,s="defs"){let i="";const n=t.indexOf("<"+s);for(;n>=0;){const e=t.indexOf(">",n),r=t.indexOf("</"+s);if(e===-1||r===-1)break;const o=t.indexOf(">",r);if(o===-1)break;i+=t.slice(e+1,r).trim(),t=t.slice(0,n).trim()+t.slice(o+1)}return{defs:i,content:t}}function H(t,s){return t?"<defs>"+t+"</defs>"+s:s}function V(t,s,i){const n=G(t);return H(n.defs,s+n.content+i)}const z=t=>t==="unset"||t==="undefined"||t==="none";function W(t,s){const i={...k,...t},n={...M,...s},e={left:i.left,top:i.top,width:i.width,height:i.height};let r=i.body;[i,n].forEach(g=>{const c=[],D=g.hFlip,O=g.vFlip;let a=g.rotate;D?O?a+=2:(c.push("translate("+(e.width+e.left).toString()+" "+(0-e.top).toString()+")"),c.push("scale(-1 1)"),e.top=e.left=0):O&&(c.push("translate("+(0-e.left).toString()+" "+(e.height+e.top).toString()+")"),c.push("scale(1 -1)"),e.top=e.left=0);let f;switch(a<0&&(a-=Math.floor(a/4)*4),a=a%4,a){case 1:f=e.height/2+e.top,c.unshift("rotate(90 "+f.toString()+" "+f.toString()+")");break;case 2:c.unshift("rotate(180 "+(e.width/2+e.left).toString()+" "+(e.height/2+e.top).toString()+")");break;case 3:f=e.width/2+e.left,c.unshift("rotate(-90 "+f.toString()+" "+f.toString()+")");break}a%2===1&&(e.left!==e.top&&(f=e.left,e.left=e.top,e.top=f),e.width!==e.height&&(f=e.width,e.width=e.height,e.height=f)),c.length&&(r=V(r,'<g transform="'+c.join(" ")+'">',"</g>"))});const o=n.width,l=n.height,u=e.width,h=e.height;let p,d;o===null?(d=l===null?"1em":l==="auto"?h:l,p=j(d,u/h)):(p=o==="auto"?u:o,d=l===null?j(p,h/u):l==="auto"?h:l);const x={},I=(g,c)=>{z(c)||(x[g]=c.toString())};I("width",p),I("height",d);const m=[e.left,e.top,u,h];return x.viewBox=m.join(" "),{attributes:x,viewBox:m,body:r}}const A=/\sid="(\S+)"/g,N="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16);let B=0;function K(t,s=N){const i=[];let n;for(;n=A.exec(t);)i.push(n[1]);if(!i.length)return t;const e="suffix"+(Math.random()*16777216|Date.now()).toString(16);return i.forEach(r=>{const o=typeof s=="function"?s(r):s+(B++).toString(),l=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+o+e+"$3")}),t=t.replace(new RegExp(e,"g"),""),t}function U(t,s){let i=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const n in s)i+=" "+n+'="'+s[n]+'"';return'<svg xmlns="http://www.w3.org/2000/svg"'+i+">"+t+"</svg>"}export{U as a,R as g,W as i,K as r,L as s};
|
| 2 |
+
//# sourceMappingURL=@iconify-D2F_yRRF.js.map
|
assets/@iconify-D2F_yRRF.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"@iconify-D2F_yRRF.js","sources":["../../node_modules/@iconify/utils/lib/icon/defaults.js","../../node_modules/@iconify/utils/lib/customisations/defaults.js","../../node_modules/@iconify/utils/lib/icon/name.js","../../node_modules/@iconify/utils/lib/icon/transformations.js","../../node_modules/@iconify/utils/lib/icon/merge.js","../../node_modules/@iconify/utils/lib/icon-set/tree.js","../../node_modules/@iconify/utils/lib/icon-set/get-icon.js","../../node_modules/@iconify/utils/lib/svg/size.js","../../node_modules/@iconify/utils/lib/svg/defs.js","../../node_modules/@iconify/utils/lib/svg/build.js","../../node_modules/@iconify/utils/lib/svg/id.js","../../node_modules/@iconify/utils/lib/svg/html.js"],"sourcesContent":["/**\n* Default values for dimensions\n*/\nconst defaultIconDimensions = Object.freeze({\n\tleft: 0,\n\ttop: 0,\n\twidth: 16,\n\theight: 16\n});\n/**\n* Default values for transformations\n*/\nconst defaultIconTransformations = Object.freeze({\n\trotate: 0,\n\tvFlip: false,\n\thFlip: false\n});\n/**\n* Default values for all optional IconifyIcon properties\n*/\nconst defaultIconProps = Object.freeze({\n\t...defaultIconDimensions,\n\t...defaultIconTransformations\n});\n/**\n* Default values for all properties used in ExtendedIconifyIcon\n*/\nconst defaultExtendedIconProps = Object.freeze({\n\t...defaultIconProps,\n\tbody: \"\",\n\thidden: false\n});\n\nexport { defaultExtendedIconProps, defaultIconDimensions, defaultIconProps, defaultIconTransformations };","import { defaultIconTransformations } from \"../icon/defaults.js\";\n\n/**\n* Default icon customisations values\n*/\nconst defaultIconSizeCustomisations = Object.freeze({\n\twidth: null,\n\theight: null\n});\nconst defaultIconCustomisations = Object.freeze({\n\t...defaultIconSizeCustomisations,\n\t...defaultIconTransformations\n});\n\nexport { defaultIconCustomisations, defaultIconSizeCustomisations };","/**\n* Expression to test part of icon name.\n*\n* Used when loading icons from Iconify API due to project naming convension.\n* Ignored when using custom icon sets - convension does not apply.\n*/\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n/**\n* Convert string icon name to IconifyIconName object.\n*/\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n\tconst colonSeparated = value.split(\":\");\n\tif (value.slice(0, 1) === \"@\") {\n\t\tif (colonSeparated.length < 2 || colonSeparated.length > 3) return null;\n\t\tprovider = colonSeparated.shift().slice(1);\n\t}\n\tif (colonSeparated.length > 3 || !colonSeparated.length) return null;\n\tif (colonSeparated.length > 1) {\n\t\tconst name$1 = colonSeparated.pop();\n\t\tconst prefix = colonSeparated.pop();\n\t\tconst result = {\n\t\t\tprovider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n\t\t\tprefix,\n\t\t\tname: name$1\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tconst name = colonSeparated[0];\n\tconst dashSeparated = name.split(\"-\");\n\tif (dashSeparated.length > 1) {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: dashSeparated.shift(),\n\t\t\tname: dashSeparated.join(\"-\")\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tif (allowSimpleName && provider === \"\") {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: \"\",\n\t\t\tname\n\t\t};\n\t\treturn validate && !validateIconName(result, allowSimpleName) ? null : result;\n\t}\n\treturn null;\n};\n/**\n* Check if icon is valid.\n*\n* This function is not part of stringToIcon because validation is not needed for most code.\n*/\nconst validateIconName = (icon, allowSimpleName) => {\n\tif (!icon) return false;\n\treturn !!((allowSimpleName && icon.prefix === \"\" || !!icon.prefix) && !!icon.name);\n};\n\nexport { matchIconName, stringToIcon, validateIconName };","/**\n* Merge transformations\n*/\nfunction mergeIconTransformations(obj1, obj2) {\n\tconst result = {};\n\tif (!obj1.hFlip !== !obj2.hFlip) result.hFlip = true;\n\tif (!obj1.vFlip !== !obj2.vFlip) result.vFlip = true;\n\tconst rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n\tif (rotate) result.rotate = rotate;\n\treturn result;\n}\n\nexport { mergeIconTransformations };","import { defaultExtendedIconProps, defaultIconTransformations } from \"./defaults.js\";\nimport { mergeIconTransformations } from \"./transformations.js\";\n\n/**\n* Merge icon and alias\n*\n* Can also be used to merge default values and icon\n*/\nfunction mergeIconData(parent, child) {\n\tconst result = mergeIconTransformations(parent, child);\n\tfor (const key in defaultExtendedIconProps) if (key in defaultIconTransformations) {\n\t\tif (key in parent && !(key in result)) result[key] = defaultIconTransformations[key];\n\t} else if (key in child) result[key] = child[key];\n\telse if (key in parent) result[key] = parent[key];\n\treturn result;\n}\n\nexport { mergeIconData };","/**\n* Resolve icon set icons\n*\n* Returns parent icon for each icon\n*/\nfunction getIconsTree(data, names) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tconst resolved = Object.create(null);\n\tfunction resolve(name) {\n\t\tif (icons[name]) return resolved[name] = [];\n\t\tif (!(name in resolved)) {\n\t\t\tresolved[name] = null;\n\t\t\tconst parent = aliases[name] && aliases[name].parent;\n\t\t\tconst value = parent && resolve(parent);\n\t\t\tif (value) resolved[name] = [parent].concat(value);\n\t\t}\n\t\treturn resolved[name];\n\t}\n\t(names || Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n\treturn resolved;\n}\n\nexport { getIconsTree };","import { mergeIconData } from \"../icon/merge.js\";\nimport { getIconsTree } from \"./tree.js\";\n\n/**\n* Get icon data, using prepared aliases tree\n*/\nfunction internalGetIconData(data, name, tree) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tlet currentProps = {};\n\tfunction parse(name$1) {\n\t\tcurrentProps = mergeIconData(icons[name$1] || aliases[name$1], currentProps);\n\t}\n\tparse(name);\n\ttree.forEach(parse);\n\treturn mergeIconData(data, currentProps);\n}\n/**\n* Get data for icon\n*/\nfunction getIconData(data, name) {\n\tif (data.icons[name]) return internalGetIconData(data, name, []);\n\tconst tree = getIconsTree(data, [name])[name];\n\treturn tree ? internalGetIconData(data, name, tree) : null;\n}\n\nexport { getIconData, internalGetIconData };","/**\n* Regular expressions for calculating dimensions\n*/\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize(size, ratio, precision) {\n\tif (ratio === 1) return size;\n\tprecision = precision || 100;\n\tif (typeof size === \"number\") return Math.ceil(size * ratio * precision) / precision;\n\tif (typeof size !== \"string\") return size;\n\tconst oldParts = size.split(unitsSplit);\n\tif (oldParts === null || !oldParts.length) return size;\n\tconst newParts = [];\n\tlet code = oldParts.shift();\n\tlet isNumber = unitsTest.test(code);\n\twhile (true) {\n\t\tif (isNumber) {\n\t\t\tconst num = parseFloat(code);\n\t\t\tif (isNaN(num)) newParts.push(code);\n\t\t\telse newParts.push(Math.ceil(num * ratio * precision) / precision);\n\t\t} else newParts.push(code);\n\t\tcode = oldParts.shift();\n\t\tif (code === void 0) return newParts.join(\"\");\n\t\tisNumber = !isNumber;\n\t}\n}\n\nexport { calculateSize };","function splitSVGDefs(content, tag = \"defs\") {\n\tlet defs = \"\";\n\tconst index = content.indexOf(\"<\" + tag);\n\twhile (index >= 0) {\n\t\tconst start = content.indexOf(\">\", index);\n\t\tconst end = content.indexOf(\"</\" + tag);\n\t\tif (start === -1 || end === -1) break;\n\t\tconst endEnd = content.indexOf(\">\", end);\n\t\tif (endEnd === -1) break;\n\t\tdefs += content.slice(start + 1, end).trim();\n\t\tcontent = content.slice(0, index).trim() + content.slice(endEnd + 1);\n\t}\n\treturn {\n\t\tdefs,\n\t\tcontent\n\t};\n}\n/**\n* Merge defs and content\n*/\nfunction mergeDefsAndContent(defs, content) {\n\treturn defs ? \"<defs>\" + defs + \"</defs>\" + content : content;\n}\n/**\n* Wrap SVG content, without wrapping definitions\n*/\nfunction wrapSVGContent(body, start, end) {\n\tconst split = splitSVGDefs(body);\n\treturn mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\nexport { mergeDefsAndContent, splitSVGDefs, wrapSVGContent };","import { defaultIconProps } from \"../icon/defaults.js\";\nimport { defaultIconCustomisations } from \"../customisations/defaults.js\";\nimport { calculateSize } from \"./size.js\";\nimport { wrapSVGContent } from \"./defs.js\";\n\n/**\n* Check if value should be unset. Allows multiple keywords\n*/\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\n/**\n* Get SVG attributes and content from icon + customisations\n*\n* Does not generate style to make it compatible with frameworks that use objects for style, such as React.\n* Instead, it generates 'inline' value. If true, rendering engine should add verticalAlign: -0.125em to icon.\n*\n* Customisations should be normalised by platform specific parser.\n* Result should be converted to <svg> by platform specific parser.\n* Use replaceIDs to generate unique IDs for body.\n*/\nfunction iconToSVG(icon, customisations) {\n\tconst fullIcon = {\n\t\t...defaultIconProps,\n\t\t...icon\n\t};\n\tconst fullCustomisations = {\n\t\t...defaultIconCustomisations,\n\t\t...customisations\n\t};\n\tconst box = {\n\t\tleft: fullIcon.left,\n\t\ttop: fullIcon.top,\n\t\twidth: fullIcon.width,\n\t\theight: fullIcon.height\n\t};\n\tlet body = fullIcon.body;\n\t[fullIcon, fullCustomisations].forEach((props) => {\n\t\tconst transformations = [];\n\t\tconst hFlip = props.hFlip;\n\t\tconst vFlip = props.vFlip;\n\t\tlet rotation = props.rotate;\n\t\tif (hFlip) if (vFlip) rotation += 2;\n\t\telse {\n\t\t\ttransformations.push(\"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(-1 1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\telse if (vFlip) {\n\t\t\ttransformations.push(\"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(1 -1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\tlet tempValue;\n\t\tif (rotation < 0) rotation -= Math.floor(rotation / 4) * 4;\n\t\trotation = rotation % 4;\n\t\tswitch (rotation) {\n\t\t\tcase 1:\n\t\t\t\ttempValue = box.height / 2 + box.top;\n\t\t\t\ttransformations.unshift(\"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\ttransformations.unshift(\"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\ttempValue = box.width / 2 + box.left;\n\t\t\t\ttransformations.unshift(\"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t}\n\t\tif (rotation % 2 === 1) {\n\t\t\tif (box.left !== box.top) {\n\t\t\t\ttempValue = box.left;\n\t\t\t\tbox.left = box.top;\n\t\t\t\tbox.top = tempValue;\n\t\t\t}\n\t\t\tif (box.width !== box.height) {\n\t\t\t\ttempValue = box.width;\n\t\t\t\tbox.width = box.height;\n\t\t\t\tbox.height = tempValue;\n\t\t\t}\n\t\t}\n\t\tif (transformations.length) body = wrapSVGContent(body, \"<g transform=\\\"\" + transformations.join(\" \") + \"\\\">\", \"</g>\");\n\t});\n\tconst customisationsWidth = fullCustomisations.width;\n\tconst customisationsHeight = fullCustomisations.height;\n\tconst boxWidth = box.width;\n\tconst boxHeight = box.height;\n\tlet width;\n\tlet height;\n\tif (customisationsWidth === null) {\n\t\theight = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t\twidth = calculateSize(height, boxWidth / boxHeight);\n\t} else {\n\t\twidth = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n\t\theight = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t}\n\tconst attributes = {};\n\tconst setAttr = (prop, value) => {\n\t\tif (!isUnsetKeyword(value)) attributes[prop] = value.toString();\n\t};\n\tsetAttr(\"width\", width);\n\tsetAttr(\"height\", height);\n\tconst viewBox = [\n\t\tbox.left,\n\t\tbox.top,\n\t\tboxWidth,\n\t\tboxHeight\n\t];\n\tattributes.viewBox = viewBox.join(\" \");\n\treturn {\n\t\tattributes,\n\t\tviewBox,\n\t\tbody\n\t};\n}\n\nexport { iconToSVG, isUnsetKeyword };","/**\n* IDs usage:\n*\n* id=\"{id}\"\n* xlink:href=\"#{id}\"\n* url(#{id})\n*\n* From SVG animations:\n*\n* begin=\"0;{id}.end\"\n* begin=\"{id}.end\"\n* begin=\"{id}.click\"\n*/\n/**\n* Regular expression for finding ids\n*/\nconst regex = /\\sid=\"(\\S+)\"/g;\n/**\n* New random-ish prefix for ids\n*\n* Do not use dash, it cannot be used in SVG 2 animations\n*/\nconst randomPrefix = \"IconifyId\" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16);\n/**\n* Counter for ids, increasing with every replacement\n*/\nlet counter = 0;\n/**\n* Replace IDs in SVG output with unique IDs\n*/\nfunction replaceIDs(body, prefix = randomPrefix) {\n\tconst ids = [];\n\tlet match;\n\twhile (match = regex.exec(body)) ids.push(match[1]);\n\tif (!ids.length) return body;\n\tconst suffix = \"suffix\" + (Math.random() * 16777216 | Date.now()).toString(16);\n\tids.forEach((id) => {\n\t\tconst newID = typeof prefix === \"function\" ? prefix(id) : prefix + (counter++).toString();\n\t\tconst escapedID = id.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\t\tbody = body.replace(new RegExp(\"([#;\\\"])(\" + escapedID + \")([\\\")]|\\\\.[a-z])\", \"g\"), \"$1\" + newID + suffix + \"$3\");\n\t});\n\tbody = body.replace(new RegExp(suffix, \"g\"), \"\");\n\treturn body;\n}\n\nexport { replaceIDs };","/**\n* Generate <svg>\n*/\nfunction iconToHTML(body, attributes) {\n\tlet renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : \" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\";\n\tfor (const attr in attributes) renderAttribsHTML += \" \" + attr + \"=\\\"\" + attributes[attr] + \"\\\"\";\n\treturn \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\" + renderAttribsHTML + \">\" + body + \"</svg>\";\n}\n\nexport { iconToHTML };"],"names":["defaultIconDimensions","defaultIconTransformations","defaultIconProps","defaultExtendedIconProps","defaultIconSizeCustomisations","defaultIconCustomisations","stringToIcon","value","validate","allowSimpleName","provider","colonSeparated","name$1","prefix","result","validateIconName","name","dashSeparated","icon","mergeIconTransformations","obj1","obj2","rotate","mergeIconData","parent","child","key","getIconsTree","data","names","icons","aliases","resolved","resolve","internalGetIconData","tree","currentProps","parse","getIconData","unitsSplit","unitsTest","calculateSize","size","ratio","precision","oldParts","newParts","code","isNumber","num","splitSVGDefs","content","tag","defs","index","start","end","endEnd","mergeDefsAndContent","wrapSVGContent","body","split","isUnsetKeyword","iconToSVG","customisations","fullIcon","fullCustomisations","box","props","transformations","hFlip","vFlip","rotation","tempValue","customisationsWidth","customisationsHeight","boxWidth","boxHeight","width","height","attributes","setAttr","prop","viewBox","regex","randomPrefix","counter","replaceIDs","ids","match","suffix","id","newID","escapedID","iconToHTML","renderAttribsHTML","attr"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}
|
assets/@mermaid-js-Ce0__7Tp.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{A as je,D as Fe,a as We,l as c,E as g,i as s,c as T,b as R}from"./langium-B_PGe6V2.js";const Ue="modulepreload",ze=function(a){return"/"+a},$e={},$=function(e,r,l){let n=Promise.resolve();if(r&&r.length>0){document.getElementsByTagName("link");const u=document.querySelector("meta[property=csp-nonce]"),p=(u==null?void 0:u.nonce)||(u==null?void 0:u.getAttribute("nonce"));n=Promise.allSettled(r.map(y=>{if(y=ze(y),y in $e)return;$e[y]=!0;const B=y.endsWith(".css"),He=B?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${y}"]${He}`))return;const f=document.createElement("link");if(f.rel=B?"stylesheet":Ue,B||(f.as="script"),f.crossOrigin="",f.href=y,p&&f.setAttribute("nonce",p),document.head.appendChild(f),B)return new Promise((Ve,Be)=>{f.addEventListener("load",Ve),f.addEventListener("error",()=>Be(new Error(`Unable to preload CSS for ${y}`)))})}))}function i(u){const p=new Event("vite:preloadError",{cancelable:!0});if(p.payload=u,window.dispatchEvent(p),!p.defaultPrevented)throw u}return n.then(u=>{for(const p of u||[])p.status==="rejected"&&i(p.reason);return e().catch(i)})};var Je=Object.defineProperty,t=(a,e)=>Je(a,"name",{value:e,configurable:!0}),ce="Statement",Z="Architecture";function Ye(a){return m.isInstance(a,Z)}t(Ye,"isArchitecture");var j="Axis",O="Branch";function Ze(a){return m.isInstance(a,O)}t(Ze,"isBranch");var F="Checkout",W="CherryPicking",le="ClassDefStatement",N="Commit";function Xe(a){return m.isInstance(a,N)}t(Xe,"isCommit");var se="Curve",ie="Edge",ue="Entry",H="GitGraph";function qe(a){return m.isInstance(a,H)}t(qe,"isGitGraph");var me="Group",X="Info";function Qe(a){return m.isInstance(a,X)}t(Qe,"isInfo");var U="Item",pe="Junction",V="Merge";function er(a){return m.isInstance(a,V)}t(er,"isMerge");var oe="Option",q="Packet";function rr(a){return m.isInstance(a,q)}t(rr,"isPacket");var Q="PacketBlock";function tr(a){return m.isInstance(a,Q)}t(tr,"isPacketBlock");var ee="Pie";function ar(a){return m.isInstance(a,ee)}t(ar,"isPie");var re="PieSection";function nr(a){return m.isInstance(a,re)}t(nr,"isPieSection");var ye="Radar",fe="Service",te="Treemap";function lr(a){return m.isInstance(a,te)}t(lr,"isTreemap");var de="TreemapRow",z="Direction",J="Leaf",Y="Section",h,ke=(h=class extends je{getAllTypes(){return[Z,j,O,F,W,le,N,se,z,ie,ue,H,me,X,U,pe,J,V,oe,q,Q,ee,re,ye,Y,fe,ce,te,de]}computeIsSubtype(e,r){switch(e){case O:case F:case W:case N:case V:return this.isSubtype(ce,r);case z:return this.isSubtype(H,r);case J:case Y:return this.isSubtype(U,r);default:return!1}}getReferenceType(e){const r=`${e.container.$type}:${e.property}`;switch(r){case"Entry:axis":return j;default:throw new Error(`${r} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case Z:return{name:Z,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case j:return{name:j,properties:[{name:"label"},{name:"name"}]};case O:return{name:O,properties:[{name:"name"},{name:"order"}]};case F:return{name:F,properties:[{name:"branch"}]};case W:return{name:W,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case le:return{name:le,properties:[{name:"className"},{name:"styleText"}]};case N:return{name:N,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case se:return{name:se,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case ie:return{name:ie,properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case ue:return{name:ue,properties:[{name:"axis"},{name:"value"}]};case H:return{name:H,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case me:return{name:me,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case X:return{name:X,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case U:return{name:U,properties:[{name:"classSelector"},{name:"name"}]};case pe:return{name:pe,properties:[{name:"id"},{name:"in"}]};case V:return{name:V,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case oe:return{name:oe,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case q:return{name:q,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case Q:return{name:Q,properties:[{name:"bits"},{name:"end"},{name:"label"},{name:"start"}]};case ee:return{name:ee,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case re:return{name:re,properties:[{name:"label"},{name:"value"}]};case ye:return{name:ye,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case fe:return{name:fe,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case te:return{name:te,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"},{name:"TreemapRows",defaultValue:[]}]};case de:return{name:de,properties:[{name:"indent"},{name:"item"}]};case z:return{name:z,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};case J:return{name:J,properties:[{name:"classSelector"},{name:"name"},{name:"value"}]};case Y:return{name:Y,properties:[{name:"classSelector"},{name:"name"}]};default:return{name:e,properties:[]}}}},t(h,"MermaidAstReflection"),h),m=new ke,ge,sr=t(()=>ge??(ge=c(`{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"InfoGrammar"),Te,ir=t(()=>Te??(Te=c(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"PacketGrammar"),Re,ur=t(()=>Re??(Re=c(`{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"PieGrammar"),ve,mr=t(()=>ve??(ve=c(`{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"ArchitectureGrammar"),he,pr=t(()=>he??(he=c(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"GitGraphGrammar"),Ce,or=t(()=>Ce??(Ce=c(`{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}`)),"RadarGrammar"),Ae,yr=t(()=>Ae??(Ae=c(`{"$type":"Grammar","isDeclared":true,"name":"Treemap","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","}},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)),"TreemapGrammar"),fr={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},dr={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},$r={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},cr={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},gr={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Tr={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Rr={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},v={AstReflection:t(()=>new ke,"AstReflection")},vr={Grammar:t(()=>sr(),"Grammar"),LanguageMetaData:t(()=>fr,"LanguageMetaData"),parser:{}},hr={Grammar:t(()=>ir(),"Grammar"),LanguageMetaData:t(()=>dr,"LanguageMetaData"),parser:{}},Cr={Grammar:t(()=>ur(),"Grammar"),LanguageMetaData:t(()=>$r,"LanguageMetaData"),parser:{}},Ar={Grammar:t(()=>mr(),"Grammar"),LanguageMetaData:t(()=>cr,"LanguageMetaData"),parser:{}},kr={Grammar:t(()=>pr(),"Grammar"),LanguageMetaData:t(()=>gr,"LanguageMetaData"),parser:{}},wr={Grammar:t(()=>or(),"Grammar"),LanguageMetaData:t(()=>Tr,"LanguageMetaData"),parser:{}},xr={Grammar:t(()=>yr(),"Grammar"),LanguageMetaData:t(()=>Rr,"LanguageMetaData"),parser:{}},Gr=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,Er=/accTitle[\t ]*:([^\n\r]*)/,Sr=/title([\t ][^\n\r]*|)/,Ir={ACC_DESCR:Gr,ACC_TITLE:Er,TITLE:Sr},C,ae=(C=class extends Fe{runConverter(e,r,l){let n=this.runCommonConverter(e,r,l);return n===void 0&&(n=this.runCustomConverter(e,r,l)),n===void 0?super.runConverter(e,r,l):n}runCommonConverter(e,r,l){const n=Ir[e.name];if(n===void 0)return;const i=n.exec(r);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,`
|
| 2 |
+
`)}}},t(C,"AbstractMermaidValueConverter"),C),A,ne=(A=class extends ae{runCustomConverter(e,r,l){}},t(A,"CommonValueConverter"),A),k,d=(k=class extends We{constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,r,l){const n=super.buildKeywordTokens(e,r,l);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},t(k,"AbstractMermaidTokenBuilder"),k),w;w=class extends d{},t(w,"CommonTokenBuilder");var x,Pr=(x=class extends d{constructor(){super(["gitGraph"])}},t(x,"GitGraphTokenBuilder"),x),we={parser:{TokenBuilder:t(()=>new Pr,"TokenBuilder"),ValueConverter:t(()=>new ne,"ValueConverter")}};function xe(a=g){const e=s(T(a),v),r=s(R({shared:e}),kr,we);return e.ServiceRegistry.register(r),{shared:e,GitGraph:r}}t(xe,"createGitGraphServices");var G,_r=(G=class extends d{constructor(){super(["info","showInfo"])}},t(G,"InfoTokenBuilder"),G),Ge={parser:{TokenBuilder:t(()=>new _r,"TokenBuilder"),ValueConverter:t(()=>new ne,"ValueConverter")}};function Ee(a=g){const e=s(T(a),v),r=s(R({shared:e}),vr,Ge);return e.ServiceRegistry.register(r),{shared:e,Info:r}}t(Ee,"createInfoServices");var E,br=(E=class extends d{constructor(){super(["packet"])}},t(E,"PacketTokenBuilder"),E),Se={parser:{TokenBuilder:t(()=>new br,"TokenBuilder"),ValueConverter:t(()=>new ne,"ValueConverter")}};function Ie(a=g){const e=s(T(a),v),r=s(R({shared:e}),hr,Se);return e.ServiceRegistry.register(r),{shared:e,Packet:r}}t(Ie,"createPacketServices");var S,Lr=(S=class extends d{constructor(){super(["pie","showData"])}},t(S,"PieTokenBuilder"),S),I,Dr=(I=class extends ae{runCustomConverter(e,r,l){if(e.name==="PIE_SECTION_LABEL")return r.replace(/"/g,"").trim()}},t(I,"PieValueConverter"),I),Pe={parser:{TokenBuilder:t(()=>new Lr,"TokenBuilder"),ValueConverter:t(()=>new Dr,"ValueConverter")}};function _e(a=g){const e=s(T(a),v),r=s(R({shared:e}),Cr,Pe);return e.ServiceRegistry.register(r),{shared:e,Pie:r}}t(_e,"createPieServices");var P,Kr=(P=class extends d{constructor(){super(["architecture"])}},t(P,"ArchitectureTokenBuilder"),P),_,Mr=(_=class extends ae{runCustomConverter(e,r,l){if(e.name==="ARCH_ICON")return r.replace(/[()]/g,"").trim();if(e.name==="ARCH_TEXT_ICON")return r.replace(/["()]/g,"");if(e.name==="ARCH_TITLE")return r.replace(/[[\]]/g,"").trim()}},t(_,"ArchitectureValueConverter"),_),be={parser:{TokenBuilder:t(()=>new Kr,"TokenBuilder"),ValueConverter:t(()=>new Mr,"ValueConverter")}};function Le(a=g){const e=s(T(a),v),r=s(R({shared:e}),Ar,be);return e.ServiceRegistry.register(r),{shared:e,Architecture:r}}t(Le,"createArchitectureServices");var b,Or=(b=class extends d{constructor(){super(["radar-beta"])}},t(b,"RadarTokenBuilder"),b),De={parser:{TokenBuilder:t(()=>new Or,"TokenBuilder"),ValueConverter:t(()=>new ne,"ValueConverter")}};function Ke(a=g){const e=s(T(a),v),r=s(R({shared:e}),wr,De);return e.ServiceRegistry.register(r),{shared:e,Radar:r}}t(Ke,"createRadarServices");var L,Nr=(L=class extends d{constructor(){super(["treemap"])}},t(L,"TreemapTokenBuilder"),L),Hr=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,D,Vr=(D=class extends ae{runCustomConverter(e,r,l){if(e.name==="NUMBER2")return parseFloat(r.replace(/,/g,""));if(e.name==="SEPARATOR")return r.substring(1,r.length-1);if(e.name==="STRING2")return r.substring(1,r.length-1);if(e.name==="INDENTATION")return r.length;if(e.name==="ClassDef"){if(typeof r!="string")return r;const n=Hr.exec(r);if(n)return{$type:"ClassDefStatement",className:n[1],styleText:n[2]||void 0}}}},t(D,"TreemapValueConverter"),D);function Me(a){const e=a.validation.TreemapValidator,r=a.validation.ValidationRegistry;if(r){const l={Treemap:e.checkSingleRoot.bind(e)};r.register(l,e)}}t(Me,"registerValidationChecks");var K,Br=(K=class{checkSingleRoot(e,r){let l;for(const n of e.TreemapRows)n.item&&(l===void 0&&n.indent===void 0?l=0:n.indent===void 0?r("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}):l!==void 0&&l>=parseInt(n.indent,10)&&r("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}))}},t(K,"TreemapValidator"),K),Oe={parser:{TokenBuilder:t(()=>new Nr,"TokenBuilder"),ValueConverter:t(()=>new Vr,"ValueConverter")},validation:{TreemapValidator:t(()=>new Br,"TreemapValidator")}};function Ne(a=g){const e=s(T(a),v),r=s(R({shared:e}),xr,Oe);return e.ServiceRegistry.register(r),Me(r),{shared:e,Treemap:r}}t(Ne,"createTreemapServices");var o={},jr={info:t(async()=>{const{createInfoServices:a}=await $(async()=>{const{createInfoServices:r}=await Promise.resolve().then(()=>Ur);return{createInfoServices:r}},void 0),e=a().Info.parser.LangiumParser;o.info=e},"info"),packet:t(async()=>{const{createPacketServices:a}=await $(async()=>{const{createPacketServices:r}=await Promise.resolve().then(()=>zr);return{createPacketServices:r}},void 0),e=a().Packet.parser.LangiumParser;o.packet=e},"packet"),pie:t(async()=>{const{createPieServices:a}=await $(async()=>{const{createPieServices:r}=await Promise.resolve().then(()=>Jr);return{createPieServices:r}},void 0),e=a().Pie.parser.LangiumParser;o.pie=e},"pie"),architecture:t(async()=>{const{createArchitectureServices:a}=await $(async()=>{const{createArchitectureServices:r}=await Promise.resolve().then(()=>Yr);return{createArchitectureServices:r}},void 0),e=a().Architecture.parser.LangiumParser;o.architecture=e},"architecture"),gitGraph:t(async()=>{const{createGitGraphServices:a}=await $(async()=>{const{createGitGraphServices:r}=await Promise.resolve().then(()=>Zr);return{createGitGraphServices:r}},void 0),e=a().GitGraph.parser.LangiumParser;o.gitGraph=e},"gitGraph"),radar:t(async()=>{const{createRadarServices:a}=await $(async()=>{const{createRadarServices:r}=await Promise.resolve().then(()=>Xr);return{createRadarServices:r}},void 0),e=a().Radar.parser.LangiumParser;o.radar=e},"radar"),treemap:t(async()=>{const{createTreemapServices:a}=await $(async()=>{const{createTreemapServices:r}=await Promise.resolve().then(()=>qr);return{createTreemapServices:r}},void 0),e=a().Treemap.parser.LangiumParser;o.treemap=e},"treemap")};async function Fr(a,e){const r=jr[a];if(!r)throw new Error(`Unknown diagram type: ${a}`);o[a]||await r();const n=o[a].parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new Wr(n);return n.value}t(Fr,"parse");var M,Wr=(M=class extends Error{constructor(e){const r=e.lexerErrors.map(n=>n.message).join(`
|
| 3 |
+
`),l=e.parserErrors.map(n=>n.message).join(`
|
| 4 |
+
`);super(`Parsing failed: ${r} ${l}`),this.result=e}},t(M,"MermaidParseError"),M);const Ur=Object.freeze(Object.defineProperty({__proto__:null,InfoModule:Ge,createInfoServices:Ee},Symbol.toStringTag,{value:"Module"})),zr=Object.freeze(Object.defineProperty({__proto__:null,PacketModule:Se,createPacketServices:Ie},Symbol.toStringTag,{value:"Module"})),Jr=Object.freeze(Object.defineProperty({__proto__:null,PieModule:Pe,createPieServices:_e},Symbol.toStringTag,{value:"Module"})),Yr=Object.freeze(Object.defineProperty({__proto__:null,ArchitectureModule:be,createArchitectureServices:Le},Symbol.toStringTag,{value:"Module"})),Zr=Object.freeze(Object.defineProperty({__proto__:null,GitGraphModule:we,createGitGraphServices:xe},Symbol.toStringTag,{value:"Module"})),Xr=Object.freeze(Object.defineProperty({__proto__:null,RadarModule:De,createRadarServices:Ke},Symbol.toStringTag,{value:"Module"})),qr=Object.freeze(Object.defineProperty({__proto__:null,TreemapModule:Oe,createTreemapServices:Ne},Symbol.toStringTag,{value:"Module"}));export{$ as _,Fr as p};
|
| 5 |
+
//# sourceMappingURL=@mermaid-js-Ce0__7Tp.js.map
|
assets/@mermaid-js-Ce0__7Tp.js.map
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/@octokit-XqW7jd-l.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{g as w}from"./universal-user-agent-CLgqIJsR.js";import{C as x}from"./before-after-hook-BZXXVfxC.js";import{D as O}from"./deprecation-B1cCxCxj.js";import{o as L}from"./once-CogZSWpx.js";var K="9.0.6",N=`octokit-endpoint.js/${K} ${w()}`,J={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":N},mediaType:{format:""}};function X(e){return e?Object.keys(e).reduce((r,s)=>(r[s.toLowerCase()]=e[s],r),{}):{}}function Z(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!=="[object Object]")return!1;const r=Object.getPrototypeOf(e);if(r===null)return!0;const s=Object.prototype.hasOwnProperty.call(r,"constructor")&&r.constructor;return typeof s=="function"&&s instanceof s&&Function.prototype.call(s)===Function.prototype.call(e)}function j(e,r){const s=Object.assign({},e);return Object.keys(r).forEach(t=>{Z(r[t])?t in e?s[t]=j(e[t],r[t]):Object.assign(s,{[t]:r[t]}):Object.assign(s,{[t]:r[t]})}),s}function S(e){for(const r in e)e[r]===void 0&&delete e[r];return e}function P(e,r,s){var o;if(typeof r=="string"){let[i,n]=r.split(" ");s=Object.assign(n?{method:i,url:n}:{url:i},s)}else s=Object.assign({},r);s.headers=X(s.headers),S(s),S(s.headers);const t=j(e||{},s);return s.url==="/graphql"&&(e&&((o=e.mediaType.previews)!=null&&o.length)&&(t.mediaType.previews=e.mediaType.previews.filter(i=>!t.mediaType.previews.includes(i)).concat(t.mediaType.previews)),t.mediaType.previews=(t.mediaType.previews||[]).map(i=>i.replace(/-preview/,""))),t}function Y(e,r){const s=/\?/.test(e)?"&":"?",t=Object.keys(r);return t.length===0?e:e+s+t.map(o=>o==="q"?"q="+r.q.split("+").map(encodeURIComponent).join("+"):`${o}=${encodeURIComponent(r[o])}`).join("&")}var Q=/\{[^{}}]+\}/g;function ee(e){return e.replace(new RegExp("(?:^\\W+)|(?:(?<!\\W)\\W+$)","g"),"").split(/,/)}function re(e){const r=e.match(Q);return r?r.map(ee).reduce((s,t)=>s.concat(t),[]):[]}function R(e,r){const s={__proto__:null};for(const t of Object.keys(e))r.indexOf(t)===-1&&(s[t]=e[t]);return s}function I(e){return e.split(/(%[0-9A-Fa-f]{2})/g).map(function(r){return/%[0-9A-Fa-f]/.test(r)||(r=encodeURI(r).replace(/%5B/g,"[").replace(/%5D/g,"]")),r}).join("")}function E(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(r){return"%"+r.charCodeAt(0).toString(16).toUpperCase()})}function _(e,r,s){return r=e==="+"||e==="#"?I(r):E(r),s?E(s)+"="+r:r}function T(e){return e!=null}function f(e){return e===";"||e==="&"||e==="?"}function se(e,r,s,t){var o=e[s],i=[];if(T(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="boolean")o=o.toString(),t&&t!=="*"&&(o=o.substring(0,parseInt(t,10))),i.push(_(r,o,f(r)?s:""));else if(t==="*")Array.isArray(o)?o.filter(T).forEach(function(n){i.push(_(r,n,f(r)?s:""))}):Object.keys(o).forEach(function(n){T(o[n])&&i.push(_(r,o[n],n))});else{const n=[];Array.isArray(o)?o.filter(T).forEach(function(a){n.push(_(r,a))}):Object.keys(o).forEach(function(a){T(o[a])&&(n.push(E(a)),n.push(_(r,o[a].toString())))}),f(r)?i.push(E(s)+"="+n.join(",")):n.length!==0&&i.push(n.join(","))}else r===";"?T(o)&&i.push(E(s)):o===""&&(r==="&"||r==="?")?i.push(E(s)+"="):o===""&&i.push("");return i}function oe(e){return{expand:te.bind(null,e)}}function te(e,r){var s=["+","#",".","/",";","?","&"];return e=e.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(t,o,i){if(o){let a="";const p=[];if(s.indexOf(o.charAt(0))!==-1&&(a=o.charAt(0),o=o.substr(1)),o.split(/,/g).forEach(function(l){var u=/([^:\*]*)(?::(\d+)|(\*))?/.exec(l);p.push(se(r,a,u[1],u[2]||u[3]))}),a&&a!=="+"){var n=",";return a==="?"?n="&":a!=="#"&&(n=a),(p.length!==0?a:"")+p.join(n)}else return p.join(",")}else return I(i)}),e==="/"?e:e.replace(/\/$/,"")}function q(e){var u;let r=e.method.toUpperCase(),s=(e.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),t=Object.assign({},e.headers),o,i=R(e,["method","baseUrl","url","headers","request","mediaType"]);const n=re(s);s=oe(s).expand(i),/^http/.test(s)||(s=e.baseUrl+s);const a=Object.keys(e).filter(c=>n.includes(c)).concat("baseUrl"),p=R(i,a);if(!/application\/octet-stream/i.test(t.accept)&&(e.mediaType.format&&(t.accept=t.accept.split(/,/).map(c=>c.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${e.mediaType.format}`)).join(",")),s.endsWith("/graphql")&&(u=e.mediaType.previews)!=null&&u.length)){const c=t.accept.match(new RegExp("(?<![\\w-])[\\w-]+(?=-preview)","g"))||[];t.accept=c.concat(e.mediaType.previews).map(g=>{const h=e.mediaType.format?`.${e.mediaType.format}`:"+json";return`application/vnd.github.${g}-preview${h}`}).join(",")}return["GET","HEAD"].includes(r)?s=Y(s,p):"data"in p?o=p.data:Object.keys(p).length&&(o=p),!t["content-type"]&&typeof o<"u"&&(t["content-type"]="application/json; charset=utf-8"),["PATCH","PUT"].includes(r)&&typeof o>"u"&&(o=""),Object.assign({method:r,url:s,headers:t},typeof o<"u"?{body:o}:null,e.request?{request:e.request}:null)}function ne(e,r,s){return q(P(e,r,s))}function H(e,r){const s=P(e,r),t=ne.bind(null,s);return Object.assign(t,{DEFAULTS:s,defaults:H.bind(null,s),merge:P.bind(null,s),parse:q})}var ie=H(null,J),ae=L(e=>console.warn(e)),ce=L(e=>console.warn(e)),b=class extends Error{constructor(e,r,s){super(e),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.name="HttpError",this.status=r;let t;"headers"in s&&typeof s.headers<"u"&&(t=s.headers),"response"in s&&(this.response=s.response,t=s.response.headers);const o=Object.assign({},s.request);s.request.headers.authorization&&(o.headers=Object.assign({},s.request.headers,{authorization:s.request.headers.authorization.replace(new RegExp("(?<! ) .*$")," [REDACTED]")})),o.url=o.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]"),this.request=o,Object.defineProperty(this,"code",{get(){return ae(new O("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")),r}}),Object.defineProperty(this,"headers",{get(){return ce(new O("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.")),t||{}}})}},pe="8.4.1";function le(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!=="[object Object]")return!1;const r=Object.getPrototypeOf(e);if(r===null)return!0;const s=Object.prototype.hasOwnProperty.call(r,"constructor")&&r.constructor;return typeof s=="function"&&s instanceof s&&Function.prototype.call(s)===Function.prototype.call(e)}function ue(e){return e.arrayBuffer()}function F(e){var a,p,l,u;const r=e.request&&e.request.log?e.request.log:console,s=((a=e.request)==null?void 0:a.parseSuccessResponseBody)!==!1;(le(e.body)||Array.isArray(e.body))&&(e.body=JSON.stringify(e.body));let t={},o,i,{fetch:n}=globalThis;if((p=e.request)!=null&&p.fetch&&(n=e.request.fetch),!n)throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing");return n(e.url,{method:e.method,body:e.body,redirect:(l=e.request)==null?void 0:l.redirect,headers:e.headers,signal:(u=e.request)==null?void 0:u.signal,...e.body&&{duplex:"half"}}).then(async c=>{i=c.url,o=c.status;for(const g of c.headers)t[g[0]]=g[1];if("deprecation"in t){const g=t.link&&t.link.match(/<([^<>]+)>; rel="deprecation"/),h=g&&g.pop();r.warn(`[@octokit/request] "${e.method} ${e.url}" is deprecated. It is scheduled to be removed on ${t.sunset}${h?`. See ${h}`:""}`)}if(!(o===204||o===205)){if(e.method==="HEAD"){if(o<400)return;throw new b(c.statusText,o,{response:{url:i,status:o,headers:t,data:void 0},request:e})}if(o===304)throw new b("Not modified",o,{response:{url:i,status:o,headers:t,data:await G(c)},request:e});if(o>=400){const g=await G(c);throw new b(ge(g),o,{response:{url:i,status:o,headers:t,data:g},request:e})}return s?await G(c):c.body}}).then(c=>({status:o,url:i,headers:t,data:c})).catch(c=>{if(c instanceof b)throw c;if(c.name==="AbortError")throw c;let g=c.message;throw c.name==="TypeError"&&"cause"in c&&(c.cause instanceof Error?g=c.cause.message:typeof c.cause=="string"&&(g=c.cause)),new b(g,500,{request:e})})}async function G(e){const r=e.headers.get("content-type");return/application\/json/.test(r)?e.json().catch(()=>e.text()).catch(()=>""):!r||/^text\/|charset=utf-8$/.test(r)?e.text():ue(e)}function ge(e){if(typeof e=="string")return e;let r;return"documentation_url"in e?r=` - ${e.documentation_url}`:r="","message"in e?Array.isArray(e.errors)?`${e.message}: ${e.errors.map(JSON.stringify).join(", ")}${r}`:`${e.message}${r}`:`Unknown error: ${JSON.stringify(e)}`}function y(e,r){const s=e.defaults(r);return Object.assign(function(o,i){const n=s.merge(o,i);if(!n.request||!n.request.hook)return F(s.parse(n));const a=(p,l)=>F(s.parse(s.merge(p,l)));return Object.assign(a,{endpoint:s,defaults:y.bind(null,s)}),n.request.hook(a,n)},{endpoint:s,defaults:y.bind(null,s)})}var k=y(ie,{headers:{"user-agent":`octokit-request.js/${pe} ${w()}`}}),de="7.1.1";function me(e){return`Request failed due to following response errors:
|
| 2 |
+
`+e.errors.map(r=>` - ${r.message}`).join(`
|
| 3 |
+
`)}var Te=class extends Error{constructor(e,r,s){super(me(s)),this.request=e,this.headers=r,this.response=s,this.name="GraphqlResponseError",this.errors=s.errors,this.data=s.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},Ee=["method","baseUrl","url","headers","request","query","mediaType"],he=["query","method","url"],U=/\/api\/v3\/?$/;function _e(e,r,s){if(s){if(typeof r=="string"&&"query"in s)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(const n in s)if(he.includes(n))return Promise.reject(new Error(`[@octokit/graphql] "${n}" cannot be used as variable name`))}const t=typeof r=="string"?Object.assign({query:r},s):r,o=Object.keys(t).reduce((n,a)=>Ee.includes(a)?(n[a]=t[a],n):(n.variables||(n.variables={}),n.variables[a]=t[a],n),{}),i=t.baseUrl||e.endpoint.DEFAULTS.baseUrl;return U.test(i)&&(o.url=i.replace(U,"/api/graphql")),e(o).then(n=>{if(n.data.errors){const a={};for(const p of Object.keys(n.headers))a[p]=n.headers[p];throw new Te(o,a,n.data)}return n.data.data})}function v(e,r){const s=e.defaults(r);return Object.assign((o,i)=>_e(s,o,i),{defaults:v.bind(null,s),endpoint:s.endpoint})}v(k,{headers:{"user-agent":`octokit-graphql.js/${de} ${w()}`},method:"POST",url:"/graphql"});function be(e){return v(e,{method:"POST",url:"/graphql"})}var we=/^v1\./,fe=/^ghs_/,Ge=/^ghu_/;async function Pe(e){const r=e.split(/\./).length===3,s=we.test(e)||fe.test(e),t=Ge.test(e);return{type:"token",token:e,tokenType:r?"app":s?"installation":t?"user-to-server":"oauth"}}function ye(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function ke(e,r,s,t){const o=r.endpoint.merge(s,t);return o.headers.authorization=ye(e),r(o)}var ve=function(r){if(!r)throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof r!="string")throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return r=r.replace(/^(token|bearer) +/i,""),Object.assign(Pe.bind(null,r),{hook:ke.bind(null,r)})},W="5.2.2",D=()=>{},Ae=console.warn.bind(console),Oe=console.error.bind(console);function Se(e={}){return typeof e.debug!="function"&&(e.debug=D),typeof e.info!="function"&&(e.info=D),typeof e.warn!="function"&&(e.warn=Ae),typeof e.error!="function"&&(e.error=Oe),e}var C=`octokit-core.js/${W} ${w()}`,m,Re=(m=class{static defaults(r){return class extends this{constructor(...t){const o=t[0]||{};if(typeof r=="function"){super(r(o));return}super(Object.assign({},r,o,o.userAgent&&r.userAgent?{userAgent:`${o.userAgent} ${r.userAgent}`}:null))}}}static plugin(...r){var o;const s=this.plugins;return o=class extends this{},o.plugins=s.concat(r.filter(n=>!s.includes(n))),o}constructor(r={}){const s=new x,t={baseUrl:k.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},r.request,{hook:s.bind(null,"request")}),mediaType:{previews:[],format:""}};if(t.headers["user-agent"]=r.userAgent?`${r.userAgent} ${C}`:C,r.baseUrl&&(t.baseUrl=r.baseUrl),r.previews&&(t.mediaType.previews=r.previews),r.timeZone&&(t.headers["time-zone"]=r.timeZone),this.request=k.defaults(t),this.graphql=be(this.request).defaults(t),this.log=Se(r.log),this.hook=s,r.authStrategy){const{authStrategy:i,...n}=r,a=i(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:n},r.auth));s.wrap("request",a.hook),this.auth=a}else if(!r.auth)this.auth=async()=>({type:"unauthenticated"});else{const i=ve(r.auth);s.wrap("request",i.hook),this.auth=i}const o=this.constructor;for(let i=0;i<o.plugins.length;++i)Object.assign(this,o.plugins[i](this,r))}},m.VERSION=W,m.plugins=[],m),Fe="4.0.1";function B(e){e.hook.wrap("request",(r,s)=>{e.log.debug("request",s);const t=Date.now(),o=e.request.endpoint.parse(s),i=o.url.replace(s.baseUrl,"");return r(s).then(n=>(e.log.info(`${o.method} ${i} - ${n.status} in ${Date.now()-t}ms`),n)).catch(n=>{throw e.log.info(`${o.method} ${i} - ${n.status} in ${Date.now()-t}ms`),n})})}B.VERSION=Fe;var Ue="11.4.4-cjs.2";function De(e){if(!e.data)return{...e,data:[]};if(!("total_count"in e.data&&!("url"in e.data)))return e;const s=e.data.incomplete_results,t=e.data.repository_selection,o=e.data.total_count;delete e.data.incomplete_results,delete e.data.repository_selection,delete e.data.total_count;const i=Object.keys(e.data)[0],n=e.data[i];return e.data=n,typeof s<"u"&&(e.data.incomplete_results=s),typeof t<"u"&&(e.data.repository_selection=t),e.data.total_count=o,e}function A(e,r,s){const t=typeof r=="function"?r.endpoint(s):e.request.endpoint(r,s),o=typeof r=="function"?r:e.request,i=t.method,n=t.headers;let a=t.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!a)return{done:!0};try{const p=await o({method:i,url:a,headers:n}),l=De(p);return a=((l.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],{value:l}}catch(p){if(p.status!==409)throw p;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function V(e,r,s,t){return typeof s=="function"&&(t=s,s=void 0),$(e,[],A(e,r,s)[Symbol.asyncIterator](),t)}function $(e,r,s,t){return s.next().then(o=>{if(o.done)return r;let i=!1;function n(){i=!0}return r=r.concat(t?t(o.value,n):o.value.data),i?r:$(e,r,s,t)})}Object.assign(V,{iterator:A});function z(e){return{paginate:Object.assign(V.bind(null,e),{iterator:A.bind(null,e)})}}z.VERSION=Ue;var Ce="13.3.2-cjs.1",Le={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"],createOrUpdateEnvironmentSecret:["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],createOrgVariable:["POST /orgs/{org}/actions/variables"],createRegistrationTokenForOrg:["POST /orgs/{org}/actions/runners/registration-token"],createRegistrationTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/registration-token"],createRemoveTokenForOrg:["POST /orgs/{org}/actions/runners/remove-token"],createRemoveTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/remove-token"],createRepoVariable:["POST /repos/{owner}/{repo}/actions/variables"],createWorkflowDispatch:["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],deleteActionsCacheById:["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],deleteActionsCacheByKey:["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],deleteArtifact:["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],deleteEnvironmentSecret:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],deleteEnvironmentVariable:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],deleteOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}"],deleteOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],deleteRepoVariable:["DELETE /repos/{owner}/{repo}/actions/variables/{name}"],deleteSelfHostedRunnerFromOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}"],deleteSelfHostedRunnerFromRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],deleteWorkflowRun:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],deleteWorkflowRunLogs:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],disableSelectedRepositoryGithubActionsOrganization:["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],disableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],downloadArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],downloadJobLogsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],downloadWorkflowRunAttemptLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],downloadWorkflowRunLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],enableSelectedRepositoryGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],enableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],forceCancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"],generateRunnerJitconfigForOrg:["POST /orgs/{org}/actions/runners/generate-jitconfig"],generateRunnerJitconfigForRepo:["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"],getActionsCacheList:["GET /repos/{owner}/{repo}/actions/caches"],getActionsCacheUsage:["GET /repos/{owner}/{repo}/actions/cache/usage"],getActionsCacheUsageByRepoForOrg:["GET /orgs/{org}/actions/cache/usage-by-repository"],getActionsCacheUsageForOrg:["GET /orgs/{org}/actions/cache/usage"],getAllowedActionsOrganization:["GET /orgs/{org}/actions/permissions/selected-actions"],getAllowedActionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],getArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],getCustomOidcSubClaimForRepo:["GET /repos/{owner}/{repo}/actions/oidc/customization/sub"],getEnvironmentPublicKey:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"],getEnvironmentSecret:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],getEnvironmentVariable:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],getGithubActionsDefaultWorkflowPermissionsOrganization:["GET /orgs/{org}/actions/permissions/workflow"],getGithubActionsDefaultWorkflowPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/workflow"],getGithubActionsPermissionsOrganization:["GET /orgs/{org}/actions/permissions"],getGithubActionsPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions"],getJobForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],getOrgPublicKey:["GET /orgs/{org}/actions/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}"],getOrgVariable:["GET /orgs/{org}/actions/variables/{name}"],getPendingDeploymentsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],getRepoPermissions:["GET /repos/{owner}/{repo}/actions/permissions",{},{renamed:["actions","getGithubActionsPermissionsRepository"]}],getRepoPublicKey:["GET /repos/{owner}/{repo}/actions/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],getRepoVariable:["GET /repos/{owner}/{repo}/actions/variables/{name}"],getReviewsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],getSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}"],getSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],getWorkflow:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],getWorkflowAccessToRepository:["GET /repos/{owner}/{repo}/actions/permissions/access"],getWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],getWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],getWorkflowRunUsage:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],getWorkflowUsage:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],listArtifactsForRepo:["GET /repos/{owner}/{repo}/actions/artifacts"],listEnvironmentSecrets:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"],listEnvironmentVariables:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"],listJobsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],listJobsForWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],listLabelsForSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}/labels"],listLabelsForSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],listOrgSecrets:["GET /orgs/{org}/actions/secrets"],listOrgVariables:["GET /orgs/{org}/actions/variables"],listRepoOrganizationSecrets:["GET /repos/{owner}/{repo}/actions/organization-secrets"],listRepoOrganizationVariables:["GET /repos/{owner}/{repo}/actions/organization-variables"],listRepoSecrets:["GET /repos/{owner}/{repo}/actions/secrets"],listRepoVariables:["GET /repos/{owner}/{repo}/actions/variables"],listRepoWorkflows:["GET /repos/{owner}/{repo}/actions/workflows"],listRunnerApplicationsForOrg:["GET /orgs/{org}/actions/runners/downloads"],listRunnerApplicationsForRepo:["GET /repos/{owner}/{repo}/actions/runners/downloads"],listSelectedReposForOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],listSelectedReposForOrgVariable:["GET /orgs/{org}/actions/variables/{name}/repositories"],listSelectedRepositoriesEnabledGithubActionsOrganization:["GET /orgs/{org}/actions/permissions/repositories"],listSelfHostedRunnersForOrg:["GET /orgs/{org}/actions/runners"],listSelfHostedRunnersForRepo:["GET /repos/{owner}/{repo}/actions/runners"],listWorkflowRunArtifacts:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],listWorkflowRuns:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],listWorkflowRunsForRepo:["GET /repos/{owner}/{repo}/actions/runs"],reRunJobForWorkflowRun:["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],reRunWorkflow:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],reRunWorkflowFailedJobs:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],removeAllCustomLabelsFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],removeAllCustomLabelsFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],removeCustomLabelFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],removeCustomLabelFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],reviewCustomGatesForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"],reviewPendingDeploymentsForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],setAllowedActionsOrganization:["PUT /orgs/{org}/actions/permissions/selected-actions"],setAllowedActionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],setCustomLabelsForSelfHostedRunnerForOrg:["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],setCustomLabelsForSelfHostedRunnerForRepo:["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],setCustomOidcSubClaimForRepo:["PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"],setGithubActionsDefaultWorkflowPermissionsOrganization:["PUT /orgs/{org}/actions/permissions/workflow"],setGithubActionsDefaultWorkflowPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],setGithubActionsPermissionsOrganization:["PUT /orgs/{org}/actions/permissions"],setGithubActionsPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],setSelectedReposForOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories"],setSelectedRepositoriesEnabledGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories"],setWorkflowAccessToRepository:["PUT /repos/{owner}/{repo}/actions/permissions/access"],updateEnvironmentVariable:["PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],updateOrgVariable:["PATCH /orgs/{org}/actions/variables/{name}"],updateRepoVariable:["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]},activity:{checkRepoIsStarredByAuthenticatedUser:["GET /user/starred/{owner}/{repo}"],deleteRepoSubscription:["DELETE /repos/{owner}/{repo}/subscription"],deleteThreadSubscription:["DELETE /notifications/threads/{thread_id}/subscription"],getFeeds:["GET /feeds"],getRepoSubscription:["GET /repos/{owner}/{repo}/subscription"],getThread:["GET /notifications/threads/{thread_id}"],getThreadSubscriptionForAuthenticatedUser:["GET /notifications/threads/{thread_id}/subscription"],listEventsForAuthenticatedUser:["GET /users/{username}/events"],listNotificationsForAuthenticatedUser:["GET /notifications"],listOrgEventsForAuthenticatedUser:["GET /users/{username}/events/orgs/{org}"],listPublicEvents:["GET /events"],listPublicEventsForRepoNetwork:["GET /networks/{owner}/{repo}/events"],listPublicEventsForUser:["GET /users/{username}/events/public"],listPublicOrgEvents:["GET /orgs/{org}/events"],listReceivedEventsForUser:["GET /users/{username}/received_events"],listReceivedPublicEventsForUser:["GET /users/{username}/received_events/public"],listRepoEvents:["GET /repos/{owner}/{repo}/events"],listRepoNotificationsForAuthenticatedUser:["GET /repos/{owner}/{repo}/notifications"],listReposStarredByAuthenticatedUser:["GET /user/starred"],listReposStarredByUser:["GET /users/{username}/starred"],listReposWatchedByUser:["GET /users/{username}/subscriptions"],listStargazersForRepo:["GET /repos/{owner}/{repo}/stargazers"],listWatchedReposForAuthenticatedUser:["GET /user/subscriptions"],listWatchersForRepo:["GET /repos/{owner}/{repo}/subscribers"],markNotificationsAsRead:["PUT /notifications"],markRepoNotificationsAsRead:["PUT /repos/{owner}/{repo}/notifications"],markThreadAsDone:["DELETE /notifications/threads/{thread_id}"],markThreadAsRead:["PATCH /notifications/threads/{thread_id}"],setRepoSubscription:["PUT /repos/{owner}/{repo}/subscription"],setThreadSubscription:["PUT /notifications/threads/{thread_id}/subscription"],starRepoForAuthenticatedUser:["PUT /user/starred/{owner}/{repo}"],unstarRepoForAuthenticatedUser:["DELETE /user/starred/{owner}/{repo}"]},apps:{addRepoToInstallation:["PUT /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","addRepoToInstallationForAuthenticatedUser"]}],addRepoToInstallationForAuthenticatedUser:["PUT /user/installations/{installation_id}/repositories/{repository_id}"],checkToken:["POST /applications/{client_id}/token"],createFromManifest:["POST /app-manifests/{code}/conversions"],createInstallationAccessToken:["POST /app/installations/{installation_id}/access_tokens"],deleteAuthorization:["DELETE /applications/{client_id}/grant"],deleteInstallation:["DELETE /app/installations/{installation_id}"],deleteToken:["DELETE /applications/{client_id}/token"],getAuthenticated:["GET /app"],getBySlug:["GET /apps/{app_slug}"],getInstallation:["GET /app/installations/{installation_id}"],getOrgInstallation:["GET /orgs/{org}/installation"],getRepoInstallation:["GET /repos/{owner}/{repo}/installation"],getSubscriptionPlanForAccount:["GET /marketplace_listing/accounts/{account_id}"],getSubscriptionPlanForAccountStubbed:["GET /marketplace_listing/stubbed/accounts/{account_id}"],getUserInstallation:["GET /users/{username}/installation"],getWebhookConfigForApp:["GET /app/hook/config"],getWebhookDelivery:["GET /app/hook/deliveries/{delivery_id}"],listAccountsForPlan:["GET /marketplace_listing/plans/{plan_id}/accounts"],listAccountsForPlanStubbed:["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],listInstallationReposForAuthenticatedUser:["GET /user/installations/{installation_id}/repositories"],listInstallationRequestsForAuthenticatedApp:["GET /app/installation-requests"],listInstallations:["GET /app/installations"],listInstallationsForAuthenticatedUser:["GET /user/installations"],listPlans:["GET /marketplace_listing/plans"],listPlansStubbed:["GET /marketplace_listing/stubbed/plans"],listReposAccessibleToInstallation:["GET /installation/repositories"],listSubscriptionsForAuthenticatedUser:["GET /user/marketplace_purchases"],listSubscriptionsForAuthenticatedUserStubbed:["GET /user/marketplace_purchases/stubbed"],listWebhookDeliveries:["GET /app/hook/deliveries"],redeliverWebhookDelivery:["POST /app/hook/deliveries/{delivery_id}/attempts"],removeRepoFromInstallation:["DELETE /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","removeRepoFromInstallationForAuthenticatedUser"]}],removeRepoFromInstallationForAuthenticatedUser:["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],resetToken:["PATCH /applications/{client_id}/token"],revokeInstallationAccessToken:["DELETE /installation/token"],scopeToken:["POST /applications/{client_id}/token/scoped"],suspendInstallation:["PUT /app/installations/{installation_id}/suspended"],unsuspendInstallation:["DELETE /app/installations/{installation_id}/suspended"],updateWebhookConfigForApp:["PATCH /app/hook/config"]},billing:{getGithubActionsBillingOrg:["GET /orgs/{org}/settings/billing/actions"],getGithubActionsBillingUser:["GET /users/{username}/settings/billing/actions"],getGithubBillingUsageReportOrg:["GET /organizations/{org}/settings/billing/usage"],getGithubPackagesBillingOrg:["GET /orgs/{org}/settings/billing/packages"],getGithubPackagesBillingUser:["GET /users/{username}/settings/billing/packages"],getSharedStorageBillingOrg:["GET /orgs/{org}/settings/billing/shared-storage"],getSharedStorageBillingUser:["GET /users/{username}/settings/billing/shared-storage"]},checks:{create:["POST /repos/{owner}/{repo}/check-runs"],createSuite:["POST /repos/{owner}/{repo}/check-suites"],get:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],getSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],listAnnotations:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],listForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],listForSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],listSuitesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],rerequestRun:["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],rerequestSuite:["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],setSuitesPreferences:["PATCH /repos/{owner}/{repo}/check-suites/preferences"],update:["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]},codeScanning:{commitAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits"],createAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],createVariantAnalysis:["POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses"],deleteAnalysis:["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],deleteCodeqlDatabase:["DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getAlert:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",{},{renamedParameters:{alert_id:"alert_number"}}],getAnalysis:["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],getAutofix:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],getCodeqlDatabase:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getDefaultSetup:["GET /repos/{owner}/{repo}/code-scanning/default-setup"],getSarif:["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],getVariantAnalysis:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}"],getVariantAnalysisRepoTask:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}"],listAlertInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],listAlertsForOrg:["GET /orgs/{org}/code-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/code-scanning/alerts"],listAlertsInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",{},{renamed:["codeScanning","listAlertInstances"]}],listCodeqlDatabases:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"],listRecentAnalyses:["GET /repos/{owner}/{repo}/code-scanning/analyses"],updateAlert:["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],updateDefaultSetup:["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"],uploadSarif:["POST /repos/{owner}/{repo}/code-scanning/sarifs"]},codeSecurity:{attachConfiguration:["POST /orgs/{org}/code-security/configurations/{configuration_id}/attach"],attachEnterpriseConfiguration:["POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach"],createConfiguration:["POST /orgs/{org}/code-security/configurations"],createConfigurationForEnterprise:["POST /enterprises/{enterprise}/code-security/configurations"],deleteConfiguration:["DELETE /orgs/{org}/code-security/configurations/{configuration_id}"],deleteConfigurationForEnterprise:["DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],detachConfiguration:["DELETE /orgs/{org}/code-security/configurations/detach"],getConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}"],getConfigurationForRepository:["GET /repos/{owner}/{repo}/code-security-configuration"],getConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations"],getConfigurationsForOrg:["GET /orgs/{org}/code-security/configurations"],getDefaultConfigurations:["GET /orgs/{org}/code-security/configurations/defaults"],getDefaultConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/defaults"],getRepositoriesForConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"],getRepositoriesForEnterpriseConfiguration:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"],getSingleConfigurationForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],setConfigurationAsDefault:["PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults"],setConfigurationAsDefaultForEnterprise:["PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults"],updateConfiguration:["PATCH /orgs/{org}/code-security/configurations/{configuration_id}"],updateEnterpriseConfiguration:["PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]},codesOfConduct:{getAllCodesOfConduct:["GET /codes_of_conduct"],getConductCode:["GET /codes_of_conduct/{key}"]},codespaces:{addRepositoryForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],checkPermissionsForDevcontainer:["GET /repos/{owner}/{repo}/codespaces/permissions_check"],codespaceMachinesForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/machines"],createForAuthenticatedUser:["POST /user/codespaces"],createOrUpdateOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],createOrUpdateSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}"],createWithPrForAuthenticatedUser:["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],createWithRepoForAuthenticatedUser:["POST /repos/{owner}/{repo}/codespaces"],deleteForAuthenticatedUser:["DELETE /user/codespaces/{codespace_name}"],deleteFromOrganization:["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],deleteOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],deleteSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}"],exportForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/exports"],getCodespacesForUserInOrg:["GET /orgs/{org}/members/{username}/codespaces"],getExportDetailsForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/exports/{export_id}"],getForAuthenticatedUser:["GET /user/codespaces/{codespace_name}"],getOrgPublicKey:["GET /orgs/{org}/codespaces/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}"],getPublicKeyForAuthenticatedUser:["GET /user/codespaces/secrets/public-key"],getRepoPublicKey:["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],getSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}"],listDevcontainersInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/devcontainers"],listForAuthenticatedUser:["GET /user/codespaces"],listInOrganization:["GET /orgs/{org}/codespaces",{},{renamedParameters:{org_id:"org"}}],listInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces"],listOrgSecrets:["GET /orgs/{org}/codespaces/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/codespaces/secrets"],listRepositoriesForSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}/repositories"],listSecretsForAuthenticatedUser:["GET /user/codespaces/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],preFlightWithRepoForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/new"],publishForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/publish"],removeRepositoryForSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],repoMachinesForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/machines"],setRepositoriesForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],startForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/start"],stopForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/stop"],stopInOrganization:["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],updateForAuthenticatedUser:["PATCH /user/codespaces/{codespace_name}"]},copilot:{addCopilotSeatsForTeams:["POST /orgs/{org}/copilot/billing/selected_teams"],addCopilotSeatsForUsers:["POST /orgs/{org}/copilot/billing/selected_users"],cancelCopilotSeatAssignmentForTeams:["DELETE /orgs/{org}/copilot/billing/selected_teams"],cancelCopilotSeatAssignmentForUsers:["DELETE /orgs/{org}/copilot/billing/selected_users"],copilotMetricsForOrganization:["GET /orgs/{org}/copilot/metrics"],copilotMetricsForTeam:["GET /orgs/{org}/team/{team_slug}/copilot/metrics"],getCopilotOrganizationDetails:["GET /orgs/{org}/copilot/billing"],getCopilotSeatDetailsForUser:["GET /orgs/{org}/members/{username}/copilot"],listCopilotSeats:["GET /orgs/{org}/copilot/billing/seats"],usageMetricsForOrg:["GET /orgs/{org}/copilot/usage"],usageMetricsForTeam:["GET /orgs/{org}/team/{team_slug}/copilot/usage"]},dependabot:{addSelectedRepoToOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],deleteOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],getAlert:["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],getOrgPublicKey:["GET /orgs/{org}/dependabot/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}"],getRepoPublicKey:["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],listAlertsForEnterprise:["GET /enterprises/{enterprise}/dependabot/alerts"],listAlertsForOrg:["GET /orgs/{org}/dependabot/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/dependabot/alerts"],listOrgSecrets:["GET /orgs/{org}/dependabot/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/dependabot/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],updateAlert:["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]},dependencyGraph:{createRepositorySnapshot:["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],diffRange:["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"],exportSbom:["GET /repos/{owner}/{repo}/dependency-graph/sbom"]},emojis:{get:["GET /emojis"]},gists:{checkIsStarred:["GET /gists/{gist_id}/star"],create:["POST /gists"],createComment:["POST /gists/{gist_id}/comments"],delete:["DELETE /gists/{gist_id}"],deleteComment:["DELETE /gists/{gist_id}/comments/{comment_id}"],fork:["POST /gists/{gist_id}/forks"],get:["GET /gists/{gist_id}"],getComment:["GET /gists/{gist_id}/comments/{comment_id}"],getRevision:["GET /gists/{gist_id}/{sha}"],list:["GET /gists"],listComments:["GET /gists/{gist_id}/comments"],listCommits:["GET /gists/{gist_id}/commits"],listForUser:["GET /users/{username}/gists"],listForks:["GET /gists/{gist_id}/forks"],listPublic:["GET /gists/public"],listStarred:["GET /gists/starred"],star:["PUT /gists/{gist_id}/star"],unstar:["DELETE /gists/{gist_id}/star"],update:["PATCH /gists/{gist_id}"],updateComment:["PATCH /gists/{gist_id}/comments/{comment_id}"]},git:{createBlob:["POST /repos/{owner}/{repo}/git/blobs"],createCommit:["POST /repos/{owner}/{repo}/git/commits"],createRef:["POST /repos/{owner}/{repo}/git/refs"],createTag:["POST /repos/{owner}/{repo}/git/tags"],createTree:["POST /repos/{owner}/{repo}/git/trees"],deleteRef:["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],getBlob:["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],getCommit:["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],getRef:["GET /repos/{owner}/{repo}/git/ref/{ref}"],getTag:["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],getTree:["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],listMatchingRefs:["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],updateRef:["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]},gitignore:{getAllTemplates:["GET /gitignore/templates"],getTemplate:["GET /gitignore/templates/{name}"]},interactions:{getRestrictionsForAuthenticatedUser:["GET /user/interaction-limits"],getRestrictionsForOrg:["GET /orgs/{org}/interaction-limits"],getRestrictionsForRepo:["GET /repos/{owner}/{repo}/interaction-limits"],getRestrictionsForYourPublicRepos:["GET /user/interaction-limits",{},{renamed:["interactions","getRestrictionsForAuthenticatedUser"]}],removeRestrictionsForAuthenticatedUser:["DELETE /user/interaction-limits"],removeRestrictionsForOrg:["DELETE /orgs/{org}/interaction-limits"],removeRestrictionsForRepo:["DELETE /repos/{owner}/{repo}/interaction-limits"],removeRestrictionsForYourPublicRepos:["DELETE /user/interaction-limits",{},{renamed:["interactions","removeRestrictionsForAuthenticatedUser"]}],setRestrictionsForAuthenticatedUser:["PUT /user/interaction-limits"],setRestrictionsForOrg:["PUT /orgs/{org}/interaction-limits"],setRestrictionsForRepo:["PUT /repos/{owner}/{repo}/interaction-limits"],setRestrictionsForYourPublicRepos:["PUT /user/interaction-limits",{},{renamed:["interactions","setRestrictionsForAuthenticatedUser"]}]},issues:{addAssignees:["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],addLabels:["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],addSubIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],checkUserCanBeAssigned:["GET /repos/{owner}/{repo}/assignees/{assignee}"],checkUserCanBeAssignedToIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"],create:["POST /repos/{owner}/{repo}/issues"],createComment:["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],createLabel:["POST /repos/{owner}/{repo}/labels"],createMilestone:["POST /repos/{owner}/{repo}/milestones"],deleteComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],deleteLabel:["DELETE /repos/{owner}/{repo}/labels/{name}"],deleteMilestone:["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],get:["GET /repos/{owner}/{repo}/issues/{issue_number}"],getComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],getEvent:["GET /repos/{owner}/{repo}/issues/events/{event_id}"],getLabel:["GET /repos/{owner}/{repo}/labels/{name}"],getMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],list:["GET /issues"],listAssignees:["GET /repos/{owner}/{repo}/assignees"],listComments:["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],listCommentsForRepo:["GET /repos/{owner}/{repo}/issues/comments"],listEvents:["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],listEventsForRepo:["GET /repos/{owner}/{repo}/issues/events"],listEventsForTimeline:["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],listForAuthenticatedUser:["GET /user/issues"],listForOrg:["GET /orgs/{org}/issues"],listForRepo:["GET /repos/{owner}/{repo}/issues"],listLabelsForMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],listLabelsForRepo:["GET /repos/{owner}/{repo}/labels"],listLabelsOnIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],listMilestones:["GET /repos/{owner}/{repo}/milestones"],listSubIssues:["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],lock:["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],removeAllLabels:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],removeAssignees:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],removeLabel:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],removeSubIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"],reprioritizeSubIssue:["PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"],setLabels:["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],unlock:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],update:["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],updateComment:["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],updateLabel:["PATCH /repos/{owner}/{repo}/labels/{name}"],updateMilestone:["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]},licenses:{get:["GET /licenses/{license}"],getAllCommonlyUsed:["GET /licenses"],getForRepo:["GET /repos/{owner}/{repo}/license"]},markdown:{render:["POST /markdown"],renderRaw:["POST /markdown/raw",{headers:{"content-type":"text/plain; charset=utf-8"}}]},meta:{get:["GET /meta"],getAllVersions:["GET /versions"],getOctocat:["GET /octocat"],getZen:["GET /zen"],root:["GET /"]},migrations:{deleteArchiveForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/archive"],deleteArchiveForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/archive"],downloadArchiveForOrg:["GET /orgs/{org}/migrations/{migration_id}/archive"],getArchiveForAuthenticatedUser:["GET /user/migrations/{migration_id}/archive"],getStatusForAuthenticatedUser:["GET /user/migrations/{migration_id}"],getStatusForOrg:["GET /orgs/{org}/migrations/{migration_id}"],listForAuthenticatedUser:["GET /user/migrations"],listForOrg:["GET /orgs/{org}/migrations"],listReposForAuthenticatedUser:["GET /user/migrations/{migration_id}/repositories"],listReposForOrg:["GET /orgs/{org}/migrations/{migration_id}/repositories"],listReposForUser:["GET /user/migrations/{migration_id}/repositories",{},{renamed:["migrations","listReposForAuthenticatedUser"]}],startForAuthenticatedUser:["POST /user/migrations"],startForOrg:["POST /orgs/{org}/migrations"],unlockRepoForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],unlockRepoForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]},oidc:{getOidcCustomSubTemplateForOrg:["GET /orgs/{org}/actions/oidc/customization/sub"],updateOidcCustomSubTemplateForOrg:["PUT /orgs/{org}/actions/oidc/customization/sub"]},orgs:{addSecurityManagerTeam:["PUT /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team"}],assignTeamToOrgRole:["PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],assignUserToOrgRole:["PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"],blockUser:["PUT /orgs/{org}/blocks/{username}"],cancelInvitation:["DELETE /orgs/{org}/invitations/{invitation_id}"],checkBlockedUser:["GET /orgs/{org}/blocks/{username}"],checkMembershipForUser:["GET /orgs/{org}/members/{username}"],checkPublicMembershipForUser:["GET /orgs/{org}/public_members/{username}"],convertMemberToOutsideCollaborator:["PUT /orgs/{org}/outside_collaborators/{username}"],createInvitation:["POST /orgs/{org}/invitations"],createOrUpdateCustomProperties:["PATCH /orgs/{org}/properties/schema"],createOrUpdateCustomPropertiesValuesForRepos:["PATCH /orgs/{org}/properties/values"],createOrUpdateCustomProperty:["PUT /orgs/{org}/properties/schema/{custom_property_name}"],createWebhook:["POST /orgs/{org}/hooks"],delete:["DELETE /orgs/{org}"],deleteWebhook:["DELETE /orgs/{org}/hooks/{hook_id}"],enableOrDisableSecurityProductOnAllOrgRepos:["POST /orgs/{org}/{security_product}/{enablement}",{},{deprecated:"octokit.rest.orgs.enableOrDisableSecurityProductOnAllOrgRepos() is deprecated, see https://docs.github.com/rest/orgs/orgs#enable-or-disable-a-security-feature-for-an-organization"}],get:["GET /orgs/{org}"],getAllCustomProperties:["GET /orgs/{org}/properties/schema"],getCustomProperty:["GET /orgs/{org}/properties/schema/{custom_property_name}"],getMembershipForAuthenticatedUser:["GET /user/memberships/orgs/{org}"],getMembershipForUser:["GET /orgs/{org}/memberships/{username}"],getOrgRole:["GET /orgs/{org}/organization-roles/{role_id}"],getWebhook:["GET /orgs/{org}/hooks/{hook_id}"],getWebhookConfigForOrg:["GET /orgs/{org}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],list:["GET /organizations"],listAppInstallations:["GET /orgs/{org}/installations"],listAttestations:["GET /orgs/{org}/attestations/{subject_digest}"],listBlockedUsers:["GET /orgs/{org}/blocks"],listCustomPropertiesValuesForRepos:["GET /orgs/{org}/properties/values"],listFailedInvitations:["GET /orgs/{org}/failed_invitations"],listForAuthenticatedUser:["GET /user/orgs"],listForUser:["GET /users/{username}/orgs"],listInvitationTeams:["GET /orgs/{org}/invitations/{invitation_id}/teams"],listMembers:["GET /orgs/{org}/members"],listMembershipsForAuthenticatedUser:["GET /user/memberships/orgs"],listOrgRoleTeams:["GET /orgs/{org}/organization-roles/{role_id}/teams"],listOrgRoleUsers:["GET /orgs/{org}/organization-roles/{role_id}/users"],listOrgRoles:["GET /orgs/{org}/organization-roles"],listOrganizationFineGrainedPermissions:["GET /orgs/{org}/organization-fine-grained-permissions"],listOutsideCollaborators:["GET /orgs/{org}/outside_collaborators"],listPatGrantRepositories:["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"],listPatGrantRequestRepositories:["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"],listPatGrantRequests:["GET /orgs/{org}/personal-access-token-requests"],listPatGrants:["GET /orgs/{org}/personal-access-tokens"],listPendingInvitations:["GET /orgs/{org}/invitations"],listPublicMembers:["GET /orgs/{org}/public_members"],listSecurityManagerTeams:["GET /orgs/{org}/security-managers",{},{deprecated:"octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams"}],listWebhookDeliveries:["GET /orgs/{org}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /orgs/{org}/hooks"],pingWebhook:["POST /orgs/{org}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeCustomProperty:["DELETE /orgs/{org}/properties/schema/{custom_property_name}"],removeMember:["DELETE /orgs/{org}/members/{username}"],removeMembershipForUser:["DELETE /orgs/{org}/memberships/{username}"],removeOutsideCollaborator:["DELETE /orgs/{org}/outside_collaborators/{username}"],removePublicMembershipForAuthenticatedUser:["DELETE /orgs/{org}/public_members/{username}"],removeSecurityManagerTeam:["DELETE /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team"}],reviewPatGrantRequest:["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"],reviewPatGrantRequestsInBulk:["POST /orgs/{org}/personal-access-token-requests"],revokeAllOrgRolesTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}"],revokeAllOrgRolesUser:["DELETE /orgs/{org}/organization-roles/users/{username}"],revokeOrgRoleTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],revokeOrgRoleUser:["DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"],setMembershipForUser:["PUT /orgs/{org}/memberships/{username}"],setPublicMembershipForAuthenticatedUser:["PUT /orgs/{org}/public_members/{username}"],unblockUser:["DELETE /orgs/{org}/blocks/{username}"],update:["PATCH /orgs/{org}"],updateMembershipForAuthenticatedUser:["PATCH /user/memberships/orgs/{org}"],updatePatAccess:["POST /orgs/{org}/personal-access-tokens/{pat_id}"],updatePatAccesses:["POST /orgs/{org}/personal-access-tokens"],updateWebhook:["PATCH /orgs/{org}/hooks/{hook_id}"],updateWebhookConfigForOrg:["PATCH /orgs/{org}/hooks/{hook_id}/config"]},packages:{deletePackageForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}"],deletePackageForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],deletePackageForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}"],deletePackageVersionForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getAllPackageVersionsForAPackageOwnedByAnOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByOrg"]}],getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]}],getAllPackageVersionsForPackageOwnedByAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions"],getPackageForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}"],getPackageForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}"],getPackageForUser:["GET /users/{username}/packages/{package_type}/{package_name}"],getPackageVersionForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],listDockerMigrationConflictingPackagesForAuthenticatedUser:["GET /user/docker/conflicts"],listDockerMigrationConflictingPackagesForOrganization:["GET /orgs/{org}/docker/conflicts"],listDockerMigrationConflictingPackagesForUser:["GET /users/{username}/docker/conflicts"],listPackagesForAuthenticatedUser:["GET /user/packages"],listPackagesForOrganization:["GET /orgs/{org}/packages"],listPackagesForUser:["GET /users/{username}/packages"],restorePackageForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForUser:["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageVersionForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForUser:["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]},privateRegistries:{createOrgPrivateRegistry:["POST /orgs/{org}/private-registries"],deleteOrgPrivateRegistry:["DELETE /orgs/{org}/private-registries/{secret_name}"],getOrgPrivateRegistry:["GET /orgs/{org}/private-registries/{secret_name}"],getOrgPublicKey:["GET /orgs/{org}/private-registries/public-key"],listOrgPrivateRegistries:["GET /orgs/{org}/private-registries"],updateOrgPrivateRegistry:["PATCH /orgs/{org}/private-registries/{secret_name}"]},projects:{addCollaborator:["PUT /projects/{project_id}/collaborators/{username}"],createCard:["POST /projects/columns/{column_id}/cards"],createColumn:["POST /projects/{project_id}/columns"],createForAuthenticatedUser:["POST /user/projects"],createForOrg:["POST /orgs/{org}/projects"],createForRepo:["POST /repos/{owner}/{repo}/projects"],delete:["DELETE /projects/{project_id}"],deleteCard:["DELETE /projects/columns/cards/{card_id}"],deleteColumn:["DELETE /projects/columns/{column_id}"],get:["GET /projects/{project_id}"],getCard:["GET /projects/columns/cards/{card_id}"],getColumn:["GET /projects/columns/{column_id}"],getPermissionForUser:["GET /projects/{project_id}/collaborators/{username}/permission"],listCards:["GET /projects/columns/{column_id}/cards"],listCollaborators:["GET /projects/{project_id}/collaborators"],listColumns:["GET /projects/{project_id}/columns"],listForOrg:["GET /orgs/{org}/projects"],listForRepo:["GET /repos/{owner}/{repo}/projects"],listForUser:["GET /users/{username}/projects"],moveCard:["POST /projects/columns/cards/{card_id}/moves"],moveColumn:["POST /projects/columns/{column_id}/moves"],removeCollaborator:["DELETE /projects/{project_id}/collaborators/{username}"],update:["PATCH /projects/{project_id}"],updateCard:["PATCH /projects/columns/cards/{card_id}"],updateColumn:["PATCH /projects/columns/{column_id}"]},pulls:{checkIfMerged:["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],create:["POST /repos/{owner}/{repo}/pulls"],createReplyForReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],createReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],createReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],deletePendingReview:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],deleteReviewComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],dismissReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],get:["GET /repos/{owner}/{repo}/pulls/{pull_number}"],getReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],getReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],list:["GET /repos/{owner}/{repo}/pulls"],listCommentsForReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],listCommits:["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],listFiles:["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],listRequestedReviewers:["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],listReviewComments:["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],listReviewCommentsForRepo:["GET /repos/{owner}/{repo}/pulls/comments"],listReviews:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],merge:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],removeRequestedReviewers:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],requestReviewers:["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],submitReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],update:["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],updateBranch:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],updateReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],updateReviewComment:["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]},rateLimit:{get:["GET /rate_limit"]},reactions:{createForCommitComment:["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],createForIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],createForIssueComment:["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],createForPullRequestReviewComment:["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],createForRelease:["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],createForTeamDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],createForTeamDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],deleteForCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],deleteForIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],deleteForIssueComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],deleteForPullRequestComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],deleteForRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],deleteForTeamDiscussion:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],deleteForTeamDiscussionComment:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],listForCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],listForIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],listForIssueComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],listForPullRequestReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],listForRelease:["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],listForTeamDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],listForTeamDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]},repos:{acceptInvitation:["PATCH /user/repository_invitations/{invitation_id}",{},{renamed:["repos","acceptInvitationForAuthenticatedUser"]}],acceptInvitationForAuthenticatedUser:["PATCH /user/repository_invitations/{invitation_id}"],addAppAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],addCollaborator:["PUT /repos/{owner}/{repo}/collaborators/{username}"],addStatusCheckContexts:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],addTeamAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],addUserAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],cancelPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"],checkAutomatedSecurityFixes:["GET /repos/{owner}/{repo}/automated-security-fixes"],checkCollaborator:["GET /repos/{owner}/{repo}/collaborators/{username}"],checkPrivateVulnerabilityReporting:["GET /repos/{owner}/{repo}/private-vulnerability-reporting"],checkVulnerabilityAlerts:["GET /repos/{owner}/{repo}/vulnerability-alerts"],codeownersErrors:["GET /repos/{owner}/{repo}/codeowners/errors"],compareCommits:["GET /repos/{owner}/{repo}/compare/{base}...{head}"],compareCommitsWithBasehead:["GET /repos/{owner}/{repo}/compare/{basehead}"],createAttestation:["POST /repos/{owner}/{repo}/attestations"],createAutolink:["POST /repos/{owner}/{repo}/autolinks"],createCommitComment:["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],createCommitSignatureProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],createCommitStatus:["POST /repos/{owner}/{repo}/statuses/{sha}"],createDeployKey:["POST /repos/{owner}/{repo}/keys"],createDeployment:["POST /repos/{owner}/{repo}/deployments"],createDeploymentBranchPolicy:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],createDeploymentProtectionRule:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],createDeploymentStatus:["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],createDispatchEvent:["POST /repos/{owner}/{repo}/dispatches"],createForAuthenticatedUser:["POST /user/repos"],createFork:["POST /repos/{owner}/{repo}/forks"],createInOrg:["POST /orgs/{org}/repos"],createOrUpdateCustomPropertiesValues:["PATCH /repos/{owner}/{repo}/properties/values"],createOrUpdateEnvironment:["PUT /repos/{owner}/{repo}/environments/{environment_name}"],createOrUpdateFileContents:["PUT /repos/{owner}/{repo}/contents/{path}"],createOrgRuleset:["POST /orgs/{org}/rulesets"],createPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments"],createPagesSite:["POST /repos/{owner}/{repo}/pages"],createRelease:["POST /repos/{owner}/{repo}/releases"],createRepoRuleset:["POST /repos/{owner}/{repo}/rulesets"],createUsingTemplate:["POST /repos/{template_owner}/{template_repo}/generate"],createWebhook:["POST /repos/{owner}/{repo}/hooks"],declineInvitation:["DELETE /user/repository_invitations/{invitation_id}",{},{renamed:["repos","declineInvitationForAuthenticatedUser"]}],declineInvitationForAuthenticatedUser:["DELETE /user/repository_invitations/{invitation_id}"],delete:["DELETE /repos/{owner}/{repo}"],deleteAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],deleteAdminBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],deleteAnEnvironment:["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],deleteAutolink:["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],deleteBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],deleteCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],deleteCommitSignatureProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],deleteDeployKey:["DELETE /repos/{owner}/{repo}/keys/{key_id}"],deleteDeployment:["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],deleteDeploymentBranchPolicy:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],deleteFile:["DELETE /repos/{owner}/{repo}/contents/{path}"],deleteInvitation:["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],deleteOrgRuleset:["DELETE /orgs/{org}/rulesets/{ruleset_id}"],deletePagesSite:["DELETE /repos/{owner}/{repo}/pages"],deletePullRequestReviewProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],deleteRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}"],deleteReleaseAsset:["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],deleteRepoRuleset:["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],deleteWebhook:["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],disableAutomatedSecurityFixes:["DELETE /repos/{owner}/{repo}/automated-security-fixes"],disableDeploymentProtectionRule:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],disablePrivateVulnerabilityReporting:["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"],disableVulnerabilityAlerts:["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],downloadArchive:["GET /repos/{owner}/{repo}/zipball/{ref}",{},{renamed:["repos","downloadZipballArchive"]}],downloadTarballArchive:["GET /repos/{owner}/{repo}/tarball/{ref}"],downloadZipballArchive:["GET /repos/{owner}/{repo}/zipball/{ref}"],enableAutomatedSecurityFixes:["PUT /repos/{owner}/{repo}/automated-security-fixes"],enablePrivateVulnerabilityReporting:["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"],enableVulnerabilityAlerts:["PUT /repos/{owner}/{repo}/vulnerability-alerts"],generateReleaseNotes:["POST /repos/{owner}/{repo}/releases/generate-notes"],get:["GET /repos/{owner}/{repo}"],getAccessRestrictions:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],getAdminBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],getAllDeploymentProtectionRules:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],getAllEnvironments:["GET /repos/{owner}/{repo}/environments"],getAllStatusCheckContexts:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],getAllTopics:["GET /repos/{owner}/{repo}/topics"],getAppsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],getAutolink:["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],getBranch:["GET /repos/{owner}/{repo}/branches/{branch}"],getBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection"],getBranchRules:["GET /repos/{owner}/{repo}/rules/branches/{branch}"],getClones:["GET /repos/{owner}/{repo}/traffic/clones"],getCodeFrequencyStats:["GET /repos/{owner}/{repo}/stats/code_frequency"],getCollaboratorPermissionLevel:["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],getCombinedStatusForRef:["GET /repos/{owner}/{repo}/commits/{ref}/status"],getCommit:["GET /repos/{owner}/{repo}/commits/{ref}"],getCommitActivityStats:["GET /repos/{owner}/{repo}/stats/commit_activity"],getCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}"],getCommitSignatureProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],getCommunityProfileMetrics:["GET /repos/{owner}/{repo}/community/profile"],getContent:["GET /repos/{owner}/{repo}/contents/{path}"],getContributorsStats:["GET /repos/{owner}/{repo}/stats/contributors"],getCustomDeploymentProtectionRule:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],getCustomPropertiesValues:["GET /repos/{owner}/{repo}/properties/values"],getDeployKey:["GET /repos/{owner}/{repo}/keys/{key_id}"],getDeployment:["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],getDeploymentBranchPolicy:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],getDeploymentStatus:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],getEnvironment:["GET /repos/{owner}/{repo}/environments/{environment_name}"],getLatestPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/latest"],getLatestRelease:["GET /repos/{owner}/{repo}/releases/latest"],getOrgRuleSuite:["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],getOrgRuleSuites:["GET /orgs/{org}/rulesets/rule-suites"],getOrgRuleset:["GET /orgs/{org}/rulesets/{ruleset_id}"],getOrgRulesets:["GET /orgs/{org}/rulesets"],getPages:["GET /repos/{owner}/{repo}/pages"],getPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],getPagesDeployment:["GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"],getPagesHealthCheck:["GET /repos/{owner}/{repo}/pages/health"],getParticipationStats:["GET /repos/{owner}/{repo}/stats/participation"],getPullRequestReviewProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],getPunchCardStats:["GET /repos/{owner}/{repo}/stats/punch_card"],getReadme:["GET /repos/{owner}/{repo}/readme"],getReadmeInDirectory:["GET /repos/{owner}/{repo}/readme/{dir}"],getRelease:["GET /repos/{owner}/{repo}/releases/{release_id}"],getReleaseAsset:["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],getReleaseByTag:["GET /repos/{owner}/{repo}/releases/tags/{tag}"],getRepoRuleSuite:["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"],getRepoRuleSuites:["GET /repos/{owner}/{repo}/rulesets/rule-suites"],getRepoRuleset:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],getRepoRulesets:["GET /repos/{owner}/{repo}/rulesets"],getStatusChecksProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],getTeamsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],getTopPaths:["GET /repos/{owner}/{repo}/traffic/popular/paths"],getTopReferrers:["GET /repos/{owner}/{repo}/traffic/popular/referrers"],getUsersWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],getViews:["GET /repos/{owner}/{repo}/traffic/views"],getWebhook:["GET /repos/{owner}/{repo}/hooks/{hook_id}"],getWebhookConfigForRepo:["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],listActivities:["GET /repos/{owner}/{repo}/activity"],listAttestations:["GET /repos/{owner}/{repo}/attestations/{subject_digest}"],listAutolinks:["GET /repos/{owner}/{repo}/autolinks"],listBranches:["GET /repos/{owner}/{repo}/branches"],listBranchesForHeadCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],listCollaborators:["GET /repos/{owner}/{repo}/collaborators"],listCommentsForCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],listCommitCommentsForRepo:["GET /repos/{owner}/{repo}/comments"],listCommitStatusesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],listCommits:["GET /repos/{owner}/{repo}/commits"],listContributors:["GET /repos/{owner}/{repo}/contributors"],listCustomDeploymentRuleIntegrations:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"],listDeployKeys:["GET /repos/{owner}/{repo}/keys"],listDeploymentBranchPolicies:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],listDeploymentStatuses:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],listDeployments:["GET /repos/{owner}/{repo}/deployments"],listForAuthenticatedUser:["GET /user/repos"],listForOrg:["GET /orgs/{org}/repos"],listForUser:["GET /users/{username}/repos"],listForks:["GET /repos/{owner}/{repo}/forks"],listInvitations:["GET /repos/{owner}/{repo}/invitations"],listInvitationsForAuthenticatedUser:["GET /user/repository_invitations"],listLanguages:["GET /repos/{owner}/{repo}/languages"],listPagesBuilds:["GET /repos/{owner}/{repo}/pages/builds"],listPublic:["GET /repositories"],listPullRequestsAssociatedWithCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],listReleaseAssets:["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],listReleases:["GET /repos/{owner}/{repo}/releases"],listTags:["GET /repos/{owner}/{repo}/tags"],listTeams:["GET /repos/{owner}/{repo}/teams"],listWebhookDeliveries:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /repos/{owner}/{repo}/hooks"],merge:["POST /repos/{owner}/{repo}/merges"],mergeUpstream:["POST /repos/{owner}/{repo}/merge-upstream"],pingWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeAppAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],removeCollaborator:["DELETE /repos/{owner}/{repo}/collaborators/{username}"],removeStatusCheckContexts:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],removeStatusCheckProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],removeTeamAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],removeUserAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],renameBranch:["POST /repos/{owner}/{repo}/branches/{branch}/rename"],replaceAllTopics:["PUT /repos/{owner}/{repo}/topics"],requestPagesBuild:["POST /repos/{owner}/{repo}/pages/builds"],setAdminBranchProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],setAppAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],setStatusCheckContexts:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],setTeamAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],setUserAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],testPushWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],transfer:["POST /repos/{owner}/{repo}/transfer"],update:["PATCH /repos/{owner}/{repo}"],updateBranchProtection:["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],updateCommitComment:["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],updateDeploymentBranchPolicy:["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],updateInformationAboutPagesSite:["PUT /repos/{owner}/{repo}/pages"],updateInvitation:["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],updateOrgRuleset:["PUT /orgs/{org}/rulesets/{ruleset_id}"],updatePullRequestReviewProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],updateRelease:["PATCH /repos/{owner}/{repo}/releases/{release_id}"],updateReleaseAsset:["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],updateRepoRuleset:["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],updateStatusCheckPotection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",{},{renamed:["repos","updateStatusCheckProtection"]}],updateStatusCheckProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],updateWebhook:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],updateWebhookConfigForRepo:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],uploadReleaseAsset:["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",{baseUrl:"https://uploads.github.com"}]},search:{code:["GET /search/code"],commits:["GET /search/commits"],issuesAndPullRequests:["GET /search/issues"],labels:["GET /search/labels"],repos:["GET /search/repositories"],topics:["GET /search/topics"],users:["GET /search/users"]},secretScanning:{createPushProtectionBypass:["POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses"],getAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],getScanHistory:["GET /repos/{owner}/{repo}/secret-scanning/scan-history"],listAlertsForEnterprise:["GET /enterprises/{enterprise}/secret-scanning/alerts"],listAlertsForOrg:["GET /orgs/{org}/secret-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/secret-scanning/alerts"],listLocationsForAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],updateAlert:["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]},securityAdvisories:{createFork:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"],createPrivateVulnerabilityReport:["POST /repos/{owner}/{repo}/security-advisories/reports"],createRepositoryAdvisory:["POST /repos/{owner}/{repo}/security-advisories"],createRepositoryAdvisoryCveRequest:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"],getGlobalAdvisory:["GET /advisories/{ghsa_id}"],getRepositoryAdvisory:["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"],listGlobalAdvisories:["GET /advisories"],listOrgRepositoryAdvisories:["GET /orgs/{org}/security-advisories"],listRepositoryAdvisories:["GET /repos/{owner}/{repo}/security-advisories"],updateRepositoryAdvisory:["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]},teams:{addOrUpdateMembershipForUserInOrg:["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],addOrUpdateProjectPermissionsInOrg:["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"],addOrUpdateRepoPermissionsInOrg:["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],checkPermissionsForProjectInOrg:["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"],checkPermissionsForRepoInOrg:["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],create:["POST /orgs/{org}/teams"],createDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],createDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions"],deleteDiscussionCommentInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],deleteDiscussionInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],deleteInOrg:["DELETE /orgs/{org}/teams/{team_slug}"],getByName:["GET /orgs/{org}/teams/{team_slug}"],getDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],getDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],getMembershipForUserInOrg:["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],list:["GET /orgs/{org}/teams"],listChildInOrg:["GET /orgs/{org}/teams/{team_slug}/teams"],listDiscussionCommentsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],listDiscussionsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions"],listForAuthenticatedUser:["GET /user/teams"],listMembersInOrg:["GET /orgs/{org}/teams/{team_slug}/members"],listPendingInvitationsInOrg:["GET /orgs/{org}/teams/{team_slug}/invitations"],listProjectsInOrg:["GET /orgs/{org}/teams/{team_slug}/projects"],listReposInOrg:["GET /orgs/{org}/teams/{team_slug}/repos"],removeMembershipForUserInOrg:["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],removeProjectInOrg:["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"],removeRepoInOrg:["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],updateDiscussionCommentInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],updateDiscussionInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],updateInOrg:["PATCH /orgs/{org}/teams/{team_slug}"]},users:{addEmailForAuthenticated:["POST /user/emails",{},{renamed:["users","addEmailForAuthenticatedUser"]}],addEmailForAuthenticatedUser:["POST /user/emails"],addSocialAccountForAuthenticatedUser:["POST /user/social_accounts"],block:["PUT /user/blocks/{username}"],checkBlocked:["GET /user/blocks/{username}"],checkFollowingForUser:["GET /users/{username}/following/{target_user}"],checkPersonIsFollowedByAuthenticated:["GET /user/following/{username}"],createGpgKeyForAuthenticated:["POST /user/gpg_keys",{},{renamed:["users","createGpgKeyForAuthenticatedUser"]}],createGpgKeyForAuthenticatedUser:["POST /user/gpg_keys"],createPublicSshKeyForAuthenticated:["POST /user/keys",{},{renamed:["users","createPublicSshKeyForAuthenticatedUser"]}],createPublicSshKeyForAuthenticatedUser:["POST /user/keys"],createSshSigningKeyForAuthenticatedUser:["POST /user/ssh_signing_keys"],deleteEmailForAuthenticated:["DELETE /user/emails",{},{renamed:["users","deleteEmailForAuthenticatedUser"]}],deleteEmailForAuthenticatedUser:["DELETE /user/emails"],deleteGpgKeyForAuthenticated:["DELETE /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","deleteGpgKeyForAuthenticatedUser"]}],deleteGpgKeyForAuthenticatedUser:["DELETE /user/gpg_keys/{gpg_key_id}"],deletePublicSshKeyForAuthenticated:["DELETE /user/keys/{key_id}",{},{renamed:["users","deletePublicSshKeyForAuthenticatedUser"]}],deletePublicSshKeyForAuthenticatedUser:["DELETE /user/keys/{key_id}"],deleteSocialAccountForAuthenticatedUser:["DELETE /user/social_accounts"],deleteSshSigningKeyForAuthenticatedUser:["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"],follow:["PUT /user/following/{username}"],getAuthenticated:["GET /user"],getById:["GET /user/{account_id}"],getByUsername:["GET /users/{username}"],getContextForUser:["GET /users/{username}/hovercard"],getGpgKeyForAuthenticated:["GET /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","getGpgKeyForAuthenticatedUser"]}],getGpgKeyForAuthenticatedUser:["GET /user/gpg_keys/{gpg_key_id}"],getPublicSshKeyForAuthenticated:["GET /user/keys/{key_id}",{},{renamed:["users","getPublicSshKeyForAuthenticatedUser"]}],getPublicSshKeyForAuthenticatedUser:["GET /user/keys/{key_id}"],getSshSigningKeyForAuthenticatedUser:["GET /user/ssh_signing_keys/{ssh_signing_key_id}"],list:["GET /users"],listAttestations:["GET /users/{username}/attestations/{subject_digest}"],listBlockedByAuthenticated:["GET /user/blocks",{},{renamed:["users","listBlockedByAuthenticatedUser"]}],listBlockedByAuthenticatedUser:["GET /user/blocks"],listEmailsForAuthenticated:["GET /user/emails",{},{renamed:["users","listEmailsForAuthenticatedUser"]}],listEmailsForAuthenticatedUser:["GET /user/emails"],listFollowedByAuthenticated:["GET /user/following",{},{renamed:["users","listFollowedByAuthenticatedUser"]}],listFollowedByAuthenticatedUser:["GET /user/following"],listFollowersForAuthenticatedUser:["GET /user/followers"],listFollowersForUser:["GET /users/{username}/followers"],listFollowingForUser:["GET /users/{username}/following"],listGpgKeysForAuthenticated:["GET /user/gpg_keys",{},{renamed:["users","listGpgKeysForAuthenticatedUser"]}],listGpgKeysForAuthenticatedUser:["GET /user/gpg_keys"],listGpgKeysForUser:["GET /users/{username}/gpg_keys"],listPublicEmailsForAuthenticated:["GET /user/public_emails",{},{renamed:["users","listPublicEmailsForAuthenticatedUser"]}],listPublicEmailsForAuthenticatedUser:["GET /user/public_emails"],listPublicKeysForUser:["GET /users/{username}/keys"],listPublicSshKeysForAuthenticated:["GET /user/keys",{},{renamed:["users","listPublicSshKeysForAuthenticatedUser"]}],listPublicSshKeysForAuthenticatedUser:["GET /user/keys"],listSocialAccountsForAuthenticatedUser:["GET /user/social_accounts"],listSocialAccountsForUser:["GET /users/{username}/social_accounts"],listSshSigningKeysForAuthenticatedUser:["GET /user/ssh_signing_keys"],listSshSigningKeysForUser:["GET /users/{username}/ssh_signing_keys"],setPrimaryEmailVisibilityForAuthenticated:["PATCH /user/email/visibility",{},{renamed:["users","setPrimaryEmailVisibilityForAuthenticatedUser"]}],setPrimaryEmailVisibilityForAuthenticatedUser:["PATCH /user/email/visibility"],unblock:["DELETE /user/blocks/{username}"],unfollow:["DELETE /user/following/{username}"],updateAuthenticated:["PATCH /user"]}},je=Le,d=new Map;for(const[e,r]of Object.entries(je))for(const[s,t]of Object.entries(r)){const[o,i,n]=t,[a,p]=o.split(/ /),l=Object.assign({method:a,url:p},i);d.has(e)||d.set(e,new Map),d.get(e).set(s,{scope:e,methodName:s,endpointDefaults:l,decorations:n})}var Ie={has({scope:e},r){return d.get(e).has(r)},getOwnPropertyDescriptor(e,r){return{value:this.get(e,r),configurable:!0,writable:!0,enumerable:!0}},defineProperty(e,r,s){return Object.defineProperty(e.cache,r,s),!0},deleteProperty(e,r){return delete e.cache[r],!0},ownKeys({scope:e}){return[...d.get(e).keys()]},set(e,r,s){return e.cache[r]=s},get({octokit:e,scope:r,cache:s},t){if(s[t])return s[t];const o=d.get(r).get(t);if(!o)return;const{endpointDefaults:i,decorations:n}=o;return n?s[t]=He(e,r,t,i,n):s[t]=e.request.defaults(i),s[t]}};function qe(e){const r={};for(const s of d.keys())r[s]=new Proxy({octokit:e,scope:s,cache:{}},Ie);return r}function He(e,r,s,t,o){const i=e.request.defaults(t);function n(...a){let p=i.endpoint.merge(...a);if(o.mapToData)return p=Object.assign({},p,{data:p[o.mapToData],[o.mapToData]:void 0}),i(p);if(o.renamed){const[l,u]=o.renamed;e.log.warn(`octokit.${r}.${s}() has been renamed to octokit.${l}.${u}()`)}if(o.deprecated&&e.log.warn(o.deprecated),o.renamedParameters){const l=i.endpoint.merge(...a);for(const[u,c]of Object.entries(o.renamedParameters))u in l&&(e.log.warn(`"${u}" parameter is deprecated for "octokit.${r}.${s}()". Use "${c}" instead`),c in l||(l[c]=l[u]),delete l[u]);return i(l)}return i(...a)}return Object.assign(n,i)}function M(e){const r=qe(e);return{...r,rest:r}}M.VERSION=Ce;var We="20.1.2",Me=Re.plugin(B,M,z).defaults({userAgent:`octokit-rest.js/${We}`});export{Me as O};
|
| 4 |
+
//# sourceMappingURL=@octokit-XqW7jd-l.js.map
|
assets/@octokit-XqW7jd-l.js.map
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/ABTestAssistant-CYTkocO5.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as s,j as e}from"./react-B-lWpQRQ.js";import{I as h,L as x,M as j,a_ as b}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const v='<button className="bg-blue-500 text-white p-2 rounded">Sign Up</button>',N='<button className="bg-green-500 text-white p-2 rounded">Get Started</button>',H=()=>{const[r,p]=s.useState(v),[n,u]=s.useState(N),[l,f]=s.useState("LaunchDarkly"),[o,i]=s.useState(""),[a,c]=s.useState(!1),[m,d]=s.useState(""),g=async()=>{c(!0),d(""),i("");try{const t=await b(r,n,l);i(t)}catch(t){d(t instanceof Error?t.message:"Failed to generate wrapper component")}finally{c(!1)}};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(h,{}),e.jsx("span",{className:"ml-3",children:"A/B Test Assistant"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Generate code snippets for A/B tests using a feature flagging service."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{className:"text-sm font-medium mb-2",children:"Variant A Code"}),e.jsx("textarea",{value:r,onChange:t=>p(t.target.value),className:"flex-grow p-2 bg-surface border rounded font-mono text-xs"})]}),e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{className:"text-sm font-medium mb-2",children:"Variant B Code"}),e.jsx("textarea",{value:n,onChange:t=>u(t.target.value),className:"flex-grow p-2 bg-surface border rounded font-mono text-xs"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium",children:"Feature Flag Service"}),e.jsxs("select",{value:l,onChange:t=>f(t.target.value),className:"w-full mt-1 p-2 bg-surface border rounded",children:[e.jsx("option",{children:"LaunchDarkly"}),e.jsx("option",{children:"PostHog"}),e.jsx("option",{children:"Generic"})]})]}),e.jsx("button",{onClick:g,disabled:a,className:"btn-primary w-full py-3",children:a?e.jsx(x,{}):"Generate Wrapper Component"})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-sm font-medium mb-2",children:"Generated Wrapper Component"}),e.jsx("div",{className:"flex-grow p-1 bg-background border rounded overflow-auto",children:a?e.jsx("div",{className:"flex justify-center items-center h-full",children:e.jsx(x,{})}):e.jsxs(e.Fragment,{children:[m&&e.jsx("p",{className:"text-red-500 p-4",children:m}),o&&e.jsx(j,{content:o})]})})]})]})]})};export{H as ABTestAssistant};
|
| 2 |
+
//# sourceMappingURL=ABTestAssistant-CYTkocO5.js.map
|
assets/ABTestAssistant-CYTkocO5.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"ABTestAssistant-CYTkocO5.js","sources":["../../components/features/ABTestAssistant.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { generateABTestWrapper } from '../../services/index.ts';\nimport { BeakerIcon } from '../icons/index.ts';\nimport { LoadingSpinner, MarkdownRenderer } from '../shared/index.tsx';\n\nconst variantA_example = `<button className=\"bg-blue-500 text-white p-2 rounded\">Sign Up</button>`;\nconst variantB_example = `<button className=\"bg-green-500 text-white p-2 rounded\">Get Started</button>`;\n\nexport const ABTestAssistant: React.FC = () => {\n const [variantA, setVariantA] = useState(variantA_example);\n const [variantB, setVariantB] = useState(variantB_example);\n const [service, setService] = useState('LaunchDarkly');\n const [generatedCode, setGeneratedCode] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState('');\n\n const handleGenerate = async () => {\n setIsLoading(true);\n setError('');\n setGeneratedCode('');\n try {\n const code = await generateABTestWrapper(variantA, variantB, service);\n setGeneratedCode(code);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to generate wrapper component');\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\"><BeakerIcon /><span className=\"ml-3\">A/B Test Assistant</span></h1>\n <p className=\"text-text-secondary mt-1\">Generate code snippets for A/B tests using a feature flagging service.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label className=\"text-sm font-medium mb-2\">Variant A Code</label>\n <textarea value={variantA} onChange={e => setVariantA(e.target.value)} className=\"flex-grow p-2 bg-surface border rounded font-mono text-xs\"/>\n </div>\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label className=\"text-sm font-medium mb-2\">Variant B Code</label>\n <textarea value={variantB} onChange={e => setVariantB(e.target.value)} className=\"flex-grow p-2 bg-surface border rounded font-mono text-xs\"/>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Feature Flag Service</label>\n <select value={service} onChange={e => setService(e.target.value)} className=\"w-full mt-1 p-2 bg-surface border rounded\">\n <option>LaunchDarkly</option>\n <option>PostHog</option>\n <option>Generic</option>\n </select>\n </div>\n <button onClick={handleGenerate} disabled={isLoading} className=\"btn-primary w-full py-3\">{isLoading ? <LoadingSpinner/> : 'Generate Wrapper Component'}</button>\n </div>\n <div className=\"flex flex-col\">\n <label className=\"text-sm font-medium mb-2\">Generated Wrapper Component</label>\n <div className=\"flex-grow p-1 bg-background border rounded overflow-auto\">\n {isLoading ? <div className=\"flex justify-center items-center h-full\"><LoadingSpinner /></div> : (\n <>\n {error && <p className=\"text-red-500 p-4\">{error}</p>}\n {generatedCode && <MarkdownRenderer content={generatedCode} />}\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["variantA_example","variantB_example","ABTestAssistant","variantA","setVariantA","useState","variantB","setVariantB","service","setService","generatedCode","setGeneratedCode","isLoading","setIsLoading","error","setError","handleGenerate","code","generateABTestWrapper","err","jsxs","jsx","BeakerIcon","e","LoadingSpinner","Fragment","MarkdownRenderer"],"mappings":"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"}
|
assets/AccessibilityAnnotation-qrX9Fzr2.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as n,j as e,R as d}from"./react-B-lWpQRQ.js";import{d as x}from"./diff-CqM5-8zX.js";import{at as p,L as m,be as f}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./marked-CesSW9Du.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const u=`<div class="menu">
|
| 2 |
+
<div>Menu Item 1</div>
|
| 3 |
+
<div class="active">Menu Item 2</div>
|
| 4 |
+
<div>Menu Item 3</div>
|
| 5 |
+
</div>`,h=d.memo(({oldCode:s,newCode:o})=>{const l=x(s,o);return e.jsx("pre",{className:"whitespace-pre-wrap font-mono text-xs",children:l.map((t,r)=>{const i=t.added?"bg-green-500/20 text-green-800 dark:text-green-300":t.removed?"bg-red-500/20":"text-text-secondary";return e.jsx("div",{className:i,children:t.value},r)})})}),V=()=>{const[s,o]=n.useState(u),[l,t]=n.useState(""),[r,i]=n.useState(!1),c=async()=>{i(!0),t("");try{const a=await f(s);t(a.replace(/^```(?:\w+\n)?/,"").replace(/```$/,""))}catch(a){console.error(a)}finally{i(!1)}};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(p,{}),e.jsx("span",{className:"ml-3",children:"Accessibility Annotation"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Add ARIA attributes to HTML to improve accessibility."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-sm font-medium mb-2",children:"Original HTML"}),e.jsx("textarea",{value:s,onChange:a=>o(a.target.value),className:"flex-grow p-2 bg-surface border rounded font-mono text-xs"}),e.jsx("button",{onClick:c,disabled:r,className:"btn-primary w-full mt-4 py-3",children:r?e.jsx(m,{}):"Annotate with ARIA"})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-sm font-medium mb-2",children:"Annotated HTML"}),e.jsx("div",{className:"flex-grow p-2 bg-background border rounded overflow-auto",children:r?e.jsx("div",{className:"flex justify-center items-center h-full",children:e.jsx(m,{})}):e.jsx(h,{oldCode:s,newCode:l})})]})]})]})};export{V as AccessibilityAnnotation};
|
| 6 |
+
//# sourceMappingURL=AccessibilityAnnotation-qrX9Fzr2.js.map
|
assets/AccessibilityAnnotation-qrX9Fzr2.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AccessibilityAnnotation-qrX9Fzr2.js","sources":["../../components/features/AccessibilityAnnotation.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport * as Diff from 'diff';\nimport { addAriaAttributes } from '../../services/index.ts';\nimport { EyeIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\n\nconst exampleHtml = `<div class=\"menu\">\n <div>Menu Item 1</div>\n <div class=\"active\">Menu Item 2</div>\n <div>Menu Item 3</div>\n</div>`;\n\nconst DiffViewer: React.FC<{ oldCode: string, newCode: string }> = React.memo(({ oldCode, newCode }) => {\n const diff = Diff.diffLines(oldCode, newCode);\n return (\n <pre className=\"whitespace-pre-wrap font-mono text-xs\">\n {diff.map((part, index) => {\n const color = part.added ? 'bg-green-500/20 text-green-800 dark:text-green-300' : part.removed ? 'bg-red-500/20' : 'text-text-secondary';\n return <div key={index} className={color}>{part.value}</div>;\n })}\n </pre>\n );\n});\n\nexport const AccessibilityAnnotation: React.FC = () => {\n const [html, setHtml] = useState(exampleHtml);\n const [annotatedHtml, setAnnotatedHtml] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n\n const handleAnnotate = async () => {\n setIsLoading(true);\n setAnnotatedHtml('');\n try {\n const result = await addAriaAttributes(html);\n setAnnotatedHtml(result.replace(/^```(?:\\w+\\n)?/, '').replace(/```$/, ''));\n } catch (err) {\n console.error(err);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\"><EyeIcon /><span className=\"ml-3\">Accessibility Annotation</span></h1>\n <p className=\"text-text-secondary mt-1\">Add ARIA attributes to HTML to improve accessibility.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"flex flex-col\">\n <label className=\"text-sm font-medium mb-2\">Original HTML</label>\n <textarea value={html} onChange={e => setHtml(e.target.value)} className=\"flex-grow p-2 bg-surface border rounded font-mono text-xs\"/>\n <button onClick={handleAnnotate} disabled={isLoading} className=\"btn-primary w-full mt-4 py-3\">{isLoading ? <LoadingSpinner/> : 'Annotate with ARIA'}</button>\n </div>\n <div className=\"flex flex-col\">\n <label className=\"text-sm font-medium mb-2\">Annotated HTML</label>\n <div className=\"flex-grow p-2 bg-background border rounded overflow-auto\">\n {isLoading ? <div className=\"flex justify-center items-center h-full\"><LoadingSpinner /></div> : <DiffViewer oldCode={html} newCode={annotatedHtml} />}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["exampleHtml","DiffViewer","React","oldCode","newCode","diff","Diff.diffLines","jsx","part","index","color","AccessibilityAnnotation","html","setHtml","useState","annotatedHtml","setAnnotatedHtml","isLoading","setIsLoading","handleAnnotate","result","addAriaAttributes","err","jsxs","EyeIcon","e","LoadingSpinner"],"mappings":"uuBAMA,MAAMA,EAAc;AAAA;AAAA;AAAA;AAAA,QAMdC,EAA6DC,EAAM,KAAK,CAAC,CAAE,QAAAC,EAAS,QAAAC,KAAc,CACpG,MAAMC,EAAOC,EAAeH,EAASC,CAAO,EAC5C,OACIG,MAAC,OAAI,UAAU,wCACV,WAAK,IAAI,CAACC,EAAMC,IAAU,CACvB,MAAMC,EAAQF,EAAK,MAAQ,qDAAuDA,EAAK,QAAU,gBAAkB,sBACnH,aAAQ,MAAA,CAAgB,UAAWE,EAAQ,SAAAF,EAAK,OAA/BC,CAAqC,CAC1D,CAAC,CAAA,CACL,CAER,CAAC,EAEYE,EAAoC,IAAM,CACnD,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAASd,CAAW,EACtC,CAACe,EAAeC,CAAgB,EAAIF,EAAAA,SAAS,EAAE,EAC/C,CAACG,EAAWC,CAAY,EAAIJ,EAAAA,SAAS,EAAK,EAE1CK,EAAiB,SAAY,CAC/BD,EAAa,EAAI,EACjBF,EAAiB,EAAE,EACnB,GAAI,CACA,MAAMI,EAAS,MAAMC,EAAkBT,CAAI,EAC3CI,EAAiBI,EAAO,QAAQ,iBAAkB,EAAE,EAAE,QAAQ,OAAQ,EAAE,CAAC,CAC7E,OAASE,EAAK,CACV,QAAQ,MAAMA,CAAG,CACrB,QAAA,CACIJ,EAAa,EAAK,CACtB,CACJ,EAEA,OACIK,EAAAA,KAAC,MAAA,CAAI,UAAU,2DACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,uCAAuC,SAAA,CAAAhB,EAAAA,IAACiB,EAAA,EAAQ,EAAEjB,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,0BAAA,CAAwB,CAAA,EAAO,EACtHA,EAAAA,IAAC,IAAA,CAAE,UAAU,2BAA2B,SAAA,uDAAA,CAAqD,CAAA,EACjG,EACAgB,EAAAA,KAAC,MAAA,CAAI,UAAU,0DACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACX,SAAA,CAAAhB,EAAAA,IAAC,QAAA,CAAM,UAAU,2BAA2B,SAAA,gBAAa,EACzDA,EAAAA,IAAC,WAAA,CAAS,MAAOK,EAAM,SAAUa,GAAKZ,EAAQY,EAAE,OAAO,KAAK,EAAG,UAAU,2DAAA,CAA2D,EACpIlB,EAAAA,IAAC,SAAA,CAAO,QAASY,EAAgB,SAAUF,EAAW,UAAU,+BAAgC,SAAAA,EAAYV,EAAAA,IAACmB,EAAA,CAAA,CAAc,EAAK,oBAAA,CAAqB,CAAA,EACzJ,EACCH,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACZ,SAAA,CAAAhB,EAAAA,IAAC,QAAA,CAAM,UAAU,2BAA2B,SAAA,iBAAc,QACzD,MAAA,CAAI,UAAU,2DACV,SAAAU,EAAYV,MAAC,OAAI,UAAU,0CAA0C,eAACmB,EAAA,CAAA,CAAe,CAAA,CAAE,EAASnB,EAAAA,IAACN,EAAA,CAAW,QAASW,EAAM,QAASG,EAAe,CAAA,CACxJ,CAAA,CAAA,CACJ,CAAA,CAAA,CACJ,CAAA,EACJ,CAER"}
|
assets/AccessibilityAuditor-uF6Qx8UH.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as t,j as e}from"./react-B-lWpQRQ.js";import{at as N,L as w,S as v,M as S,aE as L,aF as R}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const P=()=>{const[i,f]=t.useState("https://react.dev"),[g,b]=t.useState(""),[l,c]=t.useState(null),[a,m]=t.useState(!1),[x,u]=t.useState(null),[p,o]=t.useState({}),d=t.useRef(null),j=()=>{const s=i.startsWith("http")?i:`https://${i}`;b(s),m(!0),c(null),o({})},y=async()=>{if(a&&d.current)try{const s=await L(d.current.contentWindow.document);c(s)}catch(s){console.error(s),alert("Could not audit this page. This may be due to security restrictions (CORS).")}finally{m(!1)}},A=async s=>{const r=s.id;u(r);try{const h=await R(s);o(n=>({...n,[r]:h}))}catch{o(n=>({...n,[r]:"Could not get suggestion."}))}finally{u(null)}};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(N,{}),e.jsx("span",{className:"ml-3",children:"Automated Accessibility Auditor"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Audit a live URL for accessibility issues and get AI-powered fixes."})]}),e.jsxs("div",{className:"flex gap-2 mb-4",children:[e.jsx("input",{type:"text",value:i,onChange:s=>f(s.target.value),placeholder:"https://example.com",className:"flex-grow p-2 border rounded"}),e.jsx("button",{onClick:j,disabled:a,className:"btn-primary px-6 py-2",children:a?"Auditing...":"Audit"})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsx("div",{className:"bg-background border-2 border-dashed border-border rounded-lg overflow-hidden",children:e.jsx("iframe",{ref:d,src:g,title:"Audit Target",className:"w-full h-full bg-white",onLoad:y,sandbox:"allow-scripts allow-same-origin"})}),e.jsxs("div",{className:"bg-surface p-4 border border-border rounded-lg flex flex-col",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:"Audit Results"}),e.jsxs("div",{className:"flex-grow overflow-y-auto pr-2",children:[a&&e.jsx("div",{className:"flex justify-center items-center h-full",children:e.jsx(w,{})}),l&&(l.violations.length===0?e.jsx("p",{children:"No violations found!"}):l.violations.map((s,r)=>e.jsxs("div",{className:"p-3 mb-2 bg-background border border-border rounded",children:[e.jsx("p",{className:"font-bold text-red-600",children:s.help}),e.jsx("p",{className:"text-sm my-1",children:s.description}),e.jsxs("button",{onClick:()=>A(s),disabled:!!x,className:"text-xs flex items-center gap-1 text-primary font-semibold",children:[e.jsx(v,{})," ",x===s.id?"Getting fix...":"Ask AI for a fix"]}),p[s.id]&&e.jsx("div",{className:"mt-2 text-xs border-t pt-2",children:e.jsx(S,{content:p[s.id]})})]},s.id+r)))]})]})]})]})};export{P as AccessibilityAuditor};
|
| 2 |
+
//# sourceMappingURL=AccessibilityAuditor-uF6Qx8UH.js.map
|
assets/AccessibilityAuditor-uF6Qx8UH.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AccessibilityAuditor-uF6Qx8UH.js","sources":["../../components/features/AccessibilityAuditor.tsx"],"sourcesContent":["import React, { useState, useRef } from 'react';\nimport { suggestA11yFix } from '../../services/index.ts';\nimport { runAxeAudit, AxeResult } from '../../services/auditing/accessibilityService.ts';\nimport { EyeIcon, SparklesIcon } from '../icons/index.ts';\nimport { LoadingSpinner, MarkdownRenderer } from '../shared/index.tsx';\n\nexport const AccessibilityAuditor: React.FC = () => {\n const [url, setUrl] = useState('https://react.dev');\n const [auditUrl, setAuditUrl] = useState('');\n const [results, setResults] = useState<AxeResult | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingAi, setIsLoadingAi] = useState<string | null>(null);\n const [aiFixes, setAiFixes] = useState<Record<string, string>>({});\n const iframeRef = useRef<HTMLIFrameElement>(null);\n\n const handleAudit = () => {\n const targetUrl = url.startsWith('http') ? url : `https://${url}`;\n setAuditUrl(targetUrl);\n setIsLoading(true);\n setResults(null);\n setAiFixes({});\n };\n \n const handleIframeLoad = async () => {\n if (isLoading && iframeRef.current) {\n try {\n const auditResults = await runAxeAudit(iframeRef.current.contentWindow!.document);\n setResults(auditResults);\n } catch (error) {\n console.error(error);\n alert('Could not audit this page. This may be due to security restrictions (CORS).');\n } finally {\n setIsLoading(false);\n }\n }\n };\n \n const handleGetFix = async (issue: any) => {\n const issueId = issue.id;\n setIsLoadingAi(issueId);\n try {\n const fix = await suggestA11yFix(issue);\n setAiFixes(prev => ({...prev, [issueId]: fix}));\n } catch(e) {\n setAiFixes(prev => ({...prev, [issueId]: 'Could not get suggestion.'}));\n } finally {\n setIsLoadingAi(null);\n }\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\"><h1 className=\"text-3xl font-bold flex items-center\"><EyeIcon /><span className=\"ml-3\">Automated Accessibility Auditor</span></h1><p className=\"text-text-secondary mt-1\">Audit a live URL for accessibility issues and get AI-powered fixes.</p></header>\n <div className=\"flex gap-2 mb-4\"><input type=\"text\" value={url} onChange={e => setUrl(e.target.value)} placeholder=\"https://example.com\" className=\"flex-grow p-2 border rounded\"/><button onClick={handleAudit} disabled={isLoading} className=\"btn-primary px-6 py-2\">{isLoading ? 'Auditing...' : 'Audit'}</button></div>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"bg-background border-2 border-dashed border-border rounded-lg overflow-hidden\"><iframe ref={iframeRef} src={auditUrl} title=\"Audit Target\" className=\"w-full h-full bg-white\" onLoad={handleIframeLoad} sandbox=\"allow-scripts allow-same-origin\"/></div>\n <div className=\"bg-surface p-4 border border-border rounded-lg flex flex-col\">\n <h3 className=\"text-lg font-bold mb-2\">Audit Results</h3>\n <div className=\"flex-grow overflow-y-auto pr-2\">\n {isLoading && <div className=\"flex justify-center items-center h-full\"><LoadingSpinner/></div>}\n {results && (results.violations.length === 0 ? <p>No violations found!</p> :\n results.violations.map((v, i) => (\n <div key={v.id + i} className=\"p-3 mb-2 bg-background border border-border rounded\">\n <p className=\"font-bold text-red-600\">{v.help}</p>\n <p className=\"text-sm my-1\">{v.description}</p>\n <button onClick={() => handleGetFix(v)} disabled={!!isLoadingAi} className=\"text-xs flex items-center gap-1 text-primary font-semibold\"><SparklesIcon/> {isLoadingAi === v.id ? 'Getting fix...' : 'Ask AI for a fix'}</button>\n {aiFixes[v.id] && <div className=\"mt-2 text-xs border-t pt-2\"><MarkdownRenderer content={aiFixes[v.id]}/></div>}\n </div>\n ))\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["AccessibilityAuditor","url","setUrl","useState","auditUrl","setAuditUrl","results","setResults","isLoading","setIsLoading","isLoadingAi","setIsLoadingAi","aiFixes","setAiFixes","iframeRef","useRef","handleAudit","targetUrl","handleIframeLoad","auditResults","runAxeAudit","error","handleGetFix","issue","issueId","fix","suggestA11yFix","prev","jsxs","jsx","EyeIcon","e","LoadingSpinner","v","i","SparklesIcon","MarkdownRenderer"],"mappings":"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"}
|
assets/AiCodeExplainer-DBywGusR.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as t,j as e}from"./react-B-lWpQRQ.js";import{m as y}from"./mermaid-Di130UA9.js";import{q as M,t as E,v as $,L as j,M as A}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./@braintree-DY5JYOZd.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";import"./ts-dedent-DrFu-skq.js";import"./d3-transition-B3UNvQtR.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-Bj1BqfTz.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-BPoWDlND.js";import"./dompurify-CGs5VtEq.js";import"./stylis-D5iaQeiq.js";import"./dagre-d3-es-B7gFXptC.js";import"./cytoscape-CyJtwmzi.js";import"./cytoscape-cose-bilkent-NPpav9ZH.js";import"./cose-base-B9X2GT9R.js";import"./layout-base-85SqnYhL.js";import"./khroma-DUX6PT6k.js";import"./dayjs-eqEFLWAl.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./d3-shape-CcP_g-Bt.js";import"./d3-path-CimkQT29.js";import"./roughjs-GtHDBO_d.js";import"./d3-sankey-CgO6js3K.js";import"./d3-scale-chromatic-CvOaoHrI.js";import"./@iconify-D2F_yRRF.js";import"./cytoscape-fcose-V_63gsaN.js";import"./d3-hierarchy-S4eE0pp0.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";const R=`const bubbleSort = (arr) => {
|
| 2 |
+
for (let i = 0; i < arr.length; i++) {
|
| 3 |
+
for (let j = 0; j < arr.length - i - 1; j++) {
|
| 4 |
+
if (arr[j] > arr[j + 1]) {
|
| 5 |
+
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
|
| 6 |
+
}
|
| 7 |
+
}
|
| 8 |
+
}
|
| 9 |
+
return arr;
|
| 10 |
+
};`,T=l=>l.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\b(const|let|var|function|return|if|for|=>|import|from|export|default)\b/g,'<span class="text-indigo-400 font-semibold">$1</span>').replace(/(\`|'|")(.*?)(\`|'|")/g,'<span class="text-emerald-400">$1$2$3</span>').replace(/(\/\/.*)/g,'<span class="text-gray-400 italic">$1</span>').replace(/(\{|\}|\(|\)|\[|\])/g,'<span class="text-gray-400">$1</span>');y.initialize({startOnLoad:!1,theme:"neutral",securityLevel:"loose"});const Te=({initialCode:l})=>{const[n,b]=t.useState(l||R),[a,v]=t.useState(null),[c,N]=t.useState(""),[m,u]=t.useState(null),[i,w]=t.useState(!1),[f,h]=t.useState(""),[d,C]=t.useState("summary"),p=t.useRef(null),x=t.useRef(null),g=t.useCallback(async r=>{if(!r.trim()){h("Please enter some code to explain.");return}w(!0),h(""),v(null),N(""),u(null),C("summary");try{const[s,o]=await Promise.all([M(r),E(r)]);v(s),N(o.replace(/```mermaid\n|```/g,""))}catch(s){const o=s instanceof Error?s.message:"An unknown error occurred.";h(`Failed to get explanation: ${o}`)}finally{w(!1)}},[]);t.useEffect(()=>{l&&(b(l),g(l))},[l,g]),t.useEffect(()=>{(async()=>{if(d==="flowchart"&&c&&!m)try{const s=document.documentElement.classList.contains("dark")?"dark":"neutral";y.initialize({startOnLoad:!1,theme:s,securityLevel:"loose"});const{svg:o}=await y.render(`mermaid-graph-${Date.now()}`,c);u(o)}catch(s){console.error("Mermaid rendering error:",s),u('<p class="text-red-500 p-4">Error rendering flowchart. The diagram syntax may be invalid.</p>')}})()},[d,c,m]);const S=()=>{x.current&&p.current&&(x.current.scrollTop=p.current.scrollTop,x.current.scrollLeft=p.current.scrollLeft)},L=t.useMemo(()=>T(n),[n]),k=()=>{if(!a)return null;switch(d){case"summary":return e.jsx(A,{content:a.summary});case"lineByLine":return e.jsx("div",{className:"space-y-3",children:a.lineByLine.map((r,s)=>e.jsxs("div",{className:"p-3 bg-background rounded-md border border-border",children:[e.jsxs("p",{className:"font-mono text-xs text-primary mb-1",children:["Lines: ",r.lines]}),e.jsx("p",{className:"text-sm",children:r.explanation})]},s))});case"complexity":return e.jsxs("div",{children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Time Complexity:"})," ",e.jsx("span",{className:"font-mono text-amber-600",children:a.complexity.time})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Space Complexity:"})," ",e.jsx("span",{className:"font-mono text-amber-600",children:a.complexity.space})]})]});case"suggestions":return e.jsx("ul",{className:"list-disc list-inside space-y-2",children:a.suggestions.map((r,s)=>e.jsx("li",{children:r},s))});case"flowchart":return c?m?e.jsx("div",{className:"w-full h-full flex items-center justify-center [&>svg]:max-w-full [&>svg]:max-h-full",dangerouslySetInnerHTML:{__html:m}}):e.jsx("div",{className:"w-full h-full flex items-center justify-center",children:e.jsx(j,{})}):e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:"Could not generate a flowchart for this code."})}};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6 flex-shrink-0",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx($,{}),e.jsx("span",{className:"ml-3",children:"AI Code Explainer"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Get a detailed, structured analysis of any code snippet."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 md:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col min-h-0 md:col-span-1",children:[e.jsx("label",{htmlFor:"code-input",className:"text-sm font-medium text-text-secondary mb-2",children:"Your Code"}),e.jsxs("div",{className:"relative flex-grow bg-surface border border-border rounded-md focus-within:ring-2 focus-within:ring-primary overflow-hidden",children:[e.jsx("textarea",{ref:p,id:"code-input",value:n,onChange:r=>b(r.target.value),onScroll:S,placeholder:"Paste your code here...",spellCheck:"false",className:"absolute inset-0 w-full h-full p-4 bg-transparent resize-none font-mono text-sm text-transparent caret-primary outline-none z-10"}),e.jsx("pre",{ref:x,"aria-hidden":"true",className:"absolute inset-0 w-full h-full p-4 font-mono text-sm text-text-primary pointer-events-none z-0 whitespace-pre-wrap overflow-auto no-scrollbar",dangerouslySetInnerHTML:{__html:L+`
|
| 11 |
+
`}})]}),e.jsx("div",{className:"mt-4 flex-shrink-0",children:e.jsx("button",{onClick:()=>g(n),disabled:i,className:"btn-primary w-full flex items-center justify-center px-6 py-3",children:i?e.jsx(j,{}):"Analyze Code"})})]}),e.jsxs("div",{className:"flex flex-col min-h-0 md:col-span-1",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary mb-2",children:"AI Analysis"}),e.jsxs("div",{className:"relative flex-grow flex flex-col bg-surface border border-border rounded-md overflow-hidden",children:[e.jsx("div",{className:"flex-shrink-0 flex border-b border-border",children:["summary","lineByLine","complexity","suggestions","flowchart"].map(r=>e.jsx("button",{onClick:()=>C(r),disabled:!a,className:`px-4 py-2 text-sm font-medium capitalize transition-colors ${d===r?"bg-background text-primary font-semibold":"text-text-secondary hover:bg-gray-100 dark:hover:bg-slate-700 disabled:text-gray-400 dark:disabled:text-slate-500"}`,children:r.replace(/([A-Z])/g," $1")},r))}),e.jsxs("div",{className:"p-4 flex-grow overflow-y-auto",children:[i&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(j,{})}),f&&e.jsx("p",{className:"text-red-500",children:f}),a&&!i&&k(),!i&&!a&&!f&&e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:"The analysis will appear here."})]})]})]})]})]})};export{Te as AiCodeExplainer};
|
| 12 |
+
//# sourceMappingURL=AiCodeExplainer-DBywGusR.js.map
|
assets/AiCodeExplainer-DBywGusR.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiCodeExplainer-DBywGusR.js","sources":["../../components/features/AiCodeExplainer.tsx"],"sourcesContent":["/**\n * @license\n * SPDX-License-Identifier: Apache-2.0\n*/\nimport React, { useState, useCallback, useEffect, useMemo, useRef } from 'react';\nimport mermaid from 'mermaid';\nimport { explainCodeStructured, generateMermaidJs } from '../../services/index.ts';\nimport type { StructuredExplanation } from '../../types.ts';\nimport { CpuChipIcon } from '../icons/index.ts';\nimport { MarkdownRenderer, LoadingSpinner } from '../shared/index.tsx';\n\nconst exampleCode = `const bubbleSort = (arr) => {\n for (let i = 0; i < arr.length; i++) {\n for (let j = 0; j < arr.length - i - 1; j++) {\n if (arr[j] > arr[j + 1]) {\n [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];\n }\n }\n }\n return arr;\n};`;\n\ntype ExplanationTab = 'summary' | 'lineByLine' | 'complexity' | 'suggestions' | 'flowchart';\n\nconst simpleSyntaxHighlight = (code: string) => {\n const escapedCode = code\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n\n return escapedCode\n .replace(/\\b(const|let|var|function|return|if|for|=>|import|from|export|default)\\b/g, '<span class=\"text-indigo-400 font-semibold\">$1</span>')\n .replace(/(\\`|'|\")(.*?)(\\`|'|\")/g, '<span class=\"text-emerald-400\">$1$2$3</span>')\n .replace(/(\\/\\/.*)/g, '<span class=\"text-gray-400 italic\">$1</span>')\n .replace(/(\\{|\\}|\\(|\\)|\\[|\\])/g, '<span class=\"text-gray-400\">$1</span>');\n};\n\nmermaid.initialize({ startOnLoad: false, theme: 'neutral', securityLevel: 'loose' });\n\nexport const AiCodeExplainer: React.FC<{ initialCode?: string }> = ({ initialCode }) => {\n const [code, setCode] = useState<string>(initialCode || exampleCode);\n const [explanation, setExplanation] = useState<StructuredExplanation | null>(null);\n const [mermaidCode, setMermaidCode] = useState<string>('');\n const [mermaidSvg, setMermaidSvg] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n const [activeTab, setActiveTab] = useState<ExplanationTab>('summary');\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const preRef = useRef<HTMLPreElement>(null);\n\n const handleExplain = useCallback(async (codeToExplain: string) => {\n if (!codeToExplain.trim()) {\n setError('Please enter some code to explain.');\n return;\n }\n setIsLoading(true);\n setError('');\n setExplanation(null);\n setMermaidCode('');\n setMermaidSvg(null);\n setActiveTab('summary');\n try {\n const [explanationResult, mermaidResult] = await Promise.all([\n explainCodeStructured(codeToExplain),\n generateMermaidJs(codeToExplain)\n ]);\n setExplanation(explanationResult);\n setMermaidCode(mermaidResult.replace(/```mermaid\\n|```/g, ''));\n\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to get explanation: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, []);\n \n useEffect(() => {\n if (initialCode) {\n setCode(initialCode);\n handleExplain(initialCode);\n }\n }, [initialCode, handleExplain]);\n\n useEffect(() => {\n const renderMermaid = async () => {\n if (activeTab === 'flowchart' && mermaidCode && !mermaidSvg) {\n try {\n const theme = document.documentElement.classList.contains('dark') ? 'dark' : 'neutral';\n mermaid.initialize({ startOnLoad: false, theme, securityLevel: 'loose' });\n const { svg } = await mermaid.render(`mermaid-graph-${Date.now()}`, mermaidCode);\n setMermaidSvg(svg);\n } catch (e) {\n console.error(\"Mermaid rendering error:\", e);\n setMermaidSvg(`<p class=\"text-red-500 p-4\">Error rendering flowchart. The diagram syntax may be invalid.</p>`);\n }\n }\n }\n renderMermaid();\n }, [activeTab, mermaidCode, mermaidSvg]);\n\n\n const handleScroll = () => {\n if (preRef.current && textareaRef.current) {\n preRef.current.scrollTop = textareaRef.current.scrollTop;\n preRef.current.scrollLeft = textareaRef.current.scrollLeft;\n }\n };\n\n const highlightedCode = useMemo(() => simpleSyntaxHighlight(code), [code]);\n\n const renderTabContent = () => {\n if (!explanation) return null;\n switch(activeTab) {\n case 'summary':\n return <MarkdownRenderer content={explanation.summary} />;\n case 'lineByLine':\n return (\n <div className=\"space-y-3\">\n {explanation.lineByLine.map((item, index) => (\n <div key={index} className=\"p-3 bg-background rounded-md border border-border\">\n <p className=\"font-mono text-xs text-primary mb-1\">Lines: {item.lines}</p>\n <p className=\"text-sm\">{item.explanation}</p>\n </div>\n ))}\n </div>\n );\n case 'complexity':\n return (\n <div>\n <p><strong>Time Complexity:</strong> <span className=\"font-mono text-amber-600\">{explanation.complexity.time}</span></p>\n <p><strong>Space Complexity:</strong> <span className=\"font-mono text-amber-600\">{explanation.complexity.space}</span></p>\n </div>\n );\n case 'suggestions':\n return (\n <ul className=\"list-disc list-inside space-y-2\">\n {explanation.suggestions.map((item, index) => <li key={index}>{item}</li>)}\n </ul>\n );\n case 'flowchart':\n if (!mermaidCode) {\n return <div className=\"text-text-secondary h-full flex items-center justify-center\">Could not generate a flowchart for this code.</div>;\n }\n if (!mermaidSvg) {\n return <div className=\"w-full h-full flex items-center justify-center\"><LoadingSpinner /></div>;\n }\n return (\n <div\n className=\"w-full h-full flex items-center justify-center [&>svg]:max-w-full [&>svg]:max-h-full\"\n dangerouslySetInnerHTML={{ __html: mermaidSvg }}\n />\n );\n }\n }\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6 flex-shrink-0\">\n <h1 className=\"text-3xl font-bold flex items-center\">\n <CpuChipIcon />\n <span className=\"ml-3\">AI Code Explainer</span>\n </h1>\n <p className=\"text-text-secondary mt-1\">Get a detailed, structured analysis of any code snippet.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 md:grid-cols-2 gap-6 min-h-0\">\n \n {/* Left Column: Code Input */}\n <div className=\"flex flex-col min-h-0 md:col-span-1\">\n <label htmlFor=\"code-input\" className=\"text-sm font-medium text-text-secondary mb-2\">Your Code</label>\n <div className=\"relative flex-grow bg-surface border border-border rounded-md focus-within:ring-2 focus-within:ring-primary overflow-hidden\">\n <textarea\n ref={textareaRef}\n id=\"code-input\"\n value={code}\n onChange={(e) => setCode(e.target.value)}\n onScroll={handleScroll}\n placeholder=\"Paste your code here...\"\n spellCheck=\"false\"\n className=\"absolute inset-0 w-full h-full p-4 bg-transparent resize-none font-mono text-sm text-transparent caret-primary outline-none z-10\"\n />\n <pre \n ref={preRef}\n aria-hidden=\"true\"\n className=\"absolute inset-0 w-full h-full p-4 font-mono text-sm text-text-primary pointer-events-none z-0 whitespace-pre-wrap overflow-auto no-scrollbar\"\n dangerouslySetInnerHTML={{ __html: highlightedCode + '\\n' }}\n />\n </div>\n <div className=\"mt-4 flex-shrink-0\">\n <button\n onClick={() => handleExplain(code)}\n disabled={isLoading}\n className=\"btn-primary w-full flex items-center justify-center px-6 py-3\"\n >\n {isLoading ? <LoadingSpinner/> : 'Analyze Code'}\n </button>\n </div>\n </div>\n\n {/* Right Column: AI Analysis */}\n <div className=\"flex flex-col min-h-0 md:col-span-1\">\n <label className=\"text-sm font-medium text-text-secondary mb-2\">AI Analysis</label>\n <div className=\"relative flex-grow flex flex-col bg-surface border border-border rounded-md overflow-hidden\">\n <div className=\"flex-shrink-0 flex border-b border-border\">\n {(['summary', 'lineByLine', 'complexity', 'suggestions', 'flowchart'] as ExplanationTab[]).map(tab => (\n <button key={tab} onClick={() => setActiveTab(tab)} disabled={!explanation}\n className={`px-4 py-2 text-sm font-medium capitalize transition-colors ${activeTab === tab ? 'bg-background text-primary font-semibold' : 'text-text-secondary hover:bg-gray-100 dark:hover:bg-slate-700 disabled:text-gray-400 dark:disabled:text-slate-500'}`}>\n {tab.replace(/([A-Z])/g, ' $1')}\n </button>\n ))}\n </div>\n <div className=\"p-4 flex-grow overflow-y-auto\">\n {isLoading && <div className=\"flex items-center justify-center h-full\"><LoadingSpinner /></div>}\n {error && <p className=\"text-red-500\">{error}</p>}\n {explanation && !isLoading && renderTabContent()}\n {!isLoading && !explanation && !error && <div className=\"text-text-secondary h-full flex items-center justify-center\">The analysis will appear here.</div>}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["exampleCode","simpleSyntaxHighlight","code","mermaid","AiCodeExplainer","initialCode","setCode","useState","explanation","setExplanation","mermaidCode","setMermaidCode","mermaidSvg","setMermaidSvg","isLoading","setIsLoading","error","setError","activeTab","setActiveTab","textareaRef","useRef","preRef","handleExplain","useCallback","codeToExplain","explanationResult","mermaidResult","explainCodeStructured","generateMermaidJs","err","errorMessage","useEffect","theme","svg","e","handleScroll","highlightedCode","useMemo","renderTabContent","jsx","MarkdownRenderer","item","index","jsxs","LoadingSpinner","CpuChipIcon","tab"],"mappings":"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"}
|
assets/AiCodeMigrator-DyYOOclS.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r,j as e}from"./react-B-lWpQRQ.js";import{aj as L,ak as k,L as w,M as A}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const M=["SASS","CSS","JavaScript","TypeScript","Python","Go","React","Vue","Angular","Tailwind CSS"],E=`// SASS
|
| 2 |
+
$primary-color: #333;
|
| 3 |
+
|
| 4 |
+
body {
|
| 5 |
+
color: $primary-color;
|
| 6 |
+
font-family: sans-serif;
|
| 7 |
+
}`,Y=({inputCode:a,fromLang:o,toLang:l})=>{const[f,g]=r.useState(a||E),[m,h]=r.useState(""),[j,S]=r.useState(o||"SASS"),[b,y]=r.useState(l||"CSS"),[n,N]=r.useState(!1),[x,i]=r.useState(""),u=r.useCallback(async(t,p,s)=>{if(!t.trim()){i("Please enter some code to migrate.");return}N(!0),i(""),h("");try{const c=L(t,p,s);let d="";for await(const C of c)d+=C,h(d)}catch(c){const d=c instanceof Error?c.message:"An unknown error occurred.";i(`Failed to migrate code: ${d}`)}finally{N(!1)}},[]);r.useEffect(()=>{a&&o&&l&&(g(a),S(o),y(l),u(a,o,l))},[a,o,l,u]);const v=({value:t,onChange:p})=>e.jsx("select",{value:t,onChange:s=>p(s.target.value),className:"w-full px-3 py-2 rounded-md bg-surface border border-border",children:M.map(s=>e.jsx("option",{value:s,children:s},s))});return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(k,{}),e.jsx("span",{className:"ml-3",children:"AI Code Migrator"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Translate code between languages, frameworks, and syntax styles."})]}),e.jsxs("div",{className:"flex-grow flex flex-col min-h-0",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6 flex-grow min-h-0",children:[e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:"mb-2",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary",children:"From:"}),e.jsx(v,{value:j,onChange:S})]}),e.jsx("textarea",{value:f,onChange:t=>g(t.target.value),placeholder:"Paste your source code here...",className:"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm"})]}),e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:"mb-2",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary",children:"To:"}),e.jsx(v,{value:b,onChange:y})]}),e.jsxs("div",{className:"flex-grow p-1 bg-background border border-border rounded-md overflow-y-auto",children:[n&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(w,{})}),x&&e.jsx("p",{className:"p-4 text-red-500",children:x}),m&&!n&&e.jsx(A,{content:m}),!n&&!m&&!x&&e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:"Migrated code will appear here."})]})]})]}),e.jsx("button",{onClick:()=>u(f,j,b),disabled:n,className:"btn-primary mt-4 w-full max-w-sm mx-auto flex items-center justify-center px-6 py-3",children:n?e.jsx(w,{}):"Migrate Code"})]})]})};export{Y as AiCodeMigrator};
|
| 8 |
+
//# sourceMappingURL=AiCodeMigrator-DyYOOclS.js.map
|
assets/AiCodeMigrator-DyYOOclS.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiCodeMigrator-DyYOOclS.js","sources":["../../components/features/AiCodeMigrator.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect } from 'react';\nimport { migrateCodeStream } from '../../services/index.ts';\nimport { ArrowPathIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { MarkdownRenderer } from '../shared/index.tsx';\n\nconst languages = ['SASS', 'CSS', 'JavaScript', 'TypeScript', 'Python', 'Go', 'React', 'Vue', 'Angular', 'Tailwind CSS'];\n\nconst exampleCode = `// SASS\n$primary-color: #333;\n\nbody {\n color: $primary-color;\n font-family: sans-serif;\n}`;\n\nexport const AiCodeMigrator: React.FC<{ inputCode?: string, fromLang?: string, toLang?: string }> = ({ inputCode: initialCode, fromLang: initialFrom, toLang: initialTo }) => {\n const [inputCode, setInputCode] = useState<string>(initialCode || exampleCode);\n const [outputCode, setOutputCode] = useState<string>('');\n const [fromLang, setFromLang] = useState(initialFrom || 'SASS');\n const [toLang, setToLang] = useState(initialTo || 'CSS');\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n\n const handleMigrate = useCallback(async (code: string, from: string, to: string) => {\n if (!code.trim()) {\n setError('Please enter some code to migrate.');\n return;\n }\n setIsLoading(true);\n setError('');\n setOutputCode('');\n try {\n const stream = migrateCodeStream(code, from, to);\n let fullResponse = '';\n for await (const chunk of stream) {\n fullResponse += chunk;\n setOutputCode(fullResponse);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to migrate code: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (initialCode && initialFrom && initialTo) {\n setInputCode(initialCode);\n setFromLang(initialFrom);\n setToLang(initialTo);\n handleMigrate(initialCode, initialFrom, initialTo);\n }\n }, [initialCode, initialFrom, initialTo, handleMigrate]);\n\n const LanguageSelector: React.FC<{ value: string, onChange: (val: string) => void }> = ({ value, onChange }) => (\n <select value={value} onChange={e => onChange(e.target.value)} className=\"w-full px-3 py-2 rounded-md bg-surface border border-border\">\n {languages.map(lang => <option key={lang} value={lang}>{lang}</option>)}\n </select>\n );\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\"><ArrowPathIcon /><span className=\"ml-3\">AI Code Migrator</span></h1>\n <p className=\"text-text-secondary mt-1\">Translate code between languages, frameworks, and syntax styles.</p>\n </header>\n <div className=\"flex-grow flex flex-col min-h-0\">\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6 flex-grow min-h-0\">\n <div className=\"flex flex-col h-full\">\n <div className=\"mb-2\">\n <label className=\"text-sm font-medium text-text-secondary\">From:</label>\n <LanguageSelector value={fromLang} onChange={setFromLang} />\n </div>\n <textarea\n value={inputCode}\n onChange={(e) => setInputCode(e.target.value)}\n placeholder=\"Paste your source code here...\"\n className=\"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm\"\n />\n </div>\n <div className=\"flex flex-col h-full\">\n <div className=\"mb-2\">\n <label className=\"text-sm font-medium text-text-secondary\">To:</label>\n <LanguageSelector value={toLang} onChange={setToLang} />\n </div>\n <div className=\"flex-grow p-1 bg-background border border-border rounded-md overflow-y-auto\">\n {isLoading && <div className=\"flex items-center justify-center h-full\"><LoadingSpinner /></div>}\n {error && <p className=\"p-4 text-red-500\">{error}</p>}\n {outputCode && !isLoading && <MarkdownRenderer content={outputCode} />}\n {!isLoading && !outputCode && !error && <div className=\"text-text-secondary h-full flex items-center justify-center\">Migrated code will appear here.</div>}\n </div>\n </div>\n </div>\n <button\n onClick={() => handleMigrate(inputCode, fromLang, toLang)}\n disabled={isLoading}\n className=\"btn-primary mt-4 w-full max-w-sm mx-auto flex items-center justify-center px-6 py-3\"\n >\n {isLoading ? <LoadingSpinner /> : 'Migrate Code'}\n </button>\n </div>\n </div>\n );\n};"],"names":["languages","exampleCode","AiCodeMigrator","initialCode","initialFrom","initialTo","inputCode","setInputCode","useState","outputCode","setOutputCode","fromLang","setFromLang","toLang","setToLang","isLoading","setIsLoading","error","setError","handleMigrate","useCallback","code","from","to","stream","migrateCodeStream","fullResponse","chunk","err","errorMessage","useEffect","LanguageSelector","value","onChange","jsx","e","lang","jsxs","ArrowPathIcon","LoadingSpinner","MarkdownRenderer"],"mappings":"2rBAMA,MAAMA,EAAY,CAAC,OAAQ,MAAO,aAAc,aAAc,SAAU,KAAM,QAAS,MAAO,UAAW,cAAc,EAEjHC,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQPC,EAAuF,CAAC,CAAE,UAAWC,EAAa,SAAUC,EAAa,OAAQC,KAAgB,CAC1K,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAiBL,GAAeF,CAAW,EACvE,CAACQ,EAAYC,CAAa,EAAIF,EAAAA,SAAiB,EAAE,EACjD,CAACG,EAAUC,CAAW,EAAIJ,EAAAA,SAASJ,GAAe,MAAM,EACxD,CAACS,EAAQC,CAAS,EAAIN,EAAAA,SAASH,GAAa,KAAK,EACjD,CAACU,EAAWC,CAAY,EAAIR,EAAAA,SAAkB,EAAK,EACnD,CAACS,EAAOC,CAAQ,EAAIV,EAAAA,SAAiB,EAAE,EAEvCW,EAAgBC,EAAAA,YAAY,MAAOC,EAAcC,EAAcC,IAAe,CAChF,GAAI,CAACF,EAAK,OAAQ,CACdH,EAAS,oCAAoC,EAC7C,MACJ,CACAF,EAAa,EAAI,EACjBE,EAAS,EAAE,EACXR,EAAc,EAAE,EAChB,GAAI,CACA,MAAMc,EAASC,EAAkBJ,EAAMC,EAAMC,CAAE,EAC/C,IAAIG,EAAe,GACnB,gBAAiBC,KAASH,EACtBE,GAAgBC,EAChBjB,EAAcgB,CAAY,CAElC,OAASE,EAAK,CACV,MAAMC,EAAeD,aAAe,MAAQA,EAAI,QAAU,6BAC1DV,EAAS,2BAA2BW,CAAY,EAAE,CACtD,QAAA,CACIb,EAAa,EAAK,CACtB,CACJ,EAAG,CAAA,CAAE,EAELc,EAAAA,UAAU,IAAM,CACR3B,GAAeC,GAAeC,IAC9BE,EAAaJ,CAAW,EACxBS,EAAYR,CAAW,EACvBU,EAAUT,CAAS,EACnBc,EAAchB,EAAaC,EAAaC,CAAS,EAEzD,EAAG,CAACF,EAAaC,EAAaC,EAAWc,CAAa,CAAC,EAEvD,MAAMY,EAAiF,CAAC,CAAE,MAAAC,EAAO,SAAAC,CAAA,IAC7FC,EAAAA,IAAC,SAAA,CAAO,MAAAF,EAAc,SAAUG,GAAKF,EAASE,EAAE,OAAO,KAAK,EAAG,UAAU,8DACpE,SAAAnC,EAAU,IAAIoC,GAAQF,EAAAA,IAAC,SAAA,CAAkB,MAAOE,EAAO,SAAAA,CAAA,EAApBA,CAAyB,CAAS,EAC1E,EAGJ,OACIC,EAAAA,KAAC,MAAA,CAAI,UAAU,2DACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,uCAAuC,SAAA,CAAAH,EAAAA,IAACI,EAAA,EAAc,EAAEJ,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,kBAAA,CAAgB,CAAA,EAAO,EACpHA,EAAAA,IAAC,IAAA,CAAE,UAAU,2BAA2B,SAAA,kEAAA,CAAgE,CAAA,EAC5G,EACAG,EAAAA,KAAC,MAAA,CAAI,UAAU,kCACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,0DACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,OACX,SAAA,CAAAH,EAAAA,IAAC,QAAA,CAAM,UAAU,0CAA0C,SAAA,QAAK,EAChEA,EAAAA,IAACH,EAAA,CAAiB,MAAOpB,EAAU,SAAUC,CAAA,CAAa,CAAA,EAC9D,EACAsB,EAAAA,IAAC,WAAA,CACG,MAAO5B,EACP,SAAW6B,GAAM5B,EAAa4B,EAAE,OAAO,KAAK,EAC5C,YAAY,iCACZ,UAAU,wFAAA,CAAA,CACd,EACJ,EACAE,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,OACX,SAAA,CAAAH,EAAAA,IAAC,QAAA,CAAM,UAAU,0CAA0C,SAAA,MAAG,EAC9DA,EAAAA,IAACH,EAAA,CAAiB,MAAOlB,EAAQ,SAAUC,CAAA,CAAW,CAAA,EAC1D,EACAuB,EAAAA,KAAC,MAAA,CAAI,UAAU,8EACX,SAAA,CAAAtB,SAAc,MAAA,CAAI,UAAU,0CAA0C,SAAAmB,MAACK,IAAe,EAAE,EACvFtB,GAASiB,EAAAA,IAAC,IAAA,CAAE,UAAU,mBAAoB,SAAAjB,EAAM,EAChDR,GAAc,CAACM,GAAamB,EAAAA,IAACM,EAAA,CAAiB,QAAS/B,EAAY,EACnE,CAACM,GAAa,CAACN,GAAc,CAACQ,GAASiB,EAAAA,IAAC,MAAA,CAAI,UAAU,8DAA8D,SAAA,iCAAA,CAA+B,CAAA,CAAA,CACxJ,CAAA,CAAA,CACJ,CAAA,EACJ,EACCA,EAAAA,IAAC,SAAA,CACE,QAAS,IAAMf,EAAcb,EAAWK,EAAUE,CAAM,EACxD,SAAUE,EACV,UAAU,sFAET,SAAAA,EAAYmB,EAAAA,IAACK,EAAA,CAAA,CAAe,EAAK,cAAA,CAAA,CACtC,CAAA,CACJ,CAAA,EACJ,CAER"}
|
assets/AiCodingChallenge-CHN_Dy1Y.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r,j as e}from"./react-B-lWpQRQ.js";import{a9 as p,I as f,L as d,M as h}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const B=()=>{const[a,o]=r.useState(""),[t,i]=r.useState(!1),[l,c]=r.useState(""),m=r.useCallback(async()=>{i(!0),c(""),o("");try{const s=p(null);let n="";for await(const x of s)n+=x,o(n)}catch(s){const n=s instanceof Error?s.message:"An unknown error occurred.";c(`Failed to generate challenge: ${n}`)}finally{i(!1)}},[]);return r.useEffect(()=>{m()},[]),e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6 flex justify-between items-center",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(f,{}),e.jsx("span",{className:"ml-3",children:"AI Coding Challenge Generator"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Generate a unique coding problem to test your skills."})]}),e.jsx("button",{onClick:m,disabled:t,className:"btn-primary flex items-center justify-center px-6 py-3",children:t?e.jsx(d,{}):"Generate New Challenge"})]}),e.jsxs("div",{className:"flex-grow p-4 bg-surface border border-border rounded-md overflow-y-auto",children:[t&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(d,{})}),l&&e.jsx("p",{className:"text-red-500",children:l}),a&&!t&&e.jsx(h,{content:a}),!t&&!a&&!l&&e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:'Click "Generate New Challenge" to start.'})]})]})};export{B as AiCodingChallenge};
|
| 2 |
+
//# sourceMappingURL=AiCodingChallenge-CHN_Dy1Y.js.map
|
assets/AiCodingChallenge-CHN_Dy1Y.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiCodingChallenge-CHN_Dy1Y.js","sources":["../../components/features/AiCodingChallenge.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect } from 'react';\nimport { generateCodingChallengeStream } from '../../services/index.ts';\nimport { BeakerIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { MarkdownRenderer } from '../shared/index.tsx';\n\nexport const AiCodingChallenge: React.FC = () => {\n const [challenge, setChallenge] = useState<string>('');\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n\n const handleGenerate = useCallback(async () => {\n setIsLoading(true);\n setError('');\n setChallenge('');\n try {\n const stream = generateCodingChallengeStream(null);\n let fullResponse = '';\n for await (const chunk of stream) {\n fullResponse += chunk;\n setChallenge(fullResponse);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to generate challenge: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n // Generate a challenge on initial load for a better user experience\n handleGenerate();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6 flex justify-between items-center\">\n <div>\n <h1 className=\"text-3xl font-bold flex items-center\">\n <BeakerIcon />\n <span className=\"ml-3\">AI Coding Challenge Generator</span>\n </h1>\n <p className=\"text-text-secondary mt-1\">Generate a unique coding problem to test your skills.</p>\n </div>\n <button\n onClick={handleGenerate}\n disabled={isLoading}\n className=\"btn-primary flex items-center justify-center px-6 py-3\"\n >\n {isLoading ? <LoadingSpinner /> : 'Generate New Challenge'}\n </button>\n </header>\n <div className=\"flex-grow p-4 bg-surface border border-border rounded-md overflow-y-auto\">\n {isLoading && (\n <div className=\"flex items-center justify-center h-full\">\n <LoadingSpinner />\n </div>\n )}\n {error && <p className=\"text-red-500\">{error}</p>}\n {challenge && !isLoading && (\n <MarkdownRenderer content={challenge} />\n )}\n {!isLoading && !challenge && !error && (\n <div className=\"text-text-secondary h-full flex items-center justify-center\">\n Click \"Generate New Challenge\" to start.\n </div>\n )}\n </div>\n </div>\n );\n};"],"names":["AiCodingChallenge","challenge","setChallenge","useState","isLoading","setIsLoading","error","setError","handleGenerate","useCallback","stream","generateCodingChallengeStream","fullResponse","chunk","err","errorMessage","useEffect","jsxs","jsx","BeakerIcon","LoadingSpinner","MarkdownRenderer"],"mappings":"0rBAMO,MAAMA,EAA8B,IAAM,CAC7C,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAiB,EAAE,EAC/C,CAACC,EAAWC,CAAY,EAAIF,EAAAA,SAAkB,EAAK,EACnD,CAACG,EAAOC,CAAQ,EAAIJ,EAAAA,SAAiB,EAAE,EAEvCK,EAAiBC,EAAAA,YAAY,SAAY,CAC3CJ,EAAa,EAAI,EACjBE,EAAS,EAAE,EACXL,EAAa,EAAE,EACf,GAAI,CACA,MAAMQ,EAASC,EAA8B,IAAI,EACjD,IAAIC,EAAe,GACnB,gBAAiBC,KAASH,EACtBE,GAAgBC,EAChBX,EAAaU,CAAY,CAEjC,OAASE,EAAK,CACV,MAAMC,EAAeD,aAAe,MAAQA,EAAI,QAAU,6BAC1DP,EAAS,iCAAiCQ,CAAY,EAAE,CAC5D,QAAA,CACIV,EAAa,EAAK,CACtB,CACJ,EAAG,CAAA,CAAE,EAELW,OAAAA,EAAAA,UAAU,IAAM,CAEZR,EAAA,CAEJ,EAAG,CAAA,CAAE,EAGDS,EAAAA,KAAC,MAAA,CAAI,UAAU,2DACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,yCACd,SAAA,CAAAA,OAAC,MAAA,CACG,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,uCACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAW,EACZD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,+BAAA,CAA6B,CAAA,EACxD,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,2BAA2B,SAAA,uDAAA,CAAqD,CAAA,EACjG,EACAA,EAAAA,IAAC,SAAA,CACG,QAASV,EACT,SAAUJ,EACV,UAAU,yDAET,SAAAA,EAAYc,EAAAA,IAACE,EAAA,CAAA,CAAe,EAAK,wBAAA,CAAA,CACtC,EACJ,EACAH,EAAAA,KAAC,MAAA,CAAI,UAAU,2EACV,SAAA,CAAAb,SACK,MAAA,CAAI,UAAU,0CACZ,SAAAc,MAACE,IAAe,EACnB,EAEJd,GAASY,EAAAA,IAAC,IAAA,CAAE,UAAU,eAAgB,SAAAZ,EAAM,EAC5CL,GAAa,CAACG,GACXc,EAAAA,IAACG,EAAA,CAAiB,QAASpB,EAAW,EAExC,CAACG,GAAa,CAACH,GAAa,CAACK,GAC3BY,EAAAA,IAAC,MAAA,CAAI,UAAU,8DAA8D,SAAA,0CAAA,CAE7E,CAAA,CAAA,CAER,CAAA,EACJ,CAER"}
|
assets/AiCommandCenter-C1fx3T9b.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as c,j as e}from"./react-B-lWpQRQ.js";import{T as r}from"./@google-xfXoiafW.js";import{e as b,f as T,A as y,h as j,i as N,l as C,C as E,L as k}from"./index-DyMS-nC-.js";import{F as S}from"./taxonomyService-CBHwv5t5.js";import"./marked-CesSW9Du.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const w=[{name:"navigateTo",description:"Navigates to a specific feature page.",parameters:{type:r.OBJECT,properties:{featureId:{type:r.STRING,description:"The ID of the feature to navigate to.",enum:y}},required:["featureId"]}},{name:"runFeatureWithInput",description:"Navigates to a feature and passes initial data to it.",parameters:{type:r.OBJECT,properties:{featureId:{type:r.STRING,description:"The ID of the feature to run.",enum:y},props:{type:r.OBJECT,description:"An object containing the initial properties for the feature, based on its required inputs.",properties:{initialCode:{type:r.STRING},initialPrompt:{type:r.STRING},beforeCode:{type:r.STRING},afterCode:{type:r.STRING},logInput:{type:r.STRING},diff:{type:r.STRING},codeInput:{type:r.STRING},jsonInput:{type:r.STRING}}}},required:["featureId","props"]}}],v=[...w,{name:"runWorkspaceAction",description:"Executes a defined action on a connected workspace service like Jira, Slack, or GitHub.",parameters:{type:r.OBJECT,properties:{actionId:{type:r.STRING,description:"The unique identifier for the action to execute.",enum:[...j.keys()]},params:{type:r.OBJECT,description:"An object containing the parameters for the action, matching its required inputs."}},required:["actionId","params"]}}],R=S.map(a=>`- ${a.name} (${a.id}): ${a.description} Inputs: ${a.inputs}`).join(`
|
| 2 |
+
`),u=({text:a,onClick:n})=>e.jsx("button",{onClick:()=>n(a),className:"px-3 py-1.5 bg-surface border border-border rounded-full text-xs hover:bg-gray-100 dark:hover:bg-slate-700 transition-colors",children:a}),X=()=>{const{dispatch:a}=b(),[n,p]=c.useState(""),[l,f]=c.useState(!1),[x,s]=c.useState(""),h=c.useCallback(async()=>{if(n.trim()){f(!0),s("");try{const t=await T(n,v,R);if(t.functionCalls&&t.functionCalls.length>0){const I=t.functionCalls[0],{name:m,args:o}=I;switch(s(`Understood! Executing command: ${m}`),m){case"navigateTo":a({type:"SET_VIEW",payload:{view:o.featureId}});break;case"runFeatureWithInput":a({type:"SET_VIEW",payload:{view:o.featureId,props:o.props}});break;case"runWorkspaceAction":try{const i=await N(o.actionId,o.params);s(`Action '${o.actionId}' executed successfully.
|
| 3 |
+
|
| 4 |
+
Result: \`\`\`json
|
| 5 |
+
${JSON.stringify(i,null,2)}
|
| 6 |
+
\`\`\``)}catch(i){s(`Action failed: ${i instanceof Error?i.message:"Unknown error"}`)}break;default:s(`Unknown command: ${m}`)}p("")}else s(t.text)}catch(t){C(t,{prompt:n}),s(t instanceof Error?t.message:"An unknown error occurred.")}finally{f(!1)}}},[n,a]),g=t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),h())},d=t=>{p(t)};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6 text-center",children:[e.jsxs("h1",{className:"text-4xl font-extrabold tracking-tight flex items-center justify-center",children:[e.jsx(E,{}),e.jsx("span",{className:"ml-3",children:"AI Command Center"})]}),e.jsx("p",{className:"mt-2 text-lg text-text-secondary",children:"What would you like to do?"})]}),e.jsxs("div",{className:"flex-grow flex flex-col justify-end max-w-3xl w-full mx-auto",children:[x&&e.jsx("div",{className:"mb-4 p-4 bg-surface rounded-lg text-text-primary border border-border",children:e.jsxs("p",{children:[e.jsx("strong",{children:"AI:"})," ",x]})}),e.jsxs("div",{className:"relative",children:[e.jsx("textarea",{value:n,onChange:t=>p(t.target.value),onKeyDown:g,disabled:l,placeholder:'Try "explain this code: const a = 1;" or "open the theme designer"',className:"w-full p-4 pr-28 rounded-lg bg-surface border border-border focus:ring-2 focus:ring-primary focus:outline-none resize-none shadow-sm",rows:2}),e.jsx("button",{onClick:h,disabled:l,className:"btn-primary absolute right-3 top-1/2 -translate-y-1/2 px-4 py-2",children:l?e.jsx(k,{}):"Send"})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2 mt-4",children:[e.jsx(u,{text:"Open Theme Designer",onClick:d}),e.jsx(u,{text:"Generate a commit for a bug fix",onClick:d}),e.jsx(u,{text:"Create a regex for email validation",onClick:d})]}),e.jsx("p",{className:"text-xs text-text-secondary text-center mt-2",children:"Press Enter to send, Shift+Enter for new line."})]})]})};export{X as AiCommandCenter};
|
| 7 |
+
//# sourceMappingURL=AiCommandCenter-C1fx3T9b.js.map
|
assets/AiCommandCenter-C1fx3T9b.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiCommandCenter-C1fx3T9b.js","sources":["../../components/features/AiCommandCenter.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { Type, FunctionDeclaration } from \"@google/genai\";\nimport { logError, getInferenceFunction, CommandResponse, FEATURE_TAXONOMY, executeWorkspaceAction, ACTION_REGISTRY } from '../../services/index.ts';\nimport { useGlobalState } from '../../contexts/GlobalStateContext.tsx';\nimport { CommandLineIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { ALL_FEATURE_IDS } from '../../constants/index.ts';\n\nconst baseFunctionDeclarations: FunctionDeclaration[] = [\n {\n name: 'navigateTo',\n description: 'Navigates to a specific feature page.',\n parameters: {\n type: Type.OBJECT,\n properties: {\n featureId: { \n type: Type.STRING, \n description: 'The ID of the feature to navigate to.',\n enum: ALL_FEATURE_IDS\n },\n },\n required: ['featureId'],\n },\n },\n {\n name: 'runFeatureWithInput',\n description: 'Navigates to a feature and passes initial data to it.',\n parameters: {\n type: Type.OBJECT,\n properties: {\n featureId: { \n type: Type.STRING, \n description: 'The ID of the feature to run.',\n enum: ALL_FEATURE_IDS\n },\n props: {\n type: Type.OBJECT,\n description: 'An object containing the initial properties for the feature, based on its required inputs.',\n properties: {\n initialCode: { type: Type.STRING },\n initialPrompt: { type: Type.STRING },\n beforeCode: { type: Type.STRING },\n afterCode: { type: Type.STRING },\n logInput: { type: Type.STRING },\n diff: { type: Type.STRING },\n codeInput: { type: Type.STRING },\n jsonInput: { type: Type.STRING },\n }\n }\n },\n required: ['featureId', 'props']\n }\n }\n];\n\n// Dynamically add the workspace action\nconst functionDeclarations: FunctionDeclaration[] = [\n ...baseFunctionDeclarations,\n {\n name: 'runWorkspaceAction',\n description: 'Executes a defined action on a connected workspace service like Jira, Slack, or GitHub.',\n parameters: {\n type: Type.OBJECT,\n properties: {\n actionId: {\n type: Type.STRING,\n description: 'The unique identifier for the action to execute.',\n enum: [ ...ACTION_REGISTRY.keys() ]\n },\n params: {\n type: Type.OBJECT,\n description: 'An object containing the parameters for the action, matching its required inputs.'\n }\n },\n required: ['actionId', 'params']\n }\n }\n]\n\nconst knowledgeBase = FEATURE_TAXONOMY.map(f => `- ${f.name} (${f.id}): ${f.description} Inputs: ${f.inputs}`).join('\\n');\n\nconst ExamplePromptButton: React.FC<{ text: string, onClick: (text: string) => void }> = ({ text, onClick }) => (\n <button\n onClick={() => onClick(text)}\n className=\"px-3 py-1.5 bg-surface border border-border rounded-full text-xs hover:bg-gray-100 dark:hover:bg-slate-700 transition-colors\"\n >\n {text}\n </button>\n)\n\nexport const AiCommandCenter: React.FC = () => {\n const { dispatch } = useGlobalState();\n const [prompt, setPrompt] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [lastResponse, setLastResponse] = useState('');\n\n const handleCommand = useCallback(async () => {\n if (!prompt.trim()) return;\n\n setIsLoading(true);\n setLastResponse('');\n\n try {\n const response: CommandResponse = await getInferenceFunction(prompt, functionDeclarations, knowledgeBase);\n \n if (response.functionCalls && response.functionCalls.length > 0) {\n const call = response.functionCalls[0];\n const { name, args } = call;\n\n setLastResponse(`Understood! Executing command: ${name}`);\n\n switch (name) {\n case 'navigateTo':\n dispatch({ type: 'SET_VIEW', payload: { view: args.featureId }});\n break;\n case 'runFeatureWithInput':\n dispatch({ type: 'SET_VIEW', payload: { view: args.featureId, props: args.props } });\n break;\n case 'runWorkspaceAction':\n try {\n const result = await executeWorkspaceAction(args.actionId, args.params);\n setLastResponse(`Action '${args.actionId}' executed successfully.\\n\\nResult: \\`\\`\\`json\\n${JSON.stringify(result, null, 2)}\\n\\`\\`\\``);\n } catch (e) {\n setLastResponse(`Action failed: ${e instanceof Error ? e.message : 'Unknown error'}`);\n }\n break;\n default:\n setLastResponse(`Unknown command: ${name}`);\n }\n setPrompt('');\n } else {\n setLastResponse(response.text);\n }\n\n } catch (err) {\n logError(err as Error, { prompt });\n setLastResponse(err instanceof Error ? err.message : 'An unknown error occurred.');\n } finally {\n setIsLoading(false);\n }\n }, [prompt, dispatch]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleCommand();\n }\n };\n \n const handleExampleClick = (text: string) => {\n setPrompt(text);\n }\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6 text-center\">\n <h1 className=\"text-4xl font-extrabold tracking-tight flex items-center justify-center\">\n <CommandLineIcon />\n <span className=\"ml-3\">AI Command Center</span>\n </h1>\n <p className=\"mt-2 text-lg text-text-secondary\">What would you like to do?</p>\n </header>\n \n <div className=\"flex-grow flex flex-col justify-end max-w-3xl w-full mx-auto\">\n {lastResponse && (\n <div className=\"mb-4 p-4 bg-surface rounded-lg text-text-primary border border-border\">\n <p><strong>AI:</strong> {lastResponse}</p>\n </div>\n )}\n <div className=\"relative\">\n <textarea\n value={prompt}\n onChange={e => setPrompt(e.target.value)}\n onKeyDown={handleKeyDown}\n disabled={isLoading}\n placeholder='Try \"explain this code: const a = 1;\" or \"open the theme designer\"'\n className=\"w-full p-4 pr-28 rounded-lg bg-surface border border-border focus:ring-2 focus:ring-primary focus:outline-none resize-none shadow-sm\"\n rows={2}\n />\n <button\n onClick={handleCommand}\n disabled={isLoading}\n className=\"btn-primary absolute right-3 top-1/2 -translate-y-1/2 px-4 py-2\"\n >\n {isLoading ? <LoadingSpinner/> : 'Send'}\n </button>\n </div>\n <div className=\"flex flex-wrap items-center justify-center gap-2 mt-4\">\n <ExamplePromptButton text=\"Open Theme Designer\" onClick={handleExampleClick} />\n <ExamplePromptButton text=\"Generate a commit for a bug fix\" onClick={handleExampleClick} />\n <ExamplePromptButton text=\"Create a regex for email validation\" onClick={handleExampleClick} />\n </div>\n <p className=\"text-xs text-text-secondary text-center mt-2\">Press Enter to send, Shift+Enter for new line.</p>\n </div>\n </div>\n );\n};"],"names":["baseFunctionDeclarations","Type","ALL_FEATURE_IDS","functionDeclarations","ACTION_REGISTRY","knowledgeBase","FEATURE_TAXONOMY","f","ExamplePromptButton","text","onClick","jsx","AiCommandCenter","dispatch","useGlobalState","prompt","setPrompt","useState","isLoading","setIsLoading","lastResponse","setLastResponse","handleCommand","useCallback","response","getInferenceFunction","call","name","args","result","executeWorkspaceAction","e","err","logError","handleKeyDown","handleExampleClick","jsxs","CommandLineIcon","LoadingSpinner"],"mappings":"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"}
|
assets/AiCommitGenerator-BDAAla-r.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as t,j as e}from"./react-B-lWpQRQ.js";import{u as j,k as y,J as N,L as u}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./marked-CesSW9Du.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const v=`diff --git a/src/components/Button.tsx b/src/components/Button.tsx
|
| 2 |
+
index 1b2c3d4..5e6f7g8 100644
|
| 3 |
+
--- a/src/components/Button.tsx
|
| 4 |
+
+++ b/src/components/Button.tsx
|
| 5 |
+
@@ -1,7 +1,7 @@
|
| 6 |
+
import React from 'react';
|
| 7 |
+
|
| 8 |
+
interface ButtonProps {
|
| 9 |
+
- text: string;
|
| 10 |
+
+ label: string;
|
| 11 |
+
onClick: () => void;
|
| 12 |
+
}
|
| 13 |
+
`,K=({diff:r})=>{const[d,x]=t.useState(r||v),[a,f]=t.useState(""),[s,p]=t.useState(!1),[c,l]=t.useState(""),{addNotification:g}=j(),m=t.useCallback(async o=>{if(!o.trim()){l("Please paste a diff to generate a message.");return}p(!0),l(""),f("");try{const n=y(o);let i="";for await(const b of n)i+=b,f(i)}catch(n){const i=n instanceof Error?n.message:"An unknown error occurred.";l(`Failed to generate message: ${i}`)}finally{p(!1)}},[]);t.useEffect(()=>{r&&(x(r),m(r))},[r,m]);const h=()=>{navigator.clipboard.writeText(a),g("Commit message copied!","success")};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(N,{}),e.jsx("span",{className:"ml-3",children:"AI Commit Message Generator"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Paste your diff and let Gemini craft the perfect commit message."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsx("label",{htmlFor:"diff-input",className:"text-sm font-medium text-text-secondary mb-2",children:"Git Diff"}),e.jsx("textarea",{id:"diff-input",value:d,onChange:o=>x(o.target.value),placeholder:"Paste your git diff here...",className:"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm",spellCheck:"false"}),e.jsx("button",{onClick:()=>m(d),disabled:s,className:"btn-primary mt-4 w-full flex items-center justify-center px-6 py-3",children:s?e.jsx(u,{}):"Generate Message"})]}),e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-2",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary",children:"Generated Message"}),a&&!s&&e.jsx("button",{onClick:h,className:"px-3 py-1 bg-gray-100 dark:bg-slate-700 text-xs rounded-md hover:bg-gray-200 dark:hover:bg-slate-600",children:"Copy Message"})]}),e.jsxs("div",{className:"flex-grow p-4 bg-background border border-border rounded-md overflow-y-auto",children:[s&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(u,{})}),c&&e.jsx("p",{className:"text-red-500",children:c}),a&&!s&&e.jsx("pre",{className:"whitespace-pre-wrap font-sans text-sm",children:a}),!s&&!a&&!c&&e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:"Commit message will appear here."})]})]})]})]})};export{K as AiCommitGenerator};
|
| 14 |
+
//# sourceMappingURL=AiCommitGenerator-BDAAla-r.js.map
|
assets/AiCommitGenerator-BDAAla-r.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiCommitGenerator-BDAAla-r.js","sources":["../../components/features/AiCommitGenerator.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect } from 'react';\nimport { generateCommitMessageStream } from '../../services/index.ts';\nimport { GitBranchIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { useNotification } from '../../contexts/NotificationContext.tsx';\n\nconst exampleDiff = `diff --git a/src/components/Button.tsx b/src/components/Button.tsx\nindex 1b2c3d4..5e6f7g8 100644\n--- a/src/components/Button.tsx\n+++ b/src/components/Button.tsx\n@@ -1,7 +1,7 @@\n import React from 'react';\n\n interface ButtonProps {\n- text: string;\n+ label: string;\n onClick: () => void;\n }\n`;\n\nexport const AiCommitGenerator: React.FC<{ diff?: string }> = ({ diff: initialDiff }) => {\n const [diff, setDiff] = useState<string>(initialDiff || exampleDiff);\n const [message, setMessage] = useState<string>('');\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n const { addNotification } = useNotification();\n\n const handleGenerate = useCallback(async (diffToAnalyze: string) => {\n if (!diffToAnalyze.trim()) {\n setError('Please paste a diff to generate a message.');\n return;\n }\n setIsLoading(true);\n setError('');\n setMessage('');\n try {\n const stream = generateCommitMessageStream(diffToAnalyze);\n let fullResponse = '';\n for await (const chunk of stream) {\n fullResponse += chunk;\n setMessage(fullResponse);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to generate message: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (initialDiff) {\n setDiff(initialDiff);\n handleGenerate(initialDiff);\n }\n }, [initialDiff, handleGenerate]);\n \n const handleCopy = () => {\n navigator.clipboard.writeText(message);\n addNotification('Commit message copied!', 'success');\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\">\n <GitBranchIcon />\n <span className=\"ml-3\">AI Commit Message Generator</span>\n </h1>\n <p className=\"text-text-secondary mt-1\">Paste your diff and let Gemini craft the perfect commit message.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"flex flex-col h-full\">\n <label htmlFor=\"diff-input\" className=\"text-sm font-medium text-text-secondary mb-2\">Git Diff</label>\n <textarea\n id=\"diff-input\"\n value={diff}\n onChange={(e) => setDiff(e.target.value)}\n placeholder=\"Paste your git diff here...\"\n className=\"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm\"\n spellCheck=\"false\"\n />\n <button\n onClick={() => handleGenerate(diff)}\n disabled={isLoading}\n className=\"btn-primary mt-4 w-full flex items-center justify-center px-6 py-3\"\n >\n {isLoading ? <LoadingSpinner /> : 'Generate Message'}\n </button>\n </div>\n <div className=\"flex flex-col h-full\">\n <div className=\"flex justify-between items-center mb-2\">\n <label className=\"text-sm font-medium text-text-secondary\">Generated Message</label>\n {message && !isLoading && (\n <button onClick={handleCopy} className=\"px-3 py-1 bg-gray-100 dark:bg-slate-700 text-xs rounded-md hover:bg-gray-200 dark:hover:bg-slate-600\">\n Copy Message\n </button>\n )}\n </div>\n <div className=\"flex-grow p-4 bg-background border border-border rounded-md overflow-y-auto\">\n {isLoading && <div className=\"flex items-center justify-center h-full\"><LoadingSpinner /></div>}\n {error && <p className=\"text-red-500\">{error}</p>}\n {message && !isLoading && <pre className=\"whitespace-pre-wrap font-sans text-sm\">{message}</pre>}\n {!isLoading && !message && !error && (\n <div className=\"text-text-secondary h-full flex items-center justify-center\">\n Commit message will appear here.\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["exampleDiff","AiCommitGenerator","initialDiff","diff","setDiff","useState","message","setMessage","isLoading","setIsLoading","error","setError","addNotification","useNotification","handleGenerate","useCallback","diffToAnalyze","stream","generateCommitMessageStream","fullResponse","chunk","err","errorMessage","useEffect","handleCopy","jsxs","jsx","GitBranchIcon","e","LoadingSpinner"],"mappings":"8rBAMA,MAAMA,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcPC,EAAiD,CAAC,CAAE,KAAMC,KAAkB,CACrF,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAiBH,GAAeF,CAAW,EAC7D,CAACM,EAASC,CAAU,EAAIF,EAAAA,SAAiB,EAAE,EAC3C,CAACG,EAAWC,CAAY,EAAIJ,EAAAA,SAAkB,EAAK,EACnD,CAACK,EAAOC,CAAQ,EAAIN,EAAAA,SAAiB,EAAE,EACvC,CAAE,gBAAAO,CAAA,EAAoBC,EAAA,EAEtBC,EAAiBC,cAAY,MAAOC,GAA0B,CAChE,GAAI,CAACA,EAAc,OAAQ,CACvBL,EAAS,4CAA4C,EACrD,MACJ,CACAF,EAAa,EAAI,EACjBE,EAAS,EAAE,EACXJ,EAAW,EAAE,EACb,GAAI,CACA,MAAMU,EAASC,EAA4BF,CAAa,EACxD,IAAIG,EAAe,GACnB,gBAAiBC,KAASH,EACtBE,GAAgBC,EAChBb,EAAWY,CAAY,CAE/B,OAASE,EAAK,CACV,MAAMC,EAAeD,aAAe,MAAQA,EAAI,QAAU,6BAC1DV,EAAS,+BAA+BW,CAAY,EAAE,CAC1D,QAAA,CACIb,EAAa,EAAK,CACtB,CACJ,EAAG,CAAA,CAAE,EAELc,EAAAA,UAAU,IAAM,CACRrB,IACAE,EAAQF,CAAW,EACnBY,EAAeZ,CAAW,EAElC,EAAG,CAACA,EAAaY,CAAc,CAAC,EAEhC,MAAMU,EAAa,IAAM,CACrB,UAAU,UAAU,UAAUlB,CAAO,EACrCM,EAAgB,yBAA0B,SAAS,CACvD,EAEA,OACIa,EAAAA,KAAC,MAAA,CAAI,UAAU,2DACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,uCACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAc,EACfD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,6BAAA,CAA2B,CAAA,EACtD,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,2BAA2B,SAAA,kEAAA,CAAgE,CAAA,EAC5G,EACAD,EAAAA,KAAC,MAAA,CAAI,UAAU,0DACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAC,MAAC,QAAA,CAAM,QAAQ,aAAa,UAAU,+CAA+C,SAAA,WAAQ,EAC7FA,EAAAA,IAAC,WAAA,CACG,GAAG,aACH,MAAOvB,EACP,SAAWyB,GAAMxB,EAAQwB,EAAE,OAAO,KAAK,EACvC,YAAY,8BACZ,UAAU,yFACV,WAAW,OAAA,CAAA,EAEfF,EAAAA,IAAC,SAAA,CACG,QAAS,IAAMZ,EAAeX,CAAI,EAClC,SAAUK,EACV,UAAU,qEAET,SAAAA,EAAYkB,EAAAA,IAACG,EAAA,CAAA,CAAe,EAAK,kBAAA,CAAA,CACtC,EACJ,EACAJ,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAC,EAAAA,IAAC,QAAA,CAAM,UAAU,0CAA0C,SAAA,oBAAiB,EAC3EpB,GAAW,CAACE,GACTkB,EAAAA,IAAC,UAAO,QAASF,EAAY,UAAU,uGAAuG,SAAA,cAAA,CAE9I,CAAA,EAER,EACAC,EAAAA,KAAC,MAAA,CAAI,UAAU,8EACV,SAAA,CAAAjB,SAAc,MAAA,CAAI,UAAU,0CAA0C,SAAAkB,MAACG,IAAe,EAAE,EACxFnB,GAASgB,EAAAA,IAAC,IAAA,CAAE,UAAU,eAAgB,SAAAhB,EAAM,EAC5CJ,GAAW,CAACE,SAAc,MAAA,CAAI,UAAU,wCAAyC,SAAAF,EAAQ,EACzF,CAACE,GAAa,CAACF,GAAW,CAACI,GACxBgB,EAAAA,IAAC,MAAA,CAAI,UAAU,8DAA8D,SAAA,kCAAA,CAE7E,CAAA,CAAA,CAER,CAAA,CAAA,CACJ,CAAA,CAAA,CACJ,CAAA,EACJ,CAER"}
|
assets/AiFeatureBuilder-sYGqVH2W.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r,j as e}from"./react-B-lWpQRQ.js";import{w as A,x as L,y as G,z as $,B as R,k as W,E as Y,v as z,G as U,I as H,J,K,L as T,N as q,M as p}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const pe=()=>{const[i,F]=r.useState('A simple "Hello World" React component with a button that shows an alert.'),[l]=r.useState("React"),[x]=r.useState("Tailwind CSS"),[c,E]=r.useState(!1),[u,d]=r.useState([]),[h,g]=r.useState(""),[b,j]=r.useState(""),[k,y]=r.useState(""),[n,o]=r.useState("CODE"),[m,w]=r.useState(!1),[N,f]=r.useState("");r.useEffect(()=>{(async()=>{const a=await q();d(a),a.length>0&&o(a[0])})()},[]);const M=r.useCallback(async()=>{if(!i.trim()){f("Please enter a feature description.");return}w(!0),f(""),await A(),d([]),g(""),j(""),y(""),o("CODE");try{const t=c?await L(i,l,x):await G(i,l,x);for(const a of t)await $(a);if(d(t),t.length>0){const a=t.find(s=>s.filePath.endsWith(".tsx")||s.filePath.endsWith(".jsx"));o(a||t[0]);const P=R((a==null?void 0:a.content)||t[0].content),D=t.map(s=>`File: ${s.filePath}
|
| 2 |
+
|
| 3 |
+
${s.content}`).join(`
|
| 4 |
+
---
|
| 5 |
+
`),B=W(D);let S="";for await(const s of P)S+=s,g(S);let v="";for await(const s of B)v+=s,j(v);if(!c){const s=Y(l);let C="";for await(const O of s)C+=O,y(C)}}}catch(t){f(t instanceof Error?t.message:"Failed to generate feature.")}finally{w(!1)}},[i,l,x,c]),I=()=>{if(typeof n=="string")switch(n){case"TESTS":return e.jsx(p,{content:h});case"COMMIT":return e.jsx("pre",{className:"w-full h-full p-4 whitespace-pre-wrap font-sans text-sm",children:b});case"DEPLOYMENT":return e.jsx(p,{content:k});default:return e.jsx("div",{className:"p-4",children:"Select a file"})}return e.jsx(p,{content:"```tsx\n"+n.content+"\n```"})};return e.jsxs("div",{className:"h-full flex flex-col text-text-primary bg-surface",children:[e.jsx("header",{className:"p-4 border-b border-border flex-shrink-0",children:e.jsxs("h1",{className:"text-xl font-bold flex items-center",children:[e.jsx(z,{}),e.jsx("span",{className:"ml-3",children:"AI Feature Builder"})]})}),e.jsx("div",{className:"flex-grow flex min-h-0",children:e.jsxs("main",{className:"flex-1 flex flex-col min-w-0",children:[e.jsxs("div",{className:"flex-grow flex flex-col bg-background",children:[e.jsxs("div",{className:"border-b border-border flex items-center bg-surface overflow-x-auto",children:[u.map(t=>e.jsxs("button",{onClick:()=>o(t),className:`flex-shrink-0 flex items-center gap-2 px-4 py-2 text-sm ${n===t?"bg-background border-b-2 border-primary text-text-primary":"text-text-secondary hover:bg-gray-50"}`,children:[e.jsx(U,{})," ",t.filePath]},t.filePath)),h&&e.jsxs("button",{onClick:()=>o("TESTS"),className:`flex-shrink-0 flex items-center gap-2 px-4 py-2 text-sm ${n==="TESTS"?"bg-background border-b-2 border-primary text-text-primary":"text-text-secondary hover:bg-gray-50"}`,children:[e.jsx(H,{})," Tests"]}),b&&e.jsxs("button",{onClick:()=>o("COMMIT"),className:`flex-shrink-0 flex items-center gap-2 px-4 py-2 text-sm ${n==="COMMIT"?"bg-background border-b-2 border-primary text-text-primary":"text-text-secondary hover:bg-gray-50"}`,children:[e.jsx(J,{})," Commit"]}),k&&!c&&e.jsxs("button",{onClick:()=>o("DEPLOYMENT"),className:`flex-shrink-0 flex items-center gap-2 px-4 py-2 text-sm ${n==="DEPLOYMENT"?"bg-background border-b-2 border-primary text-text-primary":"text-text-secondary hover:bg-gray-50"}`,children:[e.jsx(K,{})," Dockerfile"]})]}),e.jsx("div",{className:"flex-grow p-2 overflow-auto",children:m&&!u.length?e.jsx("div",{className:"flex justify-center items-center h-full",children:e.jsx(T,{})}):I()})]}),e.jsxs("div",{className:"flex-shrink-0 p-4 border-t border-border bg-surface",children:[e.jsx("div",{className:"flex items-center gap-2 mb-2",children:e.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[e.jsx("input",{type:"checkbox",checked:c,onChange:t=>E(t.target.checked)})," Include Backend (Cloud Function + Firestore)"]})}),e.jsx("textarea",{value:i,onChange:t=>F(t.target.value),placeholder:"e.g., A user profile card with an avatar, name, and bio.",className:"w-full p-2 bg-background border border-border rounded-md resize-none text-sm h-20"}),e.jsx("div",{className:"flex gap-2 mt-2",children:e.jsx("button",{onClick:M,disabled:m,className:"btn-primary flex-grow flex items-center justify-center gap-2 px-4 py-2",children:m?e.jsxs(e.Fragment,{children:[e.jsx(T,{})," Generating..."]}):"Generate Feature"})}),N&&e.jsx("p",{className:"text-red-600 text-xs mt-2 text-center",children:N})]})]})})]})};export{pe as AiFeatureBuilder};
|
| 6 |
+
//# sourceMappingURL=AiFeatureBuilder-sYGqVH2W.js.map
|
assets/AiFeatureBuilder-sYGqVH2W.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiFeatureBuilder-sYGqVH2W.js","sources":["../../components/features/AiFeatureBuilder.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect } from 'react';\nimport type { GeneratedFile } from '../../types.ts';\nimport { generateFeature, generateFullStackFeature, generateUnitTestsStream, generateCommitMessageStream, generateDockerfile } from '../../services/index.ts';\nimport { saveFile, getAllFiles, clearAllFiles } from '../../services/dbService.ts';\nimport { useNotification } from '../../contexts/NotificationContext.tsx';\nimport { CpuChipIcon, DocumentTextIcon, BeakerIcon, GitBranchIcon, CloudIcon } from '../icons/index.ts';\nimport { LoadingSpinner, MarkdownRenderer } from '../shared/index.tsx';\n\ntype SupplementalTab = 'TESTS' | 'COMMIT' | 'DEPLOYMENT' | 'CODE';\ntype OutputTab = GeneratedFile | SupplementalTab;\n\nexport const AiFeatureBuilder: React.FC = () => {\n const [prompt, setPrompt] = useState<string>('A simple \"Hello World\" React component with a button that shows an alert.');\n const [framework] = useState('React');\n const [styling] = useState('Tailwind CSS');\n const [includeBackend, setIncludeBackend] = useState(false);\n\n const [generatedFiles, setGeneratedFiles] = useState<GeneratedFile[]>([]);\n const [unitTests, setUnitTests] = useState<string>('');\n const [commitMessage, setCommitMessage] = useState<string>('');\n const [dockerfile, setDockerfile] = useState<string>('');\n\n const [activeTab, setActiveTab] = useState<OutputTab>('CODE');\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n \n useEffect(() => {\n const loadFiles = async () => {\n const files = await getAllFiles();\n setGeneratedFiles(files);\n if (files.length > 0) setActiveTab(files[0]);\n };\n loadFiles();\n }, []);\n\n const handleGenerate = useCallback(async () => {\n if (!prompt.trim()) { setError('Please enter a feature description.'); return; }\n setIsLoading(true);\n setError('');\n await clearAllFiles();\n setGeneratedFiles([]); setUnitTests(''); setCommitMessage(''); setDockerfile(''); setActiveTab('CODE');\n\n try {\n const resultFiles = includeBackend\n ? await generateFullStackFeature(prompt, framework, styling)\n : await generateFeature(prompt, framework, styling);\n \n for (const file of resultFiles) { await saveFile(file); }\n setGeneratedFiles(resultFiles);\n\n if (resultFiles.length > 0) {\n const componentFile = resultFiles.find(f => f.filePath.endsWith('.tsx') || f.filePath.endsWith('.jsx'));\n setActiveTab(componentFile || resultFiles[0]);\n\n const testStream = generateUnitTestsStream(componentFile?.content || resultFiles[0].content);\n const diffContext = resultFiles.map(f => `File: ${f.filePath}\\n\\n${f.content}`).join('\\n---\\n');\n const commitStream = generateCommitMessageStream(diffContext);\n \n let tests = ''; for await (const chunk of testStream) { tests += chunk; setUnitTests(tests); }\n let commit = ''; for await (const chunk of commitStream) { commit += chunk; setCommitMessage(commit); }\n \n if (!includeBackend) {\n const dockerfileStream = generateDockerfile(framework);\n let docker = ''; for await (const chunk of dockerfileStream) { docker += chunk; setDockerfile(docker); }\n }\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to generate feature.');\n } finally {\n setIsLoading(false);\n }\n }, [prompt, framework, styling, includeBackend]);\n \n const renderContent = () => {\n if (typeof activeTab === 'string') {\n switch (activeTab) {\n case 'TESTS': return <MarkdownRenderer content={unitTests} />;\n case 'COMMIT': return <pre className=\"w-full h-full p-4 whitespace-pre-wrap font-sans text-sm\">{commitMessage}</pre>;\n case 'DEPLOYMENT': return <MarkdownRenderer content={dockerfile} />;\n default: return <div className=\"p-4\">Select a file</div>;\n }\n }\n return <MarkdownRenderer content={'```tsx\\n' + activeTab.content + '\\n```'} />;\n }\n\n return (\n <div className=\"h-full flex flex-col text-text-primary bg-surface\">\n <header className=\"p-4 border-b border-border flex-shrink-0\">\n <h1 className=\"text-xl font-bold flex items-center\"><CpuChipIcon /><span className=\"ml-3\">AI Feature Builder</span></h1>\n </header>\n <div className=\"flex-grow flex min-h-0\">\n <main className=\"flex-1 flex flex-col min-w-0\">\n <div className=\"flex-grow flex flex-col bg-background\">\n <div className=\"border-b border-border flex items-center bg-surface overflow-x-auto\">\n {generatedFiles.map(file => (\n <button key={file.filePath} onClick={() => setActiveTab(file)} className={`flex-shrink-0 flex items-center gap-2 px-4 py-2 text-sm ${activeTab === file ? 'bg-background border-b-2 border-primary text-text-primary' : 'text-text-secondary hover:bg-gray-50'}`}><DocumentTextIcon /> {file.filePath}</button>\n ))}\n {unitTests && <button onClick={() => setActiveTab('TESTS')} className={`flex-shrink-0 flex items-center gap-2 px-4 py-2 text-sm ${activeTab === 'TESTS' ? 'bg-background border-b-2 border-primary text-text-primary' : 'text-text-secondary hover:bg-gray-50'}`}><BeakerIcon /> Tests</button>}\n {commitMessage && <button onClick={() => setActiveTab('COMMIT')} className={`flex-shrink-0 flex items-center gap-2 px-4 py-2 text-sm ${activeTab === 'COMMIT' ? 'bg-background border-b-2 border-primary text-text-primary' : 'text-text-secondary hover:bg-gray-50'}`}><GitBranchIcon /> Commit</button>}\n {dockerfile && !includeBackend && <button onClick={() => setActiveTab('DEPLOYMENT')} className={`flex-shrink-0 flex items-center gap-2 px-4 py-2 text-sm ${activeTab === 'DEPLOYMENT' ? 'bg-background border-b-2 border-primary text-text-primary' : 'text-text-secondary hover:bg-gray-50'}`}><CloudIcon /> Dockerfile</button>}\n </div>\n <div className=\"flex-grow p-2 overflow-auto\">\n {isLoading && !generatedFiles.length ? <div className=\"flex justify-center items-center h-full\"><LoadingSpinner/></div> : renderContent()}\n </div>\n </div>\n \n <div className=\"flex-shrink-0 p-4 border-t border-border bg-surface\">\n <div className=\"flex items-center gap-2 mb-2\">\n <label className=\"flex items-center gap-2 text-sm\"><input type=\"checkbox\" checked={includeBackend} onChange={e => setIncludeBackend(e.target.checked)} /> Include Backend (Cloud Function + Firestore)</label>\n </div>\n <textarea value={prompt} onChange={(e) => setPrompt(e.target.value)} placeholder=\"e.g., A user profile card with an avatar, name, and bio.\" className=\"w-full p-2 bg-background border border-border rounded-md resize-none text-sm h-20\"/>\n <div className=\"flex gap-2 mt-2\">\n <button onClick={handleGenerate} disabled={isLoading} className=\"btn-primary flex-grow flex items-center justify-center gap-2 px-4 py-2\">\n {isLoading ? <><LoadingSpinner /> Generating...</> : 'Generate Feature'}\n </button>\n </div>\n {error && <p className=\"text-red-600 text-xs mt-2 text-center\">{error}</p>}\n </div>\n </main>\n </div>\n </div>\n );\n};"],"names":["AiFeatureBuilder","prompt","setPrompt","useState","framework","styling","includeBackend","setIncludeBackend","generatedFiles","setGeneratedFiles","unitTests","setUnitTests","commitMessage","setCommitMessage","dockerfile","setDockerfile","activeTab","setActiveTab","isLoading","setIsLoading","error","setError","useEffect","files","getAllFiles","handleGenerate","useCallback","clearAllFiles","resultFiles","generateFullStackFeature","generateFeature","file","saveFile","componentFile","f","testStream","generateUnitTestsStream","diffContext","commitStream","generateCommitMessageStream","tests","chunk","commit","dockerfileStream","generateDockerfile","docker","err","renderContent","jsx","MarkdownRenderer","jsxs","CpuChipIcon","DocumentTextIcon","BeakerIcon","GitBranchIcon","CloudIcon","LoadingSpinner","e","Fragment"],"mappings":"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"}
|
assets/AiImageGenerator-BuAzPwpb.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r,j as e}from"./react-B-lWpQRQ.js";import{an as k,ao as C,ap as A,X as G,L as b,S,T as P}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import{b as U,f as F}from"./fileUtils-DLahR3l0.js";import"./marked-CesSW9Du.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const j=["A majestic lion wearing a crown, painted in the style of Van Gogh.","A futuristic cityscape on another planet with two moons in the sky.","A cozy, magical library inside a giant tree.","A surreal image of a ship sailing on a sea of clouds.","An astronaut riding a space-themed bicycle on the moon."],Z=()=>{const[s,m]=r.useState("A photorealistic image of a futuristic city at sunset, with flying cars."),[l,x]=r.useState(null),[i,p]=r.useState(null),[n,u]=r.useState(!1),[d,c]=r.useState(""),g=r.useRef(null),y=r.useCallback(async()=>{if(!s.trim()){c("Please enter a prompt to generate an image.");return}u(!0),c(""),p(null);try{let t;l?t=await k(s,l.base64,l.mimeType):t=await C(s),p(t)}catch(t){const a=t instanceof Error?t.message:"An unknown error occurred.";c(`Failed to generate image: ${a}`)}finally{u(!1)}},[s,l]),w=()=>{const t=j[Math.floor(Math.random()*j.length)];m(t)},h=async t=>{try{const[a,o]=await Promise.all([U(t),F(t)]);x({dataUrl:a,base64:o,mimeType:t.type})}catch{c("Could not process the image.")}},N=r.useCallback(async t=>{const a=t.clipboardData.items;for(const o of a)if(o.type.indexOf("image")!==-1){const f=o.getAsFile();if(f){await h(f);return}}},[]),I=async t=>{var o;const a=(o=t.target.files)==null?void 0:o[0];a&&await h(a)},v=()=>{if(!i)return;const t=document.createElement("a");t.href=i,t.download=`${s.slice(0,30).replace(/\s/g,"_")}.png`,document.body.appendChild(t),t.click(),document.body.removeChild(t)};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(A,{}),e.jsx("span",{className:"ml-3",children:"AI Image Generator"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Generate images from text, or provide an image for inspiration."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"prompt-input",className:"text-sm font-medium text-text-secondary",children:"Your Prompt"}),e.jsx("textarea",{id:"prompt-input",value:s,onChange:t=>m(t.target.value),placeholder:"e.g., A cute cat wearing a wizard hat",className:"w-full p-3 mt-1 rounded-md bg-surface border border-border focus:ring-2 focus:ring-primary focus:outline-none resize-y",rows:3})]}),e.jsxs("div",{className:"flex flex-col flex-grow min-h-[200px]",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary mb-1",children:"Inspiration Image (Optional)"}),e.jsx("div",{onPaste:N,className:"relative flex-grow flex flex-col items-center justify-center bg-surface p-4 rounded-lg border-2 border-dashed border-border focus:outline-none focus:border-primary",tabIndex:0,children:l?e.jsxs(e.Fragment,{children:[e.jsx("img",{src:l.dataUrl,alt:"Uploaded content",className:"max-w-full max-h-full object-contain rounded-md shadow-lg"}),e.jsx("button",{onClick:()=>x(null),className:"absolute top-2 right-2 p-1 bg-black/30 text-white rounded-full hover:bg-black/50",children:e.jsx(G,{})})]}):e.jsxs("div",{className:"text-center text-text-secondary",children:[e.jsx("h2",{className:"text-lg font-bold text-text-primary",children:"Paste an image here"}),e.jsx("p",{className:"text-sm",children:"(Cmd/Ctrl + V)"}),e.jsx("p",{className:"text-xs my-1",children:"or"}),e.jsx("button",{onClick:()=>{var t;return(t=g.current)==null?void 0:t.click()},className:"text-sm font-semibold text-primary hover:underline",children:"Upload File"}),e.jsx("input",{type:"file",ref:g,onChange:I,accept:"image/*",className:"hidden"})]})})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:y,disabled:n,className:"btn-primary w-full flex items-center justify-center px-6 py-3",children:n?e.jsx(b,{}):"Generate Image"}),e.jsx("button",{onClick:w,disabled:n,className:"px-4 py-3 bg-surface border border-border rounded-md hover:bg-gray-100 transition-colors",title:"Surprise Me!",children:e.jsx(S,{})})]})]}),e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary mb-2",children:"Generated Image"}),e.jsxs("div",{className:"flex-grow flex items-center justify-center bg-background border-2 border-dashed border-border rounded-lg p-4 relative overflow-auto",children:[n&&e.jsx(b,{}),d&&e.jsx("p",{className:"text-red-500 text-center",children:d}),i&&!n&&e.jsxs(e.Fragment,{children:[e.jsx("img",{src:i,alt:s||"Generated by AI",className:"max-w-full max-h-full object-contain rounded-md shadow-lg"}),e.jsx("button",{onClick:v,className:"absolute top-4 right-4 p-2 bg-black/30 text-white rounded-full hover:bg-black/50 backdrop-blur-sm",title:"Download Image",children:e.jsx(P,{})})]}),!n&&!i&&!d&&e.jsx("div",{className:"text-center text-text-secondary",children:e.jsx("p",{children:"Your generated image will appear here."})})]})]})]})]})};export{Z as AiImageGenerator};
|
| 2 |
+
//# sourceMappingURL=AiImageGenerator-BuAzPwpb.js.map
|
assets/AiImageGenerator-BuAzPwpb.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiImageGenerator-BuAzPwpb.js","sources":["../../components/features/AiImageGenerator.tsx"],"sourcesContent":["import React, { useState, useCallback, useRef } from 'react';\n// FIX: Corrected import path for ai services.\nimport { generateImage, generateImageFromImageAndText } from '../../services/index.ts';\nimport { fileToBase64, blobToDataURL } from '../../services/fileUtils.ts';\n// FIX: Corrected import path for icons.\nimport { ImageGeneratorIcon, SparklesIcon, ArrowDownTrayIcon, XMarkIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\n\nconst surprisePrompts = [\n 'A majestic lion wearing a crown, painted in the style of Van Gogh.',\n 'A futuristic cityscape on another planet with two moons in the sky.',\n 'A cozy, magical library inside a giant tree.',\n 'A surreal image of a ship sailing on a sea of clouds.',\n 'An astronaut riding a space-themed bicycle on the moon.',\n];\n\ninterface UploadedImage {\n base64: string;\n dataUrl: string;\n mimeType: string;\n}\n\nexport const AiImageGenerator: React.FC = () => {\n const [prompt, setPrompt] = useState<string>('A photorealistic image of a futuristic city at sunset, with flying cars.');\n const [uploadedImage, setUploadedImage] = useState<UploadedImage | null>(null);\n const [generatedImageUrl, setGeneratedImageUrl] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const handleGenerate = useCallback(async () => {\n if (!prompt.trim()) {\n setError('Please enter a prompt to generate an image.');\n return;\n }\n setIsLoading(true);\n setError('');\n setGeneratedImageUrl(null);\n try {\n let resultUrl: string;\n if (uploadedImage) {\n resultUrl = await generateImageFromImageAndText(prompt, uploadedImage.base64, uploadedImage.mimeType);\n } else {\n resultUrl = await generateImage(prompt);\n }\n setGeneratedImageUrl(resultUrl);\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to generate image: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, [prompt, uploadedImage]);\n\n const handleSurpriseMe = () => {\n const randomPrompt = surprisePrompts[Math.floor(Math.random() * surprisePrompts.length)];\n setPrompt(randomPrompt);\n };\n\n const processImageBlob = async (blob: Blob) => {\n try {\n const [dataUrl, base64] = await Promise.all([\n blobToDataURL(blob),\n fileToBase64(blob as File)\n ]);\n setUploadedImage({ dataUrl, base64, mimeType: blob.type });\n } catch (e) {\n setError('Could not process the image.');\n }\n };\n\n const handlePaste = useCallback(async (event: React.ClipboardEvent) => {\n const items = event.clipboardData.items;\n for (const item of items) {\n if (item.type.indexOf('image') !== -1) {\n const blob = item.getAsFile();\n if (blob) {\n await processImageBlob(blob);\n return;\n }\n }\n }\n }, []);\n\n const handleFileChange = async (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0];\n if (file) {\n await processImageBlob(file);\n }\n };\n \n const handleDownload = () => {\n if (!generatedImageUrl) return;\n const link = document.createElement('a');\n link.href = generatedImageUrl;\n link.download = `${prompt.slice(0, 30).replace(/\\s/g, '_')}.png`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\">\n <ImageGeneratorIcon />\n <span className=\"ml-3\">AI Image Generator</span>\n </h1>\n <p className=\"text-text-secondary mt-1\">Generate images from text, or provide an image for inspiration.</p>\n </header>\n \n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n {/* Left Column: Inputs */}\n <div className=\"flex flex-col gap-4\">\n <div>\n <label htmlFor=\"prompt-input\" className=\"text-sm font-medium text-text-secondary\">Your Prompt</label>\n <textarea\n id=\"prompt-input\"\n value={prompt}\n onChange={(e) => setPrompt(e.target.value)}\n placeholder=\"e.g., A cute cat wearing a wizard hat\"\n className=\"w-full p-3 mt-1 rounded-md bg-surface border border-border focus:ring-2 focus:ring-primary focus:outline-none resize-y\"\n rows={3}\n />\n </div>\n \n <div className=\"flex flex-col flex-grow min-h-[200px]\">\n <label className=\"text-sm font-medium text-text-secondary mb-1\">Inspiration Image (Optional)</label>\n <div onPaste={handlePaste} className=\"relative flex-grow flex flex-col items-center justify-center bg-surface p-4 rounded-lg border-2 border-dashed border-border focus:outline-none focus:border-primary\" tabIndex={0}>\n {uploadedImage ? (\n <>\n <img src={uploadedImage.dataUrl} alt=\"Uploaded content\" className=\"max-w-full max-h-full object-contain rounded-md shadow-lg\" />\n <button onClick={() => setUploadedImage(null)} className=\"absolute top-2 right-2 p-1 bg-black/30 text-white rounded-full hover:bg-black/50\"><XMarkIcon /></button>\n </>\n ) : (\n <div className=\"text-center text-text-secondary\">\n <h2 className=\"text-lg font-bold text-text-primary\">Paste an image here</h2>\n <p className=\"text-sm\">(Cmd/Ctrl + V)</p>\n <p className=\"text-xs my-1\">or</p>\n <button onClick={() => fileInputRef.current?.click()} className=\"text-sm font-semibold text-primary hover:underline\">Upload File</button>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} accept=\"image/*\" className=\"hidden\"/>\n </div>\n )}\n </div>\n </div>\n \n <div className=\"flex gap-2\">\n <button\n onClick={handleGenerate}\n disabled={isLoading}\n className=\"btn-primary w-full flex items-center justify-center px-6 py-3\"\n >\n {isLoading ? <LoadingSpinner /> : 'Generate Image'}\n </button>\n <button\n onClick={handleSurpriseMe}\n disabled={isLoading}\n className=\"px-4 py-3 bg-surface border border-border rounded-md hover:bg-gray-100 transition-colors\"\n title=\"Surprise Me!\"\n >\n <SparklesIcon />\n </button>\n </div>\n </div>\n\n {/* Right Column: Output */}\n <div className=\"flex flex-col h-full\">\n <label className=\"text-sm font-medium text-text-secondary mb-2\">Generated Image</label>\n <div className=\"flex-grow flex items-center justify-center bg-background border-2 border-dashed border-border rounded-lg p-4 relative overflow-auto\">\n {isLoading && <LoadingSpinner />}\n {error && <p className=\"text-red-500 text-center\">{error}</p>}\n {generatedImageUrl && !isLoading && (\n <>\n <img src={generatedImageUrl} alt={prompt || \"Generated by AI\"} className=\"max-w-full max-h-full object-contain rounded-md shadow-lg\" />\n <button \n onClick={handleDownload}\n className=\"absolute top-4 right-4 p-2 bg-black/30 text-white rounded-full hover:bg-black/50 backdrop-blur-sm\"\n title=\"Download Image\"\n >\n <ArrowDownTrayIcon />\n </button>\n </>\n )}\n {!isLoading && !generatedImageUrl && !error && (\n <div className=\"text-center text-text-secondary\">\n <p>Your generated image will appear here.</p>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["surprisePrompts","AiImageGenerator","prompt","setPrompt","useState","uploadedImage","setUploadedImage","generatedImageUrl","setGeneratedImageUrl","isLoading","setIsLoading","error","setError","fileInputRef","useRef","handleGenerate","useCallback","resultUrl","generateImageFromImageAndText","generateImage","err","errorMessage","handleSurpriseMe","randomPrompt","processImageBlob","blob","dataUrl","base64","blobToDataURL","fileToBase64","handlePaste","event","items","item","handleFileChange","file","_a","handleDownload","link","jsxs","jsx","ImageGeneratorIcon","e","Fragment","XMarkIcon","LoadingSpinner","SparklesIcon","ArrowDownTrayIcon"],"mappings":"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"}
|
assets/AiPersonalityForge-DXnPiFSx.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as p,j as e}from"./react-B-lWpQRQ.js";import{u as A,U as E,aC as T,aK as F,T as R,M as U,L as D,aL as L}from"./index-DyMS-nC-.js";import{u as M,f as $}from"./promptUtils-DniUlv0T.js";import"./@google-xfXoiafW.js";import{e as H}from"./fileUtils-DLahR3l0.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const J={persona:"You are a helpful assistant.",rules:[],outputFormat:"markdown",exampleIO:[]},ce=()=>{const[l,x]=M(),[m,u]=p.useState(null),{addNotification:f}=A(),j=p.useRef(null),[h,y]=p.useState(""),[N,g]=p.useState([]),[b,v]=p.useState(!1),s=l.find(t=>t.id===m);p.useEffect(()=>{!m&&l.length>0&&u(l[0].id)},[l,m]);const i=(t,r)=>{if(!s)return;const o={...s,[t]:r};x(l.map(a=>a.id===m?o:a))},I=()=>{const t=Date.now().toString(),r={...J,id:t,name:"Untitled Personality"};x([...l,r]),u(t)},k=t=>{window.confirm("Are you sure you want to delete this personality?")&&(x(l.filter(r=>r.id!==t)),m===t&&u(l.length>1?l[0].id:null))},w=async()=>{if(!h.trim()||!s||b)return;const t=$(s),r=[...N,{role:"user",content:h}];g(r),y(""),v(!0);try{const o=L(h,t,.7);let a="";g(n=>[...n,{role:"model",content:""}]);for await(const n of o)a+=n,g(c=>c[c.length-1].role==="model"?[...c.slice(0,-1),{role:"model",content:a}]:c)}catch(o){const a=o instanceof Error?o.message:"An error occurred";g(n=>[...n,{role:"model",content:`**Error:** ${a}`}])}finally{v(!1)}},C=()=>{s&&(H(s,`${s.name.replace(/\s+/g,"_")}.json`),f("Personality exported!","success"))},S=t=>{var a;const r=(a=t.target.files)==null?void 0:a[0];if(!r)return;const o=new FileReader;o.onload=n=>{var c;try{const d=JSON.parse((c=n.target)==null?void 0:c.result);d.id&&d.name&&d.persona?(x(P=>[...P.filter(O=>O.id!==d.id),d]),u(d.id),f("Personality imported!","success")):f("Invalid personality file.","error")}catch{f("Failed to parse JSON file.","error")}},o.readAsText(r)};return e.jsxs("div",{className:"h-full flex text-text-primary",children:[e.jsxs("aside",{className:"w-64 bg-surface border-r border-border flex flex-col",children:[e.jsx("div",{className:"p-4 border-b border-border",children:e.jsx("h2",{className:"text-lg font-bold",children:"Personalities"})}),e.jsx("div",{className:"flex-grow overflow-y-auto",children:l.map(t=>e.jsxs("div",{onClick:()=>u(t.id),className:`group flex justify-between items-center p-3 text-sm cursor-pointer ${m===t.id?"bg-primary/10 text-primary":"hover:bg-gray-100 dark:hover:bg-slate-700"}`,children:[e.jsx("span",{className:"truncate",children:t.name}),e.jsx("button",{onClick:r=>{r.stopPropagation(),k(t.id)},className:"opacity-0 group-hover:opacity-100 text-text-secondary hover:text-red-500",children:e.jsx(E,{})})]},t.id))}),e.jsxs("div",{className:"p-4 border-t border-border space-y-2",children:[e.jsxs("button",{onClick:I,className:"btn-primary w-full py-2 text-sm flex items-center justify-center gap-2",children:[e.jsx(T,{})," New"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("button",{onClick:()=>{var t;return(t=j.current)==null?void 0:t.click()},className:"flex-1 py-2 text-sm bg-gray-100 dark:bg-slate-700 rounded-md flex items-center justify-center gap-2",children:[e.jsx(F,{})," Import"]}),e.jsxs("button",{onClick:C,className:"flex-1 py-2 text-sm bg-gray-100 dark:bg-slate-700 rounded-md flex items-center justify-center gap-2",children:[e.jsx(R,{})," Export"]}),e.jsx("input",{type:"file",ref:j,onChange:S,accept:".json",className:"hidden"})]})]})]}),s?e.jsxs("div",{className:"flex-1 grid grid-cols-2 gap-px bg-border",children:[e.jsxs("div",{className:"bg-background p-4 flex flex-col gap-4 overflow-y-auto",children:[e.jsxs("div",{children:[e.jsx("label",{className:"font-bold",children:"Name"}),e.jsx("input",{type:"text",value:s.name,onChange:t=>i("name",t.target.value),className:"w-full mt-1 p-2 bg-surface border rounded"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"font-bold",children:"Persona"}),e.jsx("textarea",{value:s.persona,onChange:t=>i("persona",t.target.value),className:"w-full mt-1 p-2 bg-surface border rounded h-24"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"font-bold",children:"Rules (one per line)"}),e.jsx("textarea",{value:s.rules.join(`
|
| 2 |
+
`),onChange:t=>i("rules",t.target.value.split(`
|
| 3 |
+
`)),className:"w-full mt-1 p-2 bg-surface border rounded h-32"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"font-bold",children:"Output Format"}),e.jsxs("select",{value:s.outputFormat,onChange:t=>i("outputFormat",t.target.value),className:"w-full mt-1 p-2 bg-surface border rounded",children:[e.jsx("option",{children:"markdown"}),e.jsx("option",{children:"json"}),e.jsx("option",{children:"text"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold mb-2",children:"Examples"}),s.exampleIO.map((t,r)=>e.jsxs("div",{className:"grid grid-cols-2 gap-2 mb-2 p-2 border rounded bg-surface",children:[e.jsx("textarea",{placeholder:"User Input",value:t.input,onChange:o=>i("exampleIO",s.exampleIO.map((a,n)=>n===r?{...a,input:o.target.value}:a)),className:"h-20 p-1 bg-background border rounded"}),e.jsx("textarea",{placeholder:"Model Output",value:t.output,onChange:o=>i("exampleIO",s.exampleIO.map((a,n)=>n===r?{...a,output:o.target.value}:a)),className:"h-20 p-1 bg-background border rounded"})]},r)),e.jsx("button",{onClick:()=>i("exampleIO",[...s.exampleIO,{input:"",output:""}]),className:"text-sm text-primary",children:"+ Add Example"})]})]}),e.jsxs("div",{className:"bg-background p-4 flex flex-col",children:[e.jsx("h2",{className:"text-lg font-bold mb-2 border-b pb-2",children:"Live Testbed"}),e.jsxs("div",{className:"flex-grow overflow-y-auto space-y-4 pr-2",children:[N.map((t,r)=>e.jsxs("div",{className:`p-3 rounded-lg ${t.role==="user"?"bg-primary/10":"bg-surface"}`,children:[e.jsx("strong",{className:"capitalize",children:t.role}),e.jsx(U,{content:t.content})]},r)),b&&e.jsx("div",{className:"flex justify-center",children:e.jsx(D,{})})]}),e.jsxs("div",{className:"flex gap-2 mt-4",children:[e.jsx("input",{value:h,onChange:t=>y(t.target.value),onKeyDown:t=>t.key==="Enter"&&w(),className:"flex-grow p-2 bg-surface border rounded",placeholder:"Test your AI..."}),e.jsx("button",{onClick:w,disabled:b,className:"btn-primary px-4",children:"Send"})]})]})]}):e.jsx("div",{className:"flex-1 flex items-center justify-center text-text-secondary",children:"Select or create a personality to begin."})]})};export{ce as AiPersonalityForge};
|
| 4 |
+
//# sourceMappingURL=AiPersonalityForge-DXnPiFSx.js.map
|
assets/AiPersonalityForge-DXnPiFSx.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiPersonalityForge-DXnPiFSx.js","sources":["../../components/features/AiPersonalityForge.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\n// Fix: Corrected import path for icons.\nimport { SparklesIcon, PlusIcon, TrashIcon, ArrowDownTrayIcon, ArrowUpOnSquareIcon } from '../icons/index.ts';\nimport { useAiPersonalities } from '../../hooks/useAiPersonalities.ts';\nimport { formatSystemPromptToString } from '../../utils/promptUtils.ts';\nimport { streamContent } from '../../services/index.ts';\nimport { downloadJson } from '../../services/fileUtils.ts';\nimport type { SystemPrompt } from '../../types.ts';\nimport { LoadingSpinner, MarkdownRenderer } from '../shared/index.tsx';\nimport { useNotification } from '../../contexts/NotificationContext.tsx';\n\nconst defaultNewPrompt: Omit<SystemPrompt, 'id' | 'name'> = {\n persona: 'You are a helpful assistant.',\n rules: [],\n outputFormat: 'markdown',\n exampleIO: [],\n};\n\nexport const AiPersonalityForge: React.FC = () => {\n const [personalities, setPersonalities] = useAiPersonalities();\n const [activeId, setActiveId] = useState<string | null>(null);\n const { addNotification } = useNotification();\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // Testbed State\n const [testbedInput, setTestbedInput] = useState('');\n const [chatHistory, setChatHistory] = useState<{ role: 'user' | 'model'; content: string }[]>([]);\n const [isStreaming, setIsStreaming] = useState(false);\n\n const activePersonality = personalities.find(p => p.id === activeId);\n\n useEffect(() => {\n if (!activeId && personalities.length > 0) {\n setActiveId(personalities[0].id);\n }\n }, [personalities, activeId]);\n \n const handleUpdate = (field: keyof SystemPrompt, value: any) => {\n if (!activePersonality) return;\n const updated = { ...activePersonality, [field]: value };\n setPersonalities(personalities.map(p => (p.id === activeId ? updated : p)));\n };\n\n const handleAddNew = () => {\n const newId = Date.now().toString();\n const newPersonality: SystemPrompt = { ...defaultNewPrompt, id: newId, name: 'Untitled Personality' };\n setPersonalities([...personalities, newPersonality]);\n setActiveId(newId);\n };\n\n const handleDelete = (id: string) => {\n if (window.confirm('Are you sure you want to delete this personality?')) {\n setPersonalities(personalities.filter(p => p.id !== id));\n if (activeId === id) {\n setActiveId(personalities.length > 1 ? personalities[0].id : null);\n }\n }\n };\n \n const handleTestbedSend = async () => {\n if (!testbedInput.trim() || !activePersonality || isStreaming) return;\n \n const systemInstruction = formatSystemPromptToString(activePersonality);\n const newHistory = [...chatHistory, { role: 'user' as const, content: testbedInput }];\n setChatHistory(newHistory);\n setTestbedInput('');\n setIsStreaming(true);\n\n try {\n const stream = streamContent(testbedInput, systemInstruction, 0.7);\n let fullResponse = '';\n setChatHistory(prev => [...prev, { role: 'model', content: '' }]);\n for await (const chunk of stream) {\n fullResponse += chunk;\n setChatHistory(prev => {\n const last = prev[prev.length - 1];\n if (last.role === 'model') {\n return [...prev.slice(0, -1), { role: 'model', content: fullResponse }];\n }\n return prev;\n });\n }\n } catch (e) {\n const errorMsg = e instanceof Error ? e.message : 'An error occurred';\n setChatHistory(prev => [...prev, { role: 'model', content: `**Error:** ${errorMsg}` }]);\n } finally {\n setIsStreaming(false);\n }\n };\n \n const handleExport = () => {\n if (!activePersonality) return;\n downloadJson(activePersonality, `${activePersonality.name.replace(/\\s+/g, '_')}.json`);\n addNotification('Personality exported!', 'success');\n };\n\n const handleImport = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (!file) return;\n const reader = new FileReader();\n reader.onload = (event) => {\n try {\n const imported = JSON.parse(event.target?.result as string) as SystemPrompt;\n // Basic validation\n if (imported.id && imported.name && imported.persona) {\n setPersonalities(prev => [...prev.filter(p => p.id !== imported.id), imported]);\n setActiveId(imported.id);\n addNotification('Personality imported!', 'success');\n } else {\n addNotification('Invalid personality file.', 'error');\n }\n } catch {\n addNotification('Failed to parse JSON file.', 'error');\n }\n };\n reader.readAsText(file);\n };\n\n return (\n <div className=\"h-full flex text-text-primary\">\n {/* Sidebar */}\n <aside className=\"w-64 bg-surface border-r border-border flex flex-col\">\n <div className=\"p-4 border-b border-border\">\n <h2 className=\"text-lg font-bold\">Personalities</h2>\n </div>\n <div className=\"flex-grow overflow-y-auto\">\n {personalities.map(p => (\n <div key={p.id} onClick={() => setActiveId(p.id)} className={`group flex justify-between items-center p-3 text-sm cursor-pointer ${activeId === p.id ? 'bg-primary/10 text-primary' : 'hover:bg-gray-100 dark:hover:bg-slate-700'}`}>\n <span className=\"truncate\">{p.name}</span>\n <button onClick={(e) => { e.stopPropagation(); handleDelete(p.id)}} className=\"opacity-0 group-hover:opacity-100 text-text-secondary hover:text-red-500\"><TrashIcon /></button>\n </div>\n ))}\n </div>\n <div className=\"p-4 border-t border-border space-y-2\">\n <button onClick={handleAddNew} className=\"btn-primary w-full py-2 text-sm flex items-center justify-center gap-2\"><PlusIcon /> New</button>\n <div className=\"flex gap-2\">\n <button onClick={() => fileInputRef.current?.click()} className=\"flex-1 py-2 text-sm bg-gray-100 dark:bg-slate-700 rounded-md flex items-center justify-center gap-2\"><ArrowUpOnSquareIcon/> Import</button>\n <button onClick={handleExport} className=\"flex-1 py-2 text-sm bg-gray-100 dark:bg-slate-700 rounded-md flex items-center justify-center gap-2\"><ArrowDownTrayIcon/> Export</button>\n <input type=\"file\" ref={fileInputRef} onChange={handleImport} accept=\".json\" className=\"hidden\"/>\n </div>\n </div>\n </aside>\n {/* Main Content */}\n {activePersonality ? (\n <div className=\"flex-1 grid grid-cols-2 gap-px bg-border\">\n {/* Editor */}\n <div className=\"bg-background p-4 flex flex-col gap-4 overflow-y-auto\">\n <div><label className=\"font-bold\">Name</label><input type=\"text\" value={activePersonality.name} onChange={e => handleUpdate('name', e.target.value)} className=\"w-full mt-1 p-2 bg-surface border rounded\"/></div>\n <div><label className=\"font-bold\">Persona</label><textarea value={activePersonality.persona} onChange={e => handleUpdate('persona', e.target.value)} className=\"w-full mt-1 p-2 bg-surface border rounded h-24\"/></div>\n <div><label className=\"font-bold\">Rules (one per line)</label><textarea value={activePersonality.rules.join('\\n')} onChange={e => handleUpdate('rules', e.target.value.split('\\n'))} className=\"w-full mt-1 p-2 bg-surface border rounded h-32\"/></div>\n <div><label className=\"font-bold\">Output Format</label><select value={activePersonality.outputFormat} onChange={e => handleUpdate('outputFormat', e.target.value)} className=\"w-full mt-1 p-2 bg-surface border rounded\"><option>markdown</option><option>json</option><option>text</option></select></div>\n <div>\n <h3 className=\"font-bold mb-2\">Examples</h3>\n {activePersonality.exampleIO.map((ex, i) => (\n <div key={i} className=\"grid grid-cols-2 gap-2 mb-2 p-2 border rounded bg-surface\">\n <textarea placeholder=\"User Input\" value={ex.input} onChange={e => handleUpdate('exampleIO', activePersonality.exampleIO.map((item, idx) => idx === i ? {...item, input: e.target.value} : item))} className=\"h-20 p-1 bg-background border rounded\"/>\n <textarea placeholder=\"Model Output\" value={ex.output} onChange={e => handleUpdate('exampleIO', activePersonality.exampleIO.map((item, idx) => idx === i ? {...item, output: e.target.value} : item))} className=\"h-20 p-1 bg-background border rounded\"/>\n </div>\n ))}\n <button onClick={() => handleUpdate('exampleIO', [...activePersonality.exampleIO, {input: '', output: ''}])} className=\"text-sm text-primary\">+ Add Example</button>\n </div>\n </div>\n {/* Testbed */}\n <div className=\"bg-background p-4 flex flex-col\">\n <h2 className=\"text-lg font-bold mb-2 border-b pb-2\">Live Testbed</h2>\n <div className=\"flex-grow overflow-y-auto space-y-4 pr-2\">\n {chatHistory.map((msg, i) => (\n <div key={i} className={`p-3 rounded-lg ${msg.role === 'user' ? 'bg-primary/10' : 'bg-surface'}`}>\n <strong className=\"capitalize\">{msg.role}</strong>\n <MarkdownRenderer content={msg.content} />\n </div>\n ))}\n {isStreaming && <div className=\"flex justify-center\"><LoadingSpinner/></div>}\n </div>\n <div className=\"flex gap-2 mt-4\">\n <input value={testbedInput} onChange={e => setTestbedInput(e.target.value)} onKeyDown={e => e.key === 'Enter' && handleTestbedSend()} className=\"flex-grow p-2 bg-surface border rounded\" placeholder=\"Test your AI...\"/>\n <button onClick={handleTestbedSend} disabled={isStreaming} className=\"btn-primary px-4\">Send</button>\n </div>\n </div>\n </div>\n ) : (\n <div className=\"flex-1 flex items-center justify-center text-text-secondary\">Select or create a personality to begin.</div>\n )}\n </div>\n );\n};"],"names":["defaultNewPrompt","AiPersonalityForge","personalities","setPersonalities","useAiPersonalities","activeId","setActiveId","useState","addNotification","useNotification","fileInputRef","useRef","testbedInput","setTestbedInput","chatHistory","setChatHistory","isStreaming","setIsStreaming","activePersonality","p","useEffect","handleUpdate","field","value","updated","handleAddNew","newId","newPersonality","handleDelete","id","handleTestbedSend","systemInstruction","formatSystemPromptToString","newHistory","stream","streamContent","fullResponse","prev","chunk","e","errorMsg","handleExport","downloadJson","handleImport","file","_a","reader","event","imported","jsxs","jsx","TrashIcon","PlusIcon","ArrowUpOnSquareIcon","ArrowDownTrayIcon","ex","i","item","idx","msg","MarkdownRenderer","LoadingSpinner"],"mappings":"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"}
|
assets/AiPullRequestAssistant-CQFgU8gB.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as n,j as e}from"./react-B-lWpQRQ.js";import{c as k}from"./diff-CqM5-8zX.js";import{l as j,u as G,e as A,ac as C,ad as E,L as p,D,ae as I}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import{d as P}from"./fileUtils-DLahR3l0.js";import{e as w}from"./googleApiService-CHUpAwYu.js";import"./marked-CesSW9Du.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const $=async o=>{try{if(!await w())throw new Error("Google API client not ready.");await gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1");const i=(await gapi.client.docs.documents.create({title:o})).result;return{documentId:i.documentId,webViewLink:`https://docs.google.com/document/d/${i.documentId}/edit`}}catch(c){throw j(c,{service:"workspaceService",function:"createDocument"}),c}},R=async(o,c)=>{try{if(!await w())throw new Error("Google API client not ready.");await gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1"),await gapi.client.docs.documents.batchUpdate({documentId:o,resource:{requests:[{insertText:{text:c,location:{index:1}}}]}})}catch(r){throw j(r,{service:"workspaceService",function:"insertText"}),r}},L=`function Greeter(props) {
|
| 2 |
+
return <h1>Hello, {props.name}!</h1>;
|
| 3 |
+
}`,T=`function Greeter({ name, enthusiasmLevel = 1 }) {
|
| 4 |
+
const punctuation = '!'.repeat(enthusiasmLevel);
|
| 5 |
+
return <h1>Hello, {name}{punctuation}</h1>;
|
| 6 |
+
}`,ae=()=>{const[o,c]=n.useState(L),[r,i]=n.useState(T),[l,f]=n.useState(!1),[h,g]=n.useState(!1),[y,d]=n.useState(""),[t,b]=n.useState(null),{addNotification:m}=G(),{state:N}=A(),{user:u}=N,x=n.useMemo(()=>k("component.tsx",o,r),[o,r]),v=n.useCallback(async()=>{if(!o.trim()&&!r.trim()){d("Please provide code to generate a summary.");return}f(!0),d(""),b(null);try{const s=await C(x);b(s)}catch(s){const a=s instanceof Error?s.message:"An unknown error occurred.";d(`Failed to generate summary: ${a}`)}finally{f(!1)}},[x,o,r]),S=async()=>{if(!t||!u){m("Please generate a summary first and ensure you are signed in.","error");return}g(!0);try{const s=await I(x,t),a=await $(`Tech Spec: ${t.title}`);await R(a.documentId,s),m("Successfully exported to Google Docs!","success"),window.open(a.webViewLink,"_blank")}catch(s){const a=s instanceof Error?s.message:"An unknown error occurred.";m(`Failed to export: ${a}`,"error")}finally{g(!1)}};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(E,{}),e.jsx("span",{className:"ml-3",children:"AI Pull Request Assistant"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Generate a PR summary from code changes and export a full tech spec."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col gap-4 min-h-0",children:[e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{htmlFor:"before-code",className:"text-sm font-medium text-text-secondary mb-2",children:"Before"}),e.jsx("textarea",{id:"before-code",value:o,onChange:s=>c(s.target.value),className:"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm"})]}),e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{htmlFor:"after-code",className:"text-sm font-medium text-text-secondary mb-2",children:"After"}),e.jsx("textarea",{id:"after-code",value:r,onChange:s=>i(s.target.value),className:"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm"})]}),e.jsx("button",{onClick:v,disabled:l,className:"btn-primary w-full mt-4 flex items-center justify-center gap-2 py-2",children:l?e.jsx(p,{}):"Generate Summary"})]}),e.jsxs("div",{className:"flex flex-col gap-4 min-h-0",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx("h3",{className:"text-lg font-bold",children:"Generated Summary"}),t&&e.jsx("button",{onClick:()=>P(`${t.title}
|
| 7 |
+
|
| 8 |
+
${t.summary}
|
| 9 |
+
|
| 10 |
+
${t.changes.join(`
|
| 11 |
+
`)}`,`pr_${t.title.slice(0,10)}.md`,"text/markdown"),disabled:!t,className:"btn-primary px-3 py-1 text-sm disabled:bg-gray-400",children:"Download .md"})]}),e.jsxs("div",{className:"flex-grow bg-surface p-4 border rounded-lg overflow-y-auto",children:[l&&e.jsx("div",{className:"flex justify-center items-center h-full",children:e.jsx(p,{})}),y&&e.jsx("p",{className:"text-red-500",children:y}),t&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("input",{type:"text",value:t.title,readOnly:!0,className:"w-full p-2 bg-background border rounded font-bold"}),e.jsxs("div",{className:"p-2 bg-background border rounded space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"Summary"}),e.jsx("p",{className:"text-sm",children:t.summary}),e.jsx("h4",{className:"font-semibold",children:"Changes"}),e.jsx("ul",{className:"list-disc list-inside text-sm",children:t.changes.map((s,a)=>e.jsx("li",{children:s},a))})]})]})]}),e.jsxs("button",{onClick:S,disabled:h||!t||!u,className:"btn-primary w-full mt-4 flex items-center justify-center gap-2 py-2",title:u?t?"Export a full tech spec to Google Docs":"Generate summary first":"Sign in to export to Google Docs",children:[h?e.jsx(p,{}):e.jsx(D,{})," Export Tech Spec to Docs"]})]})]})]})};export{ae as AiPullRequestAssistant};
|
| 12 |
+
//# sourceMappingURL=AiPullRequestAssistant-CQFgU8gB.js.map
|
assets/AiPullRequestAssistant-CQFgU8gB.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiPullRequestAssistant-CQFgU8gB.js","sources":["../../services/workspaceService.ts","../../components/features/AiPullRequestAssistant.tsx"],"sourcesContent":["\n\nimport { ensureGapiClient } from './googleApiService.ts';\nimport { logError } from './telemetryService.ts';\nimport type { SlideSummary } from '../types.ts';\n\ndeclare var gapi: any;\n\n// --- Docs Service ---\nexport const createDocument = async (title: string): Promise<{ documentId: string; webViewLink: string }> => {\n try {\n const isReady = await ensureGapiClient();\n if (!isReady) throw new Error(\"Google API client not ready.\");\n \n await gapi.client.load('https://docs.googleapis.com/$discovery/rest?version=v1');\n\n const response = await gapi.client.docs.documents.create({ title });\n const doc = response.result;\n return { documentId: doc.documentId, webViewLink: `https://docs.google.com/document/d/${doc.documentId}/edit` };\n } catch (error) {\n logError(error as Error, { service: 'workspaceService', function: 'createDocument' });\n throw error;\n }\n};\n\nexport const insertText = async (documentId: string, text: string): Promise<void> => {\n try {\n const isReady = await ensureGapiClient();\n if (!isReady) throw new Error(\"Google API client not ready.\");\n\n await gapi.client.load('https://docs.googleapis.com/$discovery/rest?version=v1');\n\n await gapi.client.docs.documents.batchUpdate({\n documentId,\n resource: {\n requests: [{\n insertText: {\n text: text,\n location: { index: 1 }\n }\n }]\n }\n });\n } catch (error) {\n logError(error as Error, { service: 'workspaceService', function: 'insertText' });\n throw error;\n }\n};\n\n// --- Drive Service ---\n\nconst getDriveClient = async () => {\n const isReady = await ensureGapiClient();\n if (!isReady) throw new Error(\"Google API client not ready.\");\n await gapi.client.load('https://www.googleapis.com/discovery/v1/apis/drive/v3/rest');\n return gapi.client.drive;\n};\n\nexport const findOrCreateFolder = async (folderName: string): Promise<string> => {\n try {\n const drive = await getDriveClient();\n const query = `mimeType='application/vnd.google-apps.folder' and name='${folderName}' and trashed=false`;\n const response = await drive.files.list({ q: query, fields: 'files(id, name)' });\n \n if (response.result.files && response.result.files.length > 0) {\n return response.result.files[0].id;\n } else {\n const fileMetadata = {\n name: folderName,\n mimeType: 'application/vnd.google-apps.folder'\n };\n const createResponse = await drive.files.create({ resource: fileMetadata, fields: 'id' });\n return createResponse.result.id;\n }\n } catch (error) {\n logError(error as Error, { service: 'workspaceService', function: 'findOrCreateFolder' });\n throw error;\n }\n};\n\nexport const uploadFile = async (folderId: string, fileName: string, content: string, mimeType: string): Promise<any> => {\n try {\n await getDriveClient(); // Ensures client is loaded\n \n const metadata = {\n name: fileName,\n parents: [folderId],\n mimeType,\n };\n \n const form = new FormData();\n form.append('metadata', new Blob([JSON.stringify(metadata)], { type: 'application/json' }));\n form.append('file', new Blob([content], { type: mimeType }));\n\n const token = sessionStorage.getItem('google_access_token');\n if (!token) throw new Error(\"Not authenticated\");\n\n const res = await fetch('https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart', {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`\n },\n body: form\n });\n \n if (!res.ok) {\n const errorBody = await res.json();\n throw new Error(`Failed to upload file: ${errorBody.error.message}`);\n }\n\n return await res.json();\n } catch (error) {\n logError(error as Error, { service: 'workspaceService', function: 'uploadFile' });\n throw error;\n }\n};\n\n// Stubs for other Workspace services\nexport const appendRowToSheet = async (sheetId: string, rowData: any[]) => { console.log('appendRowToSheet called', sheetId, rowData); };\nexport const createTask = async (listId: string, title: string, notes: string) => { console.log('createTask called', listId, title, notes); };\nexport const createCalendarEvent = async (title: string, description: string, date: string) => { console.log('createCalendarEvent called', title, description, date); };","import React, { useState, useMemo, useCallback } from 'react';\nimport * as Diff from 'diff';\nimport { generatePrSummaryStructured, generateTechnicalSpecFromDiff, downloadFile, createDocument, insertText } from '../../services/index.ts';\nimport type { StructuredPrSummary } from '../../types.ts';\nimport { AiPullRequestAssistantIcon, DocumentIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { useNotification } from '../../contexts/NotificationContext.tsx';\nimport { useGlobalState } from '../../contexts/GlobalStateContext.tsx';\n\nconst exampleBefore = `function Greeter(props) {\n return <h1>Hello, {props.name}!</h1>;\n}`;\nconst exampleAfter = `function Greeter({ name, enthusiasmLevel = 1 }) {\n const punctuation = '!'.repeat(enthusiasmLevel);\n return <h1>Hello, {name}{punctuation}</h1>;\n}`;\n\nexport const AiPullRequestAssistant: React.FC = () => {\n const [beforeCode, setBeforeCode] = useState<string>(exampleBefore);\n const [afterCode, setAfterCode] = useState<string>(exampleAfter);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [isExporting, setIsExporting] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n const [summary, setSummary] = useState<StructuredPrSummary | null>(null);\n\n const { addNotification } = useNotification();\n const { state } = useGlobalState();\n const { user } = state;\n\n const diff = useMemo(() => Diff.createPatch('component.tsx', beforeCode, afterCode), [beforeCode, afterCode]);\n\n const handleGenerateSummary = useCallback(async () => {\n if (!beforeCode.trim() && !afterCode.trim()) {\n setError('Please provide code to generate a summary.');\n return;\n }\n setIsLoading(true);\n setError('');\n setSummary(null);\n \n try {\n const result: StructuredPrSummary = await generatePrSummaryStructured(diff);\n setSummary(result);\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to generate summary: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, [diff, beforeCode, afterCode]);\n\n const handleExportToDocs = async () => {\n if (!summary || !user) {\n addNotification('Please generate a summary first and ensure you are signed in.', 'error');\n return;\n }\n setIsExporting(true);\n try {\n const specContent = await generateTechnicalSpecFromDiff(diff, summary);\n const doc = await createDocument(`Tech Spec: ${summary.title}`);\n await insertText(doc.documentId, specContent);\n addNotification('Successfully exported to Google Docs!', 'success');\n window.open(doc.webViewLink, '_blank');\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n addNotification(`Failed to export: ${errorMessage}`, 'error');\n } finally {\n setIsExporting(false);\n }\n };\n \n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\">\n <AiPullRequestAssistantIcon />\n <span className=\"ml-3\">AI Pull Request Assistant</span>\n </h1>\n <p className=\"text-text-secondary mt-1\">Generate a PR summary from code changes and export a full tech spec.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n {/* Left side: Inputs and Generator */}\n <div className=\"flex flex-col gap-4 min-h-0\">\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label htmlFor=\"before-code\" className=\"text-sm font-medium text-text-secondary mb-2\">Before</label>\n <textarea id=\"before-code\" value={beforeCode} onChange={e => setBeforeCode(e.target.value)} className=\"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm\" />\n </div>\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label htmlFor=\"after-code\" className=\"text-sm font-medium text-text-secondary mb-2\">After</label>\n <textarea id=\"after-code\" value={afterCode} onChange={e => setAfterCode(e.target.value)} className=\"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm\" />\n </div>\n <button\n onClick={handleGenerateSummary}\n disabled={isLoading}\n className=\"btn-primary w-full mt-4 flex items-center justify-center gap-2 py-2\"\n >\n {isLoading ? <LoadingSpinner/> : 'Generate Summary'}\n </button>\n </div>\n {/* Right side: Summary and actions */}\n <div className=\"flex flex-col gap-4 min-h-0\">\n <div className=\"flex justify-between items-center\">\n <h3 className=\"text-lg font-bold\">Generated Summary</h3>\n {summary && (\n <button\n onClick={() => downloadFile(`${summary.title}\\n\\n${summary.summary}\\n\\n${summary.changes.join('\\n')}`, `pr_${summary.title.slice(0,10)}.md`, 'text/markdown')}\n disabled={!summary} \n className=\"btn-primary px-3 py-1 text-sm disabled:bg-gray-400\"\n >\n Download .md\n </button>\n )}\n </div>\n <div className=\"flex-grow bg-surface p-4 border rounded-lg overflow-y-auto\">\n {isLoading && <div className=\"flex justify-center items-center h-full\"><LoadingSpinner/></div>}\n {error && <p className=\"text-red-500\">{error}</p>}\n {summary && (\n <div className=\"space-y-4\">\n <input type=\"text\" value={summary.title} readOnly className=\"w-full p-2 bg-background border rounded font-bold\"/>\n <div className=\"p-2 bg-background border rounded space-y-2\">\n <h4 className=\"font-semibold\">Summary</h4>\n <p className=\"text-sm\">{summary.summary}</p>\n <h4 className=\"font-semibold\">Changes</h4>\n <ul className=\"list-disc list-inside text-sm\">\n {summary.changes.map((c, i) => <li key={i}>{c}</li>)}\n </ul>\n </div>\n </div>\n )}\n </div>\n <button\n onClick={handleExportToDocs}\n disabled={isExporting || !summary || !user}\n className=\"btn-primary w-full mt-4 flex items-center justify-center gap-2 py-2\"\n title={!user ? \"Sign in to export to Google Docs\" : !summary ? \"Generate summary first\" : \"Export a full tech spec to Google Docs\"}\n >\n {isExporting ? <LoadingSpinner/> : <DocumentIcon/>} Export Tech Spec to Docs\n </button>\n </div>\n </div>\n </div>\n );\n};"],"names":["createDocument","title","ensureGapiClient","doc","error","logError","insertText","documentId","text","exampleBefore","exampleAfter","AiPullRequestAssistant","beforeCode","setBeforeCode","useState","afterCode","setAfterCode","isLoading","setIsLoading","isExporting","setIsExporting","setError","summary","setSummary","addNotification","useNotification","state","useGlobalState","user","diff","useMemo","Diff.createPatch","handleGenerateSummary","useCallback","result","generatePrSummaryStructured","err","errorMessage","handleExportToDocs","specContent","generateTechnicalSpecFromDiff","jsxs","jsx","AiPullRequestAssistantIcon","e","LoadingSpinner","downloadFile","c","i","DocumentIcon"],"mappings":"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"}
|
assets/AiStyleTransfer-4K23Hln9.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as s,j as e}from"./react-B-lWpQRQ.js";import{a8 as y,S as j,L as x,M as b}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const g="function my_func(x,y){return x+y;}",N=`- Use camelCase for function names.
|
| 2 |
+
- Add a space after commas in argument lists.
|
| 3 |
+
- Use semicolons at the end of statements.`,$=()=>{const[r,f]=s.useState(g),[a,u]=s.useState(N),[o,d]=s.useState(""),[l,m]=s.useState(!1),[i,c]=s.useState(""),p=s.useCallback(async()=>{if(!r.trim()||!a.trim()){c("Please provide both code and a style guide.");return}m(!0),c(""),d("");try{const t=y({code:r,styleGuide:a});let n="";for await(const h of t)n+=h,d(n)}catch(t){const n=t instanceof Error?t.message:"An unknown error occurred.";c(`Failed to transfer style: ${n}`)}finally{m(!1)}},[r,a]);return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(j,{}),e.jsx("span",{className:"ml-3",children:"AI Code Style Transfer"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Rewrite code to match a specific style guide using AI."})]}),e.jsxs("div",{className:"flex-grow flex flex-col gap-4 min-h-0",children:[e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{htmlFor:"input-code",className:"text-sm font-medium text-text-secondary mb-2",children:"Original Code"}),e.jsx("textarea",{id:"input-code",value:r,onChange:t=>f(t.target.value),className:"flex-grow p-4 bg-surface border border-border rounded-md resize-y font-mono text-sm"})]}),e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{htmlFor:"style-guide",className:"text-sm font-medium text-text-secondary mb-2",children:"Style Guide"}),e.jsx("textarea",{id:"style-guide",value:a,onChange:t=>u(t.target.value),className:"flex-grow p-4 bg-surface border border-border rounded-md resize-y font-mono text-sm"})]}),e.jsx("div",{className:"flex-shrink-0",children:e.jsx("button",{onClick:p,disabled:l,className:"btn-primary w-full max-w-xs mx-auto flex items-center justify-center px-6 py-3",children:l?e.jsx(x,{}):"Rewrite Code"})}),e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary mb-2",children:"Rewritten Code"}),e.jsxs("div",{className:"flex-grow p-1 bg-background border border-border rounded-md overflow-y-auto",children:[l&&!o&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(x,{})}),i&&e.jsx("p",{className:"p-4 text-red-500",children:i}),o&&e.jsx(b,{content:o}),!l&&!o&&!i&&e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:"Rewritten code will appear here."})]})]})]})]})};export{$ as AiStyleTransfer};
|
| 4 |
+
//# sourceMappingURL=AiStyleTransfer-4K23Hln9.js.map
|
assets/AiStyleTransfer-4K23Hln9.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiStyleTransfer-4K23Hln9.js","sources":["../../components/features/AiStyleTransfer.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { transferCodeStyleStream } from '../../services/index.ts';\nimport { SparklesIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { MarkdownRenderer } from '../shared/index.tsx';\n\nconst exampleCode = `function my_func(x,y){return x+y;}`;\nconst exampleStyleGuide = `- Use camelCase for function names.\n- Add a space after commas in argument lists.\n- Use semicolons at the end of statements.`;\n\nexport const AiStyleTransfer: React.FC = () => {\n const [inputCode, setInputCode] = useState<string>(exampleCode);\n const [styleGuide, setStyleGuide] = useState<string>(exampleStyleGuide);\n const [outputCode, setOutputCode] = useState<string>('');\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n\n const handleGenerate = useCallback(async () => {\n if (!inputCode.trim() || !styleGuide.trim()) {\n setError('Please provide both code and a style guide.');\n return;\n }\n setIsLoading(true);\n setError('');\n setOutputCode('');\n try {\n const stream = transferCodeStyleStream({ code: inputCode, styleGuide });\n let fullResponse = '';\n for await (const chunk of stream) {\n fullResponse += chunk;\n setOutputCode(fullResponse);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to transfer style: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, [inputCode, styleGuide]);\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\">\n <SparklesIcon />\n <span className=\"ml-3\">AI Code Style Transfer</span>\n </h1>\n <p className=\"text-text-secondary mt-1\">Rewrite code to match a specific style guide using AI.</p>\n </header>\n <div className=\"flex-grow flex flex-col gap-4 min-h-0\">\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label htmlFor=\"input-code\" className=\"text-sm font-medium text-text-secondary mb-2\">Original Code</label>\n <textarea\n id=\"input-code\"\n value={inputCode}\n onChange={(e) => setInputCode(e.target.value)}\n className=\"flex-grow p-4 bg-surface border border-border rounded-md resize-y font-mono text-sm\"\n />\n </div>\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label htmlFor=\"style-guide\" className=\"text-sm font-medium text-text-secondary mb-2\">Style Guide</label>\n <textarea\n id=\"style-guide\"\n value={styleGuide}\n onChange={(e) => setStyleGuide(e.target.value)}\n className=\"flex-grow p-4 bg-surface border border-border rounded-md resize-y font-mono text-sm\"\n />\n </div>\n <div className=\"flex-shrink-0\">\n <button\n onClick={handleGenerate}\n disabled={isLoading}\n className=\"btn-primary w-full max-w-xs mx-auto flex items-center justify-center px-6 py-3\"\n >\n {isLoading ? <LoadingSpinner /> : 'Rewrite Code'}\n </button>\n </div>\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label className=\"text-sm font-medium text-text-secondary mb-2\">Rewritten Code</label>\n <div className=\"flex-grow p-1 bg-background border border-border rounded-md overflow-y-auto\">\n {isLoading && !outputCode && <div className=\"flex items-center justify-center h-full\"><LoadingSpinner /></div>}\n {error && <p className=\"p-4 text-red-500\">{error}</p>}\n {outputCode && <MarkdownRenderer content={outputCode} />}\n {!isLoading && !outputCode && !error && <div className=\"text-text-secondary h-full flex items-center justify-center\">Rewritten code will appear here.</div>}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["exampleCode","exampleStyleGuide","AiStyleTransfer","inputCode","setInputCode","useState","styleGuide","setStyleGuide","outputCode","setOutputCode","isLoading","setIsLoading","error","setError","handleGenerate","useCallback","stream","transferCodeStyleStream","fullResponse","chunk","err","errorMessage","jsxs","jsx","SparklesIcon","e","LoadingSpinner","MarkdownRenderer"],"mappings":"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"}
|
assets/AiUnitTestGenerator-B0mTatHg.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as o,j as e}from"./react-B-lWpQRQ.js";import{B as u,I as h,L as d,T as j,M as g}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import{d as b}from"./fileUtils-DLahR3l0.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const y=`import React from 'react';
|
| 2 |
+
|
| 3 |
+
export const Greeting = ({ name }) => {
|
| 4 |
+
if (!name) {
|
| 5 |
+
return <div>Hello, Guest!</div>;
|
| 6 |
+
}
|
| 7 |
+
return <div>Hello, {name}!</div>;
|
| 8 |
+
};`,z=()=>{const[a,x]=o.useState(y),[t,c]=o.useState(""),[r,m]=o.useState(!1),[l,i]=o.useState(""),p=o.useCallback(async()=>{if(!a.trim()){i("Please enter some code to generate tests for.");return}m(!0),i(""),c("");try{const s=u(a);let n="";for await(const f of s)n+=f,c(n)}catch(s){const n=s instanceof Error?s.message:"An unknown error occurred.";i(`Failed to generate tests: ${n}`)}finally{m(!1)}},[a]);return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(h,{}),e.jsx("span",{className:"ml-3",children:"AI Unit Test Generator"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Generate Vitest/RTL unit tests from your component code."})]}),e.jsxs("div",{className:"flex-grow flex flex-col gap-4 min-h-0",children:[e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{htmlFor:"code-input",className:"text-sm font-medium text-text-secondary mb-2",children:"Component Code"}),e.jsx("textarea",{id:"code-input",value:a,onChange:s=>x(s.target.value),placeholder:"Paste your component code here...",className:"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm"})]}),e.jsx("div",{className:"flex-shrink-0",children:e.jsx("button",{onClick:p,disabled:r,className:"btn-primary w-full max-w-xs mx-auto flex items-center justify-center px-6 py-3",children:r?e.jsx(d,{}):"Generate Tests"})}),e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsxs("div",{className:"flex justify-between items-center mb-2",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary",children:"Generated Tests"}),t&&!r&&e.jsxs("button",{onClick:()=>b(t,"tests.test.tsx","text/typescript"),className:"flex items-center gap-1 px-3 py-1 bg-gray-100 text-xs rounded-md hover:bg-gray-200",children:[e.jsx(j,{className:"w-4 h-4"})," Download"]})]}),e.jsxs("div",{className:"relative flex-grow p-1 bg-background border border-border rounded-md overflow-y-auto",children:[r&&!t&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(d,{})}),l&&e.jsx("p",{className:"p-4 text-red-500",children:l}),t&&e.jsx(g,{content:t}),!r&&!t&&!l&&e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:"Tests will appear here."})]})]})]})]})};export{z as AiUnitTestGenerator};
|
| 9 |
+
//# sourceMappingURL=AiUnitTestGenerator-B0mTatHg.js.map
|
assets/AiUnitTestGenerator-B0mTatHg.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiUnitTestGenerator-B0mTatHg.js","sources":["../../components/features/AiUnitTestGenerator.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { generateUnitTestsStream, downloadFile } from '../../services/index.ts';\nimport { BeakerIcon, ArrowDownTrayIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { MarkdownRenderer } from '../shared/index.tsx';\n\nconst exampleCode = `import React from 'react';\n\nexport const Greeting = ({ name }) => {\n if (!name) {\n return <div>Hello, Guest!</div>;\n }\n return <div>Hello, {name}!</div>;\n};`;\n\nexport const AiUnitTestGenerator: React.FC = () => {\n const [code, setCode] = useState<string>(exampleCode);\n const [tests, setTests] = useState<string>('');\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n\n const handleGenerate = useCallback(async () => {\n if (!code.trim()) {\n setError('Please enter some code to generate tests for.');\n return;\n }\n setIsLoading(true);\n setError('');\n setTests('');\n try {\n const stream = generateUnitTestsStream(code);\n let fullResponse = '';\n for await (const chunk of stream) {\n fullResponse += chunk;\n setTests(fullResponse);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to generate tests: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, [code]);\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\">\n <BeakerIcon />\n <span className=\"ml-3\">AI Unit Test Generator</span>\n </h1>\n <p className=\"text-text-secondary mt-1\">Generate Vitest/RTL unit tests from your component code.</p>\n </header>\n <div className=\"flex-grow flex flex-col gap-4 min-h-0\">\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label htmlFor=\"code-input\" className=\"text-sm font-medium text-text-secondary mb-2\">Component Code</label>\n <textarea\n id=\"code-input\"\n value={code}\n onChange={(e) => setCode(e.target.value)}\n placeholder=\"Paste your component code here...\"\n className=\"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm\"\n />\n </div>\n <div className=\"flex-shrink-0\">\n <button\n onClick={handleGenerate}\n disabled={isLoading}\n className=\"btn-primary w-full max-w-xs mx-auto flex items-center justify-center px-6 py-3\"\n >\n {isLoading ? <LoadingSpinner /> : 'Generate Tests'}\n </button>\n </div>\n <div className=\"flex flex-col flex-1 min-h-0\">\n <div className=\"flex justify-between items-center mb-2\">\n <label className=\"text-sm font-medium text-text-secondary\">Generated Tests</label>\n {tests && !isLoading && (\n <button onClick={() => downloadFile(tests, 'tests.test.tsx', 'text/typescript')} className=\"flex items-center gap-1 px-3 py-1 bg-gray-100 text-xs rounded-md hover:bg-gray-200\">\n <ArrowDownTrayIcon className=\"w-4 h-4\"/> Download\n </button>\n )}\n </div>\n <div className=\"relative flex-grow p-1 bg-background border border-border rounded-md overflow-y-auto\">\n {isLoading && !tests && <div className=\"flex items-center justify-center h-full\"><LoadingSpinner /></div>}\n {error && <p className=\"p-4 text-red-500\">{error}</p>}\n {tests && <MarkdownRenderer content={tests} />}\n {!isLoading && !tests && !error && <div className=\"text-text-secondary h-full flex items-center justify-center\">Tests will appear here.</div>}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"],"names":["exampleCode","AiUnitTestGenerator","code","setCode","useState","tests","setTests","isLoading","setIsLoading","error","setError","handleGenerate","useCallback","stream","generateUnitTestsStream","fullResponse","chunk","err","errorMessage","jsxs","jsx","BeakerIcon","e","LoadingSpinner","downloadFile","ArrowDownTrayIcon","MarkdownRenderer"],"mappings":"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"}
|
assets/AiVideoGenerator-BlSkwEXh.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as s,j as e}from"./react-B-lWpQRQ.js";import{u as N,ba as v,L as x,b5 as y,ao as w}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./marked-CesSW9Du.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const H=()=>{const[n,f]=s.useState("A cinematic shot of a robot skateboarding through a neon-lit city at night."),[a,c]=s.useState([]),[p,u]=s.useState(0),[i,m]=s.useState(!1),[o,g]=s.useState(!1),r=s.useRef(null),{addNotification:d}=N(),h=async()=>{m(!0),c([]);try{const{steps:t}=await y(`Create a short video clip based on this prompt: "${n}". Break it down into 4 keyframes.`);for(let l=0;l<t.length;l++){const b=await w(`A cinematic frame from a video of: ${t[l]}.`);c(j=>[...j,b])}d("Video frames generated!","success")}catch(t){d(t instanceof Error?t.message:"Generation failed","error")}finally{m(!1)}};return s.useEffect(()=>(o?r.current=window.setInterval(()=>{u(t=>(t+1)%a.length)},200):r.current&&clearInterval(r.current),()=>{r.current&&clearInterval(r.current)}),[o,a.length]),e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(v,{}),e.jsx("span",{className:"ml-3",children:"AI Video Generator (Simulated)"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Generate a sequence of images from a prompt to simulate video creation."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{className:"text-sm font-medium mb-2",children:"Prompt"}),e.jsx("textarea",{value:n,onChange:t=>f(t.target.value),className:"flex-grow p-2 bg-surface border rounded"})]}),e.jsx("button",{onClick:h,disabled:i,className:"btn-primary w-full py-3",children:i?e.jsx(x,{}):"Generate Video Frames"}),e.jsxs("p",{className:"text-xs text-center text-yellow-600 bg-yellow-400/10 p-2 rounded-md",children:[e.jsx("strong",{children:"Note:"})," This is a simulation. It generates a sequence of images and plays them as a slideshow to mimic video generation, as client-side video generation APIs are not yet standard."]})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-sm font-medium mb-2",children:"Generated Video"}),e.jsxs("div",{className:"flex-grow bg-background border rounded overflow-hidden relative",children:[i&&e.jsx("div",{className:"flex justify-center items-center h-full",children:e.jsx(x,{})}),a.length>0&&e.jsx("img",{src:a[p],alt:"Generated frame",className:"w-full h-full object-contain"}),a.length>0&&!i&&e.jsx("button",{onClick:()=>g(!o),className:"absolute bottom-4 left-1/2 -translate-x-1/2 bg-black/50 text-white px-4 py-2 rounded-full",children:o?"Pause":"Play"})]})]})]})]})};export{H as AiVideoGenerator};
|
| 2 |
+
//# sourceMappingURL=AiVideoGenerator-BlSkwEXh.js.map
|
assets/AiVideoGenerator-BlSkwEXh.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AiVideoGenerator-BlSkwEXh.js","sources":["../../components/features/AiVideoGenerator.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { decomposeUserFlow, generateImage } from '../../services/index.ts';\nimport { VideoCameraIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { useNotification } from '../../contexts/NotificationContext.tsx';\n\nexport const AiVideoGenerator: React.FC = () => {\n const [prompt, setPrompt] = useState('A cinematic shot of a robot skateboarding through a neon-lit city at night.');\n const [images, setImages] = useState<string[]>([]);\n const [currentImageIndex, setCurrentImageIndex] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [isPlaying, setIsPlaying] = useState(false);\n const intervalRef = useRef<number | null>(null);\n const { addNotification } = useNotification();\n\n const handleGenerate = async () => {\n setIsLoading(true);\n setImages([]);\n try {\n const { steps } = await decomposeUserFlow(`Create a short video clip based on this prompt: \"${prompt}\". Break it down into 4 keyframes.`);\n for (let i = 0; i < steps.length; i++) {\n const imageUrl = await generateImage(`A cinematic frame from a video of: ${steps[i]}.`);\n setImages(prev => [...prev, imageUrl]);\n }\n addNotification('Video frames generated!', 'success');\n } catch (err) {\n addNotification(err instanceof Error ? err.message : 'Generation failed', 'error');\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n if (isPlaying) {\n intervalRef.current = window.setInterval(() => {\n setCurrentImageIndex(prev => (prev + 1) % images.length);\n }, 200); // 5 fps\n } else {\n if (intervalRef.current) clearInterval(intervalRef.current);\n }\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current);\n };\n }, [isPlaying, images.length]);\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\"><VideoCameraIcon /><span className=\"ml-3\">AI Video Generator (Simulated)</span></h1>\n <p className=\"text-text-secondary mt-1\">Generate a sequence of images from a prompt to simulate video creation.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label className=\"text-sm font-medium mb-2\">Prompt</label>\n <textarea value={prompt} onChange={e => setPrompt(e.target.value)} className=\"flex-grow p-2 bg-surface border rounded\"/>\n </div>\n <button onClick={handleGenerate} disabled={isLoading} className=\"btn-primary w-full py-3\">{isLoading ? <LoadingSpinner/> : 'Generate Video Frames'}</button>\n <p className=\"text-xs text-center text-yellow-600 bg-yellow-400/10 p-2 rounded-md\">\n <strong>Note:</strong> This is a simulation. It generates a sequence of images and plays them as a slideshow to mimic video generation, as client-side video generation APIs are not yet standard.\n </p>\n </div>\n <div className=\"flex flex-col\">\n <label className=\"text-sm font-medium mb-2\">Generated Video</label>\n <div className=\"flex-grow bg-background border rounded overflow-hidden relative\">\n {isLoading && <div className=\"flex justify-center items-center h-full\"><LoadingSpinner /></div>}\n {images.length > 0 && <img src={images[currentImageIndex]} alt=\"Generated frame\" className=\"w-full h-full object-contain\"/>}\n {images.length > 0 && !isLoading && (\n <button onClick={() => setIsPlaying(!isPlaying)} className=\"absolute bottom-4 left-1/2 -translate-x-1/2 bg-black/50 text-white px-4 py-2 rounded-full\">\n {isPlaying ? 'Pause' : 'Play'}\n </button>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["AiVideoGenerator","prompt","setPrompt","useState","images","setImages","currentImageIndex","setCurrentImageIndex","isLoading","setIsLoading","isPlaying","setIsPlaying","intervalRef","useRef","addNotification","useNotification","handleGenerate","steps","decomposeUserFlow","i","imageUrl","generateImage","prev","err","useEffect","jsxs","jsx","VideoCameraIcon","e","LoadingSpinner"],"mappings":"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"}
|
assets/ApiClientGenerator-CKm58gQ7.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as s,j as e}from"./react-B-lWpQRQ.js";import{J as N}from"./jszip-C9LaxYWv.js";import{u as v,Y as w,L as S,M as P,aW as C}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const A=`{
|
| 2 |
+
"openapi": "3.0.0",
|
| 3 |
+
"info": { "title": "Simple API", "version": "1.0.0" },
|
| 4 |
+
"paths": {
|
| 5 |
+
"/users": {
|
| 6 |
+
"get": {
|
| 7 |
+
"summary": "Get all users",
|
| 8 |
+
"responses": { "200": { "description": "A list of users" } }
|
| 9 |
+
}
|
| 10 |
+
}
|
| 11 |
+
}
|
| 12 |
+
}`,$=()=>{const[i,g]=s.useState(A),[m,j]=s.useState("TypeScript/Fetch"),[d,p]=s.useState(!1),[x,o]=s.useState(""),[n,h]=s.useState([]),[r,c]=s.useState(null),{addNotification:u}=v(),b=async()=>{if(!i.trim()){o("Please provide a schema.");return}p(!0),o(""),h([]),c(null);try{const t=await C(i,m);h(t),t.length>0&&c(t[0]),u("API client generated!","success")}catch(t){const l=t instanceof Error?t.message:"An unknown error occurred";o(l),u(l,"error")}finally{p(!1)}},y=async()=>{if(n.length===0)return;const t=new N;n.forEach(f=>{t.file(f.filePath,f.content)});const l=await t.generateAsync({type:"blob"}),a=document.createElement("a");a.href=URL.createObjectURL(l),a.download="api-client.zip",document.body.appendChild(a),a.click(),document.body.removeChild(a)};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(w,{}),e.jsx("span",{className:"ml-3",children:"API Client Generator"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Generate a typed client library from an OpenAPI or GraphQL schema."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{className:"text-sm font-medium mb-2",children:"OpenAPI / GraphQL Schema"}),e.jsx("textarea",{value:i,onChange:t=>g(t.target.value),className:"flex-grow p-2 bg-surface border rounded font-mono text-xs"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium",children:"Target Language & Library"}),e.jsxs("select",{value:m,onChange:t=>j(t.target.value),className:"w-full mt-1 p-2 bg-surface border rounded",children:[e.jsx("option",{children:"TypeScript/Fetch"}),e.jsx("option",{children:"Python/requests"})]})]}),e.jsx("button",{onClick:b,disabled:d,className:"btn-primary w-full py-3",children:d?e.jsx(S,{}):"Generate Client"}),x&&e.jsx("p",{className:"text-red-500 text-xs text-center",children:x})]}),e.jsxs("div",{className:"flex flex-col min-h-0",children:[e.jsxs("div",{className:"flex justify-between items-center mb-2",children:[e.jsx("label",{className:"text-sm font-medium",children:"Generated Files"}),n.length>0&&e.jsx("button",{onClick:y,className:"btn-primary px-3 py-1 text-sm",children:"Download as ZIP"})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-3 gap-2 min-h-0 bg-background border rounded-lg p-2",children:[e.jsx("div",{className:"col-span-1 overflow-y-auto",children:n.map(t=>e.jsx("div",{onClick:()=>c(t),className:`p-2 text-sm rounded cursor-pointer ${(r==null?void 0:r.filePath)===t.filePath?"bg-primary/10 text-primary":""}`,children:t.filePath},t.filePath))}),e.jsx("div",{className:"col-span-2 bg-surface rounded overflow-y-auto",children:r&&e.jsx(P,{content:"```\n"+r.content+"\n```"})})]})]})]})]})};export{$ as ApiClientGenerator};
|
| 13 |
+
//# sourceMappingURL=ApiClientGenerator-CKm58gQ7.js.map
|
assets/ApiClientGenerator-CKm58gQ7.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"ApiClientGenerator-CKm58gQ7.js","sources":["../../components/features/ApiClientGenerator.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport JSZip from 'jszip';\nimport { generateClientFromApiSchema } from '../../services/index.ts';\nimport { CodeBracketSquareIcon, SparklesIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { useNotification } from '../../contexts/NotificationContext.tsx';\nimport type { GeneratedFile } from '../../types.ts';\nimport { MarkdownRenderer } from '../shared/index.tsx';\n\nconst exampleSchema = `{\n \"openapi\": \"3.0.0\",\n \"info\": { \"title\": \"Simple API\", \"version\": \"1.0.0\" },\n \"paths\": {\n \"/users\": {\n \"get\": {\n \"summary\": \"Get all users\",\n \"responses\": { \"200\": { \"description\": \"A list of users\" } }\n }\n }\n }\n}`;\n\nexport const ApiClientGenerator: React.FC = () => {\n const [schema, setSchema] = useState(exampleSchema);\n const [language, setLanguage] = useState('TypeScript/Fetch');\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState('');\n const [generatedFiles, setGeneratedFiles] = useState<GeneratedFile[]>([]);\n const [activeFile, setActiveFile] = useState<GeneratedFile | null>(null);\n const { addNotification } = useNotification();\n\n const handleGenerate = async () => {\n if (!schema.trim()) {\n setError('Please provide a schema.');\n return;\n }\n setIsLoading(true);\n setError('');\n setGeneratedFiles([]);\n setActiveFile(null);\n try {\n const files = await generateClientFromApiSchema(schema, language);\n setGeneratedFiles(files);\n if (files.length > 0) {\n setActiveFile(files[0]);\n }\n addNotification('API client generated!', 'success');\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'An unknown error occurred';\n setError(msg);\n addNotification(msg, 'error');\n } finally {\n setIsLoading(false);\n }\n };\n \n const handleDownloadZip = async () => {\n if (generatedFiles.length === 0) return;\n const zip = new JSZip();\n generatedFiles.forEach(file => {\n zip.file(file.filePath, file.content);\n });\n \n const zipBlob = await zip.generateAsync({ type: 'blob' });\n const link = document.createElement('a');\n link.href = URL.createObjectURL(zipBlob);\n link.download = 'api-client.zip';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\"><CodeBracketSquareIcon /><span className=\"ml-3\">API Client Generator</span></h1>\n <p className=\"text-text-secondary mt-1\">Generate a typed client library from an OpenAPI or GraphQL schema.</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label className=\"text-sm font-medium mb-2\">OpenAPI / GraphQL Schema</label>\n <textarea value={schema} onChange={e => setSchema(e.target.value)} className=\"flex-grow p-2 bg-surface border rounded font-mono text-xs\"/>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Target Language & Library</label>\n <select value={language} onChange={e => setLanguage(e.target.value)} className=\"w-full mt-1 p-2 bg-surface border rounded\">\n <option>TypeScript/Fetch</option>\n <option>Python/requests</option>\n </select>\n </div>\n <button onClick={handleGenerate} disabled={isLoading} className=\"btn-primary w-full py-3\">{isLoading ? <LoadingSpinner/> : 'Generate Client'}</button>\n {error && <p className=\"text-red-500 text-xs text-center\">{error}</p>}\n </div>\n <div className=\"flex flex-col min-h-0\">\n <div className=\"flex justify-between items-center mb-2\">\n <label className=\"text-sm font-medium\">Generated Files</label>\n {generatedFiles.length > 0 && <button onClick={handleDownloadZip} className=\"btn-primary px-3 py-1 text-sm\">Download as ZIP</button>}\n </div>\n <div className=\"flex-grow grid grid-cols-3 gap-2 min-h-0 bg-background border rounded-lg p-2\">\n <div className=\"col-span-1 overflow-y-auto\">\n {generatedFiles.map(file => (\n <div key={file.filePath} onClick={() => setActiveFile(file)} className={`p-2 text-sm rounded cursor-pointer ${activeFile?.filePath === file.filePath ? 'bg-primary/10 text-primary' : ''}`}>{file.filePath}</div>\n ))}\n </div>\n <div className=\"col-span-2 bg-surface rounded overflow-y-auto\">\n {activeFile && <MarkdownRenderer content={'```\\n' + activeFile.content + '\\n```'} />}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["exampleSchema","ApiClientGenerator","schema","setSchema","useState","language","setLanguage","isLoading","setIsLoading","error","setError","generatedFiles","setGeneratedFiles","activeFile","setActiveFile","addNotification","useNotification","handleGenerate","files","generateClientFromApiSchema","err","msg","handleDownloadZip","zip","JSZip","file","zipBlob","link","jsxs","jsx","CodeBracketSquareIcon","e","LoadingSpinner","MarkdownRenderer"],"mappings":"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"}
|
assets/ApiEndpointTester-CdpMBY-S.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as t,j as e}from"./react-B-lWpQRQ.js";import{u as E,aG as A,L as g}from"./index-DyMS-nC-.js";import"./marked-CesSW9Du.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./@google-xfXoiafW.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const V=()=>{const[u,N]=t.useState("https://jsonplaceholder.typicode.com/posts/1"),[l,b]=t.useState("GET"),[i,v]=t.useState(`{
|
| 2 |
+
"Content-Type": "application/json"
|
| 3 |
+
}`),[c,S]=t.useState(""),[y,d]=t.useState(null),[a,f]=t.useState(null),[m,x]=t.useState(null),[p,h]=t.useState(!1),{addNotification:j}=E(),w=async()=>{h(!0),d(null),f(null),x(null);const s=performance.now();try{const r=i?JSON.parse(i):{},n=await fetch(u,{method:l,headers:r,body:l!=="GET"&&c?c:void 0}),o=performance.now();x(o-s),f(n.status);const T=await n.json();d(JSON.stringify(T,null,2)),j("Request successful!","success")}catch(r){const n=performance.now();x(n-s);const o=r instanceof Error?r.message:"An unknown error occurred";d(o),j(o,"error")}finally{h(!1)}};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(A,{}),e.jsx("span",{className:"ml-3",children:"API Endpoint Tester"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"A simple UI to make requests to API endpoints (like Postman lite)."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("select",{value:l,onChange:s=>b(s.target.value),className:"p-2 bg-surface border rounded",children:[e.jsx("option",{children:"GET"}),e.jsx("option",{children:"POST"}),e.jsx("option",{children:"PUT"}),e.jsx("option",{children:"DELETE"})]}),e.jsx("input",{value:u,onChange:s=>N(s.target.value),placeholder:"https://api.example.com/data",className:"flex-grow p-2 bg-surface border rounded"})]}),e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{className:"text-sm mb-1",children:"Headers (JSON)"}),e.jsx("textarea",{value:i,onChange:s=>v(s.target.value),className:"flex-grow p-2 bg-surface border rounded font-mono text-xs"})]}),e.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsx("label",{className:"text-sm mb-1",children:"Body (JSON)"}),e.jsx("textarea",{value:c,onChange:s=>S(s.target.value),className:"flex-grow p-2 bg-surface border rounded font-mono text-xs"})]}),e.jsx("button",{onClick:w,disabled:p,className:"btn-primary w-full py-3",children:p?e.jsx(g,{}):"Send Request"})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsxs("div",{className:"flex justify-between items-center mb-2",children:[e.jsx("label",{className:"text-sm font-medium",children:"Response"}),a&&e.jsxs("div",{className:"flex gap-4 text-sm",children:[e.jsxs("span",{className:a>=200&&a<300?"text-green-500":"text-red-500",children:["Status: ",a]}),e.jsxs("span",{children:["Time: ",m==null?void 0:m.toFixed(0),"ms"]})]})]}),e.jsx("div",{className:"flex-grow p-2 bg-background border rounded overflow-auto",children:p?e.jsx("div",{className:"flex justify-center items-center h-full",children:e.jsx(g,{})}):e.jsx("pre",{className:"font-mono text-xs",children:y})})]})]})]})};export{V as ApiEndpointTester};
|
| 4 |
+
//# sourceMappingURL=ApiEndpointTester-CdpMBY-S.js.map
|
assets/ApiEndpointTester-CdpMBY-S.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"ApiEndpointTester-CdpMBY-S.js","sources":["../../components/features/ApiEndpointTester.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { PaperAirplaneIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { useNotification } from '../../contexts/NotificationContext.tsx';\n\nexport const ApiEndpointTester: React.FC = () => {\n const [url, setUrl] = useState('https://jsonplaceholder.typicode.com/posts/1');\n const [method, setMethod] = useState('GET');\n const [headers, setHeaders] = useState('{\\n \"Content-Type\": \"application/json\"\\n}');\n const [body, setBody] = useState('');\n const [response, setResponse] = useState<any>(null);\n const [status, setStatus] = useState<number | null>(null);\n const [time, setTime] = useState<number | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const { addNotification } = useNotification();\n\n const handleSend = async () => {\n setIsLoading(true);\n setResponse(null);\n setStatus(null);\n setTime(null);\n \n const startTime = performance.now();\n try {\n const parsedHeaders = headers ? JSON.parse(headers) : {};\n const res = await fetch(url, {\n method,\n headers: parsedHeaders,\n body: method !== 'GET' && body ? body : undefined,\n });\n \n const endTime = performance.now();\n setTime(endTime - startTime);\n setStatus(res.status);\n\n const resBody = await res.json();\n setResponse(JSON.stringify(resBody, null, 2));\n addNotification('Request successful!', 'success');\n } catch (err) {\n const endTime = performance.now();\n setTime(endTime - startTime);\n const msg = err instanceof Error ? err.message : 'An unknown error occurred';\n setResponse(msg);\n addNotification(msg, 'error');\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl font-bold flex items-center\"><PaperAirplaneIcon /><span className=\"ml-3\">API Endpoint Tester</span></h1>\n <p className=\"text-text-secondary mt-1\">A simple UI to make requests to API endpoints (like Postman lite).</p>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex gap-2\">\n <select value={method} onChange={e => setMethod(e.target.value)} className=\"p-2 bg-surface border rounded\">\n <option>GET</option><option>POST</option><option>PUT</option><option>DELETE</option>\n </select>\n <input value={url} onChange={e => setUrl(e.target.value)} placeholder=\"https://api.example.com/data\" className=\"flex-grow p-2 bg-surface border rounded\"/>\n </div>\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label className=\"text-sm mb-1\">Headers (JSON)</label>\n <textarea value={headers} onChange={e => setHeaders(e.target.value)} className=\"flex-grow p-2 bg-surface border rounded font-mono text-xs\"/>\n </div>\n <div className=\"flex flex-col flex-1 min-h-0\">\n <label className=\"text-sm mb-1\">Body (JSON)</label>\n <textarea value={body} onChange={e => setBody(e.target.value)} className=\"flex-grow p-2 bg-surface border rounded font-mono text-xs\"/>\n </div>\n <button onClick={handleSend} disabled={isLoading} className=\"btn-primary w-full py-3\">{isLoading ? <LoadingSpinner/> : 'Send Request'}</button>\n </div>\n <div className=\"flex flex-col\">\n <div className=\"flex justify-between items-center mb-2\">\n <label className=\"text-sm font-medium\">Response</label>\n {status && <div className=\"flex gap-4 text-sm\"><span className={status >= 200 && status < 300 ? 'text-green-500' : 'text-red-500'}>Status: {status}</span><span>Time: {time?.toFixed(0)}ms</span></div>}\n </div>\n <div className=\"flex-grow p-2 bg-background border rounded overflow-auto\">\n {isLoading ? <div className=\"flex justify-center items-center h-full\"><LoadingSpinner /></div> : <pre className=\"font-mono text-xs\">{response}</pre>}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["ApiEndpointTester","url","setUrl","useState","method","setMethod","headers","setHeaders","body","setBody","response","setResponse","status","setStatus","time","setTime","isLoading","setIsLoading","addNotification","useNotification","handleSend","startTime","parsedHeaders","res","endTime","resBody","err","msg","jsxs","jsx","PaperAirplaneIcon","e","LoadingSpinner"],"mappings":"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"}
|
assets/ApiMockGenerator-B5sh0eFd.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r,j as e}from"./react-B-lWpQRQ.js";import{u as U,ax as z,ay as S,L as R,S as E,az as _,aA as D,aB as K}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./marked-CesSW9Du.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";/**
|
| 2 |
+
* @license
|
| 3 |
+
* SPDX-License-Identifier: Apache-2.0
|
| 4 |
+
*/const V="/mock-service-worker.js";let i=null;const Y=async()=>{if("serviceWorker"in navigator)try{i=await navigator.serviceWorker.register(V),console.log("Mock Service Worker registered with scope:",i.scope)}catch(o){throw console.error("Mock Service Worker registration failed:",o),new Error("Could not start mock server.")}else throw new Error("Service workers are not supported in this browser.")},Z=async()=>{i&&(await i.unregister(),i=null,console.log("Mock Service Worker unregistered."))},H=()=>!!i&&!!navigator.serviceWorker.controller,J=o=>{navigator.serviceWorker.controller?(navigator.serviceWorker.controller.postMessage({type:"SET_ROUTES",routes:o}),console.log("Mock routes sent to service worker:",o)):console.warn("Mock server is not active. Routes were not set.")},Q=`
|
| 5 |
+
openapi: 3.0.1
|
| 6 |
+
info:
|
| 7 |
+
title: Citibank Demo Business Inc
|
| 8 |
+
version: v1
|
| 9 |
+
contact:
|
| 10 |
+
name: Citibank Demo Business Inc Engineering Team
|
| 11 |
+
url: https://citibankdemobusiness.dev
|
| 12 |
+
description: The Citibank Demo Business Inc REST API. Please see https://docs.citibankdemobusiness.dev
|
| 13 |
+
for more details.
|
| 14 |
+
paths:
|
| 15 |
+
"/api/{accounts_type}/{account_id}/account_details":
|
| 16 |
+
get:
|
| 17 |
+
summary: list account_details
|
| 18 |
+
tags:
|
| 19 |
+
- AccountDetail
|
| 20 |
+
description: Get a list of account details for a single internal or external
|
| 21 |
+
account.
|
| 22 |
+
operationId: listAccountDetails
|
| 23 |
+
security:
|
| 24 |
+
- basic_auth: []
|
| 25 |
+
parameters:
|
| 26 |
+
- name: accounts_type
|
| 27 |
+
in: path
|
| 28 |
+
schema:
|
| 29 |
+
type: string
|
| 30 |
+
enum:
|
| 31 |
+
- external_accounts
|
| 32 |
+
- internal_accounts
|
| 33 |
+
required: true
|
| 34 |
+
- name: account_id
|
| 35 |
+
in: path
|
| 36 |
+
description: The ID of the account.
|
| 37 |
+
required: true
|
| 38 |
+
schema:
|
| 39 |
+
type: string
|
| 40 |
+
responses:
|
| 41 |
+
'200':
|
| 42 |
+
description: successful
|
| 43 |
+
content:
|
| 44 |
+
application/json:
|
| 45 |
+
schema:
|
| 46 |
+
type: array
|
| 47 |
+
items:
|
| 48 |
+
"$ref": "#/components/schemas/account_detail"
|
| 49 |
+
components:
|
| 50 |
+
schemas:
|
| 51 |
+
account_detail:
|
| 52 |
+
type: object
|
| 53 |
+
properties:
|
| 54 |
+
id:
|
| 55 |
+
type: string
|
| 56 |
+
format: uuid
|
| 57 |
+
object:
|
| 58 |
+
type: string
|
| 59 |
+
account_number:
|
| 60 |
+
type: string
|
| 61 |
+
account_number_type:
|
| 62 |
+
type: string
|
| 63 |
+
enum:
|
| 64 |
+
- clabe
|
| 65 |
+
- iban
|
| 66 |
+
- other
|
| 67 |
+
Transaction:
|
| 68 |
+
type: object
|
| 69 |
+
properties:
|
| 70 |
+
id:
|
| 71 |
+
type: string
|
| 72 |
+
format: uuid
|
| 73 |
+
amount:
|
| 74 |
+
type: integer
|
| 75 |
+
currency:
|
| 76 |
+
type: string
|
| 77 |
+
`,ve=()=>{const[o,N]=r.useState("openapi"),[p,P]=r.useState("a user with an id, name, email, and a nested address object containing a city and country"),[w,O]=r.useState(5),[f,G]=r.useState("users"),[v,F]=r.useState(Q.trim()),[l,j]=r.useState([]),[X,y]=r.useState(null),[u,g]=r.useState(!1),[C,n]=r.useState(""),[c,A]=r.useState(H()),[d,T]=r.useState([]),{addNotification:I}=U();r.useEffect(()=>{(async()=>{const s=await S();j(s)})()},[]);const M=(t,s)=>{const m=t.map(x=>{const h=x.path.split("/"),a=h[h.length-1].replace(/[^a-zA-Z0-9]/g,""),b=s.find(k=>k.id.toLowerCase().includes(a));return{...x,response:{status:200,body:b?b.data:{message:"No mock data found for this route."}}}});J(m)};r.useEffect(()=>{c&&M(d,l)},[d,l,c]);const W=async()=>{if(!p.trim()||!f.trim()){n("Schema description and collection name are required.");return}g(!0),n("");try{const t=await _(p,w);y(t);const s=f.toLowerCase().replace(/\s/g,"-");await D({id:s,schemaDescription:p,data:t}),j(await S()),I(`Collection "${s}" saved!`,"success")}catch(t){n(t instanceof Error?t.message:"Failed to generate data.")}finally{g(!1)}},L=async()=>{var t;if(!v.trim()){n("OpenAPI specification is required.");return}g(!0),n(""),y(null);try{const s=await K(v),m=[];for(const a of s.schemas){const b=await _(a.description,5),k={id:a.name,schemaDescription:a.description,data:b};m.push(k)}await Promise.all(m.map(a=>D(a)));const x=s.routes.map(a=>({path:a.path.replace(/{[^}]+}/g,"*"),method:a.method.toUpperCase()}));T(x);const h=await S();j(h),y(((t=m[0])==null?void 0:t.data)||[]),I("Mock API generated and routes configured. Start the server to use them.","info")}catch(s){n(s instanceof Error?s.message:"Failed to process OpenAPI spec.")}finally{g(!1)}},$=async()=>{if(c)await Z(),A(!1);else try{await Y(),A(!0),M(d,l)}catch(t){n(t instanceof Error?t.message:"Could not start server.")}},q=()=>e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm",children:"Describe the data schema"}),e.jsx("textarea",{value:p,onChange:t=>P(t.target.value),className:"w-full mt-1 p-2 bg-background border border-border rounded",rows:4})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("div",{className:"flex-grow",children:[e.jsx("label",{className:"text-sm",children:"Collection Name"}),e.jsx("input",{type:"text",value:f,onChange:t=>G(t.target.value),className:"w-full mt-1 p-2 bg-background border border-border rounded"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm",children:"Count"}),e.jsx("input",{type:"number",value:w,onChange:t=>O(Number(t.target.value)),className:"w-20 mt-1 p-2 bg-background border border-border rounded"})]})]}),e.jsx("button",{onClick:W,disabled:u,className:"btn-primary py-2 flex items-center justify-center gap-2",children:u?e.jsx(R,{}):e.jsxs(e.Fragment,{children:[e.jsx(E,{})," Generate & Save"]})})]}),B=()=>e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm",children:"OpenAPI 3 Specification (YAML)"}),e.jsx("textarea",{value:v,onChange:t=>F(t.target.value),className:"w-full mt-1 p-2 bg-background border border-border rounded font-mono text-xs",rows:12})]}),e.jsx("button",{onClick:L,disabled:u,className:"btn-primary py-2 flex items-center justify-center gap-2",children:u?e.jsx(R,{}):e.jsxs(e.Fragment,{children:[e.jsx(E,{})," Generate Mocks & Routes"]})})]});return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6 flex justify-between items-start",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(z,{}),e.jsx("span",{className:"ml-3",children:"AI API Mock Server"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Generate and serve mock API data locally using a service worker."})]}),e.jsxs("button",{onClick:$,className:`px-4 py-2 rounded-md font-semibold flex items-center gap-2 ${c?"bg-green-100 text-green-700":"bg-gray-100 dark:bg-slate-700"}`,children:[e.jsx("span",{className:`w-3 h-3 rounded-full ${c?"bg-green-500 animate-pulse":"bg-gray-400"}`}),c?"Server Running":"Server Stopped"]})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"lg:col-span-1 flex flex-col gap-4 bg-surface p-4 border border-border rounded-lg",children:[e.jsxs("div",{className:"flex border-b border-border",children:[e.jsx("button",{onClick:()=>N("simple"),className:`px-4 py-2 text-sm ${o==="simple"?"border-b-2 border-primary":""}`,children:"Simple Schema"}),e.jsx("button",{onClick:()=>N("openapi"),className:`px-4 py-2 text-sm ${o==="openapi"?"border-b-2 border-primary":""}`,children:"OpenAPI Spec"})]}),o==="simple"?e.jsx(q,{}):e.jsx(B,{}),C&&e.jsx("p",{className:"text-red-500 text-xs text-center p-2 bg-red-500/10 rounded",children:C})]}),e.jsx("div",{className:"lg:col-span-1 flex flex-col gap-4 min-h-0",children:e.jsxs("div",{className:"bg-surface p-4 border border-border rounded-lg flex-grow flex flex-col min-h-0",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:"Server Status & Data"}),e.jsxs("div",{className:"flex-grow grid grid-cols-2 gap-4 min-h-0",children:[e.jsxs("div",{className:"overflow-y-auto pr-2",children:[e.jsxs("h4",{className:"font-semibold text-sm mb-1 sticky top-0 bg-surface pb-1",children:["Saved Collections (",l.length,")"]}),l.map(t=>e.jsxs("div",{className:"text-xs p-2 bg-background rounded border border-border mb-1",children:[t.id," (",t.data.length," items)"]},t.id))]}),e.jsxs("div",{className:"overflow-y-auto pr-2",children:[e.jsxs("h4",{className:"font-semibold text-sm mb-1 sticky top-0 bg-surface pb-1",children:["Configured Routes (",d.length,")"]}),d.map((t,s)=>e.jsxs("div",{className:"flex gap-2 items-center mb-1",children:[e.jsx("span",{className:"text-xs font-bold text-primary",children:t.method}),e.jsx("span",{className:"text-xs font-mono",children:t.path})]},s))]})]})]})})]})]})};export{ve as ApiMockGenerator};
|
| 78 |
+
//# sourceMappingURL=ApiMockGenerator-B5sh0eFd.js.map
|
assets/ApiMockGenerator-B5sh0eFd.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"ApiMockGenerator-B5sh0eFd.js","sources":["../../services/mocking/mockServer.ts","../../components/features/ApiMockGenerator.tsx"],"sourcesContent":["/**\n * @license\n * SPDX-License-Identifier: Apache-2.0\n*/\n\nconst SERVICE_WORKER_URL = '/mock-service-worker.js';\nlet registration: ServiceWorkerRegistration | null = null;\n\nexport const startMockServer = async (): Promise<void> => {\n if ('serviceWorker' in navigator) {\n try {\n registration = await navigator.serviceWorker.register(SERVICE_WORKER_URL);\n console.log('Mock Service Worker registered with scope:', registration.scope);\n } catch (error) {\n console.error('Mock Service Worker registration failed:', error);\n throw new Error('Could not start mock server.');\n }\n } else {\n throw new Error('Service workers are not supported in this browser.');\n }\n};\n\nexport const stopMockServer = async (): Promise<void> => {\n if (registration) {\n await registration.unregister();\n registration = null;\n console.log('Mock Service Worker unregistered.');\n }\n};\n\nexport const isMockServerRunning = (): boolean => {\n return !!registration && !!navigator.serviceWorker.controller;\n};\n\ninterface MockRoute {\n path: string; // e.g., /api/users/*\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n response: {\n status: number;\n body: any;\n headers?: Record<string, string>;\n }\n}\n\nexport const setMockRoutes = (routes: MockRoute[]): void => {\n if (navigator.serviceWorker.controller) {\n navigator.serviceWorker.controller.postMessage({\n type: 'SET_ROUTES',\n routes\n });\n console.log('Mock routes sent to service worker:', routes);\n } else {\n console.warn('Mock server is not active. Routes were not set.');\n }\n};\n","import React, { useState, useEffect } from 'react';\nimport { generateMockData, parseOpenApiForMocking } from '../../services/index.ts';\nimport { startMockServer, stopMockServer, setMockRoutes, isMockServerRunning } from '../../services/mocking/mockServer.ts';\nimport { saveMockCollection, getAllMockCollections, deleteMockCollection } from '../../services/mocking/db.ts';\nimport { ServerStackIcon, SparklesIcon } from '../icons/index.ts';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { useNotification } from '../../contexts/NotificationContext.tsx';\n\nconst citibankOpenApiSpec = `\nopenapi: 3.0.1\ninfo:\n title: Citibank Demo Business Inc\n version: v1\n contact:\n name: Citibank Demo Business Inc Engineering Team\n url: https://citibankdemobusiness.dev\n description: The Citibank Demo Business Inc REST API. Please see https://docs.citibankdemobusiness.dev\n for more details.\npaths:\n \"/api/{accounts_type}/{account_id}/account_details\":\n get:\n summary: list account_details\n tags:\n - AccountDetail\n description: Get a list of account details for a single internal or external\n account.\n operationId: listAccountDetails\n security:\n - basic_auth: []\n parameters:\n - name: accounts_type\n in: path\n schema:\n type: string\n enum:\n - external_accounts\n - internal_accounts\n required: true\n - name: account_id\n in: path\n description: The ID of the account.\n required: true\n schema:\n type: string\n responses:\n '200':\n description: successful\n content:\n application/json:\n schema:\n type: array\n items:\n \"$ref\": \"#/components/schemas/account_detail\"\ncomponents:\n schemas:\n account_detail:\n type: object\n properties:\n id:\n type: string\n format: uuid\n object:\n type: string\n account_number:\n type: string\n account_number_type:\n type: string\n enum:\n - clabe\n - iban\n - other\n Transaction:\n type: object\n properties:\n id:\n type: string\n format: uuid\n amount:\n type: integer\n currency:\n type: string\n`;\n\ntype GeneratorMode = 'simple' | 'openapi';\n\nexport const ApiMockGenerator: React.FC = () => {\n const [mode, setMode] = useState<GeneratorMode>('openapi');\n const [schema, setSchema] = useState(\"a user with an id, name, email, and a nested address object containing a city and country\");\n const [count, setCount] = useState(5);\n const [collectionName, setCollectionName] = useState('users');\n const [openApiSpec, setOpenApiSpec] = useState(citibankOpenApiSpec.trim());\n const [collections, setCollections] = useState<any[]>([]);\n const [generatedData, setGeneratedData] = useState<any[] | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState('');\n const [isServerRunning, setIsServerRunning] = useState(isMockServerRunning());\n const [routes, setRoutes] = useState<any[]>([]);\n const { addNotification } = useNotification();\n\n useEffect(() => {\n const loadCollections = async () => {\n const storedCollections = await getAllMockCollections();\n setCollections(storedCollections);\n };\n loadCollections();\n }, []);\n\n const updateRoutesOnServer = (routesToSet: any[], collectionsToUse: any[]) => {\n const mockRoutes = routesToSet.map(route => {\n const pathParts = route.path.split('/');\n const collectionIdFromPath = pathParts[pathParts.length - 1].replace(/[^a-zA-Z0-9]/g, '');\n const matchingCollection = collectionsToUse.find(c => c.id.toLowerCase().includes(collectionIdFromPath));\n \n return {\n ...route,\n response: {\n status: 200,\n body: matchingCollection ? matchingCollection.data : { message: `No mock data found for this route.` }\n }\n };\n });\n setMockRoutes(mockRoutes as any);\n };\n\n useEffect(() => {\n if (isServerRunning) {\n updateRoutesOnServer(routes, collections);\n }\n }, [routes, collections, isServerRunning]);\n\n const handleGenerateSimple = async () => {\n if (!schema.trim() || !collectionName.trim()) {\n setError('Schema description and collection name are required.');\n return;\n }\n setIsLoading(true);\n setError('');\n try {\n const data = await generateMockData(schema, count);\n setGeneratedData(data);\n const collectionId = collectionName.toLowerCase().replace(/\\s/g, '-');\n await saveMockCollection({ id: collectionId, schemaDescription: schema, data });\n setCollections(await getAllMockCollections());\n addNotification(`Collection \"${collectionId}\" saved!`, 'success');\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to generate data.');\n } finally {\n setIsLoading(false);\n }\n };\n \n const handleGenerateFromSpec = async () => {\n if (!openApiSpec.trim()) {\n setError('OpenAPI specification is required.');\n return;\n }\n setIsLoading(true);\n setError('');\n setGeneratedData(null);\n\n try {\n const parsedSpec = await parseOpenApiForMocking(openApiSpec);\n \n const collectionsToSave: any[] = [];\n for (const schema of parsedSpec.schemas) {\n const data = await generateMockData(schema.description, 5);\n const collection = { id: schema.name, schemaDescription: schema.description, data };\n collectionsToSave.push(collection);\n }\n \n await Promise.all(collectionsToSave.map(c => saveMockCollection(c)));\n\n const newRoutes = parsedSpec.routes.map(route => ({\n path: route.path.replace(/{[^}]+}/g, '*'),\n method: route.method.toUpperCase(),\n }));\n\n setRoutes(newRoutes);\n \n const allCollections = await getAllMockCollections();\n setCollections(allCollections);\n setGeneratedData(collectionsToSave[0]?.data || []);\n addNotification('Mock API generated and routes configured. Start the server to use them.', 'info');\n\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to process OpenAPI spec.');\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleServerToggle = async () => {\n if (isServerRunning) {\n await stopMockServer();\n setIsServerRunning(false);\n } else {\n try {\n await startMockServer();\n setIsServerRunning(true);\n updateRoutesOnServer(routes, collections);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Could not start server.');\n }\n }\n };\n \n const SimpleGenerator = () => (\n <>\n <div><label className=\"text-sm\">Describe the data schema</label><textarea value={schema} onChange={e => setSchema(e.target.value)} className=\"w-full mt-1 p-2 bg-background border border-border rounded\" rows={4}/></div>\n <div className=\"flex gap-2\">\n <div className=\"flex-grow\"><label className=\"text-sm\">Collection Name</label><input type=\"text\" value={collectionName} onChange={e => setCollectionName(e.target.value)} className=\"w-full mt-1 p-2 bg-background border border-border rounded\"/></div>\n <div><label className=\"text-sm\">Count</label><input type=\"number\" value={count} onChange={e => setCount(Number(e.target.value))} className=\"w-20 mt-1 p-2 bg-background border border-border rounded\"/></div>\n </div>\n <button onClick={handleGenerateSimple} disabled={isLoading} className=\"btn-primary py-2 flex items-center justify-center gap-2\">{isLoading ? <LoadingSpinner/> : <><SparklesIcon/> Generate & Save</>}</button>\n </>\n );\n \n const OpenApiGenerator = () => (\n <>\n <div>\n <label className=\"text-sm\">OpenAPI 3 Specification (YAML)</label>\n <textarea value={openApiSpec} onChange={e => setOpenApiSpec(e.target.value)} className=\"w-full mt-1 p-2 bg-background border border-border rounded font-mono text-xs\" rows={12}/>\n </div>\n <button onClick={handleGenerateFromSpec} disabled={isLoading} className=\"btn-primary py-2 flex items-center justify-center gap-2\">{isLoading ? <LoadingSpinner/> : <><SparklesIcon/> Generate Mocks & Routes</>}</button>\n </>\n );\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6 flex justify-between items-start\">\n <div>\n <h1 className=\"text-3xl font-bold flex items-center\"><ServerStackIcon /><span className=\"ml-3\">AI API Mock Server</span></h1>\n <p className=\"text-text-secondary mt-1\">Generate and serve mock API data locally using a service worker.</p>\n </div>\n <button onClick={handleServerToggle} className={`px-4 py-2 rounded-md font-semibold flex items-center gap-2 ${isServerRunning ? 'bg-green-100 text-green-700' : 'bg-gray-100 dark:bg-slate-700'}`}>\n <span className={`w-3 h-3 rounded-full ${isServerRunning ? 'bg-green-500 animate-pulse' : 'bg-gray-400'}`}></span>\n {isServerRunning ? 'Server Running' : 'Server Stopped'}\n </button>\n </header>\n <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n <div className=\"lg:col-span-1 flex flex-col gap-4 bg-surface p-4 border border-border rounded-lg\">\n <div className=\"flex border-b border-border\">\n <button onClick={() => setMode('simple')} className={`px-4 py-2 text-sm ${mode === 'simple' ? 'border-b-2 border-primary' : ''}`}>Simple Schema</button>\n <button onClick={() => setMode('openapi')} className={`px-4 py-2 text-sm ${mode === 'openapi' ? 'border-b-2 border-primary' : ''}`}>OpenAPI Spec</button>\n </div>\n {mode === 'simple' ? <SimpleGenerator /> : <OpenApiGenerator />}\n {error && <p className=\"text-red-500 text-xs text-center p-2 bg-red-500/10 rounded\">{error}</p>}\n </div>\n\n <div className=\"lg:col-span-1 flex flex-col gap-4 min-h-0\">\n <div className=\"bg-surface p-4 border border-border rounded-lg flex-grow flex flex-col min-h-0\">\n <h3 className=\"text-lg font-bold mb-2\">Server Status & Data</h3>\n <div className=\"flex-grow grid grid-cols-2 gap-4 min-h-0\">\n <div className=\"overflow-y-auto pr-2\">\n <h4 className=\"font-semibold text-sm mb-1 sticky top-0 bg-surface pb-1\">Saved Collections ({collections.length})</h4>\n {collections.map(c => <div key={c.id} className=\"text-xs p-2 bg-background rounded border border-border mb-1\">{c.id} ({c.data.length} items)</div>)}\n </div>\n <div className=\"overflow-y-auto pr-2\">\n <h4 className=\"font-semibold text-sm mb-1 sticky top-0 bg-surface pb-1\">Configured Routes ({routes.length})</h4>\n {routes.map((r, i) => <div key={i} className=\"flex gap-2 items-center mb-1\"><span className=\"text-xs font-bold text-primary\">{r.method}</span><span className=\"text-xs font-mono\">{r.path}</span></div>)}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["SERVICE_WORKER_URL","registration","startMockServer","error","stopMockServer","isMockServerRunning","setMockRoutes","routes","citibankOpenApiSpec","ApiMockGenerator","mode","setMode","useState","schema","setSchema","count","setCount","collectionName","setCollectionName","openApiSpec","setOpenApiSpec","collections","setCollections","generatedData","setGeneratedData","isLoading","setIsLoading","setError","isServerRunning","setIsServerRunning","setRoutes","addNotification","useNotification","useEffect","storedCollections","getAllMockCollections","updateRoutesOnServer","routesToSet","collectionsToUse","mockRoutes","route","pathParts","collectionIdFromPath","matchingCollection","c","handleGenerateSimple","data","generateMockData","collectionId","saveMockCollection","err","handleGenerateFromSpec","parsedSpec","parseOpenApiForMocking","collectionsToSave","collection","newRoutes","allCollections","_a","handleServerToggle","SimpleGenerator","jsxs","Fragment","jsx","e","LoadingSpinner","SparklesIcon","OpenApiGenerator","ServerStackIcon","r","i"],"mappings":"0tBAAA;AAAA;AAAA;AAAA,EAKA,MAAMA,EAAqB,0BAC3B,IAAIC,EAAiD,KAE9C,MAAMC,EAAkB,SAA2B,CACtD,GAAI,kBAAmB,UACnB,GAAI,CACAD,EAAe,MAAM,UAAU,cAAc,SAASD,CAAkB,EACxE,QAAQ,IAAI,6CAA8CC,EAAa,KAAK,CAChF,OAASE,EAAO,CACZ,cAAQ,MAAM,2CAA4CA,CAAK,EACzD,IAAI,MAAM,8BAA8B,CAClD,KAEA,OAAM,IAAI,MAAM,oDAAoD,CAE5E,EAEaC,EAAiB,SAA2B,CACjDH,IACA,MAAMA,EAAa,WAAA,EACnBA,EAAe,KACf,QAAQ,IAAI,mCAAmC,EAEvD,EAEaI,EAAsB,IACxB,CAAC,CAACJ,GAAgB,CAAC,CAAC,UAAU,cAAc,WAa1CK,EAAiBC,GAA8B,CACpD,UAAU,cAAc,YACxB,UAAU,cAAc,WAAW,YAAY,CAC3C,KAAM,aACN,OAAAA,CAAA,CACH,EACD,QAAQ,IAAI,sCAAuCA,CAAM,GAEzD,QAAQ,KAAK,iDAAiD,CAEtE,EC9CMC,EAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6EfC,GAA6B,IAAM,CAC5C,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAwB,SAAS,EACnD,CAACC,EAAQC,CAAS,EAAIF,EAAAA,SAAS,2FAA2F,EAC1H,CAACG,EAAOC,CAAQ,EAAIJ,EAAAA,SAAS,CAAC,EAC9B,CAACK,EAAgBC,CAAiB,EAAIN,EAAAA,SAAS,OAAO,EACtD,CAACO,EAAaC,CAAc,EAAIR,EAAAA,SAASJ,EAAoB,MAAM,EACnE,CAACa,EAAaC,CAAc,EAAIV,EAAAA,SAAgB,CAAA,CAAE,EAClD,CAACW,EAAeC,CAAgB,EAAIZ,EAAAA,SAAuB,IAAI,EAC/D,CAACa,EAAWC,CAAY,EAAId,EAAAA,SAAS,EAAK,EAC1C,CAACT,EAAOwB,CAAQ,EAAIf,EAAAA,SAAS,EAAE,EAC/B,CAACgB,EAAiBC,CAAkB,EAAIjB,EAAAA,SAASP,GAAqB,EACtE,CAACE,EAAQuB,CAAS,EAAIlB,EAAAA,SAAgB,CAAA,CAAE,EACxC,CAAE,gBAAAmB,CAAA,EAAoBC,EAAA,EAE5BC,EAAAA,UAAU,IAAM,EACY,SAAY,CAChC,MAAMC,EAAoB,MAAMC,EAAA,EAChCb,EAAeY,CAAiB,CACpC,GACA,CACJ,EAAG,CAAA,CAAE,EAEL,MAAME,EAAuB,CAACC,EAAoBC,IAA4B,CAC1E,MAAMC,EAAaF,EAAY,IAAIG,GAAS,CACxC,MAAMC,EAAYD,EAAM,KAAK,MAAM,GAAG,EAChCE,EAAuBD,EAAUA,EAAU,OAAS,CAAC,EAAE,QAAQ,gBAAiB,EAAE,EAClFE,EAAqBL,EAAiB,KAAKM,GAAKA,EAAE,GAAG,YAAA,EAAc,SAASF,CAAoB,CAAC,EAEvG,MAAO,CACH,GAAGF,EACH,SAAU,CACN,OAAQ,IACR,KAAMG,EAAqBA,EAAmB,KAAO,CAAE,QAAS,oCAAA,CAAqC,CACzG,CAER,CAAC,EACDrC,EAAciC,CAAiB,CACnC,EAEAN,EAAAA,UAAU,IAAM,CACRL,GACAQ,EAAqB7B,EAAQc,CAAW,CAEhD,EAAG,CAACd,EAAQc,EAAaO,CAAe,CAAC,EAEzC,MAAMiB,EAAuB,SAAY,CACrC,GAAI,CAAChC,EAAO,KAAA,GAAU,CAACI,EAAe,OAAQ,CAC1CU,EAAS,sDAAsD,EAC/D,MACJ,CACAD,EAAa,EAAI,EACjBC,EAAS,EAAE,EACX,GAAI,CACA,MAAMmB,EAAO,MAAMC,EAAiBlC,EAAQE,CAAK,EACjDS,EAAiBsB,CAAI,EACrB,MAAME,EAAe/B,EAAe,YAAA,EAAc,QAAQ,MAAO,GAAG,EACpE,MAAMgC,EAAmB,CAAE,GAAID,EAAc,kBAAmBnC,EAAQ,KAAAiC,EAAM,EAC9ExB,EAAe,MAAMa,GAAuB,EAC5CJ,EAAgB,eAAeiB,CAAY,WAAY,SAAS,CACpE,OAASE,EAAK,CACVvB,EAASuB,aAAe,MAAQA,EAAI,QAAU,0BAA0B,CAC5E,QAAA,CACIxB,EAAa,EAAK,CACtB,CACJ,EAEMyB,EAAyB,SAAY,OACvC,GAAI,CAAChC,EAAY,OAAQ,CACrBQ,EAAS,oCAAoC,EAC7C,MACJ,CACAD,EAAa,EAAI,EACjBC,EAAS,EAAE,EACXH,EAAiB,IAAI,EAErB,GAAI,CACA,MAAM4B,EAAa,MAAMC,EAAuBlC,CAAW,EAErDmC,EAA2B,CAAA,EACjC,UAAWzC,KAAUuC,EAAW,QAAS,CACrC,MAAMN,EAAO,MAAMC,EAAiBlC,EAAO,YAAa,CAAC,EACnD0C,EAAa,CAAE,GAAI1C,EAAO,KAAM,kBAAmBA,EAAO,YAAa,KAAAiC,CAAA,EAC7EQ,EAAkB,KAAKC,CAAU,CACrC,CAEA,MAAM,QAAQ,IAAID,EAAkB,OAASL,EAAmBL,CAAC,CAAC,CAAC,EAEnE,MAAMY,EAAYJ,EAAW,OAAO,IAAIZ,IAAU,CAC9C,KAAMA,EAAM,KAAK,QAAQ,WAAY,GAAG,EACxC,OAAQA,EAAM,OAAO,YAAA,CAAY,EACnC,EAEFV,EAAU0B,CAAS,EAEnB,MAAMC,EAAiB,MAAMtB,EAAA,EAC7Bb,EAAemC,CAAc,EAC7BjC,IAAiBkC,EAAAJ,EAAkB,CAAC,IAAnB,YAAAI,EAAsB,OAAQ,CAAA,CAAE,EACjD3B,EAAgB,0EAA2E,MAAM,CAErG,OAASmB,EAAK,CACVvB,EAASuB,aAAe,MAAQA,EAAI,QAAU,iCAAiC,CACnF,QAAA,CACIxB,EAAa,EAAK,CACtB,CACJ,EAEMiC,EAAqB,SAAY,CACnC,GAAI/B,EACA,MAAMxB,EAAA,EACNyB,EAAmB,EAAK,MAExB,IAAI,CACA,MAAM3B,EAAA,EACN2B,EAAmB,EAAI,EACvBO,EAAqB7B,EAAQc,CAAW,CAC5C,OAAS6B,EAAK,CACVvB,EAASuB,aAAe,MAAQA,EAAI,QAAU,yBAAyB,CAC3E,CAER,EAEMU,EAAkB,IACpBC,EAAAA,KAAAC,EAAAA,SAAA,CACI,SAAA,CAAAD,OAAC,MAAA,CAAI,SAAA,CAAAE,EAAAA,IAAC,QAAA,CAAM,UAAU,UAAU,SAAA,2BAAwB,EAAQA,EAAAA,IAAC,WAAA,CAAS,MAAOlD,EAAQ,SAAUmD,GAAKlD,EAAUkD,EAAE,OAAO,KAAK,EAAG,UAAU,6DAA6D,KAAM,CAAA,CAAE,CAAA,EAAE,EACpNH,EAAAA,KAAC,MAAA,CAAI,UAAU,aACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,YAAY,SAAA,CAAAE,EAAAA,IAAC,QAAA,CAAM,UAAU,UAAU,SAAA,kBAAe,EAAQA,EAAAA,IAAC,QAAA,CAAM,KAAK,OAAO,MAAO9C,EAAgB,SAAU+C,GAAK9C,EAAkB8C,EAAE,OAAO,KAAK,EAAG,UAAU,4DAAA,CAA4D,CAAA,EAAE,SAChP,MAAA,CAAI,SAAA,CAAAD,EAAAA,IAAC,QAAA,CAAM,UAAU,UAAU,SAAA,QAAK,QAAS,QAAA,CAAM,KAAK,SAAS,MAAOhD,EAAO,SAAUiD,GAAKhD,EAAS,OAAOgD,EAAE,OAAO,KAAK,CAAC,EAAG,UAAU,0DAAA,CAA0D,CAAA,CAAA,CAAE,CAAA,EAC3M,EACAD,EAAAA,IAAC,SAAA,CAAO,QAASlB,EAAsB,SAAUpB,EAAW,UAAU,0DAA2D,SAAAA,EAAYsC,EAAAA,IAACE,EAAA,CAAA,CAAc,EAAKJ,OAAAC,EAAAA,SAAA,CAAE,SAAA,CAAAC,EAAAA,IAACG,EAAA,EAAY,EAAE,kBAAA,CAAA,CAAgB,CAAA,CAAI,CAAA,EAC1M,EAGEC,EAAmB,IACrBN,EAAAA,KAAAC,EAAAA,SAAA,CACI,SAAA,CAAAD,OAAC,MAAA,CACG,SAAA,CAAAE,EAAAA,IAAC,QAAA,CAAM,UAAU,UAAU,SAAA,iCAA8B,EACzDA,EAAAA,IAAC,WAAA,CAAS,MAAO5C,EAAa,SAAU6C,GAAK5C,EAAe4C,EAAE,OAAO,KAAK,EAAG,UAAU,+EAA+E,KAAM,EAAA,CAAG,CAAA,EACnL,EACAD,EAAAA,IAAC,SAAA,CAAO,QAASZ,EAAwB,SAAU1B,EAAW,UAAU,0DAA2D,SAAAA,EAAYsC,EAAAA,IAACE,EAAA,CAAA,CAAc,EAAKJ,OAAAC,EAAAA,SAAA,CAAE,SAAA,CAAAC,EAAAA,IAACG,EAAA,EAAY,EAAE,0BAAA,CAAA,CAAwB,CAAA,CAAI,CAAA,EACpN,EAGJ,OACIL,EAAAA,KAAC,MAAA,CAAI,UAAU,2DACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,wCACd,SAAA,CAAAA,OAAC,MAAA,CACG,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,uCAAuC,SAAA,CAAAE,EAAAA,IAACK,EAAA,EAAgB,EAAEL,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,oBAAA,CAAkB,CAAA,EAAO,EACxHA,EAAAA,IAAC,IAAA,CAAE,UAAU,2BAA2B,SAAA,kEAAA,CAAgE,CAAA,EAC5G,EACAF,EAAAA,KAAC,UAAO,QAASF,EAAoB,UAAW,8DAA8D/B,EAAkB,8BAAgC,+BAA+B,GAC3L,SAAA,CAAAmC,MAAC,QAAK,UAAW,wBAAwBnC,EAAkB,6BAA+B,aAAa,GAAI,EAC1GA,EAAkB,iBAAmB,gBAAA,CAAA,CAC1C,CAAA,EACJ,EACAiC,EAAAA,KAAC,MAAA,CAAI,UAAU,0DACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,mFACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,8BACX,SAAA,CAAAE,EAAAA,IAAC,SAAA,CAAO,QAAS,IAAMpD,EAAQ,QAAQ,EAAG,UAAW,qBAAqBD,IAAS,SAAW,4BAA8B,EAAE,GAAI,SAAA,gBAAa,EAC/IqD,EAAAA,IAAC,SAAA,CAAO,QAAS,IAAMpD,EAAQ,SAAS,EAAG,UAAW,qBAAqBD,IAAS,UAAY,4BAA8B,EAAE,GAAI,SAAA,cAAA,CAAY,CAAA,EACpJ,EACCA,IAAS,SAAWqD,EAAAA,IAACH,EAAA,CAAA,CAAgB,QAAMO,EAAA,EAAiB,EAC5DhE,GAAS4D,EAAAA,IAAC,IAAA,CAAE,UAAU,6DAA8D,SAAA5D,CAAA,CAAM,CAAA,EAC/F,QAEC,MAAA,CAAI,UAAU,4CACZ,SAAA0D,EAAAA,KAAC,MAAA,CAAI,UAAU,iFACV,SAAA,CAAAE,EAAAA,IAAC,KAAA,CAAG,UAAU,yBAAyB,SAAA,uBAAoB,EAC3DF,EAAAA,KAAC,MAAA,CAAI,UAAU,2CACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,0DAA0D,SAAA,CAAA,sBAAoBxC,EAAY,OAAO,GAAA,EAAC,EAC/GA,EAAY,IAAIuB,GAAKiB,EAAAA,KAAC,MAAA,CAAe,UAAU,8DAA+D,SAAA,CAAAjB,EAAE,GAAG,KAAGA,EAAE,KAAK,OAAO,SAAA,CAAA,EAArGA,EAAE,EAA0G,CAAM,CAAA,EACtJ,EACAiB,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,0DAA0D,SAAA,CAAA,sBAAoBtD,EAAO,OAAO,GAAA,EAAC,EAC1GA,EAAO,IAAI,CAAC8D,EAAGC,IAAMT,OAAC,MAAA,CAAY,UAAU,+BAA+B,SAAA,CAAAE,EAAAA,IAAC,OAAA,CAAK,UAAU,iCAAkC,SAAAM,EAAE,OAAO,EAAON,EAAAA,IAAC,OAAA,CAAK,UAAU,oBAAqB,WAAE,IAAA,CAAK,CAAA,CAAA,EAA1JO,CAAiK,CAAM,CAAA,CAAA,CAC3M,CAAA,CAAA,CACJ,CAAA,CAAA,CACL,CAAA,CACH,CAAA,CAAA,CACJ,CAAA,EACJ,CAER"}
|
assets/AsyncCallTreeViewer-1EkgwVJg.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{r as m,j as e,R as h}from"./react-B-lWpQRQ.js";import{aq as p}from"./index-DyMS-nC-.js";import"./@braintree-DY5JYOZd.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./@google-xfXoiafW.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";const u=`{
|
| 2 |
+
"name": "startApp",
|
| 3 |
+
"duration": 500,
|
| 4 |
+
"children": [
|
| 5 |
+
{
|
| 6 |
+
"name": "fetchUserData",
|
| 7 |
+
"duration": 300,
|
| 8 |
+
"children": [
|
| 9 |
+
{ "name": "authenticate", "duration": 100 },
|
| 10 |
+
{ "name": "fetchProfile", "duration": 150 }
|
| 11 |
+
]
|
| 12 |
+
},
|
| 13 |
+
{
|
| 14 |
+
"name": "loadInitialAssets",
|
| 15 |
+
"duration": 450,
|
| 16 |
+
"children": [
|
| 17 |
+
{ "name": "loadImage.png", "duration": 200 },
|
| 18 |
+
{ "name": "loadScript.js", "duration": 250 }
|
| 19 |
+
]
|
| 20 |
+
}
|
| 21 |
+
]
|
| 22 |
+
}`,x=({node:t,level:i,maxDuration:r})=>{const[a,o]=h.useState(!0),n=t.children&&t.children.length>0;return e.jsxs("div",{className:"my-1",children:[e.jsxs("div",{className:"flex items-center p-2 rounded-md hover:bg-gray-100",style:{paddingLeft:`${i*20+8}px`},children:[n&&e.jsx("button",{onClick:()=>o(!a),className:`mr-2 text-text-secondary w-4 h-4 flex-shrink-0 transform transition-transform ${a?"rotate-90":""}`,children:"▶"}),!n&&e.jsx("div",{className:"w-6 mr-2 flex-shrink-0"}),e.jsxs("div",{className:"flex-grow flex items-center justify-between gap-4",children:[e.jsx("span",{className:"truncate",children:t.name}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx("div",{className:"w-24 h-4 bg-gray-200 rounded-full overflow-hidden",children:e.jsx("div",{className:"h-4 bg-primary",style:{width:`${t.duration/r*100}%`}})}),e.jsxs("span",{className:"text-primary w-16 text-right",children:[t.duration.toFixed(0),"ms"]})]})]})]}),a&&n&&e.jsx("div",{children:t.children.map((s,l)=>e.jsx(x,{node:s,level:i+1,maxDuration:r},l))})]})},R=()=>{const[t,i]=m.useState(u),[r,a]=m.useState(""),{treeData:o,maxDuration:n}=m.useMemo(()=>{try{const s=JSON.parse(t);let l=0;const d=c=>{c.duration>l&&(l=c.duration),c.children&&c.children.forEach(d)};return d(s),a(""),{treeData:s,maxDuration:l}}catch{return a("Invalid JSON format."),{treeData:null,maxDuration:0}}},[t]);return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl flex items-center",children:[e.jsx(p,{}),e.jsx("span",{className:"ml-3",children:"Async Call Tree Viewer"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Paste a JSON structure to visualize an asynchronous function call tree."})]}),e.jsxs("div",{className:"flex-grow flex flex-col gap-4 min-h-0",children:[e.jsxs("div",{className:"flex flex-col h-2/5 min-h-[200px]",children:[e.jsx("label",{htmlFor:"json-input",className:"text-sm font-medium text-text-secondary mb-2",children:"JSON Input"}),e.jsx("textarea",{id:"json-input",value:t,onChange:s=>i(s.target.value),className:`flex-grow p-4 bg-surface border ${r?"border-red-500":"border-border"} rounded-md resize-y font-mono text-sm`,spellCheck:"false"}),r&&e.jsx("p",{className:"text-red-500 text-xs mt-1",children:r})]}),e.jsxs("div",{className:"flex flex-col flex-grow min-h-0",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary mb-2",children:"Visual Tree"}),e.jsx("div",{className:"flex-grow bg-surface p-4 rounded-lg text-sm overflow-y-auto border border-border",children:o?e.jsx(x,{node:o,level:0,maxDuration:n}):e.jsx("div",{className:"text-text-secondary",children:r||"Enter valid JSON to see the tree."})})]})]})]})};export{R as AsyncCallTreeViewer};
|
| 23 |
+
//# sourceMappingURL=AsyncCallTreeViewer-1EkgwVJg.js.map
|
assets/AsyncCallTreeViewer-1EkgwVJg.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":3,"file":"AsyncCallTreeViewer-1EkgwVJg.js","sources":["../../components/features/AsyncCallTreeViewer.tsx"],"sourcesContent":["import React, { useState, useMemo } from 'react';\nimport { ChartBarIcon } from '../icons/index.ts';\n\ninterface CallNode {\n name: string;\n duration: number;\n children?: CallNode[];\n}\n\nconst exampleJson = `{\n \"name\": \"startApp\",\n \"duration\": 500,\n \"children\": [\n {\n \"name\": \"fetchUserData\",\n \"duration\": 300,\n \"children\": [\n { \"name\": \"authenticate\", \"duration\": 100 },\n { \"name\": \"fetchProfile\", \"duration\": 150 }\n ]\n },\n {\n \"name\": \"loadInitialAssets\",\n \"duration\": 450,\n \"children\": [\n { \"name\": \"loadImage.png\", \"duration\": 200 },\n { \"name\": \"loadScript.js\", \"duration\": 250 }\n ]\n }\n ]\n}`;\n\n\nconst TreeNode: React.FC<{ node: CallNode, level: number, maxDuration: number }> = ({ node, level, maxDuration }) => {\n const [isOpen, setIsOpen] = React.useState(true);\n const hasChildren = node.children && node.children.length > 0;\n\n return (\n <div className=\"my-1\">\n <div\n className=\"flex items-center p-2 rounded-md hover:bg-gray-100\"\n style={{ paddingLeft: `${level * 20 + 8}px` }}\n >\n {hasChildren && (\n <button onClick={() => setIsOpen(!isOpen)} className={`mr-2 text-text-secondary w-4 h-4 flex-shrink-0 transform transition-transform ${isOpen ? 'rotate-90' : ''}`}>\n ▶\n </button>\n )}\n {!hasChildren && <div className=\"w-6 mr-2 flex-shrink-0\" />}\n <div className=\"flex-grow flex items-center justify-between gap-4\">\n <span className=\"truncate\">{node.name}</span>\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n <div className=\"w-24 h-4 bg-gray-200 rounded-full overflow-hidden\">\n <div className=\"h-4 bg-primary\" style={{ width: `${(node.duration / maxDuration) * 100}%` }}/>\n </div>\n <span className=\"text-primary w-16 text-right\">{node.duration.toFixed(0)}ms</span>\n </div>\n </div>\n </div>\n {isOpen && hasChildren && (\n <div>\n {node.children!.map((child, index) => (\n <TreeNode key={index} node={child} level={level + 1} maxDuration={maxDuration} />\n ))}\n </div>\n )}\n </div>\n );\n};\n\n\nexport const AsyncCallTreeViewer: React.FC = () => {\n const [jsonInput, setJsonInput] = useState(exampleJson);\n const [error, setError] = useState('');\n\n const { treeData, maxDuration } = useMemo(() => {\n try {\n const data: CallNode = JSON.parse(jsonInput);\n let max = 0;\n const findMax = (node: CallNode) => {\n if (node.duration > max) max = node.duration;\n if (node.children) node.children.forEach(findMax);\n };\n findMax(data);\n setError('');\n return { treeData: data, maxDuration: max };\n } catch (e) {\n setError('Invalid JSON format.');\n return { treeData: null, maxDuration: 0 };\n }\n }, [jsonInput]);\n\n return (\n <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n <header className=\"mb-6\">\n <h1 className=\"text-3xl flex items-center\">\n <ChartBarIcon />\n <span className=\"ml-3\">Async Call Tree Viewer</span>\n </h1>\n <p className=\"text-text-secondary mt-1\">Paste a JSON structure to visualize an asynchronous function call tree.</p>\n </header>\n <div className=\"flex-grow flex flex-col gap-4 min-h-0\">\n <div className=\"flex flex-col h-2/5 min-h-[200px]\">\n <label htmlFor=\"json-input\" className=\"text-sm font-medium text-text-secondary mb-2\">JSON Input</label>\n <textarea\n id=\"json-input\"\n value={jsonInput}\n onChange={e => setJsonInput(e.target.value)}\n className={`flex-grow p-4 bg-surface border ${error ? 'border-red-500' : 'border-border'} rounded-md resize-y font-mono text-sm`}\n spellCheck=\"false\"\n />\n {error && <p className=\"text-red-500 text-xs mt-1\">{error}</p>}\n </div>\n <div className=\"flex flex-col flex-grow min-h-0\">\n <label className=\"text-sm font-medium text-text-secondary mb-2\">Visual Tree</label>\n <div className=\"flex-grow bg-surface p-4 rounded-lg text-sm overflow-y-auto border border-border\">\n {treeData ? <TreeNode node={treeData} level={0} maxDuration={maxDuration} /> : <div className=\"text-text-secondary\">{error || 'Enter valid JSON to see the tree.'}</div>}\n </div>\n </div>\n </div>\n </div>\n );\n};"],"names":["exampleJson","TreeNode","node","level","maxDuration","isOpen","setIsOpen","React","hasChildren","jsxs","jsx","child","index","AsyncCallTreeViewer","jsonInput","setJsonInput","useState","error","setError","treeData","useMemo","data","max","findMax","ChartBarIcon","e"],"mappings":"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"}
|