From 3e40b46bf4d965fea6f4fc71a4859bdf47884cbd Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 17:40:20 +0100 Subject: [PATCH 01/13] Change debug to release in ci. --- tests/web-app/package.json | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/web-app/package.json b/tests/web-app/package.json index 7cf58f3..83641ee 100644 --- a/tests/web-app/package.json +++ b/tests/web-app/package.json @@ -1,14 +1,18 @@ { - "name": "app", + "name": "web-app", "version": "1.0.0", "description": "", "main": "App.tsx", "scripts": { - "build": "../../target/release/metassr --debug-mode=metacall build", - "build:ssg": "../../target/release/metassr --debug-mode=metacall build -t ssg", - "start": "../../target/release/metassr --debug-mode=metacall run ", - "start:ssr": "../../target/release/metassr --debug-mode=metacall run --serve", - "dev": "npm run build && ../../target/release/metassr --debug-mode=metacall dev" + "build": "../../target/release/metassr build", + "build:ssg": "../../target/release/metassr build -t ssg", + "start": "../../target/release/metassr run ", + "start:ssr": "../../target/release/metassr run --serve", + "build:debug": "../../target/debug/metassr --debug-mode=metacall build", + "build:debug:ssg": "../../target/debug/metassr --debug-mode=metacall build -t ssg", + "start:debug": "../../target/debug/metassr --debug-mode=metacall run", + "start:debug:ssg": "../../target/debug/metassr --debug-mode=metacall run --serve", + "dev": "npm run build:debug && ../../target/release/metassr --debug-mode=metacall dev" }, "devDependencies": { "@types/react": "^18.0.24", From f224cf5f464e639b219a4b276eb992ed7bbd30a6 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 19:57:07 +0100 Subject: [PATCH 02/13] Solve memory issue with async api. --- Cargo.lock | 38 +- Cargo.toml | 5 +- .../metassr-build/src/server/render_exec.rs | 2 +- .../metassr-build/src/server/renderer/head.rs | 2 +- crates/metassr-bundler/src/bundle.js | 10 +- crates/metassr-bundler/src/lib.rs | 6 +- tests/web-app/package-lock.json | 713 ++++++++++-------- tests/web-app/package.json | 2 +- 8 files changed, 419 insertions(+), 359 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0eb7ec6..28ed3fc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -772,7 +772,7 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "logger" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "chrono", "nu-ansi-term 0.50.0", @@ -813,9 +813,9 @@ dependencies = [ [[package]] name = "metacall" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f06da67fa5540d1c0554bf40165a3c30bff05c1c876e43be519e83aeee24415" +checksum = "3a4426ccc6c29749c4ef02c68a2ff075770b02a2a6bdc04c03d3101483dd95c9" dependencies = [ "metacall-inline", "metacall-sys", @@ -833,13 +833,13 @@ dependencies = [ [[package]] name = "metacall-sys" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6890fa4fc6790993c82dfd736389499d6c71c7ae798dc9bc8cbabf5df68611" +checksum = "90573f16c6ecec86326c251dba0651b0cdc67aae1885970a8ea457df25302b9f" [[package]] name = "metassr" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "axum", @@ -848,7 +848,7 @@ dependencies = [ "inquire", "lazy_static", "logger", - "metacall 0.5.1", + "metacall 0.5.3", "metacall-sys", "metassr-build", "metassr-bundler", @@ -872,11 +872,11 @@ dependencies = [ [[package]] name = "metassr-build" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "lazy_static", - "metacall 0.5.1", + "metacall 0.5.3", "metacall-sys", "metassr-bundler", "metassr-fs-analyzer", @@ -888,11 +888,11 @@ dependencies = [ [[package]] name = "metassr-bundler" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "lazy_static", - "metacall 0.5.1", + "metacall 0.5.3", "metacall-sys", "metassr-utils", "serde_json", @@ -901,14 +901,14 @@ dependencies = [ [[package]] name = "metassr-cli" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "axum", "clap", "inquire", "logger", - "metacall 0.5.1", + "metacall 0.5.3", "metassr-build", "metassr-create", "metassr-server", @@ -921,7 +921,7 @@ dependencies = [ [[package]] name = "metassr-create" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "walkdir", @@ -929,7 +929,7 @@ dependencies = [ [[package]] name = "metassr-fs-analyzer" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "metassr-utils", @@ -939,14 +939,14 @@ dependencies = [ [[package]] name = "metassr-html" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", ] [[package]] name = "metassr-server" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "axum", @@ -972,7 +972,7 @@ dependencies = [ [[package]] name = "metassr-utils" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "serde", @@ -981,7 +981,7 @@ dependencies = [ [[package]] name = "metassr-watcher" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "notify", diff --git a/Cargo.toml b/Cargo.toml index 057672c..3965175 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,6 @@ license = "MIT" license-file = "LICENSE" default-run = "metassr" - [package.metadata] authors = ["Mohamed Emad (hulxxv@gmail.com)"] @@ -15,7 +14,7 @@ authors = ["Mohamed Emad (hulxxv@gmail.com)"] anyhow = "1.0.82" chrono = "0.4.38" clap = { version = "4.5.4", features = ["derive"] } -metacall = "0.5.1" +metacall = "0.5.3" nu-ansi-term = "0.50.0" walkdir = "2.5.0" serde_json = "1.0.120" @@ -42,7 +41,7 @@ metassr-fs-analyzer = { path = "crates/metassr-fs-analyzer" } metassr-watcher = { path = "crates/metassr-watcher" } [build-dependencies] -metacall-sys = "0.1.1" +metacall-sys = "0.1.2" [workspace] members = [ diff --git a/crates/metassr-build/src/server/render_exec.rs b/crates/metassr-build/src/server/render_exec.rs index cabaee9..435accd 100644 --- a/crates/metassr-build/src/server/render_exec.rs +++ b/crates/metassr-build/src/server/render_exec.rs @@ -35,7 +35,7 @@ impl Exec for RenderExec { type Output = String; fn exec(&self) -> Result { // let path = self.0.strip_prefix(current_dir()?)?; - if let Err(e) = load::from_single_file("node", &self.path) { + if let Err(e) = load::from_single_file(load::Tag::NodeJS, &self.path) { return Err(anyhow!( "Cannot load render script: {e:?} \n path: {:#?}", self.path diff --git a/crates/metassr-build/src/server/renderer/head.rs b/crates/metassr-build/src/server/renderer/head.rs index bc33d10..ae6a847 100644 --- a/crates/metassr-build/src/server/renderer/head.rs +++ b/crates/metassr-build/src/server/renderer/head.rs @@ -34,7 +34,7 @@ impl HeadRenderer { } let _ = load::from_single_file( - "node", + load::Tag::NodeJS, format!("{}/head.js", self.cache_dir.path().display()), ); guard.make_true() diff --git a/crates/metassr-bundler/src/bundle.js b/crates/metassr-bundler/src/bundle.js index ed9b75d..b02edb2 100644 --- a/crates/metassr-bundler/src/bundle.js +++ b/crates/metassr-bundler/src/bundle.js @@ -88,7 +88,7 @@ const defaultConfig = { function createBundlerConfig(entry, dist) { return { ...defaultConfig, // Merge with the default config - entry: safelyParseJSON(entry) ?? entry, + entry: safelyParseJSON(entry) || entry, output: dist ? { ...defaultConfig.output, path: join(process.cwd(), dist) @@ -121,7 +121,7 @@ function createBundlerConfig(entry, dist) { * @param {string} dist - The distribution path where bundled files will be output. * @returns {Promise} - Resolves when bundling is successful, rejects if there is an error. */ -async function web_bundling(entry, dist) { +async function webBundling(entry, dist) { // Create a bundler instance using the config and parameters const compiler = rspack(createBundlerConfig(entry, dist)); @@ -132,9 +132,9 @@ async function web_bundling(entry, dist) { return reject(new Error(`Bundling failed: ${error.message}`)); } - if (stats?.hasErrors()) { + if (stats && stats.hasErrors()) { const info = stats.toJson(); - const errors = info.errors?.map(e => e.message).join('\n') || 'Unknown compilation errors'; + const errors = info.errors ? info.errors.map(e => e.message).join('\n') : 'Unknown compilation errors'; return reject(new Error(`Compilation errors:\n${errors}`)); } @@ -144,5 +144,5 @@ async function web_bundling(entry, dist) { } module.exports = { - web_bundling // Export the web_bundling function to call it via metacall + web_bundling: webBundling // Export the web_bundling function to call it via metacall }; \ No newline at end of file diff --git a/crates/metassr-bundler/src/lib.rs b/crates/metassr-bundler/src/lib.rs index e7ad259..6a35cf4 100644 --- a/crates/metassr-bundler/src/lib.rs +++ b/crates/metassr-bundler/src/lib.rs @@ -100,7 +100,7 @@ impl<'a> WebBundler<'a> { let mut guard = IS_BUNDLING_SCRIPT_LOADED.lock().unwrap(); if !guard.is_true() { // If not loaded, attempt to load the script into MetaCall - if let Err(e) = load::from_memory("node", BUILD_SCRIPT) { + if let Err(e) = load::from_memory(load::Tag::NodeJS, BUILD_SCRIPT) { return Err(anyhow!("Cannot load bundling script: {e:?}")); } // Mark the script as loaded @@ -110,7 +110,7 @@ impl<'a> WebBundler<'a> { drop(guard); // Resolve callback when the bundling process is completed successfully - fn resolve(result: Box, _: Box) -> Box { + fn resolve(result: Box, _: Option>) -> Box { let compilation_wait = &*Arc::clone(&IS_COMPILATION_WAIT); let mut started = compilation_wait.checker.lock().unwrap(); @@ -122,7 +122,7 @@ impl<'a> WebBundler<'a> { } // Reject callback for handling errors during the bundling process - fn reject(err: Box, _: Box) -> Box { + fn reject(err: Box, _: Option>) -> Box { let compilation_wait = &*Arc::clone(&IS_COMPILATION_WAIT); let mut started = compilation_wait.checker.lock().unwrap(); diff --git a/tests/web-app/package-lock.json b/tests/web-app/package-lock.json index 19f25f8..d806040 100644 --- a/tests/web-app/package-lock.json +++ b/tests/web-app/package-lock.json @@ -1,330 +1,391 @@ { - "name": "app", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "app", - "version": "1.0.0", - "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1" - }, - "devDependencies": { - "@rspack/core": "^0.7.5", - "@types/react": "^18.0.24", - "@types/react-dom": "^18.0.8" - } - }, - "node_modules/@module-federation/runtime": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.1.6.tgz", - "integrity": "sha512-nj6a+yJ+QxmcE89qmrTl4lphBIoAds0PFPVGnqLRWflwAP88jrCcrrTqRhARegkFDL+wE9AE04+h6jzlbIfMKg==", - "dev": true, - "dependencies": { - "@module-federation/sdk": "0.1.6" - } - }, - "node_modules/@module-federation/runtime-tools": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.1.6.tgz", - "integrity": "sha512-7ILVnzMIa0Dlc0Blck5tVZG1tnk1MmLnuZpLOMpbdW+zl+N6wdMjjHMjEZFCUAJh2E5XJ3BREwfX8Ets0nIkLg==", - "dev": true, - "dependencies": { - "@module-federation/runtime": "0.1.6", - "@module-federation/webpack-bundler-runtime": "0.1.6" - } - }, - "node_modules/@module-federation/sdk": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.1.6.tgz", - "integrity": "sha512-qifXpyYLM7abUeEOIfv0oTkguZgRZuwh89YOAYIZJlkP6QbRG7DJMQvtM8X2yHXm9PTk0IYNnOJH0vNQCo6auQ==", - "dev": true - }, - "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.1.6.tgz", - "integrity": "sha512-K5WhKZ4RVNaMEtfHsd/9CNCgGKB0ipbm/tgweNNeC11mEuBTNxJ09Y630vg3WPkKv9vfMCuXg2p2Dk+Q/KWTSA==", - "dev": true, - "dependencies": { - "@module-federation/runtime": "0.1.6", - "@module-federation/sdk": "0.1.6" - } - }, - "node_modules/@rspack/binding": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-0.7.5.tgz", - "integrity": "sha512-XcdOvaCz1mWWwr5vmEY9zncdInrjINEh60EWkYdqtCA67v7X7rB1fe6n4BeAI1+YLS2Eacj+lytlr+n7I+DYVg==", - "dev": true, - "optionalDependencies": { - "@rspack/binding-darwin-arm64": "0.7.5", - "@rspack/binding-darwin-x64": "0.7.5", - "@rspack/binding-linux-arm64-gnu": "0.7.5", - "@rspack/binding-linux-arm64-musl": "0.7.5", - "@rspack/binding-linux-x64-gnu": "0.7.5", - "@rspack/binding-linux-x64-musl": "0.7.5", - "@rspack/binding-win32-arm64-msvc": "0.7.5", - "@rspack/binding-win32-ia32-msvc": "0.7.5", - "@rspack/binding-win32-x64-msvc": "0.7.5" - } - }, - "node_modules/@rspack/binding-darwin-arm64": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-0.7.5.tgz", - "integrity": "sha512-mNBIm36s1BA7v4SL/r4f3IXIsjyH5CZX4eXMRPE52lBc3ClVuUB7d/8zk8dkyjJCMAj8PsZSnAJ3cfXnn7TN4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-darwin-x64": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-0.7.5.tgz", - "integrity": "sha512-teLK0TB1x0CsvaaiCopsFx4EvJe+/Hljwii6R7C9qOZs5zSOfbT/LQ202eA0sAGodCncARCGaXVrsekbrRYqeA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.7.5.tgz", - "integrity": "sha512-/24UytJXrK+7CsucDb30GCKYIJ8nG6ceqbJyOtsJv9zeArNLHkxrYGSyjHJIpQfwVN17BPP4RNOi+yIZ3ZgDyA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.7.5.tgz", - "integrity": "sha512-6RcxG42mLM01Pa6UYycACu/Nu9qusghAPUJumb8b8x5TRIDEtklYC5Ck6Rmagm+8E0ucMude2E/D4rMdIFcS3A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.7.5.tgz", - "integrity": "sha512-R0Lu4CJN2nWMW7WzPBuCIju80cQPpcaqwKJDj/quwQySpJJZ6c5qGwB8mntqjxIzZDrNH6u0OkpiUTbvWZj8ww==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-musl": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-0.7.5.tgz", - "integrity": "sha512-dDgi/ThikMy1m4llxPeEXDCA2I8F8ezFS/eCPLZGU2/J1b4ALwDjuRsMmo+VXSlFCKgIt98V6h1woeg7nu96yg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.7.5.tgz", - "integrity": "sha512-nEF4cUdLfgEK6FrgJSJhUlr2/7LY1tmqBNQCFsCjtDtUkQbJIEo1b8edT94G9tJcQoFE4cD+Re30yBYbQO2Thg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.7.5.tgz", - "integrity": "sha512-hEcHRwJIzpZsePr+5x6V/7TGhrPXhSZYG4sIhsrem1za9W+qqCYYLZ7KzzbRODU07QaAH2RxjcA1bf8F2QDYAQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.7.5.tgz", - "integrity": "sha512-PpVpP6J5/2b4T10hzSUwjLvmdpAOj3ozARl1Nrf/lsbYwhiXivoB8Gvoy/xe/Xpgr732Dk9VCeeW8rreWOOUVQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/core": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-0.7.5.tgz", - "integrity": "sha512-zVTe4WCyc3qsLPattosiDYZFeOzaJ32/BYukPP2I1VJtCVFa+PxGVRPVZhSoN6fXw5oy48yHg9W9v1T8CaEFhw==", - "dev": true, - "dependencies": { - "@module-federation/runtime-tools": "0.1.6", - "@rspack/binding": "0.7.5", - "caniuse-lite": "^1.0.30001616", - "tapable": "2.2.1", - "webpack-sources": "3.2.3" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@swc/helpers": ">=0.5.1" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.3.24", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.24.tgz", - "integrity": "sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.3.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", - "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", - "dev": true, - "peerDependencies": { - "@types/react": "^18.0.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001743", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz", - "integrity": "sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" + "name": "web-app", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "app", + "version": "1.0.0", + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@rspack/core": "1.5.5", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8" + } + }, + "node_modules/@emnapi/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.6.0.tgz", + "integrity": "sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==", + "dev": true, + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.6.0.tgz", + "integrity": "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==", + "dev": true, + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@module-federation/error-codes": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.18.0.tgz", + "integrity": "sha512-Woonm8ehyVIUPXChmbu80Zj6uJkC0dD9SJUZ/wOPtO8iiz/m+dkrOugAuKgoiR6qH4F+yorWila954tBz4uKsQ==", + "dev": true + }, + "node_modules/@module-federation/runtime": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.18.0.tgz", + "integrity": "sha512-+C4YtoSztM7nHwNyZl6dQKGUVJdsPrUdaf3HIKReg/GQbrt9uvOlUWo2NXMZ8vDAnf/QRrpSYAwXHmWDn9Obaw==", + "dev": true, + "dependencies": { + "@module-federation/error-codes": "0.18.0", + "@module-federation/runtime-core": "0.18.0", + "@module-federation/sdk": "0.18.0" + } + }, + "node_modules/@module-federation/runtime-core": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.18.0.tgz", + "integrity": "sha512-ZyYhrDyVAhUzriOsVfgL6vwd+5ebYm595Y13KeMf6TKDRoUHBMTLGQ8WM4TDj8JNsy7LigncK8C03fn97of0QQ==", + "dev": true, + "dependencies": { + "@module-federation/error-codes": "0.18.0", + "@module-federation/sdk": "0.18.0" + } + }, + "node_modules/@module-federation/runtime-tools": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.18.0.tgz", + "integrity": "sha512-fSga9o4t1UfXNV/Kh6qFvRyZpPp3EHSPRISNeyT8ZoTpzDNiYzhtw0BPUSSD8m6C6XQh2s/11rI4g80UY+d+hA==", + "dev": true, + "dependencies": { + "@module-federation/runtime": "0.18.0", + "@module-federation/webpack-bundler-runtime": "0.18.0" + } + }, + "node_modules/@module-federation/sdk": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.18.0.tgz", + "integrity": "sha512-Lo/Feq73tO2unjmpRfyyoUkTVoejhItXOk/h5C+4cistnHbTV8XHrW/13fD5e1Iu60heVdAhhelJd6F898Ve9A==", + "dev": true + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.18.0.tgz", + "integrity": "sha512-TEvErbF+YQ+6IFimhUYKK3a5wapD90d90sLsNpcu2kB3QGT7t4nIluE25duXuZDVUKLz86tEPrza/oaaCWTpvQ==", + "dev": true, + "dependencies": { + "@module-federation/runtime": "0.18.0", + "@module-federation/sdk": "0.18.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", + "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", + "dev": true, + "optional": true, + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@tybys/wasm-util": "^0.10.1" + } + }, + "node_modules/@rspack/binding": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.5.5.tgz", + "integrity": "sha512-JkB943uBU0lABnKG/jdO+gg3/eeO9CEQMR/1dL6jSU9GTxaNf3XIVc05RhRC7qoVsiXuhSMMFxWyV0hyHxp2bA==", + "dev": true, + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.5.5", + "@rspack/binding-darwin-x64": "1.5.5", + "@rspack/binding-linux-arm64-gnu": "1.5.5", + "@rspack/binding-linux-arm64-musl": "1.5.5", + "@rspack/binding-linux-x64-gnu": "1.5.5", + "@rspack/binding-linux-x64-musl": "1.5.5", + "@rspack/binding-wasm32-wasi": "1.5.5", + "@rspack/binding-win32-arm64-msvc": "1.5.5", + "@rspack/binding-win32-ia32-msvc": "1.5.5", + "@rspack/binding-win32-x64-msvc": "1.5.5" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.5.5.tgz", + "integrity": "sha512-Kg3ywEZHLX+aROfTQ5tMOv+Ud+8b4jk8ruUgsi0W8oBkEkR5xBdhFa9vcf6pzy+gfoLCnEI68U9i8ttm+G0csA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.5.5.tgz", + "integrity": "sha512-uoGTYnlYW8m47yiDCKvXOehhAOH12wlePJq4sbUbBoHmG07vbDw7fUqnvy2k8319NTVEpMJWGoKyisgI09/uMQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.5.5.tgz", + "integrity": "sha512-KgVN3TeUJ3iNwwOX3JGY4arvoLHX94eItJ4TeOSyetRiSJUrQI0evP16i5kIh+n+p7mVnXmfUS944Gl+uNsJmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.5.5.tgz", + "integrity": "sha512-1gKthlCQinXtWar6Hl9Il6BQ/NgYBH0NVuUsjjf85ejD/cTPQENKyIpGvVa1rSIHSfnG/XujUbruHAeY9mEHCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.5.5.tgz", + "integrity": "sha512-haPFg4M9GwpSI5g9BQhKUNdzCKDvFexIUkLiAHBjFU9iWQTEcI9VfYPixestOIwzUv7E34rHM+jAsmRGWdgmXw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.5.5.tgz", + "integrity": "sha512-oUny56JEkCZvIu4n8/P7IPLPNtJnL89EDhxHINH87XLBY3OOgo8JHELR11Zj9SFWiGNsRcLqi+Q78tWa0ligBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-wasm32-wasi": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.5.5.tgz", + "integrity": "sha512-tRgxBgIXaBKBH/0KlwvyqbIMqQrg8jKOyFOEQseEE7Oqs2M9KkJ7Vp5QN11u3NvZ9nz5GbZxmVGBMkdj9Gth1w==", + "cpu": [ + "wasm32" + ], + "dev": true, + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.5" + } + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.5.5.tgz", + "integrity": "sha512-wGWd2yluoFdQgtkIbny6FoHnzahTk+o9RzrptjeS1u/NV1lKrWzmWhwZojMGOUqPiaukZKaziOEo7gpRn2XbEQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.5.5.tgz", + "integrity": "sha512-Ikml8AQkzjPCG24vTO4pG2bpJ8vp93jVEgo9X9uYjO2vQbIp5QSOmeZOTM7tXCf8AfTfHEF/yAdE/pR/+tXXGQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.5.5.tgz", + "integrity": "sha512-m2059ms0i/GIQGWTlZ5GI6SWpuMFAPMsWlhXLk2LZRIydhi+N/YPkmc33lFRTlDA3QpKDCvowvCvIIA7g6WSlg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/core": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.5.5.tgz", + "integrity": "sha512-AOIuMktK6X/xHAjJ/0QJ2kbSkILXj641GCPE+EOfWO27ODA8fHPArKbyz5AVGVePV3aUfEo2VFcsNzP67VBEPA==", + "dev": true, + "dependencies": { + "@module-federation/runtime-tools": "0.18.0", + "@rspack/binding": "1.5.5", + "@rspack/lite-tapable": "1.0.1" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@rspack/lite-tapable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.1.tgz", + "integrity": "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==", + "dev": true, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.24", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.24.tgz", + "integrity": "sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "optional": true } - ] - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } } - } } diff --git a/tests/web-app/package.json b/tests/web-app/package.json index 83641ee..109bb46 100644 --- a/tests/web-app/package.json +++ b/tests/web-app/package.json @@ -23,4 +23,4 @@ "react": "^18.3.1", "react-dom": "^18.3.1" } -} \ No newline at end of file +} From 16142e8f24a93edd939417f72fec529ef905d863 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 20:23:01 +0100 Subject: [PATCH 03/13] Solve CI and some more issues. --- .../workflows/{bundler-tests.yml => integration-tests.yml} | 3 +-- Dockerfile.dev | 4 ++-- crates/metassr-build/src/server/renderer/html.rs | 2 +- crates/metassr-bundler/src/lib.rs | 5 ++++- tests/README.md | 3 --- 5 files changed, 8 insertions(+), 9 deletions(-) rename .github/workflows/{bundler-tests.yml => integration-tests.yml} (95%) diff --git a/.github/workflows/bundler-tests.yml b/.github/workflows/integration-tests.yml similarity index 95% rename from .github/workflows/bundler-tests.yml rename to .github/workflows/integration-tests.yml index 8ccdc45..d15d5db 100644 --- a/.github/workflows/bundler-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -1,4 +1,4 @@ -name: Bundler Tests +name: Integration Tests on: push: @@ -32,7 +32,6 @@ jobs: # Copy the test script into the container and run it cp /root/tests/test-bundle.sh ./ - chmod +x test-bundle.sh ./test-bundle.sh " diff --git a/Dockerfile.dev b/Dockerfile.dev index d040b1f..9e6b95c 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -10,7 +10,7 @@ LABEL copyright.name="Vicente Eduardo Ferrer Garcia" \ # Install MetaCall dependencies RUN apt-get update \ - && apt-get install -y --no-install-recommends \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ ca-certificates \ git \ wget \ @@ -30,4 +30,4 @@ COPY . . RUN cargo build \ && cd ./tests/web-app \ && npm install \ - && npm run build + && npm run build:debug diff --git a/crates/metassr-build/src/server/renderer/html.rs b/crates/metassr-build/src/server/renderer/html.rs index f465e50..770fdfa 100644 --- a/crates/metassr-build/src/server/renderer/html.rs +++ b/crates/metassr-build/src/server/renderer/html.rs @@ -1,12 +1,12 @@ use std::path::Path; use anyhow::Result; +use metassr_fs_analyzer::dist_dir::PageEntry; use metassr_html::{ builder::{HtmlBuilder, HtmlOutput}, html_props::HtmlPropsBuilder, template::HtmlTemplate, }; -use metassr_fs_analyzer::dist_dir::PageEntry; pub struct HtmlRenderer<'a> { head: String, diff --git a/crates/metassr-bundler/src/lib.rs b/crates/metassr-bundler/src/lib.rs index 6a35cf4..1fe4065 100644 --- a/crates/metassr-bundler/src/lib.rs +++ b/crates/metassr-bundler/src/lib.rs @@ -110,7 +110,10 @@ impl<'a> WebBundler<'a> { drop(guard); // Resolve callback when the bundling process is completed successfully - fn resolve(result: Box, _: Option>) -> Box { + fn resolve( + result: Box, + _: Option> + ) -> Box { let compilation_wait = &*Arc::clone(&IS_COMPILATION_WAIT); let mut started = compilation_wait.checker.lock().unwrap(); diff --git a/tests/README.md b/tests/README.md index 9af3708..4333092 100644 --- a/tests/README.md +++ b/tests/README.md @@ -66,9 +66,6 @@ npm run build 2. Run the test script from anywhere in the project: ```bash -# Make the script executable -chmod +x tests/test-bundle.sh - # Run from project root ./tests/test-bundle.sh From 876e28fc316283ec64ea2f500791f6c2bed29e40 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 21:45:46 +0100 Subject: [PATCH 04/13] Solved issues in ci. --- .github/workflows/docker.yml | 20 ------- .github/workflows/fmt.yml | 29 ---------- .github/workflows/integration-tests.yml | 23 ++++---- .github/workflows/{clippy.yml => lint.yml} | 22 +++++--- .github/workflows/typos.yml | 15 ------ .github/workflows/unit-tests.yml | 22 ++++---- Dockerfile.dev | 54 +++++++++++++++++-- README.md | 2 +- crates/metassr-bundler/src/lib.rs | 2 +- .../tests/bundle.sh} | 6 +-- 10 files changed, 88 insertions(+), 107 deletions(-) delete mode 100644 .github/workflows/docker.yml delete mode 100644 .github/workflows/fmt.yml rename .github/workflows/{clippy.yml => lint.yml} (61%) delete mode 100644 .github/workflows/typos.yml rename tests/{test-bundle.sh => web-app/tests/bundle.sh} (96%) mode change 100755 => 100644 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index fa078b3..0000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Docker - -on: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - name: Build - run: docker build -t metacall/metassr:dev -f Dockerfile.dev . diff --git a/.github/workflows/fmt.yml b/.github/workflows/fmt.yml deleted file mode 100644 index 284bd37..0000000 --- a/.github/workflows/fmt.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Rust Formatting - -on: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - fmt: - name: Check Formatting - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install Rust - uses: dtolnay/rust-toolchain@stable - with: - components: rustfmt - - - name: Check formatting - run: cargo fmt --check diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index d15d5db..556195f 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -11,29 +11,24 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true +env: + DOCKER_BUILDKIT: 1 + jobs: bundler-tests: name: Bundler Integration Tests runs-on: ubuntu-latest - + + strategy: + matrix: + build-type: [debug, release] + steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Build Docker image - run: docker build -f Dockerfile.dev -t metassr-test . - - name: Run bundler tests in Docker - run: | - docker run --rm -v $(pwd)/tests/web-app/dist:/root/tests/web-app/dist metassr-test bash -c " - # Run the build - cd /root/tests/web-app - npm run build - - # Copy the test script into the container and run it - cp /root/tests/test-bundle.sh ./ - ./test-bundle.sh - " + run: docker build --target integration_test_${{ matrix.build-type }} -f Dockerfile.dev -t metassr-test . - name: Upload dist artifacts if: always() diff --git a/.github/workflows/clippy.yml b/.github/workflows/lint.yml similarity index 61% rename from .github/workflows/clippy.yml rename to .github/workflows/lint.yml index b5f5e0f..df634bb 100644 --- a/.github/workflows/clippy.yml +++ b/.github/workflows/lint.yml @@ -1,4 +1,4 @@ -name: Rust Clippy +name: Linter on: push: @@ -13,19 +13,19 @@ concurrency: jobs: clippy: - name: Run Clippy + name: Run Format, Clippy, Spellcheck runs-on: ubuntu-latest steps: - - name: Checkout repository + - name: Checkout Repository uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable with: - components: clippy + components: rustfmt, clippy - - name: Cache Rust dependencies + - name: Cache Rust Dependencies uses: actions/cache@v4 with: path: | @@ -34,7 +34,15 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-cargo-lint-${{ hashFiles('**/Cargo.lock') }} - - name: Run clippy + - name: Check Formatting + run: cargo fmt --check + + - name: Run Clippy run: cargo clippy --all-targets --all-features -- -D warnings + + - name: Spell Checking with Typos + uses: crate-ci/typos@master + with: + files: ./* diff --git a/.github/workflows/typos.yml b/.github/workflows/typos.yml deleted file mode 100644 index b9d7fd5..0000000 --- a/.github/workflows/typos.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Spell Checker action -on: [pull_request, push] - -jobs: - run: - name: Start Spell Checking with Typos - runs-on: ubuntu-latest - steps: - - name: Checkout Actions Repository - uses: actions/checkout@v2 - - - name: Check spelling of * Files - uses: crate-ci/typos@master - with: - files: ./* \ No newline at end of file diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 04dd3bb..636729d 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -1,4 +1,4 @@ -name: Rust Tests +name: Unit Tests on: push: @@ -11,21 +11,21 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true +env: + DOCKER_BUILDKIT: 1 + jobs: test: - name: Run Rust Tests + name: Run Unit Tests runs-on: ubuntu-latest - + + strategy: + matrix: + build-type: [debug, release] + steps: - name: Checkout repository uses: actions/checkout@v4 - name: Build Docker image - run: docker build -f Dockerfile.dev -t metassr-test . - - - name: Run Rust tests in Docker - run: | - docker run --rm metassr-test bash -c " - cd /root - cargo test --verbose - " + run: docker build --target unit_test_${{ matrix.build-type }} -f Dockerfile.dev -t metassr-test . diff --git a/Dockerfile.dev b/Dockerfile.dev index 9e6b95c..920bf77 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM rust:slim-trixie +FROM rust:slim-trixie AS base # Image descriptor LABEL copyright.name="Vicente Eduardo Ferrer Garcia" \ @@ -20,14 +20,58 @@ RUN apt-get update \ # Set working directory to root WORKDIR /root +# Debug Image +FROM base AS build_debug + # Install MetaCall in debug mode RUN wget -O - https://raw.githubusercontent.com/metacall/install/master/install.sh | bash -s -- --debug # Copy the project COPY . . +ENV RUSTFLAGS="-g" + # Build with debug mode -RUN cargo build \ - && cd ./tests/web-app \ - && npm install \ - && npm run build:debug +RUN cargo build + +# Unit test debug image +FROM build_debug AS unit_test_debug + +# Run tests in debug mode +RUN cargo test --profile debug + +# Integration test debug image +FROM build_debug AS integration_test_debug + +WORKDIR /root/tests/web-app + +RUN npm install \ + && npm run build:debug \ + && ./tests/bundle.sh + +# Release image +FROM base AS release + +# Install MetaCall +RUN wget -O - https://raw.githubusercontent.com/metacall/install/master/install.sh | bash + +# Copy the project +COPY . . + +# Build with release mode +RUN cargo build --release + +# Unit test release image +FROM build_release AS unit_test_release + +# Run tests in release mode +RUN cargo test --profile release + +# Integration test release image +FROM build_release AS integration_test_release + +WORKDIR /root/tests/web-app + +RUN npm install \ + && npm run build \ + && ./tests/bundle.sh diff --git a/README.md b/README.md index a221895..3b0de0c 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ For running a development environment: ### Docker ```sh -docker build -t metacall/metassr:dev -f Dockerfile.dev . +docker build --target build_debug -t metacall/metassr:dev -f Dockerfile.dev . docker run --rm -it metacall/metassr:dev bash ``` diff --git a/crates/metassr-bundler/src/lib.rs b/crates/metassr-bundler/src/lib.rs index 1fe4065..b8fc9dc 100644 --- a/crates/metassr-bundler/src/lib.rs +++ b/crates/metassr-bundler/src/lib.rs @@ -112,7 +112,7 @@ impl<'a> WebBundler<'a> { // Resolve callback when the bundling process is completed successfully fn resolve( result: Box, - _: Option> + _: Option>, ) -> Box { let compilation_wait = &*Arc::clone(&IS_COMPILATION_WAIT); let mut started = compilation_wait.checker.lock().unwrap(); diff --git a/tests/test-bundle.sh b/tests/web-app/tests/bundle.sh old mode 100755 new mode 100644 similarity index 96% rename from tests/test-bundle.sh rename to tests/web-app/tests/bundle.sh index 88de053..98457a1 --- a/tests/test-bundle.sh +++ b/tests/web-app/tests/bundle.sh @@ -6,9 +6,8 @@ set -e # Get the script directory and project root -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" -WEB_APP_DIR="$PROJECT_ROOT/tests/web-app" +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) +WEB_APP_DIR=$(dirname "$SCRIPT_DIR") DIST_DIR="$WEB_APP_DIR/dist" # Configuration: Expected files and directories @@ -50,7 +49,6 @@ MIN_BUNDLE_SIZE=500 MIN_CSS_SIZE=100 echo "Running MetaSSR bundler tests..." -echo "[INFO] Project root: $PROJECT_ROOT" echo "[INFO] Web app directory: $WEB_APP_DIR" echo "[INFO] Dist directory: $DIST_DIR" From d664d7f482162c8e069ccb2f3ea42f925fb0dde4 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 21:48:43 +0100 Subject: [PATCH 05/13] Minor change. --- Dockerfile.dev | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index 920bf77..bd77bfa 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -50,7 +50,7 @@ RUN npm install \ && ./tests/bundle.sh # Release image -FROM base AS release +FROM base AS build_release # Install MetaCall RUN wget -O - https://raw.githubusercontent.com/metacall/install/master/install.sh | bash From 9b9e97dac92d2641362223fe448bf2a927311ebc Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 22:24:57 +0100 Subject: [PATCH 06/13] Make bundle.sh executable. --- tests/web-app/tests/bundle.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 tests/web-app/tests/bundle.sh diff --git a/tests/web-app/tests/bundle.sh b/tests/web-app/tests/bundle.sh old mode 100644 new mode 100755 From c64455c38a4b48924442667ba9064535868d668e Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 22:29:16 +0100 Subject: [PATCH 07/13] Change other issues. --- .github/workflows/integration-tests.yml | 1 + .github/workflows/unit-tests.yml | 1 + Dockerfile.dev | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 556195f..c01ad86 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -20,6 +20,7 @@ jobs: runs-on: ubuntu-latest strategy: + fail-fast: true matrix: build-type: [debug, release] diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 636729d..aa9df7d 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -20,6 +20,7 @@ jobs: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: build-type: [debug, release] diff --git a/Dockerfile.dev b/Dockerfile.dev index bd77bfa..83a8215 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -38,7 +38,7 @@ RUN cargo build FROM build_debug AS unit_test_debug # Run tests in debug mode -RUN cargo test --profile debug +RUN cargo test # Integration test debug image FROM build_debug AS integration_test_debug @@ -65,7 +65,7 @@ RUN cargo build --release FROM build_release AS unit_test_release # Run tests in release mode -RUN cargo test --profile release +RUN cargo test --release # Integration test release image FROM build_release AS integration_test_release From f4786f84441cf419cbe7e338b9ee6dc93997bbbf Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 22:50:53 +0100 Subject: [PATCH 08/13] Improve unit tests. --- .github/workflows/integration-tests.yml | 2 +- .github/workflows/lint.yml | 2 -- CONTRIBUTING.md | 2 +- Dockerfile.dev | 4 ++-- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index c01ad86..e59284d 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest strategy: - fail-fast: true + fail-fast: false matrix: build-type: [debug, release] diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index df634bb..a9c5136 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -44,5 +44,3 @@ jobs: - name: Spell Checking with Typos uses: crate-ci/typos@master - with: - files: ./* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 71f5b99..1208800 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -76,7 +76,7 @@ fix(builder): fix a bug in building operation Make sure your changes pass all existing and new tests. Run the tests locally before submitting your pull request: ```bash -cargo test +cargo test --workspace ``` also, you can test one of web applications that located at [tests](../../tests/) directory. diff --git a/Dockerfile.dev b/Dockerfile.dev index 83a8215..2046427 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -38,7 +38,7 @@ RUN cargo build FROM build_debug AS unit_test_debug # Run tests in debug mode -RUN cargo test +RUN cargo test --workspace --verbose # Integration test debug image FROM build_debug AS integration_test_debug @@ -65,7 +65,7 @@ RUN cargo build --release FROM build_release AS unit_test_release # Run tests in release mode -RUN cargo test --release +RUN cargo test --workspace --verbose --release # Integration test release image FROM build_release AS integration_test_release From 5e0e0e097d54d3ec4a974ceef0bda108becfc202 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 23:26:00 +0100 Subject: [PATCH 09/13] Trying to improve ci. --- .github/workflows/integration.yml | 86 +++++++++++++++++++ .../{integration-tests.yml => test.yml} | 22 +++-- .github/workflows/unit-tests.yml | 32 ------- 3 files changed, 101 insertions(+), 39 deletions(-) create mode 100644 .github/workflows/integration.yml rename .github/workflows/{integration-tests.yml => test.yml} (52%) delete mode 100644 .github/workflows/unit-tests.yml diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml new file mode 100644 index 0000000..a02900e --- /dev/null +++ b/.github/workflows/integration.yml @@ -0,0 +1,86 @@ +name: Integration Test + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + test: + name: Test + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest] # TODO: , windows-latest] + steps: + - name: Check out the repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install MetaCall Linux (debug) + if: matrix.os == 'ubuntu-latest' + run: curl -sL https://raw.githubusercontent.com/metacall/install/master/install.sh | sh -s -- --debug + + - name: Install MetaCall MacOS + if: matrix.os == 'macos-latest' + run: curl -sL https://raw.githubusercontent.com/metacall/install/master/install.sh | sh + + - name: Install MetaCall Windows + if: matrix.os == 'windows-latest' + run: powershell -NoProfile -ExecutionPolicy Unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://raw.githubusercontent.com/metacall/install/master/install.ps1')))" + + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + + - name: Build + run: cargo build + + - name: Unit Testing + run: cargo test + + - name: Integration Testing + working-directory: ./tests/web-app + run: | + npm install + npm run build:debug + npm start & + sleep 10 + response=$(curl --write-out "%{http_code}" --silent --output /dev/null http://localhost:8080) + if [ "$response" -ne 200 ]; then + echo "Server did not respond with status 200" + exit 1 + fi + exit 0 + + # TODO: Improve testing by checking if resulting HTML is correct + + # - name: Install Playwright + # run: npm install -g playwright + + # - name: Run Playwright test + # run: | + # node -e " + # const { chromium } = require('playwright'); + # (async () => { + # const browser = await chromium.launch(); + # const page = await browser.newPage(); + # await page.goto('http://localhost:3000/'); + # const html = await page.content(); + # if (!html.includes('My Node App')) { + # console.error('HTML content did not match expected value'); + # process.exit(1); + # } + # await browser.close(); + # })(); + # " diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/test.yml similarity index 52% rename from .github/workflows/integration-tests.yml rename to .github/workflows/test.yml index e59284d..f6de662 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -name: Integration Tests +name: Test on: push: @@ -15,8 +15,8 @@ env: DOCKER_BUILDKIT: 1 jobs: - bundler-tests: - name: Bundler Integration Tests + test: + name: Test runs-on: ubuntu-latest strategy: @@ -28,11 +28,19 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Run bundler tests in Docker - run: docker build --target integration_test_${{ matrix.build-type }} -f Dockerfile.dev -t metassr-test . + - name: Run Unit Tests + run: docker build --target unit_test_${{ matrix.build-type }} -f Dockerfile.dev -t metacall/metassr:unit . - - name: Upload dist artifacts - if: always() + - name: Bundler Integration Tests + run: docker build --target integration_test_${{ matrix.build-type }} -f Dockerfile.dev -t metacall/metassr:integration . + + - name: Copy Bundler Artifacts + run: | + docker create --name metassr-integration-artifacts metacall/metassr:integration + docker cp metassr-integration-artifacts:/root/tests/web-app/dist $(pwd)/tests/web-app/dist + docker rm metassr-integration-artifacts + + - name: Upload Bundler Artifacts uses: actions/upload-artifact@v4 with: name: bundler-dist-output diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml deleted file mode 100644 index aa9df7d..0000000 --- a/.github/workflows/unit-tests.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Unit Tests - -on: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - DOCKER_BUILDKIT: 1 - -jobs: - test: - name: Run Unit Tests - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - build-type: [debug, release] - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Build Docker image - run: docker build --target unit_test_${{ matrix.build-type }} -f Dockerfile.dev -t metassr-test . From 257696a0bf031bf75366d3ad89490a900715062a Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 23:30:11 +0100 Subject: [PATCH 10/13] Remove label.yml. --- .github/workflows/label.yml | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 .github/workflows/label.yml diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml deleted file mode 100644 index aa539b8..0000000 --- a/.github/workflows/label.yml +++ /dev/null @@ -1,26 +0,0 @@ -# This workflow will triage pull requests and apply a label based on the -# paths that are modified in the pull request. -# -# To use this workflow, you will need to set up a .github/labeler.yml -# file with configuration. For more information, see: -# https://github.com/actions/labeler - -name: Labeler -on: [pull_request_target] - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - label: - - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: write - - steps: - - uses: actions/labeler@v4 - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" From 8c4810e1782d9a51ebbabc98c9296a1dbe8d0c93 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 23:36:48 +0100 Subject: [PATCH 11/13] Solve issue. --- metassr-cli/Cargo.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/metassr-cli/Cargo.toml b/metassr-cli/Cargo.toml index 0e8e8bc..5ba3e9f 100644 --- a/metassr-cli/Cargo.toml +++ b/metassr-cli/Cargo.toml @@ -22,3 +22,6 @@ metassr-server = { path = "../crates/metassr-server" } metassr-build = { path = "../crates/metassr-build" } metassr-create = { path = "../crates/metassr-create" } metassr-watcher = { path = "../crates/metassr-watcher" } + +[build-dependencies] +metacall-sys = "0.1.2" From 3a048fc94b81b2117068c33c0e4939280bb58e96 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 23:42:17 +0100 Subject: [PATCH 12/13] Add vscode for debug and imporoved ci. --- .github/workflows/test.yml | 19 ++++++++++++++++--- .gitignore | 1 - .vscode/launch.json | 18 ++++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f6de662..26de220 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -name: Test +name: Tests on: push: @@ -15,8 +15,8 @@ env: DOCKER_BUILDKIT: 1 jobs: - test: - name: Test + unit-test: + name: Unit Test runs-on: ubuntu-latest strategy: @@ -31,6 +31,19 @@ jobs: - name: Run Unit Tests run: docker build --target unit_test_${{ matrix.build-type }} -f Dockerfile.dev -t metacall/metassr:unit . + integration-test: + name: Integration Test + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + build-type: [debug, release] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Bundler Integration Tests run: docker build --target integration_test_${{ matrix.build-type }} -f Dockerfile.dev -t metacall/metassr:integration . diff --git a/.gitignore b/.gitignore index e2c4cd1..e891491 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ target node_modules dist -.vscode diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..5e3156b --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Debug MetaSSR [Build]", + "type": "lldb", + "request": "launch", + "program": "${workspaceFolder}/target/debug/metassr", + "args": ["--debug-mode=metacall", "build"], + "cwd": "${workspaceFolder}", + "env": {}, + "sourceLanguages": ["rust"] + } + ] +} From ac953ef5249480eb2c6fb49190b179d1460d426c Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 29 Oct 2025 23:46:50 +0100 Subject: [PATCH 13/13] Improve ci. --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 26de220..0f0f46b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -54,6 +54,7 @@ jobs: docker rm metassr-integration-artifacts - name: Upload Bundler Artifacts + if: matrix.build-type == 'release' uses: actions/upload-artifact@v4 with: name: bundler-dist-output