-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7f4f913
commit a871cf0
Showing
18 changed files
with
2,190 additions
and
0 deletions.
There are no files selected for viewing
76 changes: 76 additions & 0 deletions
76
front-end/src/lib/monaco-editor/languages-config/php/config.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
import * as vscode from 'vscode'; | ||
import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-override'; | ||
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; | ||
import '@codingame/monaco-vscode-php-default-extension'; | ||
import { type UserConfig } from 'monaco-editor-wrapper'; | ||
import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; | ||
import { MonacoLanguageClient } from 'monaco-languageclient'; | ||
import { MONACO_DETAULT_USER_CONFIG } from '$lib/monaco-editor/constances'; | ||
|
||
function createPHPUserConfig(workspaceRoot: string, code: string, codeUri: string): UserConfig { | ||
return { | ||
languageClientConfig: { | ||
languageId: 'php', | ||
name: 'PHP Language Server', | ||
options: { | ||
$type: 'WebSocket', | ||
|
||
/** For SSL */ | ||
// host: 'example.com', | ||
// port: 443, | ||
// path: 'language-server/php', | ||
// extraParams: { | ||
// authorization: 'UserAuth' | ||
// }, | ||
// secured: true, | ||
|
||
/** Localhost */ | ||
host: 'localhost', | ||
port: 3005, | ||
path: 'language-server/php', | ||
extraParams: { | ||
authorization: 'UserAuth' | ||
}, | ||
secured: false | ||
}, | ||
clientOptions: { | ||
documentSelector: ['php'], | ||
workspaceFolder: { | ||
index: 0, | ||
name: 'workspace', | ||
uri: vscode.Uri.parse(workspaceRoot) | ||
} | ||
} | ||
}, | ||
wrapperConfig: { | ||
serviceConfig: { | ||
userServices: { | ||
...getEditorServiceOverride(useOpenEditorStub), | ||
...getKeybindingsServiceOverride() | ||
}, | ||
debugLogging: true | ||
}, | ||
editorAppConfig: { | ||
$type: 'extended', | ||
codeResources: { | ||
main: { | ||
text: code, | ||
uri: codeUri | ||
} | ||
}, | ||
userConfiguration: { | ||
json: JSON.stringify({ | ||
...MONACO_DETAULT_USER_CONFIG | ||
}) | ||
}, | ||
useDiffEditor: false | ||
} | ||
}, | ||
loggerConfig: { | ||
enabled: true, | ||
debugEnabled: true | ||
} | ||
}; | ||
} | ||
|
||
export { createPHPUserConfig }; |
3 changes: 3 additions & 0 deletions
3
front-end/src/lib/monaco-editor/languages-config/php/example-code.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<?php | ||
echo 'Hello, World!'; | ||
?> |
47 changes: 47 additions & 0 deletions
47
front-end/src/lib/monaco-editor/languages-config/php/page.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
import * as vscode from 'vscode'; | ||
import '@codingame/monaco-vscode-php-default-extension'; | ||
import { | ||
RegisteredFileSystemProvider, | ||
registerFileSystemOverlay, | ||
RegisteredMemoryFile | ||
} from '@codingame/monaco-vscode-files-service-override'; | ||
import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper'; | ||
import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory'; | ||
import { createPHPUserConfig } from './config'; | ||
|
||
function configureMonacoWorkers() { | ||
useWorkerFactory({ | ||
ignoreMapping: true, | ||
workerLoaders: { | ||
editorWorkerService: () => | ||
new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker.js', import.meta.url), { | ||
type: 'module' | ||
}) | ||
} | ||
}); | ||
} | ||
|
||
const wrapper = new MonacoEditorLanguageClientWrapper(); | ||
|
||
async function initPHPWrapper() { | ||
if (wrapper.isStarted()) { | ||
console.warn('Editor was already started!'); | ||
} else { | ||
const fileSystemProvider = new RegisteredFileSystemProvider(false); | ||
|
||
registerFileSystemOverlay(1, fileSystemProvider); | ||
const userConfig = createPHPUserConfig('/workspace', '', '/workspace/hello.php'); | ||
const htmlElement = document.getElementById('monaco-editor-root'); | ||
|
||
await wrapper.init(userConfig); | ||
await wrapper.start(htmlElement); | ||
|
||
wrapper.getModelRefs()?.modelRef?.object?.setLanguageId('php'); | ||
} | ||
} | ||
|
||
async function removePHPWrapper() { | ||
await wrapper.dispose(); | ||
} | ||
|
||
export { configureMonacoWorkers, initPHPWrapper, removePHPWrapper, wrapper }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<script lang="ts"> | ||
import { | ||
configureMonacoWorkers, | ||
initPHPWrapper, | ||
removePHPWrapper, | ||
wrapper | ||
} from '$lib/monaco-editor/languages-config/php/page'; | ||
import PHPHelloWorld from '$lib/monaco-editor/languages-config/php/example-code.php?raw'; | ||
import { WrapperSessionId } from '$lib'; | ||
// Constances | ||
const JUDGE0_LANGUAGE_NAME = 'PHP (7.4.1)'; | ||
const LANGUAGE_CODE = 'php'; | ||
</script> | ||
|
||
<WrapperSessionId | ||
{configureMonacoWorkers} | ||
initLanguageWrapper={initPHPWrapper} | ||
removeLanguageWrapper={removePHPWrapper} | ||
{wrapper} | ||
languageCodeExample={PHPHelloWorld} | ||
judge0LanguageName={JUDGE0_LANGUAGE_NAME} | ||
languageCode={LANGUAGE_CODE} | ||
/> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
node_modules |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
FROM ubuntu:22.04 | ||
|
||
# Install Node | ||
RUN apt update && \ | ||
apt upgrade -y && \ | ||
apt install -y ca-certificates curl gnupg unzip | ||
|
||
RUN mkdir -p /etc/apt/keyrings && \ | ||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ | ||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \ | ||
apt update && \ | ||
apt install -y nodejs | ||
|
||
# INSTALL PHP | ||
ENV DEBIAN_FRONTEND noninteractive | ||
RUN apt-get install -y php libapache2-mod-php php-cli php-cgi php-mysql php-pgsql | ||
|
||
WORKDIR /root | ||
|
||
# INSTALL COMPOSER | ||
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" | ||
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" | ||
RUN php composer-setup.php | ||
RUN php -r "unlink('composer-setup.php');" | ||
RUN mv composer.phar /usr/local/bin/composer | ||
|
||
# COPY CODES | ||
COPY src ./src | ||
RUN mkdir /workspace | ||
|
||
# LANGUAGE SERVER | ||
RUN chmod a+x ./src/phpactor/phpactor.phar | ||
|
||
# BACK_END CODE | ||
COPY package.json . | ||
COPY tsconfig.json . | ||
|
||
RUN npm i | ||
|
||
CMD ["npm", "run", "start:server:php"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
{ | ||
"name": "monaco-languageclient-examples", | ||
"version": "2024.6.1", | ||
"description": "Monaco Language client examples", | ||
"author": { | ||
"name": "TypeFox GmbH", | ||
"url": "http://www.typefox.io" | ||
}, | ||
"homepage": "https://github.com/TypeFox/monaco-languageclient/blob/main/packages/examples/README.md", | ||
"license": "MIT", | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/TypeFox/monaco-languageclient.git", | ||
"directory": "packages/examples" | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/TypeFox/monaco-languageclient/issues" | ||
}, | ||
"type": "module", | ||
"main": "./dist/index.js", | ||
"module": "./dist/index.js", | ||
"exports": { | ||
".": { | ||
"types": "./dist/index.d.ts", | ||
"default": "./dist/index.js" | ||
}, | ||
"./node": { | ||
"types": "./dist/node.d.ts", | ||
"default": "./dist/node.js" | ||
}, | ||
"./json-client": { | ||
"types": "./dist/json/client/wrapperWs.d.ts", | ||
"default": "./dist/json/client/wrapperWs.js" | ||
}, | ||
"./python-client": { | ||
"types": "./dist/python/client/main.d.ts", | ||
"default": "./dist/python/client/main.js" | ||
} | ||
}, | ||
"typesVersions": { | ||
"*": { | ||
".": [ | ||
"dist/index" | ||
], | ||
"node": [ | ||
"dist/node" | ||
], | ||
"json-client": [ | ||
"dist/json/client/wrapperWs" | ||
], | ||
"python-client": [ | ||
"dist/python/client/main" | ||
] | ||
} | ||
}, | ||
"dependencies": { | ||
"@codingame/monaco-vscode-configuration-service-override": "~5.2.0", | ||
"@codingame/monaco-vscode-editor-service-override": "^5.2.0", | ||
"@codingame/monaco-vscode-files-service-override": "~5.2.0", | ||
"@codingame/monaco-vscode-groovy-default-extension": "~5.2.0", | ||
"@codingame/monaco-vscode-javascript-default-extension": "~5.2.0", | ||
"@codingame/monaco-vscode-json-default-extension": "~5.2.0", | ||
"@codingame/monaco-vscode-keybindings-service-override": "~5.2.0", | ||
"@codingame/monaco-vscode-lifecycle-service-override": "~5.2.0", | ||
"@codingame/monaco-vscode-localization-service-override": "~5.2.0", | ||
"@codingame/monaco-vscode-python-default-extension": "~5.2.0", | ||
"@codingame/monaco-vscode-standalone-json-language-features": "~5.2.0", | ||
"@codingame/monaco-vscode-standalone-languages": "~5.2.0", | ||
"@codingame/monaco-vscode-standalone-typescript-language-features": "~5.2.0", | ||
"@codingame/monaco-vscode-textmate-service-override": "~5.2.0", | ||
"@codingame/monaco-vscode-theme-defaults-default-extension": "~5.2.0", | ||
"@codingame/monaco-vscode-theme-service-override": "~5.2.0", | ||
"@codingame/monaco-vscode-typescript-basics-default-extension": "~5.2.0", | ||
"@codingame/monaco-vscode-typescript-language-features-default-extension": "~5.2.0", | ||
"@typefox/monaco-editor-react": "~4.2.0", | ||
"express": "~4.19.2", | ||
"langium": "~3.0.0", | ||
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~5.2.0", | ||
"monaco-editor-wrapper": "~5.2.0", | ||
"monaco-languageclient": "~8.5.0", | ||
"pyright": "~1.1.365", | ||
"react": "~18.3.1", | ||
"react-dom": "~18.3.1", | ||
"request-light": "~0.7.0", | ||
"vscode": "npm:@codingame/monaco-vscode-api@~5.2.0", | ||
"vscode-json-languageservice": "~5.3.11", | ||
"vscode-languageclient": "~9.0.1", | ||
"vscode-languageserver": "~9.0.1", | ||
"vscode-uri": "~3.0.8", | ||
"vscode-ws-jsonrpc": "~3.3.2", | ||
"ws": "~8.17.0" | ||
}, | ||
"devDependencies": { | ||
"@types/express": "~4.17.21", | ||
"@types/ws": "~8.5.10", | ||
"langium-cli": "3.0.3", | ||
"ts-node": "~10.9.1", | ||
"vscode-languageserver-types": "~3.17.5", | ||
"vite-node": "1.6.0" | ||
}, | ||
"volta": { | ||
"node": "20.14.0", | ||
"npm": "10.7.0" | ||
}, | ||
"files": [ | ||
"dist", | ||
"src", | ||
"*.html", | ||
"*.ts", | ||
"README.md", | ||
"CHANGELOG.md", | ||
"LICENSE" | ||
], | ||
"scripts": { | ||
"clean": "vite-node ../../scripts/clean.ts --relativePath packages/examples --recursive --paths dist *.tsbuildinfo resources/vsix", | ||
"compile": "tsc --build tsconfig.src.json", | ||
"resources:download": "vite-node ./build/downloadResources.mts", | ||
"build:msg": "echo Building main examples:", | ||
"build": "npm run build:msg && npm run clean && npm run resources:download && npm run compile", | ||
"build:bundle": "vite --config vite.bundle.config.ts build", | ||
"start:server:json": "node --loader ts-node/esm src/json/server/direct.ts", | ||
"start:server:python": "node --loader ts-node/esm src/python/server/direct.ts", | ||
"start:server:groovy": "node --watch --loader ts-node/esm src/groovy/server/direct.ts", | ||
"langium:generate": "langium generate --file ./src/langium/statemachine/config/langium-config.json", | ||
"start:server:php": "npx vite-node src/php/server/direct.ts" | ||
} | ||
} |
Oops, something went wrong.