@genexus/mercury 0.20.0 → 0.21.0

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.
Files changed (124) hide show
  1. package/dist/bundles/css/all.css +1 -1
  2. package/dist/bundles/css/base/base-globant.css +1 -1
  3. package/dist/bundles/css/base/base.css +1 -1
  4. package/dist/bundles/css/components/accordion.css +1 -1
  5. package/dist/bundles/css/components/button.css +1 -1
  6. package/dist/bundles/css/components/chat.css +1 -1
  7. package/dist/bundles/css/components/code.css +1 -1
  8. package/dist/bundles/css/components/combo-box.css +1 -1
  9. package/dist/bundles/css/components/dialog.css +1 -1
  10. package/dist/bundles/css/components/dropdown.css +1 -1
  11. package/dist/bundles/css/components/edit.css +1 -1
  12. package/dist/bundles/css/components/flexible-layout.css +1 -1
  13. package/dist/bundles/css/components/icon.css +1 -1
  14. package/dist/bundles/css/components/list-box.css +1 -1
  15. package/dist/bundles/css/components/markdown-viewer.css +1 -1
  16. package/dist/bundles/css/components/navigation-list.css +1 -1
  17. package/dist/bundles/css/components/pills.css +1 -1
  18. package/dist/bundles/css/components/segmented-control.css +1 -1
  19. package/dist/bundles/css/components/slider.css +1 -1
  20. package/dist/bundles/css/components/switch.css +1 -1
  21. package/dist/bundles/css/components/tab.css +1 -1
  22. package/dist/bundles/css/components/tabular-grid.css +1 -1
  23. package/dist/bundles/css/components/tooltip.css +1 -1
  24. package/dist/bundles/css/utils/form--full.css +1 -1
  25. package/dist/bundles/css/utils/form.css +1 -1
  26. package/dist/bundles/css/utils/spacing.css +1 -1
  27. package/dist/cli/bundle.js +185 -17
  28. package/dist/cli/internal/constants.d.ts +3 -12
  29. package/dist/cli/internal/constants.js +4 -13
  30. package/dist/cli/internal/create-bundles-with-custom-paths.d.ts +10 -2
  31. package/dist/cli/internal/create-bundles-with-custom-paths.js +102 -55
  32. package/dist/cli/internal/file-management.d.ts +3 -2
  33. package/dist/cli/internal/file-management.js +45 -12
  34. package/dist/cli/internal/print-utils.d.ts +6 -6
  35. package/dist/cli/internal/print-utils.js +14 -12
  36. package/dist/cli/internal/transpile-bundle-and-create-mappings.d.ts +2 -3
  37. package/dist/cli/internal/transpile-bundle-and-create-mappings.js +37 -66
  38. package/dist/cli/internal/types.d.ts +0 -1
  39. package/dist/cli/internal/utils.d.ts +11 -8
  40. package/dist/cli/internal/utils.js +27 -22
  41. package/dist/cli/internal/validate-args.js +7 -1
  42. package/dist/cli/internal/watch-fs.d.ts +3 -0
  43. package/dist/cli/internal/watch-fs.js +92 -0
  44. package/dist/cli/mercury.js +2 -2
  45. package/package.json +17 -12
  46. package/dist/bundles/js/all.js +0 -1
  47. package/dist/bundles/js/base/base-globant.js +0 -1
  48. package/dist/bundles/js/base/base.js +0 -1
  49. package/dist/bundles/js/base/icons.js +0 -1
  50. package/dist/bundles/js/bundle-mappings.js +0 -237
  51. package/dist/bundles/js/chameleon/scrollbar.js +0 -1
  52. package/dist/bundles/js/components/accordion.js +0 -1
  53. package/dist/bundles/js/components/button.js +0 -1
  54. package/dist/bundles/js/components/chat.js +0 -1
  55. package/dist/bundles/js/components/checkbox.js +0 -1
  56. package/dist/bundles/js/components/code.js +0 -1
  57. package/dist/bundles/js/components/combo-box.js +0 -1
  58. package/dist/bundles/js/components/dialog.js +0 -1
  59. package/dist/bundles/js/components/dropdown.js +0 -1
  60. package/dist/bundles/js/components/edit.js +0 -1
  61. package/dist/bundles/js/components/flexible-layout.js +0 -1
  62. package/dist/bundles/js/components/icon.js +0 -1
  63. package/dist/bundles/js/components/layout-splitter.js +0 -1
  64. package/dist/bundles/js/components/list-box.js +0 -1
  65. package/dist/bundles/js/components/markdown-viewer.js +0 -1
  66. package/dist/bundles/js/components/navigation-list.js +0 -1
  67. package/dist/bundles/js/components/pills.js +0 -1
  68. package/dist/bundles/js/components/radio-group.js +0 -1
  69. package/dist/bundles/js/components/segmented-control.js +0 -1
  70. package/dist/bundles/js/components/sidebar.js +0 -1
  71. package/dist/bundles/js/components/slider.js +0 -1
  72. package/dist/bundles/js/components/switch.js +0 -1
  73. package/dist/bundles/js/components/tab.js +0 -1
  74. package/dist/bundles/js/components/tabular-grid.js +0 -1
  75. package/dist/bundles/js/components/ticket-list.js +0 -1
  76. package/dist/bundles/js/components/tooltip.js +0 -1
  77. package/dist/bundles/js/components/tree-view.js +0 -1
  78. package/dist/bundles/js/components/widget.js +0 -1
  79. package/dist/bundles/js/resets/box-sizing.js +0 -1
  80. package/dist/bundles/js/utils/elevation.js +0 -1
  81. package/dist/bundles/js/utils/form--full.js +0 -1
  82. package/dist/bundles/js/utils/form.js +0 -1
  83. package/dist/bundles/js/utils/layout.js +0 -1
  84. package/dist/bundles/js/utils/spacing.js +0 -1
  85. package/dist/bundles/js/utils/typography.js +0 -1
  86. package/dist/bundles/scss/all.scss +0 -8
  87. package/dist/bundles/scss/base/base.scss +0 -24
  88. package/dist/bundles/scss/base/icons.scss +0 -4
  89. package/dist/bundles/scss/chameleon/scrollbar.scss +0 -3
  90. package/dist/bundles/scss/components/accordion.scss +0 -3
  91. package/dist/bundles/scss/components/button.scss +0 -8
  92. package/dist/bundles/scss/components/chat.scss +0 -3
  93. package/dist/bundles/scss/components/checkbox.scss +0 -3
  94. package/dist/bundles/scss/components/code.scss +0 -3
  95. package/dist/bundles/scss/components/combo-box.scss +0 -3
  96. package/dist/bundles/scss/components/dialog.scss +0 -3
  97. package/dist/bundles/scss/components/dropdown.scss +0 -3
  98. package/dist/bundles/scss/components/edit.scss +0 -3
  99. package/dist/bundles/scss/components/flexible-layout.scss +0 -3
  100. package/dist/bundles/scss/components/icon.scss +0 -8
  101. package/dist/bundles/scss/components/layout-splitter.scss +0 -3
  102. package/dist/bundles/scss/components/list-box.scss +0 -3
  103. package/dist/bundles/scss/components/markdown-viewer.scss +0 -3
  104. package/dist/bundles/scss/components/navigation-list.scss +0 -3
  105. package/dist/bundles/scss/components/pills.scss +0 -3
  106. package/dist/bundles/scss/components/radio-group.scss +0 -3
  107. package/dist/bundles/scss/components/segmented-control.scss +0 -3
  108. package/dist/bundles/scss/components/sidebar.scss +0 -3
  109. package/dist/bundles/scss/components/slider.scss +0 -3
  110. package/dist/bundles/scss/components/switch.scss +0 -3
  111. package/dist/bundles/scss/components/tab.scss +0 -3
  112. package/dist/bundles/scss/components/tabular-grid.scss +0 -10
  113. package/dist/bundles/scss/components/ticket-list.scss +0 -3
  114. package/dist/bundles/scss/components/tooltip.scss +0 -3
  115. package/dist/bundles/scss/components/tree-view.scss +0 -3
  116. package/dist/bundles/scss/components/widget.scss +0 -3
  117. package/dist/bundles/scss/resets/box-sizing.scss +0 -3
  118. package/dist/bundles/scss/utils/elevation.scss +0 -4
  119. package/dist/bundles/scss/utils/form--full.scss +0 -20
  120. package/dist/bundles/scss/utils/form.scss +0 -4
  121. package/dist/bundles/scss/utils/layout.scss +0 -4
  122. package/dist/bundles/scss/utils/spacing.scss +0 -4
  123. package/dist/bundles/scss/utils/typography.scss +0 -9
  124. package/dist/mercury.scss +0 -24802
@@ -0,0 +1,92 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { styleText } from "node:util";
5
+ import readline from "readline";
6
+ /**
7
+ * This debounce value is useful to batch multiples updates attempt into a
8
+ * single compilation. In some cases, multiples files can be changed at one, so
9
+ * if we don't debounce the next compilation, we would trigger to compilations.
10
+ *
11
+ * This case can also happen when performing ESLint on auto-save.
12
+ */
13
+ const DEBOUNCE = 100; // 100ms
14
+ const progressDictionary = {
15
+ 0: "-",
16
+ 1: "\\",
17
+ 2: "|",
18
+ 3: "/"
19
+ };
20
+ let lastRebuildInterval;
21
+ let updateCounter = 0;
22
+ const readLineInterface = readline.createInterface({
23
+ input: process.stdin,
24
+ output: process.stdout
25
+ });
26
+ export const printRebuilding = (firstBuild) => {
27
+ // Hide the cursor to improve the CLI design
28
+ readLineInterface.write("\u001B[?25l");
29
+ // First write
30
+ process.stdout.write(`${styleText("yellow", progressDictionary[(updateCounter % 4)])} ${firstBuild ? "Building bundles..." : "Changes detected. Rebuilding..."}`);
31
+ // Update the left symbol each 100ms
32
+ lastRebuildInterval = setInterval(() => {
33
+ process.stdout.cursorTo(1);
34
+ process.stdout.clearLine(-1);
35
+ process.stdout.cursorTo(0);
36
+ process.stdout.write(`${styleText("yellow", progressDictionary[(updateCounter % 4)])}`);
37
+ updateCounter++;
38
+ }, 100);
39
+ };
40
+ export const stopRebuildingStdout = () => {
41
+ clearInterval(lastRebuildInterval);
42
+ process.stdout.clearLine(0);
43
+ console.log("");
44
+ updateCounter = 0;
45
+ // Show again the cursor
46
+ readLineInterface.write("\u001B[?25h");
47
+ };
48
+ export const watchFileSystemChanges = (callbackToCompile) => {
49
+ // This is a WA to have __filename and __dirname in ES modules
50
+ const __filename = fileURLToPath(import.meta.url);
51
+ const SRC_PATH = path.join(__filename, "../../../../src");
52
+ const BASE_PATH = path.join(SRC_PATH, "base");
53
+ const BUNDLES_PATH = path.join(SRC_PATH, "bundles");
54
+ const COMPONENTS_PATH = path.join(SRC_PATH, "components");
55
+ const MERCURY_SCSS_PATH = path.join(SRC_PATH, "mercury.scss");
56
+ let compileStatus = "idle";
57
+ const performCompilationIfNecessary = () => {
58
+ // The current compilation is waiting to be started, so there is no need to
59
+ // queue another one after the current has finished
60
+ if (compileStatus === "debouncing-compiling") {
61
+ return;
62
+ }
63
+ // There is no compilation in process. Queue one.
64
+ if (compileStatus === "idle") {
65
+ compileStatus = "debouncing-compiling";
66
+ }
67
+ // There is a compilation in progress. We can set a flag to queue a
68
+ // compilation after the current one has finished
69
+ else {
70
+ if (compileStatus === "compiling") {
71
+ compileStatus = "queued-after-compile";
72
+ }
73
+ return;
74
+ }
75
+ setTimeout(() => {
76
+ compileStatus = "compiling";
77
+ console.time(styleText("green", "Rebuild done in"));
78
+ callbackToCompile().then(() => {
79
+ console.timeEnd(styleText("green", "Rebuild done in"));
80
+ const hasToRecompile = compileStatus === "queued-after-compile";
81
+ compileStatus = "idle";
82
+ if (hasToRecompile) {
83
+ performCompilationIfNecessary();
84
+ }
85
+ });
86
+ }, DEBOUNCE);
87
+ };
88
+ fs.watch(BASE_PATH, { recursive: true }, performCompilationIfNecessary);
89
+ fs.watch(BUNDLES_PATH, { recursive: true }, performCompilationIfNecessary);
90
+ fs.watch(COMPONENTS_PATH, { recursive: true }, performCompilationIfNecessary);
91
+ fs.watch(MERCURY_SCSS_PATH, { recursive: true }, performCompilationIfNecessary);
92
+ };
@@ -3,12 +3,12 @@ import { createBundlesWithCustomPaths } from "./internal/create-bundles-with-cus
3
3
  import { ensureDirectoryExistsAndItsClear } from "./internal/file-management.js";
4
4
  import { getArguments } from "./internal/validate-args.js";
5
5
  import { measureTime } from "./internal/utils.js";
6
- measureTime(() => {
6
+ measureTime(async () => {
7
7
  // Improve process visualization
8
8
  console.log("");
9
9
  const args = getArguments();
10
10
  if (args) {
11
11
  ensureDirectoryExistsAndItsClear(args.outDirPath);
12
- createBundlesWithCustomPaths(args);
12
+ await createBundlesWithCustomPaths(args);
13
13
  }
14
14
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genexus/mercury",
3
- "version": "0.20.0",
3
+ "version": "0.21.0",
4
4
  "description": "Mercury Design System is a robust and scalable solution designed to improve product development.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -47,35 +47,40 @@
47
47
  },
48
48
  "scripts": {
49
49
  "build": "yarn build.js && yarn icons-svg && yarn icons-sass && yarn build.scss && yarn copy-tasks && yarn showcase.scss",
50
- "build.js": "tsc && esbuild dist/*.js --allow-overwrite --minify --outdir=dist && esbuild dist/assets/*.js --allow-overwrite --minify --outdir=dist/assets",
50
+ "build.js": "tsc && esbuild dist/*.js --allow-overwrite --minify --outdir=dist --log-level=silent && esbuild dist/assets/*.js --allow-overwrite --minify --outdir=dist/assets --log-level=silent",
51
51
  "build-no-svg": "yarn build.js && yarn build.scss && yarn copy-tasks",
52
52
  "build.scss": "yarn build.scss.base && yarn build.scss.bundles",
53
- "build.scss.watch": "yarn build.scss && yarn build.scss.mercury",
54
- "build.scss.base": "scss-bundle -e ./src/mercury.scss -o dist/mercury.scss",
53
+ "build.scss.base": "scss-bundle -e ./src/icons/_generated/categories.scss -o src/icons/_generated/categories-bundled.scss --logLevel=silent",
55
54
  "build.scss.bundles": "node dist/cli/bundle.js",
56
- "build.scss.mercury": "node dist/cli/mercury.js -i=/assets/icons/ -f=/assets/fonts/ --outDir=../showcase/.mercury/ --avoid-hash=base/base",
55
+ "build.scss.watch": "tsc && yarn build.scss.base && yarn copy-tasks && yarn build.scss.bundles --watch -i=/assets/icons/ -f=/assets/fonts/ --outDir=../showcase/.mercury/ --avoid-hash=base/base",
57
56
  "start": "vite --port 5200 --open showcase/button.html",
58
- "validate.ci": "yarn build-no-svg",
57
+ "validate.ci": "yarn build-no-svg && yarn test",
59
58
  "icons-svg": "ssg-svg --srcDir=src/icons/svg-source --outDir=src/assets/icons/_generated/ --configFilePath=src/icons/svg-source/.config/color-states.json --showcaseDir=showcase/icons/ --showcaseBaseHref=../assets/icons/ --logDir=./log --objectFilePath=src/assets/MERCURY_ASSETS.ts --defaultColorType=on-surface",
60
59
  "icons-sass": "ssg-sass --srcDir=src/assets/icons/ --outDir=src/icons/_generated/ --configFilePath=src/icons/svg-source/.config/color-states.json --vendorPrefix=",
61
60
  "watch.scss": "chokidar src/**/*.scss ../common/**/*.scss -c \"npm run build.scss\"",
62
61
  "watch.scss.mac": "chokidar 'src/**/*.scss' '../common/**/*.scss' -c \"npm run build.scss\"",
63
- "copy-all.css": "fse copy dist/bundles/css/all.css showcase/all.css",
64
62
  "copy-tasks": "node copy-tasks.js",
65
- "showcase.scss": "sass showcase/scss/showcase-sass.scss showcase/css/showcase-sass.css"
63
+ "showcase.scss": "sass showcase/scss/showcase-sass.scss showcase/css/showcase-sass.css",
64
+ "coverage": "yarn playwright install && vitest watch run --coverage",
65
+ "test": "yarn playwright install && vitest",
66
+ "test.watch": "yarn playwright install && vitest watch"
66
67
  },
67
68
  "license": "Apache-2.0",
68
69
  "devDependencies": {
69
- "@atao60/fse-cli": "^0.1.9",
70
70
  "@genexus/chameleon-controls-library": "~6.5.0",
71
71
  "@genexus/svg-sass-generator": "1.1.24",
72
+ "@vitest/browser": "~3.1.1",
73
+ "@vitest/coverage-v8": "~3.1.1",
74
+ "@vitest/ui": "~3.1.1",
72
75
  "@types/node": "~22.10.5",
73
76
  "chokidar": "^3.6.0",
74
77
  "chokidar-cli": "^3.0.0",
75
- "esbuild": "0.24.0",
76
- "sass": "~1.72.0",
78
+ "esbuild": "0.25.0",
79
+ "playwright": "~1.51.1",
80
+ "sass": "~1.86.3",
77
81
  "scss-bundle": "~3.1.2",
78
82
  "typescript": "~5.5.3",
79
- "vite": "~5.4.12"
83
+ "vite": "~6.2.5",
84
+ "vitest": "~3.1.1"
80
85
  }
81
86
  }