diff --git a/package.json b/package.json index dc164d74..8dba184f 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,13 @@ { "name": "@codeblitzjs/core", "private": true, - "version": "1.2.0", "workspaces": [ "packages/*" ], "description": "codeblitzjs", "main": "index.js", "engines": { - "opensumi": "3.3.2" + "opensumi": "3.3.3" }, "scripts": { "prepare": "husky install", @@ -65,7 +64,6 @@ "execa": "^4.1.0", "fs-extra": "^9.0.1", "glob": "^7.1.6", - "gulp": "^4.0.2", "husky": "^5.0.4", "inquirer": "^7.3.3", "jest": "^26.6.3", diff --git a/packages/cli/package.json b/packages/cli/package.json index f6b70ead..0a4855a6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -10,13 +10,13 @@ "opensumi codeblitzjs" ], "engines": { - "opensumi": "3.3.2", - "node": ">=10.0.0" + "opensumi": "3.3.3", + "node": ">=18.0.0" }, "dependencies": { "@codeblitzjs/ide-common": "workspace:*", "@opensumi/extension-installer": "^0.0.1", - "@opensumi/ide-extension": "3.3.2", + "@opensumi/ide-extension": "3.3.3", "commander": "^7.2.0", "fs-extra": "^9.0.1", "lodash.pick": "^4.4.0", diff --git a/packages/core/package.json b/packages/core/package.json index 151c96fb..1189665c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -33,48 +33,48 @@ "@codeblitzjs/ide-plugin": "workspace:*", "@codeblitzjs/ide-registry": "workspace:*", "@codeblitzjs/ide-sumi-core": "workspace:*", - "@opensumi/ide-addons": "3.3.2", - "@opensumi/ide-ai-native": "3.3.2", - "@opensumi/ide-comments": "3.3.2", - "@opensumi/ide-core-browser": "3.3.2", - "@opensumi/ide-core-common": "3.3.2", - "@opensumi/ide-debug": "3.3.2", - "@opensumi/ide-decoration": "3.3.2", - "@opensumi/ide-design": "3.3.2", - "@opensumi/ide-editor": "3.3.2", - "@opensumi/ide-explorer": "3.3.2", - "@opensumi/ide-express-file-server": "3.3.2", - "@opensumi/ide-extension": "3.3.2", - "@opensumi/ide-extension-storage": "3.3.2", - "@opensumi/ide-file-scheme": "3.3.2", - "@opensumi/ide-file-service": "3.3.2", - "@opensumi/ide-file-tree-next": "3.3.2", - "@opensumi/ide-i18n": "3.3.2", - "@opensumi/ide-keymaps": "3.3.2", - "@opensumi/ide-logs": "3.3.2", - "@opensumi/ide-main-layout": "3.3.2", - "@opensumi/ide-markdown": "3.3.2", - "@opensumi/ide-markers": "3.3.2", - "@opensumi/ide-menu-bar": "3.3.2", - "@opensumi/ide-monaco": "3.3.2", - "@opensumi/ide-monaco-enhance": "3.3.2", - "@opensumi/ide-opened-editor": "3.3.2", - "@opensumi/ide-outline": "3.3.2", - "@opensumi/ide-output": "3.3.2", - "@opensumi/ide-overlay": "3.3.2", - "@opensumi/ide-preferences": "3.3.2", - "@opensumi/ide-quick-open": "3.3.2", - "@opensumi/ide-scm": "3.3.2", - "@opensumi/ide-search": "3.3.2", - "@opensumi/ide-status-bar": "3.3.2", - "@opensumi/ide-storage": "3.3.2", - "@opensumi/ide-testing": "3.3.2", - "@opensumi/ide-theme": "3.3.2", - "@opensumi/ide-toolbar": "3.3.2", - "@opensumi/ide-variable": "3.3.2", - "@opensumi/ide-webview": "3.3.2", - "@opensumi/ide-workspace": "3.3.2", - "@opensumi/ide-workspace-edit": "3.3.2", + "@opensumi/ide-addons": "3.3.3", + "@opensumi/ide-ai-native": "3.3.3", + "@opensumi/ide-comments": "3.3.3", + "@opensumi/ide-core-browser": "3.3.3", + "@opensumi/ide-core-common": "3.3.3", + "@opensumi/ide-debug": "3.3.3", + "@opensumi/ide-decoration": "3.3.3", + "@opensumi/ide-design": "3.3.3", + "@opensumi/ide-editor": "3.3.3", + "@opensumi/ide-explorer": "3.3.3", + "@opensumi/ide-express-file-server": "3.3.3", + "@opensumi/ide-extension": "3.3.3", + "@opensumi/ide-extension-storage": "3.3.3", + "@opensumi/ide-file-scheme": "3.3.3", + "@opensumi/ide-file-service": "3.3.3", + "@opensumi/ide-file-tree-next": "3.3.3", + "@opensumi/ide-i18n": "3.3.3", + "@opensumi/ide-keymaps": "3.3.3", + "@opensumi/ide-logs": "3.3.3", + "@opensumi/ide-main-layout": "3.3.3", + "@opensumi/ide-markdown": "3.3.3", + "@opensumi/ide-markers": "3.3.3", + "@opensumi/ide-menu-bar": "3.3.3", + "@opensumi/ide-monaco": "3.3.3", + "@opensumi/ide-monaco-enhance": "3.3.3", + "@opensumi/ide-opened-editor": "3.3.3", + "@opensumi/ide-outline": "3.3.3", + "@opensumi/ide-output": "3.3.3", + "@opensumi/ide-overlay": "3.3.3", + "@opensumi/ide-preferences": "3.3.3", + "@opensumi/ide-quick-open": "3.3.3", + "@opensumi/ide-scm": "3.3.3", + "@opensumi/ide-search": "3.3.3", + "@opensumi/ide-status-bar": "3.3.3", + "@opensumi/ide-storage": "3.3.3", + "@opensumi/ide-testing": "3.3.3", + "@opensumi/ide-theme": "3.3.3", + "@opensumi/ide-toolbar": "3.3.3", + "@opensumi/ide-variable": "3.3.3", + "@opensumi/ide-webview": "3.3.3", + "@opensumi/ide-workspace": "3.3.3", + "@opensumi/ide-workspace-edit": "3.3.3", "@opensumi/textmate-languages": "^2.7.0", "tslib": "^2.2.0" }, diff --git a/packages/sumi-core/package.json b/packages/sumi-core/package.json index 3a93a2c1..85791d32 100644 --- a/packages/sumi-core/package.json +++ b/packages/sumi-core/package.json @@ -15,14 +15,14 @@ "@codeblitzjs/ide-common": "workspace:*", "@codeblitzjs/ide-registry": "workspace:*", "@opensumi/di": "^1.0.0", - "@opensumi/ide-ai-native": "3.3.2", - "@opensumi/ide-core-browser": "3.3.2", - "@opensumi/ide-core-common": "3.3.2", - "@opensumi/ide-debug": "3.3.2", - "@opensumi/ide-extension": "3.3.2", - "@opensumi/ide-file-scheme": "3.3.2", - "@opensumi/ide-file-service": "3.3.2", - "@opensumi/ide-logs": "3.3.2", + "@opensumi/ide-ai-native": "3.3.3", + "@opensumi/ide-core-browser": "3.3.3", + "@opensumi/ide-core-common": "3.3.3", + "@opensumi/ide-debug": "3.3.3", + "@opensumi/ide-extension": "3.3.3", + "@opensumi/ide-file-scheme": "3.3.3", + "@opensumi/ide-file-service": "3.3.3", + "@opensumi/ide-logs": "3.3.3", "assert": "^2.0.0", "fs-extra-factory": "^0.2.1", "iconv-lite-umd": "^0.6.8", diff --git a/packages/sumi-core/resources/manifest.json b/packages/sumi-core/resources/manifest.json new file mode 100644 index 00000000..1cd8f219 --- /dev/null +++ b/packages/sumi-core/resources/manifest.json @@ -0,0 +1,5 @@ +{ + "webview": "webview.66e57793.js", + "webview/index.html": "webview.805ab470/index.html", + "worker-host": "worker-host.490aafa0.js" +} \ No newline at end of file diff --git a/packages/sumi-core/resources/webview.66e57793.js b/packages/sumi-core/resources/webview.66e57793.js new file mode 100644 index 00000000..10d247d1 --- /dev/null +++ b/packages/sumi-core/resources/webview.66e57793.js @@ -0,0 +1 @@ +(()=>{"use strict";var e={708:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getVsCodeApiScript=t.defaultCss=void 0,t.defaultCss="body {\n background-color: var(--vscode-editor-background);\n color: var(--vscode-editor-foreground);\n font-family: var(--vscode-font-family);\n font-weight: var(--vscode-font-weight);\n font-size: var(--vscode-font-size);\n margin: 0;\n padding: 0 20px;\n}\n\nimg {\n max-width: 100%;\n max-height: 100%;\n}\n\na {\n color: var(--vscode-textLink-foreground);\n}\n\na:hover {\n color: var(--vscode-textLink-activeForeground);\n}\n\na:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n outline: 1px solid -webkit-focus-ring-color;\n outline-offset: -1px;\n}\n\ncode {\n color: var(--vscode-textPreformat-foreground);\n}\n\nblockquote {\n background: var(--vscode-textBlockQuote-background);\n border-color: var(--vscode-textBlockQuote-border);\n}\n\n::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: var(--vscode-scrollbarSlider-background);\n}\n::-webkit-scrollbar-thumb:hover {\n background-color: var(--vscode-scrollbarSlider-hoverBackground);\n}\n::-webkit-scrollbar-thumb:active {\n background-color: var(--vscode-scrollbarSlider-activeBackground);\n}\n::-webkit-scrollbar-corner {\n background: transparent;\n}",t.getVsCodeApiScript=function(e){return`\n const acquireVsCodeApi = (function() {\n const originalPostMessage = window.parent.postMessage.bind(window.parent);\n const targetOrigin = '*';\n let acquired = false;\n\n let state = ${e?`JSON.parse("${t=JSON.stringify(e),(t+"").replace(/[\\"']/g,"\\$&").replace(/\u0000/g,"\\0")}")`:void 0};\n\n return () => {\n if (acquired) {\n throw new Error('An instance of the VS Code API has already been acquired');\n }\n acquired = true;\n return Object.freeze({\n postMessage: function(msg) {\n return originalPostMessage({ command: 'onmessage', data: msg }, targetOrigin);\n },\n setState: function(newState) {\n state = newState;\n originalPostMessage({ command: 'do-update-state', data: JSON.parse(JSON.stringify(newState)) }, targetOrigin);\n return newState;\n },\n getState: function() {\n return state;\n }\n });\n };\n })();\n delete window.parent;\n delete window.top;\n delete window.frameElement;\n window.acquireVsCodeApi = acquireVsCodeApi;\n `;var t}},362:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WebviewPanelManager=void 0;const o=n(708);t.WebviewPanelManager=class{constructor(e){this.channel=e,this.activeTheme="default",this.isHandlingScroll=!1,this.updateId=0,this.firstLoad=!0,this.pendingMessages=[],document.addEventListener("DOMContentLoaded",this.init.bind(this))}init(){const e=document.location.search.match(/\bid=([\w-]+)/);this.ID=e?e[1]:void 0,document.body&&(this.channel.onMessage("styles",((e,t)=>{this.styles=t.styles,this.activeTheme=t.activeTheme;const n=this.getActiveFrame();n&&n.contentDocument&&this.applyStyles(n.contentDocument,n.contentDocument.body)})),this.channel.onMessage("focus",(()=>{const e=this.getActiveFrame();e&&e.contentWindow&&e.contentWindow.focus()})),this.channel.onMessage("content",(async(e,t)=>this.setContent(t))),this.channel.onMessage("message",((e,t)=>{var n;if(!this.getPendingFrame()){const e=this.getActiveFrame();if(e)return void(null===(n=e.contentWindow)||void 0===n||n.postMessage(t,"*"))}this.pendingMessages.push(t)})),this.trackFocus({onFocus:()=>this.channel.postMessage("did-focus"),onBlur:()=>this.channel.postMessage("did-blur")}),this.channel.postMessage("webview-ready",{}))}async setContent(e){var t,n,o,s,i,a;const r=++this.updateId;if(await this.channel.ready,r!==this.updateId)return;const d=e.options,c=this.toContentHtml(e),l=this.getActiveFrame(),h=this.firstLoad;let u;if(this.firstLoad)this.firstLoad=!1,u=(e,t)=>{isNaN(this.initialScrollProgress)||0===t.scrollY&&t.scroll(0,e.clientHeight*this.initialScrollProgress)};else{const e=l&&l.contentDocument&&l.contentDocument.body?null===(t=l.contentWindow)||void 0===t?void 0:t.scrollY:0;u=(t,n)=>{0===n.scrollY&&n.scroll(0,e)}}const g=this.getPendingFrame();g&&(g.setAttribute("id",""),document.body.removeChild(g)),h||(this.pendingMessages=[]);const m=document.createElement("iframe");m.setAttribute("id","pending-frame"),m.setAttribute("frameborder","0"),m.setAttribute("allow","autoplay; clipboard-read; clipboard-write;");const v=new Set(["allow-same-origin","allow-pointer-lock"]);d.allowScripts&&(v.add("allow-scripts"),v.add("allow-downloads")),d.allowForms&&v.add("allow-forms"),m.setAttribute("sandbox",Array.from(v).join(" ")),this.channel.fakeLoad&&(m.src=`./fake.html?id=${this.ID}`),m.style.cssText="display: block; margin: 0; overflow: hidden; position: absolute; width: 100%; height: 100%; visibility: hidden",document.body.appendChild(m),this.channel.fakeLoad||null===(n=m.contentDocument)||void 0===n||n.open(),null===(o=m.contentWindow)||void 0===o||o.addEventListener("keydown",this.handleInnerKeydown.bind(this)),null===(s=m.contentWindow)||void 0===s||s.addEventListener("DOMContentLoaded",(e=>{var t,n,o;this.channel.fakeLoad&&(null===(t=m.contentDocument)||void 0===t||t.open(),null===(n=m.contentDocument)||void 0===n||n.write(c),null===(o=m.contentDocument)||void 0===o||o.close(),p(m));const s=e.target?e.target:void 0;s&&this.applyStyles(s,s.body)}));const f=(e,t)=>{var n;e&&e.body&&u(e.body,t);const o=this.getPendingFrame();if(o&&o.contentDocument&&o.contentDocument===e){const e=this.getActiveFrame();e&&document.body.removeChild(e),this.applyStyles(o.contentDocument,o.contentDocument.body),o.setAttribute("id","active-frame"),o.style.visibility="visible",this.channel.focusIframeOnCreate&&(null===(n=o.contentWindow)||void 0===n||n.focus()),t.addEventListener("scroll",this.handleInnerScroll.bind(this)),this.pendingMessages.forEach((e=>{t.postMessage(e,"*")})),this.pendingMessages=[]}},p=e=>{clearTimeout(this.loadTimeout),this.loadTimeout=void 0,this.loadTimeout=setTimeout((()=>{clearTimeout(this.loadTimeout),this.loadTimeout=void 0,f(e.contentDocument,e.contentWindow)}),1e3);const t=this;e.contentWindow.addEventListener("load",(function(e){t.loadTimeout&&(clearTimeout(t.loadTimeout),t.loadTimeout=void 0,f(e.target,this))})),e.contentWindow.addEventListener("click",this.handleInnerClick.bind(this)),this.channel.onIframeLoaded&&this.channel.onIframeLoaded(e)};this.channel.fakeLoad||p(m),this.channel.fakeLoad||(null===(i=m.contentDocument)||void 0===i||i.write(c),null===(a=m.contentDocument)||void 0===a||a.close()),this.channel.postMessage("did-set-content",void 0)}trackFocus({onFocus:e,onBlur:t}){let n=document.hasFocus();setInterval((()=>{const o=document.hasFocus();o!==n&&(n=o,o?e():t())}),50)}getActiveFrame(){return document.getElementById("active-frame")}getPendingFrame(){return document.getElementById("pending-frame")}get defaultCssRules(){return o.defaultCss}applyStyles(e,t){if(e&&(t&&(t.classList.remove("vscode-light","vscode-dark","vscode-high-contrast"),t.classList.add(this.activeTheme)),this.styles))for(const t of Object.keys(this.styles))e.documentElement.style.setProperty(`--${t}`,this.styles[t])}handleInnerClick(e){if(!e||!e.view||!e.view.document)return;const t=e.view.document.getElementsByTagName("base")[0];let n=e.target;for(;n;){if(n.tagName&&"a"===n.tagName.toLowerCase()&&n.href){if("#"===n.getAttribute("href"))e.view.scrollTo(0,0);else if(n.hash&&(n.getAttribute("href")===n.hash||t&&n.href.indexOf(t.href)>=0)){const t=e.view.document.getElementById(n.hash.substr(1,n.hash.length-1));t&&t.scrollIntoView()}else this.channel.postMessage("did-click-link",n.href.baseVal||n.href);e.preventDefault();break}n=n.parentNode}}handleInnerKeydown(e){this.channel.postMessage("did-keydown",{key:e.key,keyCode:e.keyCode,code:e.code,shiftKey:e.shiftKey,altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,repeat:e.repeat}),this.channel.onKeydown&&this.channel.onKeydown(e)}handleInnerScroll(e){if(!e.target||!e.target.body)return;if(this.isHandlingScroll)return;const t=e.currentTarget.scrollY/e.target.body.clientHeight;isNaN(t)||(this.isHandlingScroll=!0,window.requestAnimationFrame((()=>{try{this.channel.postMessage("did-scroll",t)}catch(e){}this.isHandlingScroll=!1})))}toContentHtml(e){const t=e.options,n=e.contents,s=(new DOMParser).parseFromString(n,"text/html");if(s.querySelectorAll("a").forEach((e=>{e.title||(e.title=e.getAttribute("href"))})),t.allowScripts){const t=s.createElement("script");t.textContent=(0,o.getVsCodeApiScript)(e.state),s.head.prepend(t)}const i=s.createElement("style");return i.id="_defaultStyles",i.innerHTML=this.defaultCssRules,s.head.prepend(i),this.applyStyles(s,s.body),"\n"+s.documentElement.outerHTML}}}},t={};function n(o){var s=t[o];if(void 0!==s)return s.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}(()=>{const e=n(362);new e.WebviewPanelManager(new class{constructor(){this.handlers=new Map,this.fakeLoad=!1,this.isInDevelopmentMode=!1,this.id=document.location.search.match(/\bid=([\w-]+)/)[1],window.addEventListener("message",(e=>{if(e.data&&("onmessage"===e.data.command||"do-update-state"===e.data.command))return void this.postMessage(e.data.command,e.data.data);const t=e.data.channel,n=this.handlers.get(t);n?n(e,e.data.data):console.log("no handler for ",e)})),this.ready=new Promise((async e=>{e()})),this.onMessage("devtools-opened",(()=>{this.isInDevelopmentMode=!0}))}get inDev(){return this.isInDevelopmentMode}postMessage(e,t){window.parent!==window&&window.parent.postMessage({target:this.id,channel:e,data:t},"*")}onMessage(e,t){this.handlers.set(e,t)}onIframeLoaded(e){}onKeydown(e){"s"===e.key&&(e.metaKey||e.ctrlKey)&&e.preventDefault()}})})()})(); \ No newline at end of file diff --git a/packages/sumi-core/resources/webview.805ab470/index.html b/packages/sumi-core/resources/webview.805ab470/index.html new file mode 100644 index 00000000..33f7c17c --- /dev/null +++ b/packages/sumi-core/resources/webview.805ab470/index.html @@ -0,0 +1 @@ +