@ui5/webcomponents-tools 0.0.0-bf8366eb6 → 0.0.0-c143e338b

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 (100) hide show
  1. package/CHANGELOG.md +909 -0
  2. package/LICENSE.txt +201 -0
  3. package/README.md +7 -10
  4. package/assets-meta.js +1 -5
  5. package/bin/dev.js +3 -2
  6. package/bin/ui5nps.js +265 -0
  7. package/components-package/eslint.js +59 -31
  8. package/components-package/nps.js +96 -65
  9. package/components-package/vite.config.js +7 -11
  10. package/components-package/wdio.js +12 -5
  11. package/icons-collection/nps.js +30 -21
  12. package/lib/amd-to-es6/index.js +15 -10
  13. package/lib/cem/cem.js +12 -0
  14. package/lib/cem/custom-elements-manifest.config.mjs +74 -45
  15. package/lib/cem/event.mjs +69 -32
  16. package/lib/cem/patch/@custom-elements-manifest/analyzer/cli.js +128 -0
  17. package/lib/cem/patch/@custom-elements-manifest/analyzer/package.json +59 -0
  18. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/browser-entrypoint.js +23 -0
  19. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/create.js +117 -0
  20. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/arrow-function.js +26 -0
  21. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/class-jsdoc.js +157 -0
  22. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/classes.js +20 -0
  23. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createArrowFunction.js +17 -0
  24. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createAttribute.js +24 -0
  25. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createClass.js +301 -0
  26. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createClassField.js +26 -0
  27. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createFunctionLike.js +73 -0
  28. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createMixin.js +33 -0
  29. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createVariable.js +22 -0
  30. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/handlers.js +338 -0
  31. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/custom-elements-define-calls.js +90 -0
  32. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/exports.js +156 -0
  33. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/function-like.js +24 -0
  34. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/mixins.js +29 -0
  35. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/reexported-wrapped-mixin-exports.js +84 -0
  36. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/variables.js +34 -0
  37. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/collect-phase/collect-imports.js +101 -0
  38. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/catalyst/catalyst.js +11 -0
  39. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/catalyst/controller.js +34 -0
  40. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/catalyst-major-2/catalyst.js +11 -0
  41. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/catalyst-major-2/controller.js +34 -0
  42. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/decorators/attr.js +53 -0
  43. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/decorators/custom-element-decorator.js +36 -0
  44. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/fast/fast.js +7 -0
  45. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/lit.js +13 -0
  46. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/member-denylist.js +21 -0
  47. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/method-denylist.js +20 -0
  48. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/property-decorator.js +94 -0
  49. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/static-properties.js +121 -0
  50. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/utils.js +66 -0
  51. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/stencil/stencil.js +129 -0
  52. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/index.js +80 -0
  53. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/link-phase/cleanup-classes.js +25 -0
  54. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/link-phase/field-denylist.js +22 -0
  55. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/link-phase/method-denylist.js +25 -0
  56. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/post-processing/apply-inheritance.js +78 -0
  57. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/post-processing/is-custom-element.js +34 -0
  58. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/post-processing/link-class-to-tagname.js +27 -0
  59. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/post-processing/remove-unexported-declarations.js +23 -0
  60. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/post-processing/resolve-initializers.js +52 -0
  61. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/ast-helpers.js +186 -0
  62. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/cli-helpers.js +164 -0
  63. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/exports.js +44 -0
  64. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/find-external-manifests.js +67 -0
  65. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/imports.js +25 -0
  66. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/index.js +71 -0
  67. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/jsdoc.js +19 -0
  68. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/manifest-helpers.js +194 -0
  69. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/mixins.js +112 -0
  70. package/lib/cem/schema-internal.json +65 -0
  71. package/lib/cem/types-internal.d.ts +14 -2
  72. package/lib/cem/utils.mjs +69 -30
  73. package/lib/cem/validate.js +61 -55
  74. package/lib/copy-and-watch/index.js +105 -97
  75. package/lib/copy-list/index.js +16 -10
  76. package/lib/create-icons/index.js +24 -19
  77. package/lib/create-illustrations/index.js +49 -27
  78. package/lib/create-new-component/{tsFileContentTemplate.js → Component.js} +12 -9
  79. package/lib/create-new-component/ComponentTemplate.js +12 -0
  80. package/lib/create-new-component/index.js +13 -12
  81. package/lib/css-processors/css-processor-components.mjs +74 -59
  82. package/lib/css-processors/css-processor-themes.mjs +85 -62
  83. package/lib/css-processors/shared.mjs +5 -35
  84. package/lib/dev-server/{dev-server.js → dev-server.mjs} +26 -14
  85. package/lib/dev-server/virtual-index-html-plugin.js +24 -20
  86. package/lib/generate-js-imports/illustrations.js +53 -54
  87. package/lib/generate-json-imports/i18n.js +56 -36
  88. package/lib/generate-json-imports/themes.js +27 -14
  89. package/lib/hbs2ui5/RenderTemplates/LitRenderer.js +12 -7
  90. package/lib/hbs2ui5/index.js +3 -3
  91. package/lib/i18n/defaults.js +15 -9
  92. package/lib/i18n/toJSON.js +14 -10
  93. package/lib/icons-hash/icons-hash.mjs +149 -0
  94. package/lib/remove-dev-mode/remove-dev-mode.mjs +38 -24
  95. package/lib/rimraf/rimraf.js +31 -0
  96. package/lib/scoping/get-all-tags.js +9 -2
  97. package/package.json +22 -17
  98. package/tsconfig.json +18 -0
  99. package/lib/css-processors/css-processor-component-styles.mjs +0 -48
  100. package/lib/dev-server/ssr-dom-shim-loader.js +0 -26
@@ -1,37 +1,51 @@
1
1
  import { globby } from "globby";
2
2
  import * as esbuild from 'esbuild'
3
3
  import * as fs from "fs";
4
+ import { pathToFileURL } from "url";
4
5
 
5
- let customPlugin = {
6
+ const generate = async () => {
7
+ let customPlugin = {
6
8
  name: 'ui5-tools',
7
9
  setup(build) {
8
- build.onLoad({ filter: /UI5Element.ts$/ }, async (args) => {
9
- let text = await fs.promises.readFile(args.path, 'utf8');
10
- text = text.replaceAll(/const DEV_MODE = true/g, "");
11
- text = text.replaceAll(/if \(DEV_MODE\)/g, "if (false)");
12
- return {
13
- contents: text,
14
- loader: 'ts',
15
- }
16
- })
17
- },
18
- }
10
+ build.onLoad({ filter: /UI5Element.ts$/ }, async (args) => {
11
+ let text = await fs.promises.readFile(args.path, 'utf8');
12
+ text = text.replaceAll(/const DEV_MODE = true/g, "");
13
+ text = text.replaceAll(/if \(DEV_MODE\)/g, "if (false)");
14
+ return {
15
+ contents: text,
16
+ loader: 'ts',
17
+ }
18
+ })
19
+ },
20
+ }
19
21
 
20
- const getConfig = async () => {
22
+ const getConfig = async () => {
21
23
  const config = {
22
- entryPoints: await globby("src/**/*.ts"),
23
- bundle: false,
24
- minify: true,
25
- sourcemap: true,
26
- outdir: 'dist/prod',
27
- outbase: 'src',
28
- plugins: [
29
- customPlugin,
30
- ]
24
+ entryPoints: await globby("src/**/*.ts"),
25
+ bundle: false,
26
+ minify: true,
27
+ sourcemap: true,
28
+ outdir: 'dist/prod',
29
+ outbase: 'src',
30
+ plugins: [
31
+ customPlugin,
32
+ ]
31
33
  };
32
34
  return config;
35
+ }
36
+
37
+
38
+ const config = await getConfig();
39
+ const result = await esbuild.build(config);
33
40
  }
34
41
 
42
+ const filePath = process.argv[1];
43
+ const fileUrl = pathToFileURL(filePath).href;
44
+
45
+ if (import.meta.url === fileUrl) {
46
+ generate()
47
+ }
35
48
 
36
- const config = await getConfig();
37
- const result = await esbuild.build(config);
49
+ export default {
50
+ _ui5mainFn: generate
51
+ }
@@ -0,0 +1,31 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ const rimraf = dir => {
5
+ if (fs.existsSync(dir)) {
6
+ fs.readdirSync(dir).forEach(entry => {
7
+ const entryPath = path.join(dir, entry);
8
+ if (fs.lstatSync(entryPath).isDirectory()) {
9
+ rimraf(entryPath);
10
+ } else {
11
+ fs.unlinkSync(entryPath);
12
+ }
13
+ });
14
+ fs.rmdirSync(dir);
15
+ }
16
+ };
17
+
18
+ const main = argv => {
19
+ if (argv.length < 3) {
20
+ console.error("rimraf <dir>");
21
+ process.exit(1);
22
+ }
23
+ const dir = argv[2];
24
+ rimraf(dir);
25
+ };
26
+
27
+ if (require.main === module) {
28
+ main(process.argv)
29
+ }
30
+
31
+ exports._ui5mainFn = main;
@@ -4,8 +4,15 @@ const glob = require("glob");
4
4
 
5
5
  const getTag = file => {
6
6
  const fileContent = String(fs.readFileSync(file)).replace(/\n/g, "");
7
- const matches = fileContent.match(/\btag\b:\s*\"(.*?)\"/);
8
- return matches ? matches[1] : undefined;
7
+ let matches = fileContent.match(/\btag\b:\s*\"(.*?)\"/);
8
+ if (matches) {
9
+ return matches[1];
10
+ }
11
+ matches = fileContent.match(/@customElement\("(.*?)"\)/);
12
+ if (matches) {
13
+ return matches[1];
14
+ }
15
+ return undefined;
9
16
  };
10
17
 
11
18
  const getPackageTags = (packageDir) => {
package/package.json CHANGED
@@ -1,27 +1,26 @@
1
1
  {
2
2
  "name": "@ui5/webcomponents-tools",
3
- "version": "0.0.0-bf8366eb6",
3
+ "version": "0.0.0-c143e338b",
4
4
  "description": "UI5 Web Components: webcomponents.tools",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
7
- "private": false,
8
7
  "keywords": [
9
8
  "openui5",
10
9
  "sapui5",
11
10
  "ui5"
12
11
  ],
13
- "scripts": {},
14
12
  "bin": {
15
- "wc-dev": "bin/dev.js",
16
- "wc-create-ui5-element": "bin/create-ui5-element.js"
13
+ "ui5nps": "bin/ui5nps.js",
14
+ "wc-create-ui5-element": "bin/create-ui5-element.js",
15
+ "wc-dev": "bin/dev.js"
17
16
  },
18
17
  "repository": {
19
18
  "type": "git",
20
- "url": "https://github.com/SAP/ui5-webcomponents.git",
19
+ "url": "https://github.com/UI5/webcomponents.git",
21
20
  "directory": "packages/tools"
22
21
  },
23
22
  "dependencies": {
24
- "@custom-elements-manifest/analyzer": "^0.8.4",
23
+ "@custom-elements-manifest/analyzer": "^0.10.10",
25
24
  "@typescript-eslint/eslint-plugin": "^6.9.0",
26
25
  "@typescript-eslint/parser": "^6.9.0",
27
26
  "@wdio/cli": "^7.19.7",
@@ -34,27 +33,28 @@
34
33
  "cem-plugin-vs-code-custom-data-generator": "^1.4.2",
35
34
  "chai": "^4.3.4",
36
35
  "child_process": "^1.0.2",
37
- "chokidar": "^3.5.1",
36
+ "chokidar": "^3.6.0",
38
37
  "chokidar-cli": "^3.0.0",
39
38
  "command-line-args": "^5.1.1",
40
39
  "comment-parser": "^1.4.0",
41
- "concurrently": "^6.0.0",
42
40
  "cross-env": "^7.0.3",
43
41
  "custom-element-jet-brains-integration": "^1.4.4",
42
+ "dotenv": "^16.5.0",
44
43
  "escodegen": "^2.0.0",
45
44
  "eslint": "^7.22.0",
46
45
  "eslint-config-airbnb-base": "^14.2.1",
47
- "eslint-plugin-import": "^2.22.1",
46
+ "eslint-plugin-import": "^2.31.0",
47
+ "eslint-plugin-jsx-no-leaked-values": "^0.1.24",
48
48
  "esprima": "^4.0.1",
49
49
  "getopts": "^2.3.0",
50
50
  "glob": "^7.1.6",
51
51
  "glob-parent": "^6.0.2",
52
52
  "globby": "^13.1.1",
53
53
  "handlebars": "^4.7.7",
54
+ "ignore": "^7.0.5",
54
55
  "is-port-reachable": "^3.1.0",
55
56
  "json-beautify": "^1.1.1",
56
57
  "mkdirp": "^1.0.4",
57
- "nps": "^5.10.0",
58
58
  "postcss": "^8.4.5",
59
59
  "postcss-cli": "^9.1.0",
60
60
  "postcss-selector-parser": "^6.0.10",
@@ -62,22 +62,27 @@
62
62
  "properties-reader": "^2.2.0",
63
63
  "recursive-readdir": "^2.2.2",
64
64
  "resolve": "^1.20.0",
65
- "rimraf": "^3.0.2",
66
65
  "slash": "3.0.0",
67
- "vite": "^4.4.9",
66
+ "string-argv": "^0.3.2",
67
+ "vite": "^5.4.8",
68
+ "vite-plugin-istanbul": "^6.0.2",
68
69
  "wdio-chromedriver-service": "^7.3.2"
69
70
  },
70
71
  "peerDependencies": {
71
72
  "chromedriver": "*",
72
- "typescript": "^4.9.4"
73
+ "typescript": "^5.6.2"
73
74
  },
74
75
  "peerDependenciesMeta": {
75
76
  "typescript": {
76
77
  "optional": true
77
78
  }
78
79
  },
80
+ "engines": {
81
+ "node": "^20.19.0 || >=22.12.0"
82
+ },
79
83
  "devDependencies": {
80
- "esbuild": "^0.19.9",
84
+ "esbuild": "^0.25.0",
81
85
  "yargs": "^17.5.1"
82
- }
83
- }
86
+ },
87
+ "gitHead": "6309e8d90fa82344a60be72084660c1e3e52e107"
88
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2021",
4
+ "lib": [
5
+ "DOM",
6
+ "DOM.Iterable",
7
+ "ES2023"
8
+ ],
9
+ "declaration": true,
10
+ "skipLibCheck": true,
11
+ "sourceMap": true,
12
+ "inlineSources": true,
13
+ "strict": true,
14
+ "moduleResolution": "node",
15
+ "jsx": "react-jsx",
16
+ "jsxImportSource": "@ui5/webcomponents-base",
17
+ }
18
+ }
@@ -1,48 +0,0 @@
1
- import { globby } from "globby";
2
- import * as esbuild from 'esbuild'
3
- import * as fs from "fs";
4
- import * as path from "path";
5
- import { writeFile, mkdir } from "fs/promises";
6
- import scopeVariables from "./scope-variables.mjs";
7
-
8
- const packageJSON = JSON.parse(fs.readFileSync("./package.json"))
9
- const inputFiles = await globby("src/styles/*.module.css");
10
- const restArgs = process.argv.slice(2);
11
-
12
- let componentStylesPlugin = {
13
- name: 'component-styles',
14
- setup(build) {
15
- build.initialOptions.write = false;
16
-
17
- build.onEnd(result => {
18
- result.outputFiles.forEach(async f => {
19
- // scoping
20
- const newText = scopeVariables(f.text, packageJSON);
21
- await mkdir(path.dirname(f.path), {recursive: true});
22
- writeFile(f.path, newText);
23
- writeFile(f.path.replace(".module.css", ".css"), newText);
24
- });
25
- })
26
- },
27
- }
28
-
29
- const config = {
30
- entryPoints: inputFiles,
31
- outdir: 'dist',
32
- bundle: true,
33
- outbase: 'src',
34
- loader: {
35
- ".module.css": "global-css"
36
- },
37
- plugins: [
38
- componentStylesPlugin,
39
- ]
40
- };
41
-
42
- if (restArgs.includes("-w")) {
43
- let ctx = await esbuild.context(config);
44
- await ctx.watch()
45
- console.log('watching...')
46
- } else {
47
- await esbuild.build(config);
48
- }
@@ -1,26 +0,0 @@
1
- const fs = require("fs");
2
-
3
- /**
4
- * UI5Elements loads the ssr-dom.js file with a package specifier to use the export conditions
5
- * in the package.json so that a shim for the dom can be loaded from SSR environments
6
- * This however makes the TS Checker plugin used for development try to load the file from dist as input
7
- * This plugin loads an empty file and TS ignores the file completely
8
- */
9
-
10
- const ssrDomShimLoader = async () => {
11
- return {
12
- name: 'ssr-dom-shim-loader',
13
- resolveId(id) {
14
- if (id === "@ui5/webcomponents-base/dist/ssr-dom.js") {
15
- return "\0shim"
16
- }
17
- },
18
- load(id) {
19
- if (id === "\0shim") {
20
- return "";
21
- }
22
- }
23
- }
24
- };
25
-
26
- module.exports = ssrDomShimLoader;