@useavalon/avalon 0.1.28 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,21 +10,21 @@
10
10
  *
11
11
  * @module nitro/build-config
12
12
  */
13
- import type { Plugin, UserConfig, BuildOptions } from "vite";
14
- import type { ResolvedAvalonConfig } from "../vite-plugin/types.ts";
15
- import type { AvalonNitroConfig } from "./config.ts";
13
+ import type { Plugin, UserConfig, BuildOptions } from 'vite';
14
+ import type { ResolvedAvalonConfig } from '../vite-plugin/types.ts';
15
+ import type { AvalonNitroConfig } from './config.ts';
16
16
  /**
17
17
  * Build mode for the Avalon application
18
18
  */
19
- export type BuildMode = "client" | "server" | "both";
19
+ export type BuildMode = 'client' | 'server' | 'both';
20
20
  /**
21
21
  * Sourcemap option type
22
22
  */
23
- export type SourcemapOption = boolean | "inline" | "hidden";
23
+ export type SourcemapOption = boolean | 'inline' | 'hidden';
24
24
  /**
25
25
  * Minify option type
26
26
  */
27
- export type MinifyOption = boolean | "oxc" | "esbuild" | "terser";
27
+ export type MinifyOption = boolean | 'oxc' | 'esbuild' | 'terser';
28
28
  /**
29
29
  * Preset-specific build output configuration
30
30
  */
@@ -1 +1 @@
1
- import{DEFAULT_NITRO_CONFIG as e,VALID_V3_PRESETS as t}from"./config.js";export const DEFAULT_BUILD_CONFIG={mode:`both`,clientOutDir:`dist/client`,serverOutDir:`dist/server`,sourcemap:!0,minify:`oxc`,target:`es2020`,ssr:!0,preset:`node_server`,verbose:!1};export const PRESET_OUTPUT_CONFIGS={node_server:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!0,bundleDependencies:!1},node_middleware:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!0,bundleDependencies:!1},vercel:{outputDir:`.vercel/output`,serverEntry:`functions/render.func/index.mjs`,supportsStreaming:!0,bundleDependencies:!0,additionalFiles:[`config.json`]},cloudflare_module:{outputDir:`dist`,serverEntry:`server/index.mjs`,supportsStreaming:!1,bundleDependencies:!0},cloudflare_pages:{outputDir:`dist`,serverEntry:`_worker.js`,supportsStreaming:!1,bundleDependencies:!0,additionalFiles:[`_routes.json`]},deno_deploy:{outputDir:`.output`,serverEntry:`server/index.ts`,supportsStreaming:!0,bundleDependencies:!1},deno_server:{outputDir:`.output`,serverEntry:`server/index.ts`,supportsStreaming:!0,bundleDependencies:!1},netlify_functions:{outputDir:`.netlify`,serverEntry:`functions-internal/render.mjs`,supportsStreaming:!0,bundleDependencies:!0},netlify_edge:{outputDir:`.netlify/edge-functions`,serverEntry:`render.js`,supportsStreaming:!0,bundleDependencies:!0},aws_lambda:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!1,bundleDependencies:!0},azure_swa:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!1,bundleDependencies:!0},firebase_functions:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!0,bundleDependencies:!0},render_com:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!0,bundleDependencies:!1},static:{outputDir:`dist`,serverEntry:``,supportsStreaming:!1,bundleDependencies:!1},browser:{outputDir:`dist`,serverEntry:``,supportsStreaming:!1,bundleDependencies:!0}};export function createClientBuildConfig(e,t={}){let r={...DEFAULT_BUILD_CONFIG,...t};return{outDir:r.clientOutDir,emptyOutDir:!0,sourcemap:r.sourcemap,minify:r.minify,target:r.target,rolldownOptions:{output:{entryFileNames:`[name].[hash].js`,chunkFileNames:`chunks/[name].[hash].js`,assetFileNames:`assets/[name].[hash].[ext]`,codeSplitting:{groups:[{name:`vendor-react`,test:/node_modules\/(react|react-dom)/},{name:`vendor-vue`,test:/node_modules\/(vue|@vue)/},{name:`vendor-svelte`,test:/node_modules\/svelte/},{name:`vendor-preact`,test:/node_modules\/preact/},{name:`vendor-solid`,test:/node_modules\/solid-js/},{name:`vendor-lit`,test:/node_modules\/(lit|@lit)/},{name:`vendor`,test:/node_modules/},{name:`islands`,test:/\/islands\//}]}}},reportCompressedSize:!e.isDev,cssCodeSplit:!0}}export function createServerBuildConfig(t,i,a={}){let s={...DEFAULT_BUILD_CONFIG,...a},c=i.preset??e.preset,l=PRESET_OUTPUT_CONFIGS[c]??PRESET_OUTPUT_CONFIGS.node_server;return{outDir:s.serverOutDir,emptyOutDir:!0,sourcemap:s.sourcemap,minify:s.minify,target:s.target,ssr:!0,rolldownOptions:{input:{index:`./server/index.ts`},output:{format:`esm`,entryFileNames:`[name].mjs`,chunkFileNames:`chunks/[name].[hash].mjs`,preserveModules:!l.bundleDependencies},external:l.bundleDependencies?[]:o(c)}}}function o(e){let t=[/^node:/,/^deno:/];switch(e){case`deno_deploy`:case`deno_server`:return[...t];case`node_server`:return[...t,/^[a-z@]/i];default:return t}}export function getPresetOutputConfig(e){return PRESET_OUTPUT_CONFIGS[e]??PRESET_OUTPUT_CONFIGS.node_server}export function presetSupportsStreaming(e){return getPresetOutputConfig(e).supportsStreaming}export function createCombinedBuildConfig(t,n,r={}){let a=n.preset??e.preset,o=getPresetOutputConfig(a);return{build:{...createClientBuildConfig(t,r),outDir:o.outputDir},define:{__DEV__:!1,__PROD__:!0,"process.env.NODE_ENV":JSON.stringify(`production`),...u(a,o)}}}function u(e,t){let n={__NITRO_PRESET__:JSON.stringify(e),__SUPPORTS_STREAMING__:JSON.stringify(t.supportsStreaming)};if(t.env)for(let[e,r]of Object.entries(t.env))n[`process.env.${e}`]=JSON.stringify(r);return n}export function createNitroBuildPlugin(t,n){let r=n.preset??e.preset,i=getPresetOutputConfig(r);return{name:`avalon:nitro-build`,enforce:`post`,config(e,{command:r}){if(r===`build`)return createCombinedBuildConfig(t,n,{sourcemap:!0,verbose:t.verbose})},buildStart(){t.verbose&&(console.log(`🚀 Avalon Nitro build starting...`),console.log(` Preset: ${r}`),console.log(` Output: ${i.outputDir}`),console.log(` Streaming: ${i.supportsStreaming}`))},writeBundle(){t.verbose&&console.log(`✅ Avalon client build complete`)},closeBundle(){t.verbose&&(console.log(`📦 Avalon build finished`),console.log(` Output directory: ${i.outputDir}`))}}}export function validateBuildConfig(e){let n=[];return e.preset&&(t.includes(e.preset)||n.push(`Unknown preset: ${e.preset}. Valid presets: ${t.join(`, `)}`)),e.mode&&![`client`,`server`,`both`].includes(e.mode)&&n.push(`Invalid build mode: ${e.mode}. Must be 'client', 'server', or 'both'`),e.sourcemap!==void 0&&typeof e.sourcemap!=`boolean`&&![`inline`,`hidden`].includes(e.sourcemap)&&n.push(`Invalid sourcemap option: ${e.sourcemap}`),{valid:n.length===0,errors:n}}export const DEFAULT_SOURCEMAP_CONFIG={enabled:!0,type:!0,includeContent:!0};export function createSourceMapConfig(e,t){return t?{enabled:!0,type:!0,includeContent:!0}:e.includes(`edge`)||e.includes(`cloudflare`)||e.includes(`lambda`)?{enabled:!0,type:`hidden`,includeContent:!1}:{enabled:!0,type:!0,includeContent:!0}}export function getViteSourceMapOption(e){return e.enabled?e.type:!1}export function createSourceMapPlugin(e){return{name:`avalon:sourcemap`,enforce:`post`,config(t,{command:n}){if(n===`build`)return{build:{sourcemap:getViteSourceMapOption(e)},...e.sourceRoot&&{rolldownOptions:{output:{sourcemapPathTransform:t=>`${e.sourceRoot}/${t}`}}}}},generateBundle(t,n){if(!e.enabled)return;let r=Object.keys(n).filter(e=>e.endsWith(`.map`)).length;r>0&&globalThis.__avalonConfig?.verbose&&console.log(`📍 Generated ${r} source map(s)`)}}}
1
+ import{DEFAULT_NITRO_CONFIG as e,VALID_V3_PRESETS as t}from"./config.js";export const DEFAULT_BUILD_CONFIG={mode:`both`,clientOutDir:`dist/client`,serverOutDir:`dist/server`,sourcemap:!0,minify:`oxc`,target:`es2020`,ssr:!0,preset:`node_server`,verbose:!1};export const PRESET_OUTPUT_CONFIGS={node_server:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!0,bundleDependencies:!1},node_middleware:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!0,bundleDependencies:!1},vercel:{outputDir:`.vercel/output`,serverEntry:`functions/render.func/index.mjs`,supportsStreaming:!0,bundleDependencies:!0,additionalFiles:[`config.json`]},cloudflare_module:{outputDir:`dist`,serverEntry:`server/index.mjs`,supportsStreaming:!1,bundleDependencies:!0},cloudflare_pages:{outputDir:`dist`,serverEntry:`_worker.js`,supportsStreaming:!1,bundleDependencies:!0,additionalFiles:[`_routes.json`]},deno_deploy:{outputDir:`.output`,serverEntry:`server/index.ts`,supportsStreaming:!0,bundleDependencies:!1},deno_server:{outputDir:`.output`,serverEntry:`server/index.ts`,supportsStreaming:!0,bundleDependencies:!1},netlify_functions:{outputDir:`.netlify`,serverEntry:`functions-internal/render.mjs`,supportsStreaming:!0,bundleDependencies:!0},netlify_edge:{outputDir:`.netlify/edge-functions`,serverEntry:`render.js`,supportsStreaming:!0,bundleDependencies:!0},aws_lambda:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!1,bundleDependencies:!0},azure_swa:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!1,bundleDependencies:!0},firebase_functions:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!0,bundleDependencies:!0},render_com:{outputDir:`.output`,serverEntry:`server/index.mjs`,supportsStreaming:!0,bundleDependencies:!1},static:{outputDir:`dist`,serverEntry:``,supportsStreaming:!1,bundleDependencies:!1},browser:{outputDir:`dist`,serverEntry:``,supportsStreaming:!1,bundleDependencies:!0}};export function createClientBuildConfig(e,t={}){let r={...DEFAULT_BUILD_CONFIG,...t};return{outDir:r.clientOutDir,emptyOutDir:!0,sourcemap:r.sourcemap,minify:r.minify,target:r.target,rolldownOptions:{output:{entryFileNames:`[name].[hash].js`,chunkFileNames:`chunks/[name].[hash].js`,assetFileNames:`assets/[name].[hash].[ext]`,codeSplitting:{groups:[{name:`vendor-react`,test:/node_modules\/(react|react-dom)/},{name:`vendor-vue`,test:/node_modules\/(vue|@vue)/},{name:`vendor-svelte`,test:/node_modules\/svelte/},{name:`vendor-preact`,test:/node_modules\/preact/},{name:`vendor-solid`,test:/node_modules\/solid-js/},{name:`vendor-lit`,test:/node_modules\/(lit|@lit)/},{name:`vendor`,test:/node_modules/},{name:`islands`,test:/\/islands\//}]}}},reportCompressedSize:!e.isDev,cssCodeSplit:!0}}export function createServerBuildConfig(t,i,a={}){let s={...DEFAULT_BUILD_CONFIG,...a},c=i.preset??e.preset,l=PRESET_OUTPUT_CONFIGS[c]??PRESET_OUTPUT_CONFIGS.node_server;return{outDir:s.serverOutDir,emptyOutDir:!0,sourcemap:s.sourcemap,minify:s.minify,target:s.target,ssr:!0,rolldownOptions:{input:{index:`./server/index.ts`},output:{format:`esm`,entryFileNames:`[name].mjs`,chunkFileNames:`chunks/[name].[hash].mjs`,preserveModules:!l.bundleDependencies},external:l.bundleDependencies?[]:o(c)}}}function o(e){let t=[/^node:/,/^deno:/];switch(e){case`deno_deploy`:case`deno_server`:return[...t];case`node_server`:return[...t,/^[a-z@]/i];default:return t}}export function getPresetOutputConfig(e){return PRESET_OUTPUT_CONFIGS[e]??PRESET_OUTPUT_CONFIGS.node_server}export function presetSupportsStreaming(e){return getPresetOutputConfig(e).supportsStreaming}export function createCombinedBuildConfig(t,n,r={}){let a=n.preset??e.preset,o=getPresetOutputConfig(a);return{build:{...createClientBuildConfig(t,r),outDir:o.outputDir},define:{__DEV__:!1,__PROD__:!0,"process.env.NODE_ENV":JSON.stringify(`production`),...u(a,o)}}}function u(e,t){let n={__NITRO_PRESET__:JSON.stringify(e),__SUPPORTS_STREAMING__:JSON.stringify(t.supportsStreaming)};if(t.env)for(let[e,r]of Object.entries(t.env))n[`process.env.${e}`]=JSON.stringify(r);return n}export function createNitroBuildPlugin(t,n){let r=n.preset??e.preset,i=getPresetOutputConfig(r);return{name:`avalon:nitro-build`,enforce:`post`,config(e,{command:r}){if(r===`build`)return createCombinedBuildConfig(t,n,{sourcemap:!0,verbose:t.verbose})},buildStart(){t.verbose&&(console.log(`🚀 Avalon Nitro build starting...`),console.log(` Preset: ${r}`),console.log(` Output: ${i.outputDir}`),console.log(` Streaming: ${i.supportsStreaming}`))},writeBundle(){t.verbose&&console.log(`✅ Avalon client build complete`)},closeBundle(){t.verbose&&(console.log(`📦 Avalon build finished`),console.log(` Output directory: ${i.outputDir}`)),(process.env.CI||process.env.NETLIFY)&&setTimeout(()=>process.exit(0),5e3)}}}export function validateBuildConfig(e){let n=[];return e.preset&&(t.includes(e.preset)||n.push(`Unknown preset: ${e.preset}. Valid presets: ${t.join(`, `)}`)),e.mode&&![`client`,`server`,`both`].includes(e.mode)&&n.push(`Invalid build mode: ${e.mode}. Must be 'client', 'server', or 'both'`),e.sourcemap!==void 0&&typeof e.sourcemap!=`boolean`&&![`inline`,`hidden`].includes(e.sourcemap)&&n.push(`Invalid sourcemap option: ${e.sourcemap}`),{valid:n.length===0,errors:n}}export const DEFAULT_SOURCEMAP_CONFIG={enabled:!0,type:!0,includeContent:!0};export function createSourceMapConfig(e,t){return t?{enabled:!0,type:!0,includeContent:!0}:e.includes(`edge`)||e.includes(`cloudflare`)||e.includes(`lambda`)?{enabled:!0,type:`hidden`,includeContent:!1}:{enabled:!0,type:!0,includeContent:!0}}export function getViteSourceMapOption(e){return e.enabled?e.type:!1}export function createSourceMapPlugin(e){return{name:`avalon:sourcemap`,enforce:`post`,config(t,{command:n}){if(n===`build`)return{build:{sourcemap:getViteSourceMapOption(e)},...e.sourceRoot&&{rolldownOptions:{output:{sourcemapPathTransform:t=>`${e.sourceRoot}/${t}`}}}}},generateBundle(t,n){if(!e.enabled)return;let r=Object.keys(n).filter(e=>e.endsWith(`.map`)).length;r>0&&globalThis.__avalonConfig?.verbose&&console.log(`📍 Generated ${r} source map(s)`)}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useavalon/avalon",
3
- "version": "0.1.28",
3
+ "version": "0.1.30",
4
4
  "description": "Multi-framework islands architecture for the modern web",
5
5
  "license": "MIT",
6
6
  "type": "module",