Creator App Tests / PR Spam Gate (push) Skipped
Frontend Tests / PR Spam Gate (push) Skipped
NPM Format (website & console) / PR Spam Gate (push) Skipped
Pre-commit Checks / PR Spam Gate (push) Skipped
QwenPaw Creator Plugin Release / check-version (push) Canceled after 0s
QwenPaw Creator Plugin Release / upload-oss (push) Canceled after 0s
Tests / PR Spam Gate (push) Skipped
CodeQL / CodeQL (python) (push) Canceled after 0s
CodeQL / CodeQL (typescript) (push) Canceled after 0s
Creator App Tests / Creator Backend Tests (push) Canceled after 0s
Creator App Tests / Creator UI Build & Tests (push) Canceled after 0s
E2E Smoke Tests / Playwright UI Smoke (push) Canceled after 0s
Frontend Tests / Detect console changes (push) Canceled after 0s
NPM Format (website & console) / website format check (push) Canceled after 0s
NPM Format (website & console) / console format check (push) Canceled after 0s
Pre-commit Checks / Pre-commit (push) Canceled after 0s
QwenPaw Data Plugin Release / check-version (push) Canceled after 0s
Tests / Detect code changes (push) Canceled after 0s
Frontend Tests / Vitest Unit Tests (push) Canceled after 0s
Frontend Tests / Frontend Summary (push) Canceled after 0s
QwenPaw Data Plugin Release / upload-oss (push) Canceled after 0s
Tests / Maintainer Approval (push) Canceled after 0s
Tests / Unit Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - fallback (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p2 (push) Canceled after 0s
Tests / Coverage Report (push) Canceled after 0s
Tests / Test Summary (push) Canceled after 0s
58 lines
2.1 KiB
TypeScript
58 lines
2.1 KiB
TypeScript
/**
|
|
* Monaco offline setup.
|
|
*
|
|
* By default `@monaco-editor/react` (via `@monaco-editor/loader`) fetches the
|
|
* Monaco core from the jsDelivr CDN at runtime, which breaks the Coding page
|
|
* file preview/editing in offline / air-gapped environments (issue #6261).
|
|
*
|
|
* Here we:
|
|
* 1. Wire `self.MonacoEnvironment.getWorker` to the workers bundled by Vite
|
|
* (`?worker` imports resolve to local blobs — no network needed).
|
|
* 2. Point the loader at the locally installed `monaco-editor` package so it
|
|
* never touches the CDN.
|
|
*
|
|
* This module has side effects and must be imported once, before any Monaco
|
|
* editor mounts (see main.tsx).
|
|
*/
|
|
|
|
import * as monaco from "monaco-editor";
|
|
import { loader } from "@monaco-editor/react";
|
|
import "monaco-editor/min/vs/editor/editor.main.css";
|
|
import { registerRobotFramework } from "./monaco/robotframework";
|
|
import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker";
|
|
import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?worker";
|
|
import cssWorker from "monaco-editor/esm/vs/language/css/css.worker?worker";
|
|
import htmlWorker from "monaco-editor/esm/vs/language/html/html.worker?worker";
|
|
import tsWorker from "monaco-editor/esm/vs/language/typescript/ts.worker?worker";
|
|
|
|
self.MonacoEnvironment = {
|
|
// Merge instead of overwrite so any MonacoEnvironment fields set elsewhere
|
|
// (e.g. a future CSP / Trusted Types policy) are preserved.
|
|
...self.MonacoEnvironment,
|
|
getWorker(_workerId: string, label: string) {
|
|
switch (label) {
|
|
case "json":
|
|
return new jsonWorker();
|
|
case "css":
|
|
case "scss":
|
|
case "less":
|
|
return new cssWorker();
|
|
case "html":
|
|
case "handlebars":
|
|
case "razor":
|
|
return new htmlWorker();
|
|
case "typescript":
|
|
case "javascript":
|
|
return new tsWorker();
|
|
default:
|
|
return new editorWorker();
|
|
}
|
|
},
|
|
};
|
|
|
|
// Register languages Monaco does not ship built-in.
|
|
registerRobotFramework(monaco);
|
|
|
|
// Use the locally bundled monaco instance instead of loading it from the CDN.
|
|
loader.config({ monaco });
|