diff --git a/.changeset/fine-frogs-judge.md b/.changeset/fine-frogs-judge.md new file mode 100644 index 00000000..4ea20f4f --- /dev/null +++ b/.changeset/fine-frogs-judge.md @@ -0,0 +1,5 @@ +--- +"@devup-ui/wasm": patch +--- + +Add css banner diff --git a/benchmark.js b/benchmark.js index be81bf39..18325bcb 100644 --- a/benchmark.js +++ b/benchmark.js @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ import { existsSync, readdirSync, rmSync, statSync } from 'node:fs' import { join } from 'node:path' @@ -64,40 +63,87 @@ function checkDirSize(path) { clearBuildFile() -console.time('kuma-ui') +performance.mark('kuma-ui-start') +console.profile('kuma-ui') execSync('pnpm -F next-kuma-ui-benchmark build', { stdio: 'inherit', }) -console.timeEnd('kuma-ui') -console.info('kuma-ui', checkDirSize('./benchmark/next-kuma-ui/.next')) +console.profileEnd('kuma-ui') +performance.mark('kuma-ui-end') +performance.measure('kuma-ui', 'kuma-ui-start', 'kuma-ui-end') -console.time('chakra-ui') +performance.mark('chakra-ui-start') +console.profile('chakra-ui') execSync('pnpm -F next-chakra-ui-benchmark build', { stdio: 'inherit', }) -console.timeEnd('chakra-ui') -console.info('chakra-ui', checkDirSize('./benchmark/next-chakra-ui/.next')) +console.profileEnd('chakra-ui') +performance.mark('chakra-ui-end') +performance.measure('chakra-ui', 'chakra-ui-start', 'chakra-ui-end') -console.time('mui') +performance.mark('mui-start') +console.profile('mui') execSync('pnpm -F next-mui-benchmark build', { stdio: 'inherit', }) -console.timeEnd('mui') -console.info('mui', checkDirSize('./benchmark/next-mui/.next')) +console.profileEnd('mui') +performance.mark('mui-end') +performance.measure('mui', 'mui-start', 'mui-end') -console.time('devup-ui') +performance.mark('devup-ui-start') +console.profile('devup-ui') execSync('pnpm -F next-devup-ui-benchmark build', { stdio: 'inherit', }) -console.timeEnd('devup-ui') -console.info('devup-ui', checkDirSize('./benchmark/next-devup-ui/.next')) +console.profileEnd('devup-ui') +performance.mark('devup-ui-end') +performance.measure('devup-ui', 'devup-ui-start', 'devup-ui-end') -console.time('devup-ui-single') +performance.mark('devup-ui-single-start') +console.profile('devup-ui-single') execSync('pnpm -F next-devup-ui-single-benchmark build', { stdio: 'inherit', }) -console.timeEnd('devup-ui-single') +console.profileEnd('devup-ui-single') +performance.mark('devup-ui-single-end') +performance.measure( + 'devup-ui-single', + 'devup-ui-single-start', + 'devup-ui-single-end', +) + +console.info(performance.getEntriesByName('kuma-ui')) + +console.info( + 'kuma-ui', + checkDirSize('./benchmark/next-kuma-ui/.next').toLocaleString() + 'bytes', +) + +console.info(performance.getEntriesByName('chakra-ui')) + +console.info( + 'chakra-ui', + checkDirSize('./benchmark/next-chakra-ui/.next').toLocaleString() + 'bytes', +) + +console.info(performance.getEntriesByName('mui')) + +console.info( + 'mui', + checkDirSize('./benchmark/next-mui/.next').toLocaleString() + 'bytes', +) + +console.info(performance.getEntriesByName('devup-ui')) + +console.info( + 'devup-ui', + checkDirSize('./benchmark/next-devup-ui/.next').toLocaleString() + 'bytes', +) + +console.info(performance.getEntriesByName('devup-ui-single')) + console.info( 'devup-ui-single', - checkDirSize('./benchmark/next-devup-ui-single/.next'), + checkDirSize('./benchmark/next-devup-ui-single/.next').toLocaleString() + + 'bytes', ) diff --git a/bindings/devup-ui-wasm/src/lib.rs b/bindings/devup-ui-wasm/src/lib.rs index e4ef4cc6..009d794c 100644 --- a/bindings/devup-ui-wasm/src/lib.rs +++ b/bindings/devup-ui-wasm/src/lib.rs @@ -246,7 +246,7 @@ mod tests { sheet.set_theme(theme); } - assert_debug_snapshot!(get_css(None, false).unwrap()); + assert_debug_snapshot!(get_css(None, false).unwrap().split("*/").nth(1).unwrap()); } #[test] diff --git a/libs/css/src/file_map.rs b/libs/css/src/file_map.rs index 0af29426..d3b78946 100644 --- a/libs/css/src/file_map.rs +++ b/libs/css/src/file_map.rs @@ -53,6 +53,8 @@ mod tests { let got = get_file_map(); assert_eq!(got.get_by_left("test-key"), Some(&42)); assert_eq!(got.get_by_right(&42), Some(&"test-key".to_string())); + assert_eq!(get_file_num_by_filename("test-key"), 42); + assert_eq!(get_filename_by_file_num(42), "test-key"); } #[test] diff --git a/libs/sheet/src/lib.rs b/libs/sheet/src/lib.rs index 1100c8fc..0e7f3be1 100644 --- a/libs/sheet/src/lib.rs +++ b/libs/sheet/src/lib.rs @@ -543,6 +543,22 @@ impl StyleSheet { current_css } + fn create_header(&self) -> String { + format!( + "/*! devup-ui v{version} | Apache License 2.0 | https://devup-ui.com */", + // get version from package.json + version = include_str!("../../../bindings/devup-ui-wasm/package.json") + .lines() + .find(|line| line.contains("\"version\"")) + .unwrap() + .split(":") + .nth(1) + .unwrap() + .trim() + .replace("\"", ""), + ) + } + pub fn create_css(&self, filename: Option<&str>, import_main_css: bool) -> String { let mut css = self .imports @@ -657,7 +673,11 @@ impl StyleSheet { } } } - css + if css.is_empty() { + css + } else { + format!("{}{}", self.create_header(), css) + } } } @@ -689,12 +709,12 @@ mod tests { let mut sheet = StyleSheet::default(); sheet.add_property("test", "background-color", 1, "red", None, None, None); sheet.add_property("test", "background", 1, "some", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property("test", "border", 0, "1px solid", None, None, None); sheet.add_property("test", "border-color", 0, "red", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] fn test_create_css_with_selector_sort_test() { @@ -709,7 +729,7 @@ mod tests { None, ); sheet.add_property("test", "background-color", 1, "some", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property("test", "background-color", 1, "red", None, None, None); @@ -722,29 +742,29 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property("test", "background-color", 1, "red", None, None, None); sheet.add_property("test", "background", 1, "some", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] fn test_create_css_with_basic_sort_test() { let mut sheet = StyleSheet::default(); sheet.add_property("test", "background-color", 1, "red", None, Some(0), None); sheet.add_property("test", "background", 1, "some", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property("test", "border", 0, "1px solid", None, None, None); sheet.add_property("test", "border-color", 0, "red", None, Some(0), None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property("test", "display", 0, "flex", None, Some(0), None); sheet.add_property("test", "display", 0, "block", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] @@ -760,28 +780,28 @@ mod tests { None, ); sheet.add_property("test", "background-color", 1, "some", None, Some(0), None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property("test", "display", 0, "flex", None, Some(0), None); sheet.add_property("test", "display", 0, "none", None, None, None); sheet.add_property("test", "display", 2, "flex", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] fn test_create_css() { let mut sheet = StyleSheet::default(); sheet.add_property("test", "margin", 1, "40px", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_css("test.tsx", "div {display:flex;}"); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property("test", "margin", 2, "40px", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -802,7 +822,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -823,7 +843,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -844,7 +864,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -865,7 +885,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -877,7 +897,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -889,7 +909,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -901,7 +921,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -913,7 +933,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -925,7 +945,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] @@ -933,15 +953,15 @@ mod tests { let mut sheet = StyleSheet::default(); sheet.add_css("test.tsx", "div {display:flex;}"); sheet.add_css("test2.tsx", "div {display:flex;}"); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); sheet.rm_global_css("test.tsx", true); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); sheet.rm_global_css("wrong.tsx", true); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] @@ -964,12 +984,12 @@ mod tests { sheet.add_property("test", "margin-right", 1, "60px", None, None, None); sheet.add_property("test", "margin-left", 0, "70px", None, None, None); sheet.add_property("test", "margin-right", 0, "70px", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property("test", "background", 0, "red", None, Some(3), None); sheet.add_property("test", "background", 0, "blue", None, Some(17), None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] @@ -977,7 +997,7 @@ mod tests { let mut sheet = StyleSheet::default(); sheet.add_property("test", "margin-left", 10, "40px", None, None, None); sheet.add_property("test", "margin-right", 10, "40px", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] @@ -1019,7 +1039,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] @@ -1079,7 +1099,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -1122,7 +1142,7 @@ mod tests { ); sheet.add_property("test", "margin-left", 0, "42px", None, None, None); sheet.add_property("test", "margin-right", 0, "42px", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -1161,7 +1181,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] @@ -1240,7 +1260,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -1264,7 +1284,7 @@ mod tests { sheet.add_property("test", "margin-top", 0, "40px", None, None, None); sheet.add_property("test", "margin-bottom", 0, "40px", None, None, None); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] @@ -1295,7 +1315,7 @@ mod tests { None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] @@ -1387,7 +1407,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( "test", @@ -1401,7 +1421,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); @@ -1429,7 +1449,7 @@ mod tests { None, None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -1456,7 +1476,7 @@ mod tests { Some(255), None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); sheet.add_property( "test", @@ -1482,7 +1502,7 @@ mod tests { ); sheet.rm_global_css("test.tsx", true); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); let mut sheet = StyleSheet::default(); sheet.add_property( @@ -1510,7 +1530,7 @@ mod tests { None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); sheet.rm_global_css("test.tsx", true); assert_debug_snapshot!(sheet.create_css(None, false)); @@ -1541,10 +1561,10 @@ mod tests { None, ); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); sheet.rm_global_css("test.tsx", true); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } #[test] @@ -1555,19 +1575,19 @@ mod tests { sheet.add_import("test2.tsx", "@devup-ui/core/css/global2.css"); sheet.add_import("test3.tsx", "@devup-ui/core/css/global3.css"); sheet.add_import("test4.tsx", "@devup-ui/core/css/global4.css"); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } { let mut sheet = StyleSheet::default(); sheet.add_import("test.tsx", "@devup-ui/core/css/global.css"); sheet.add_import("test.tsx", "@devup-ui/core/css/new-global.css"); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } { let mut sheet = StyleSheet::default(); sheet.add_import("test.tsx", "@devup-ui/core/css/global.css"); sheet.add_import("test.tsx", "@devup-ui/core/css/global.css"); - assert_debug_snapshot!(sheet.create_css(None, false)); + assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap()); } } @@ -1659,7 +1679,7 @@ mod tests { sheet.add_keyframes("fadeIn", keyframes, None); let past = sheet.create_css(None, false); - assert_debug_snapshot!(past); + assert_debug_snapshot!(past.split("*/").nth(1).unwrap()); let mut keyframes: BTreeMap> = BTreeMap::new(); let mut from_props = BTreeSet::new(); @@ -1689,7 +1709,7 @@ mod tests { sheet.add_keyframes("fadeIn", keyframes, None); let now = sheet.create_css(None, false); - assert_debug_snapshot!(now); + assert_debug_snapshot!(now.split("*/").nth(1).unwrap()); assert_eq!(past, now); } @@ -1712,6 +1732,6 @@ mod tests { assert!(css.contains("src:url('/fonts/Roboto-Regular.ttf')")); assert!(css.contains("font-weight:400")); - assert_debug_snapshot!(css); + assert_debug_snapshot!(css.split("*/").nth(1).unwrap()); } } diff --git a/packages/rsbuild-plugin/src/__tests__/plugin.test.ts b/packages/rsbuild-plugin/src/__tests__/plugin.test.ts index 01b7ba14..8ed56c8a 100644 --- a/packages/rsbuild-plugin/src/__tests__/plugin.test.ts +++ b/packages/rsbuild-plugin/src/__tests__/plugin.test.ts @@ -66,7 +66,9 @@ describe('DevupUIRsbuildPlugin', () => { }) it('should error when write data files', async () => { - vi.mocked(readFile).mockRejectedValueOnce(new Error('error')) + const originalConsoleError = console.error + console.error = vi.fn() + vi.mocked(readFile).mockRejectedValueOnce('error') vi.mocked(existsSync).mockImplementation((path) => { if (path === 'devup.json') return true return false @@ -80,6 +82,8 @@ describe('DevupUIRsbuildPlugin', () => { transform, modifyRsbuildConfig, } as any) + expect(console.error).toHaveBeenCalledWith('error') + console.error = originalConsoleError }) it('should not register css transform', async () => {