monacopilot 0.19.7 → 0.19.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +2 -2
- package/build/index.mjs +2 -2
- package/package.json +5 -2
package/build/index.js
CHANGED
|
@@ -36,7 +36,7 @@ Output only the raw code to be inserted at the cursor location without any addit
|
|
|
36
36
|
`+e.slice(1).map(n=>o+n).join(`
|
|
37
37
|
`),this}removeMarkdownCodeBlocks(e){let o=/```[\s\S]*?```/g,n=e,r;for(;(r=o.exec(e))!==null;){let i=r[0],s=i.split(`
|
|
38
38
|
`).slice(1,-1).join(`
|
|
39
|
-
`);n=n.replace(i,s);}return n.
|
|
39
|
+
`);n=n.replace(i,s);}return n.replace(/^\n+|\n+$/g,"")}removeExcessiveNewlines(){return this.formattedCompletion=this.formattedCompletion.replace(/\n{3,}/g,`
|
|
40
40
|
|
|
41
41
|
`),this}build(){return this.formattedCompletion}};var w=class{constructor(e){this.monaco=e;}computeInsertionRange(e,o,n){if(!o)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let r=n.getOffsetAt(e),i=n.getValue().substring(0,r),s=n.getValue().substring(r),l=0,p=0,d=0,c=0,a=o.length,u=i.length,g=s.length;if(r>=n.getValue().length)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);if(g===0)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let y=Math.min(a,u);for(let m=1;m<=y;m++){let b=o.substring(0,m),Q=i.slice(-m);b===Q&&(c=m);}let C=Math.min(a,g);for(let m=0;m<C&&o[m]===s[m];m++)l++;for(let m=1;m<=C;m++)o.slice(-m)===s.slice(0,m)&&(p=m);if(d=Math.max(l,p),d===0){for(let m=1;m<a;m++)if(s.startsWith(o.substring(m))){d=a-m;break}}let R=c>0?n.getPositionAt(r-c):e,h=r+d,f=n.getPositionAt(h);return new this.monaco.Range(R.lineNumber,R.column,f.lineNumber,f.column)}computeCacheRange(e,o){let n=e.lineNumber,r=e.column,i=o.split(`
|
|
42
|
-
`),s=i.length-1,l=n+s,p=s===0?r+i[0].length:i[s].length+1;return new this.monaco.Range(n,r,l,p)}};var
|
|
42
|
+
`),s=i.length-1,l=n+s,p=s===0?r+i[0].length:i[s].length+1;return new this.monaco.Range(n,r,l,p)}};var $=async t=>{let{endpoint:e,body:o}=t,{completion:n,error:r}=await core.HTTP.post(e,o,{headers:{"Content-Type":"application/json"},fallbackError:"Error while fetching completion item"});if(r)throw new Error(r);return {completion:n}},z=({pos:t,mdl:e,options:o})=>{let{filename:n,language:r,technologies:i,relatedFiles:s,maxContextLines:l}=o,p=oe(t,e),c=!!s?.length?3:2,a=l?Math.floor(l/c):void 0,u=(h,f,m)=>{let b=h(t,e);return f?O(b,f,m):b},g=(h,f)=>!h||!f?h:h.map(({content:m,...b})=>({...b,content:O(m,f)})),y=u(E,a,{from:"end"}),C=u(B,a),R=g(s,a);return {filename:n,language:r,technologies:i,relatedFiles:R,textBeforeCursor:y,textAfterCursor:C,cursorPosition:t,editorState:{completionMode:p}}},oe=(t,e)=>{let o=V(t,e),n=B(t,e);return o?"insert":n.trim()?"complete":"continue"};var F=(t,e=600,o=200)=>{let n=null,r=0,i=null,s=null,l=false,p=(...d)=>{if(l)return Promise.resolve(void 0);i=d;let c=Date.now(),a=c-r;r=c,n&&(clearTimeout(n),n=null);let u=a<o?e:o;return s=new Promise((g,y)=>{n=setTimeout(async()=>{l=true;try{if(i){let C=await t(...i);g(C);}else g(void 0);}catch(C){y(C);}finally{l=false,n=null,i=null;}},u);}),s};return p.cancel=()=>{n&&(clearTimeout(n),n=null),i=null;},p};var x=t=>({items:t,enableForwardStability:true,suppressSuggestions:true});var ie=t=>({onTyping:F(t,600,200),onIdle:F(t,600,400),onDemand:F(t,0,0)}),L=new I,_=async({monaco:t,mdl:e,pos:o,token:n,isCompletionAccepted:r,options:i})=>{let{trigger:s="onIdle",endpoint:l,enableCaching:p=true,onError:d,requestHandler:c}=i;if(p){let a=L.get(o,e).map(u=>({insertText:u.completion,range:u.range}));if(a.length>0)return x(a)}if(n.isCancellationRequested||r)return x([]);try{let u=ie(c??$)[s];n.onCancellationRequested(()=>{u.cancel();});let g=z({pos:o,mdl:e,options:i}),{completion:y}=await u({endpoint:l,body:{completionMetadata:g}});if(y){let C=new S(y,o.column,H(o,e)).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().indentByColumn().build(),R=new w(t),h=R.computeInsertionRange(o,C,e),f=R.computeCacheRange(o,C);return p&&L.add({completion:C,range:f,textBeforeCursor:E(o,e)}),x([{insertText:C,range:h}])}}catch(a){if(se(a))return x([]);d?d(a):core.logger.warn("Cannot provide completion",a);}return x([])},se=t=>typeof t=="string"?t==="Cancelled"||t==="AbortError":t instanceof Error?t.message==="Cancelled"||t.name==="AbortError":false;var N=new WeakMap,M=t=>N.get(t),W=(t,e)=>{N.set(t,e);},k=t=>{N.delete(t);},U=()=>({isCompletionAccepted:false,isCompletionVisible:false,isExplicitlyTriggered:false,hasRejectedCurrentCompletion:false});var G=(t,e,o)=>{let n=M(e);return n?t.languages.registerInlineCompletionsProvider(o.language,{provideInlineCompletions:(r,i,s,l)=>{if(!(o.trigger==="onDemand"&&!n.isExplicitlyTriggered))return _({monaco:t,mdl:r,pos:i,token:l,isCompletionAccepted:n.isCompletionAccepted,options:o})},handleItemDidShow:(r,i,s)=>{n.isExplicitlyTriggered=false,n.hasRejectedCurrentCompletion=false,!n.isCompletionAccepted&&(n.isCompletionVisible=true,o.onCompletionShown?.(s,i.range));},freeInlineCompletions:()=>{}}):null},X=t=>{let e=M(t);if(!e){core.logger.warn("Completion is not registered. Use `registerCompletion` to register completion first.");return}e.isExplicitlyTriggered=true,t.trigger("keyboard","editor.action.inlineSuggest.trigger",{});};var ae={TAB:(t,e)=>e.keyCode===t.KeyCode.Tab,CMD_RIGHT_ARROW:(t,e)=>e.keyCode===t.KeyCode.RightArrow&&e.metaKey},D=class{constructor(e,o,n){this.monaco=e;this.state=o;this.options=n;}handleKeyEvent(e){let o={monaco:this.monaco,event:e,state:this.state,options:this.options};this.handleCompletionAcceptance(o),this.handleCompletionRejection(o);}handleCompletionAcceptance(e){return e.state.isCompletionVisible&&this.isAcceptanceKey(e.event)?(e.options.onCompletionAccepted?.(),e.state.isCompletionAccepted=true,e.state.isCompletionVisible=false,true):(e.state.isCompletionAccepted=false,false)}handleCompletionRejection(e){return this.shouldRejectCompletion(e)?(e.options.onCompletionRejected?.(),e.state.hasRejectedCurrentCompletion=true,true):false}shouldRejectCompletion(e){return e.state.isCompletionVisible&&!e.state.hasRejectedCurrentCompletion&&!e.state.isCompletionAccepted&&!this.isAcceptanceKey(e.event)}isAcceptanceKey(e){return Object.values(ae).some(o=>o(this.monaco,e))}},Y=(t,e,o,n)=>{let r=new D(t,o,n);return e.onKeyDown(i=>r.handleKeyEvent(i))};var P=null,me=(t,e,o)=>{P&&P.deregister();let n=[];W(e,U()),e.updateOptions({inlineSuggest:{enabled:true,mode:"subwordSmart"}});try{let r=M(e);if(!r)return core.logger.warn("Completion is not registered properly. State not found."),pe();let i=G(t,e,o);i&&n.push(i);let s=Y(t,e,r,o);n.push(s);let l={deregister:()=>{n.forEach(p=>p.dispose()),L.clear(),k(e),P=null;},trigger:()=>X(e)};return P=l,l}catch(r){return o.onError?o.onError(r):core.logger.report(r),{deregister:()=>{n.forEach(i=>i.dispose()),k(e),P=null;},trigger:()=>{}}}},pe=()=>({deregister:()=>{},trigger:()=>{}});var it=v;exports.CompletionCopilot=v;exports.Copilot=it;exports.registerCompletion=me;
|
package/build/index.mjs
CHANGED
|
@@ -36,7 +36,7 @@ Output only the raw code to be inserted at the cursor location without any addit
|
|
|
36
36
|
`+e.slice(1).map(n=>o+n).join(`
|
|
37
37
|
`),this}removeMarkdownCodeBlocks(e){let o=/```[\s\S]*?```/g,n=e,r;for(;(r=o.exec(e))!==null;){let i=r[0],s=i.split(`
|
|
38
38
|
`).slice(1,-1).join(`
|
|
39
|
-
`);n=n.replace(i,s);}return n.
|
|
39
|
+
`);n=n.replace(i,s);}return n.replace(/^\n+|\n+$/g,"")}removeExcessiveNewlines(){return this.formattedCompletion=this.formattedCompletion.replace(/\n{3,}/g,`
|
|
40
40
|
|
|
41
41
|
`),this}build(){return this.formattedCompletion}};var w=class{constructor(e){this.monaco=e;}computeInsertionRange(e,o,n){if(!o)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let r=n.getOffsetAt(e),i=n.getValue().substring(0,r),s=n.getValue().substring(r),l=0,p=0,d=0,c=0,a=o.length,u=i.length,g=s.length;if(r>=n.getValue().length)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);if(g===0)return new this.monaco.Range(e.lineNumber,e.column,e.lineNumber,e.column);let y=Math.min(a,u);for(let m=1;m<=y;m++){let b=o.substring(0,m),Q=i.slice(-m);b===Q&&(c=m);}let C=Math.min(a,g);for(let m=0;m<C&&o[m]===s[m];m++)l++;for(let m=1;m<=C;m++)o.slice(-m)===s.slice(0,m)&&(p=m);if(d=Math.max(l,p),d===0){for(let m=1;m<a;m++)if(s.startsWith(o.substring(m))){d=a-m;break}}let R=c>0?n.getPositionAt(r-c):e,h=r+d,f=n.getPositionAt(h);return new this.monaco.Range(R.lineNumber,R.column,f.lineNumber,f.column)}computeCacheRange(e,o){let n=e.lineNumber,r=e.column,i=o.split(`
|
|
42
|
-
`),s=i.length-1,l=n+s,p=s===0?r+i[0].length:i[s].length+1;return new this.monaco.Range(n,r,l,p)}};var
|
|
42
|
+
`),s=i.length-1,l=n+s,p=s===0?r+i[0].length:i[s].length+1;return new this.monaco.Range(n,r,l,p)}};var $=async t=>{let{endpoint:e,body:o}=t,{completion:n,error:r}=await HTTP.post(e,o,{headers:{"Content-Type":"application/json"},fallbackError:"Error while fetching completion item"});if(r)throw new Error(r);return {completion:n}},z=({pos:t,mdl:e,options:o})=>{let{filename:n,language:r,technologies:i,relatedFiles:s,maxContextLines:l}=o,p=oe(t,e),c=!!s?.length?3:2,a=l?Math.floor(l/c):void 0,u=(h,f,m)=>{let b=h(t,e);return f?O(b,f,m):b},g=(h,f)=>!h||!f?h:h.map(({content:m,...b})=>({...b,content:O(m,f)})),y=u(E,a,{from:"end"}),C=u(B,a),R=g(s,a);return {filename:n,language:r,technologies:i,relatedFiles:R,textBeforeCursor:y,textAfterCursor:C,cursorPosition:t,editorState:{completionMode:p}}},oe=(t,e)=>{let o=V(t,e),n=B(t,e);return o?"insert":n.trim()?"complete":"continue"};var F=(t,e=600,o=200)=>{let n=null,r=0,i=null,s=null,l=false,p=(...d)=>{if(l)return Promise.resolve(void 0);i=d;let c=Date.now(),a=c-r;r=c,n&&(clearTimeout(n),n=null);let u=a<o?e:o;return s=new Promise((g,y)=>{n=setTimeout(async()=>{l=true;try{if(i){let C=await t(...i);g(C);}else g(void 0);}catch(C){y(C);}finally{l=false,n=null,i=null;}},u);}),s};return p.cancel=()=>{n&&(clearTimeout(n),n=null),i=null;},p};var x=t=>({items:t,enableForwardStability:true,suppressSuggestions:true});var ie=t=>({onTyping:F(t,600,200),onIdle:F(t,600,400),onDemand:F(t,0,0)}),L=new I,_=async({monaco:t,mdl:e,pos:o,token:n,isCompletionAccepted:r,options:i})=>{let{trigger:s="onIdle",endpoint:l,enableCaching:p=true,onError:d,requestHandler:c}=i;if(p){let a=L.get(o,e).map(u=>({insertText:u.completion,range:u.range}));if(a.length>0)return x(a)}if(n.isCancellationRequested||r)return x([]);try{let u=ie(c??$)[s];n.onCancellationRequested(()=>{u.cancel();});let g=z({pos:o,mdl:e,options:i}),{completion:y}=await u({endpoint:l,body:{completionMetadata:g}});if(y){let C=new S(y,o.column,H(o,e)).removeMarkdownCodeSyntax().removeExcessiveNewlines().removeInvalidLineBreaks().indentByColumn().build(),R=new w(t),h=R.computeInsertionRange(o,C,e),f=R.computeCacheRange(o,C);return p&&L.add({completion:C,range:f,textBeforeCursor:E(o,e)}),x([{insertText:C,range:h}])}}catch(a){if(se(a))return x([]);d?d(a):logger.warn("Cannot provide completion",a);}return x([])},se=t=>typeof t=="string"?t==="Cancelled"||t==="AbortError":t instanceof Error?t.message==="Cancelled"||t.name==="AbortError":false;var N=new WeakMap,M=t=>N.get(t),W=(t,e)=>{N.set(t,e);},k=t=>{N.delete(t);},U=()=>({isCompletionAccepted:false,isCompletionVisible:false,isExplicitlyTriggered:false,hasRejectedCurrentCompletion:false});var G=(t,e,o)=>{let n=M(e);return n?t.languages.registerInlineCompletionsProvider(o.language,{provideInlineCompletions:(r,i,s,l)=>{if(!(o.trigger==="onDemand"&&!n.isExplicitlyTriggered))return _({monaco:t,mdl:r,pos:i,token:l,isCompletionAccepted:n.isCompletionAccepted,options:o})},handleItemDidShow:(r,i,s)=>{n.isExplicitlyTriggered=false,n.hasRejectedCurrentCompletion=false,!n.isCompletionAccepted&&(n.isCompletionVisible=true,o.onCompletionShown?.(s,i.range));},freeInlineCompletions:()=>{}}):null},X=t=>{let e=M(t);if(!e){logger.warn("Completion is not registered. Use `registerCompletion` to register completion first.");return}e.isExplicitlyTriggered=true,t.trigger("keyboard","editor.action.inlineSuggest.trigger",{});};var ae={TAB:(t,e)=>e.keyCode===t.KeyCode.Tab,CMD_RIGHT_ARROW:(t,e)=>e.keyCode===t.KeyCode.RightArrow&&e.metaKey},D=class{constructor(e,o,n){this.monaco=e;this.state=o;this.options=n;}handleKeyEvent(e){let o={monaco:this.monaco,event:e,state:this.state,options:this.options};this.handleCompletionAcceptance(o),this.handleCompletionRejection(o);}handleCompletionAcceptance(e){return e.state.isCompletionVisible&&this.isAcceptanceKey(e.event)?(e.options.onCompletionAccepted?.(),e.state.isCompletionAccepted=true,e.state.isCompletionVisible=false,true):(e.state.isCompletionAccepted=false,false)}handleCompletionRejection(e){return this.shouldRejectCompletion(e)?(e.options.onCompletionRejected?.(),e.state.hasRejectedCurrentCompletion=true,true):false}shouldRejectCompletion(e){return e.state.isCompletionVisible&&!e.state.hasRejectedCurrentCompletion&&!e.state.isCompletionAccepted&&!this.isAcceptanceKey(e.event)}isAcceptanceKey(e){return Object.values(ae).some(o=>o(this.monaco,e))}},Y=(t,e,o,n)=>{let r=new D(t,o,n);return e.onKeyDown(i=>r.handleKeyEvent(i))};var P=null,me=(t,e,o)=>{P&&P.deregister();let n=[];W(e,U()),e.updateOptions({inlineSuggest:{enabled:true,mode:"subwordSmart"}});try{let r=M(e);if(!r)return logger.warn("Completion is not registered properly. State not found."),pe();let i=G(t,e,o);i&&n.push(i);let s=Y(t,e,r,o);n.push(s);let l={deregister:()=>{n.forEach(p=>p.dispose()),L.clear(),k(e),P=null;},trigger:()=>X(e)};return P=l,l}catch(r){return o.onError?o.onError(r):logger.report(r),{deregister:()=>{n.forEach(i=>i.dispose()),k(e),P=null;},trigger:()=>{}}}},pe=()=>({deregister:()=>{},trigger:()=>{}});var it=v;export{v as CompletionCopilot,it as Copilot,me as registerCompletion};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monacopilot",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.9",
|
|
4
4
|
"description": "AI auto-completion plugin for Monaco Editor",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"module": "./build/index.mjs",
|
|
@@ -37,7 +37,10 @@
|
|
|
37
37
|
"license": "MIT",
|
|
38
38
|
"author": "Arshad Yaseen <m@arshadyaseen.com> (https://arshadyaseen.com)",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@monacopilot/core": "0.19.
|
|
40
|
+
"@monacopilot/core": "0.19.9"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"monaco-editor": "^0.41.0"
|
|
41
44
|
},
|
|
42
45
|
"scripts": {
|
|
43
46
|
"build": "tsup src/index.ts",
|