Frontend uudelleenrakennettu: Astro-komponentit, Wasm pääsäikeessä, ei Workeria

Vanha frontend siirretty temp/. Uusi rakenne:
- StatusBar.astro, Terminal.astro, Editor.astro, Guide.astro
- global.css erillinen
- Wasm pääsäikeessä (ei Worker — yksinkertainen, debugattava)
- Tab-completion, dropdown, projektikortti, Monaco, GUIDE.md
- Ei tokenisointia eikä koodilaboratoriota

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jaakko Vanhala
2026-04-09 20:17:39 +03:00
parent e3fdb91ac5
commit a8c4af0975
9617 changed files with 996171 additions and 5349 deletions

View File

@@ -0,0 +1,26 @@
import type { SharpImageServiceConfig } from '../assets/services/sharp.js';
import type { MemoryCacheProviderOptions } from '../core/cache/memory-provider.js';
import type { CacheProviderConfig } from '../core/cache/types.js';
import type { ImageServiceConfig } from '../types/public/index.js';
export { fontProviders } from '../assets/fonts/providers/index.js';
export { mergeConfig } from '../core/config/merge.js';
export { validateConfig } from '../core/config/validate.js';
export { envField } from '../env/config.js';
export { defineConfig, getViteConfig } from './index.js';
export { sessionDrivers } from '../core/session/drivers.js';
/**
* Return the configuration needed to use the Sharp-based image service
*/
export declare function sharpImageService(config?: SharpImageServiceConfig): ImageServiceConfig;
/**
* Return the configuration needed to use the passthrough image service. This image services does not perform
* any image transformations, and is mainly useful when your platform does not support other image services, or you are
* not using Astro's built-in image processing.
* See: https://docs.astro.build/en/guides/images/#configure-no-op-passthrough-service
*/
export declare function passthroughImageService(): ImageServiceConfig;
/**
* Return the configuration needed to use the built-in in-memory LRU cache provider.
* This is a runtime-agnostic provider suitable for single-instance deployments.
*/
export declare function memoryCache(config?: MemoryCacheProviderOptions): CacheProviderConfig<MemoryCacheProviderOptions>;

View File

@@ -0,0 +1,37 @@
import { fontProviders } from "../assets/fonts/providers/index.js";
import { mergeConfig } from "../core/config/merge.js";
import { validateConfig } from "../core/config/validate.js";
import { envField } from "../env/config.js";
import { defineConfig, getViteConfig } from "./index.js";
import { sessionDrivers } from "../core/session/drivers.js";
function sharpImageService(config = {}) {
return {
entrypoint: "astro/assets/services/sharp",
config
};
}
function passthroughImageService() {
return {
entrypoint: "astro/assets/services/noop",
config: {}
};
}
function memoryCache(config = {}) {
return {
name: "memory",
entrypoint: "astro/cache/memory",
config
};
}
export {
defineConfig,
envField,
fontProviders,
getViteConfig,
memoryCache,
mergeConfig,
passthroughImageService,
sessionDrivers,
sharpImageService,
validateConfig
};

View File

@@ -0,0 +1,13 @@
import type { UserConfig as ViteUserConfig, UserConfigFn as ViteUserConfigFn } from 'vite';
import type { FontProvider } from '../assets/fonts/types.js';
import type { SessionDriverConfig, SessionDriverName } from '../core/session/types.js';
import type { AstroInlineConfig, AstroUserConfig, Locales } from '../types/public/config.js';
/**
* See the full Astro Configuration API Documentation
* https://astro.build/config
*/
export declare function defineConfig<const TLocales extends Locales = never, const TDriver extends SessionDriverName | SessionDriverConfig = never, const TFontProviders extends Array<FontProvider> = never>(config: AstroUserConfig<TLocales, TDriver, TFontProviders>): AstroUserConfig<TLocales, TDriver, TFontProviders>;
/**
* Use Astro to generate a fully resolved Vite config
*/
export declare function getViteConfig(userViteConfig: ViteUserConfig, inlineAstroConfig?: AstroInlineConfig): ViteUserConfigFn;

View File

@@ -0,0 +1,45 @@
import { createRoutesList } from "../core/routing/create-manifest.js";
import { getPrerenderDefault } from "../prerender/utils.js";
function defineConfig(config) {
return config;
}
function getViteConfig(userViteConfig, inlineAstroConfig = {}) {
return async ({ mode, command }) => {
const cmd = command === "serve" ? "dev" : "build";
const [
{ mergeConfig },
{ createNodeLogger },
{ resolveConfig, createSettings },
{ createVite },
{ runHookConfigSetup, runHookConfigDone }
] = await Promise.all([
import("vite"),
import("../core/logger/node.js"),
import("../core/config/index.js"),
import("../core/create-vite.js"),
import("../integrations/hooks.js")
]);
const logger = createNodeLogger(inlineAstroConfig);
const { astroConfig: config } = await resolveConfig(inlineAstroConfig, cmd);
let settings = await createSettings(config, inlineAstroConfig.logLevel, userViteConfig.root);
settings = await runHookConfigSetup({ settings, command: cmd, logger });
const routesList = await createRoutesList(
{
settings
},
logger,
{ dev: true }
);
settings.buildOutput = getPrerenderDefault(settings.config) ? "static" : "server";
const viteConfig = await createVite(
{},
{ routesList, settings, command: cmd, logger, mode, sync: false }
);
await runHookConfigDone({ settings, logger });
return mergeConfig(viteConfig, userViteConfig);
};
}
export {
defineConfig,
getViteConfig
};