diff --git a/eslint.config.js b/eslint.config.js index 081f9e9..9e6db90 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,6 +1,15 @@ import antfu from '@antfu/eslint-config' import tailwind from 'eslint-plugin-tailwindcss' +import tailwindConfig from 'eslint-plugin-tailwindcss/lib/config/rules.js' + +const mappedTailwindConfig = {} +for (const [key, value] of Object.entries(tailwindConfig)) { + mappedTailwindConfig[key.replace('tailwindcss/', 'tw/')] = [value, { + config: 'packages/repl/tailwind.config.js', + }] +} + export default antfu({ ignores: [ 'src/components/Editor/utils/*.json', @@ -10,6 +19,7 @@ export default antfu({ solid: true, yaml: false, rules: { + 'node/prefer-global/process': 'off', 'style/multiline-ternary': 'off', 'curly': ['error', 'multi-line'], 'style/brace-style': ['error', '1tbs', { allowSingleLine: true }], @@ -21,8 +31,9 @@ export default antfu({ 'ts/no-redeclare': 'off', 'unused-imports/no-unused-imports': 'error', 'ts/no-empty-object-type': 'off', + ...mappedTailwindConfig, }, plugins: { tw: tailwind, }, -}, tailwind.configs['flat/recommended']) +}) diff --git a/package.json b/package.json index 59c1295..36f12e0 100644 --- a/package.json +++ b/package.json @@ -1,68 +1,27 @@ { - "name": "mtcute-repl", + "name": "mtcute-repl-workspace", "type": "module", "version": "0.0.0", "private": true, "packageManager": "pnpm@9.5.0", "scripts": { - "dev": "vite", - "build": "tsc -b && vite build", - "preview": "vite preview" - }, - "dependencies": { - "@badrap/valita": "^0.4.2", - "@corvu/otp-field": "^0.1.4", - "@corvu/resizable": "^0.2.3", - "@fuman/fetch": "^0.0.8", - "@fuman/io": "0.0.8", - "@fuman/utils": "0.0.4", - "@kobalte/core": "^0.13.7", - "@mtcute/convert": "^0.19.4", - "@mtcute/web": "^0.19.5", - "@nanostores/persistent": "^0.10.2", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "esbuild": "^0.24.2", - "fflate": "^0.8.2", - "filesize": "^10.1.6", - "idb": "^8.0.1", - "lucide-solid": "^0.445.0", - "memfs": "^4.17.0", - "monaco-editor": "0.52.0", - "monaco-editor-core": "0.52.0", - "monaco-editor-textmate": "^4.0.0", - "monaco-textmate": "^3.0.1", - "nanoid": "^5.0.9", - "nanostores": "^0.11.3", - "onigasm": "^2.2.5", - "semver": "^7.6.3", - "solid-icons": "^1.1.0", - "solid-js": "^1.9.4", - "solid-transition-group": "^0.2.3", - "tailwind-merge": "^2.6.0", - "tailwindcss-animate": "^1.0.7", - "ts-blank-space": "^0.4.4", - "uqr": "^0.1.2" + "dev": "pnpm -r --parallel dev" }, "devDependencies": { "@antfu/eslint-config": "^3.13.0", "@catppuccin/vscode": "^3.16.0", + "@fuman/fetch": "^0.0.8", "@types/node": "^22.10.5", "@types/semver": "^7.5.8", "autoprefixer": "^10.4.20", + "esbuild": "^0.24.2", "eslint-plugin-solid": "^0.14.5", "eslint-plugin-tailwindcss": "^3.17.5", "monaco-vscode-textmate-theme-converter": "^0.1.7", "plist2": "^1.1.4", - "postcss": "^8.4.49", "tailwindcss": "^3.4.17", "typescript": "^5.7.3", "vite": "^5.4.11", "vite-plugin-solid": "^2.11.0" - }, - "pnpm": { - "patchedDependencies": { - "vite-plugin-externalize-dependencies@1.0.1": "patches/vite-plugin-externalize-dependencies@1.0.1.patch" - } } } diff --git a/index.html b/packages/repl/index.html similarity index 89% rename from index.html rename to packages/repl/index.html index d812434..9e27e6a 100644 --- a/index.html +++ b/packages/repl/index.html @@ -4,7 +4,7 @@ - @mtcute/repl + @mtcute/playground
diff --git a/packages/repl/package.json b/packages/repl/package.json new file mode 100644 index 0000000..42e8d17 --- /dev/null +++ b/packages/repl/package.json @@ -0,0 +1,41 @@ +{ + "name": "mtcute-repl", + "type": "module", + "version": "0.0.0", + "private": true, + "packageManager": "pnpm@9.5.0", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@corvu/otp-field": "^0.1.4", + "@corvu/resizable": "^0.2.3", + "@fuman/utils": "0.0.4", + "@kobalte/core": "^0.13.7", + + "@nanostores/persistent": "^0.10.2", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "filesize": "^10.1.6", + "lucide-solid": "^0.445.0", + "monaco-editor": "0.52.0", + "monaco-editor-core": "0.52.0", + "monaco-editor-textmate": "^4.0.0", + "monaco-textmate": "^3.0.1", + "mtcute-repl-worker": "workspace:*", + "nanoid": "^5.0.9", + "nanostores": "^0.11.3", + "onigasm": "^2.2.5", + "solid-icons": "^1.1.0", + "solid-js": "^1.9.4", + "solid-transition-group": "^0.2.3", + "ts-blank-space": "^0.4.4" + }, + "devDependencies": { + "postcss": "^8.4.49", + "tailwind-merge": "^2.6.0", + "tailwindcss-animate": "^1.0.7" + } +} diff --git a/postcss.config.js b/packages/repl/postcss.config.js similarity index 100% rename from postcss.config.js rename to packages/repl/postcss.config.js diff --git a/src/App.tsx b/packages/repl/src/App.tsx similarity index 73% rename from src/App.tsx rename to packages/repl/src/App.tsx index 021fea8..b04cbfc 100644 --- a/src/App.tsx +++ b/packages/repl/src/App.tsx @@ -1,22 +1,33 @@ -import Resizable from '@corvu/resizable' -import { createSignal, lazy } from 'solid-js' +import { workerInit } from 'mtcute-repl-worker/client' +import { createSignal, lazy, onMount, Show } from 'solid-js' import { EditorTabs } from './components/editor/EditorTabs.tsx' import { NavbarMenu } from './components/nav/NavbarMenu.tsx' import { Runner } from './components/runner/Runner.tsx' import { SettingsDialog, type SettingsTab } from './components/settings/Settings.tsx' import { Updater } from './components/Updater.tsx' -import { ResizableHandle, ResizablePanel } from './lib/components/ui/resizable.tsx' +import { Resizable, ResizableHandle, ResizablePanel } from './lib/components/ui/resizable.tsx' const Editor = lazy(() => import('./components/editor/Editor.tsx')) export function App() { - const [versions, setVersions] = createSignal | undefined>(undefined) + const [updating, setUpdating] = createSignal(true) const [showSettings, setShowSettings] = createSignal(false) const [settingsTab, setSettingsTab] = createSignal('accounts') + let workerIframe!: HTMLIFrameElement + + onMount(() => { + workerInit(workerIframe) + }) + return (
+