@ui5/webcomponents-tools 0.0.0-cb061e041 → 0.0.0-ccb0705ac

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 (127) hide show
  1. package/CHANGELOG.md +1943 -0
  2. package/LICENSE.txt +201 -0
  3. package/README.md +7 -9
  4. package/assets-meta.js +12 -11
  5. package/bin/dev.js +10 -4
  6. package/bin/ui5nps.js +301 -0
  7. package/components-package/eslint.js +59 -29
  8. package/components-package/nps.js +115 -83
  9. package/components-package/postcss.components.js +1 -21
  10. package/components-package/postcss.themes.js +1 -26
  11. package/components-package/vite.config.js +7 -11
  12. package/components-package/wdio.js +421 -393
  13. package/icons-collection/nps.js +31 -20
  14. package/lib/amd-to-es6/index.js +109 -0
  15. package/lib/amd-to-es6/no-remaining-require.js +33 -0
  16. package/lib/cem/cem.js +16 -0
  17. package/lib/cem/custom-elements-manifest.config.mjs +573 -0
  18. package/lib/cem/event.mjs +168 -0
  19. package/lib/cem/patch/@custom-elements-manifest/analyzer/cli.js +128 -0
  20. package/lib/cem/patch/@custom-elements-manifest/analyzer/package.json +59 -0
  21. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/browser-entrypoint.js +23 -0
  22. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/create.js +117 -0
  23. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/arrow-function.js +26 -0
  24. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/class-jsdoc.js +157 -0
  25. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/classes.js +20 -0
  26. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createArrowFunction.js +17 -0
  27. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createAttribute.js +24 -0
  28. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createClass.js +301 -0
  29. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createClassField.js +26 -0
  30. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createFunctionLike.js +73 -0
  31. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createMixin.js +33 -0
  32. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/createVariable.js +22 -0
  33. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/creators/handlers.js +338 -0
  34. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/custom-elements-define-calls.js +90 -0
  35. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/exports.js +156 -0
  36. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/function-like.js +24 -0
  37. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/mixins.js +29 -0
  38. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/reexported-wrapped-mixin-exports.js +84 -0
  39. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/analyse-phase/variables.js +34 -0
  40. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/collect-phase/collect-imports.js +101 -0
  41. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/catalyst/catalyst.js +11 -0
  42. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/catalyst/controller.js +34 -0
  43. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/catalyst-major-2/catalyst.js +11 -0
  44. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/catalyst-major-2/controller.js +34 -0
  45. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/decorators/attr.js +53 -0
  46. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/decorators/custom-element-decorator.js +36 -0
  47. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/fast/fast.js +7 -0
  48. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/lit.js +13 -0
  49. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/member-denylist.js +21 -0
  50. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/method-denylist.js +20 -0
  51. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/property-decorator.js +94 -0
  52. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/static-properties.js +121 -0
  53. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/lit/utils.js +66 -0
  54. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/framework-plugins/stencil/stencil.js +129 -0
  55. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/index.js +80 -0
  56. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/link-phase/cleanup-classes.js +25 -0
  57. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/link-phase/field-denylist.js +22 -0
  58. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/link-phase/method-denylist.js +25 -0
  59. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/post-processing/apply-inheritance.js +78 -0
  60. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/post-processing/is-custom-element.js +34 -0
  61. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/post-processing/link-class-to-tagname.js +27 -0
  62. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/post-processing/remove-unexported-declarations.js +23 -0
  63. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/features/post-processing/resolve-initializers.js +52 -0
  64. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/ast-helpers.js +186 -0
  65. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/cli-helpers.js +164 -0
  66. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/exports.js +44 -0
  67. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/find-external-manifests.js +67 -0
  68. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/imports.js +25 -0
  69. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/index.js +71 -0
  70. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/jsdoc.js +19 -0
  71. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/manifest-helpers.js +194 -0
  72. package/lib/cem/patch/@custom-elements-manifest/analyzer/src/utils/mixins.js +112 -0
  73. package/lib/cem/schema-internal.json +1422 -0
  74. package/lib/cem/schema.json +1098 -0
  75. package/lib/cem/types-internal.d.ts +808 -0
  76. package/lib/cem/types.d.ts +736 -0
  77. package/lib/cem/utils.mjs +426 -0
  78. package/lib/cem/validate.js +81 -0
  79. package/lib/chokidar/chokidar.js +28 -0
  80. package/lib/copy-and-watch/index.js +110 -97
  81. package/lib/copy-list/index.js +18 -10
  82. package/lib/create-icons/index.js +32 -25
  83. package/lib/create-illustrations/index.js +94 -45
  84. package/lib/create-new-component/{tsFileContentTemplate.js → Component.js} +15 -21
  85. package/lib/create-new-component/ComponentTemplate.js +12 -0
  86. package/lib/create-new-component/index.js +16 -22
  87. package/lib/css-processors/css-processor-components.mjs +101 -0
  88. package/lib/css-processors/css-processor-themes.mjs +121 -0
  89. package/lib/css-processors/postcss-plugin.mjs +153 -0
  90. package/lib/css-processors/scope-variables.mjs +51 -0
  91. package/lib/css-processors/shared.mjs +47 -0
  92. package/lib/dev-server/custom-hot-update-plugin.js +39 -0
  93. package/lib/dev-server/{dev-server.js → dev-server.mjs} +26 -14
  94. package/lib/dev-server/virtual-index-html-plugin.js +24 -20
  95. package/lib/eslint/eslint.js +44 -0
  96. package/lib/generate-js-imports/illustrations.js +79 -64
  97. package/lib/generate-json-imports/i18n.js +63 -68
  98. package/lib/generate-json-imports/themes.js +38 -43
  99. package/lib/hbs2ui5/RenderTemplates/LitRenderer.js +12 -7
  100. package/lib/hbs2ui5/index.js +3 -3
  101. package/lib/i18n/defaults.js +17 -9
  102. package/lib/i18n/toJSON.js +40 -12
  103. package/lib/icons-hash/icons-hash.mjs +149 -0
  104. package/lib/postcss-combine-duplicated-selectors/index.js +12 -5
  105. package/lib/remove-dev-mode/remove-dev-mode.mjs +51 -0
  106. package/lib/rimraf/rimraf.js +31 -0
  107. package/lib/scoping/get-all-tags.js +10 -3
  108. package/lib/scoping/lint-src.js +8 -7
  109. package/lib/scoping/scope-test-pages.js +2 -1
  110. package/lib/test-runner/test-runner.js +56 -48
  111. package/lib/vite-bundler/vite-bundler.mjs +35 -0
  112. package/package.json +29 -25
  113. package/tsconfig.json +18 -0
  114. package/components-package/wdio.sync.js +0 -360
  115. package/lib/create-new-component/jsFileContentTemplate.js +0 -73
  116. package/lib/esm-abs-to-rel/index.js +0 -58
  117. package/lib/generate-custom-elements-manifest/index.js +0 -327
  118. package/lib/jsdoc/config.json +0 -29
  119. package/lib/jsdoc/configTypescript.json +0 -29
  120. package/lib/jsdoc/plugin.js +0 -2468
  121. package/lib/jsdoc/preprocess.js +0 -146
  122. package/lib/jsdoc/template/publish.js +0 -4120
  123. package/lib/postcss-css-to-esm/index.js +0 -90
  124. package/lib/postcss-css-to-json/index.js +0 -47
  125. package/lib/postcss-new-files/index.js +0 -36
  126. package/lib/postcss-p/postcss-p.mjs +0 -14
  127. package/lib/replace-global-core/index.js +0 -25
@@ -3,33 +3,62 @@ const path = require("path");
3
3
  const tsMode = fs.existsSync(path.join(process.cwd(), "tsconfig.json"));
4
4
 
5
5
  /**
6
- * Typescript Rules
6
+ * Returns eslint rules specific to typescript files
7
+ * @returns
7
8
  */
8
- const overrides = tsMode ? [{
9
- files: ["*.ts"],
10
- parser: "@typescript-eslint/parser",
11
- plugins: ["@typescript-eslint"],
12
- extends: [
13
- "plugin:@typescript-eslint/recommended",
14
- "plugin:@typescript-eslint/recommended-requiring-type-checking"
15
- ],
16
- parserOptions: {
17
- "project": ["./tsconfig.json", "./packages/*/tsconfig.json"],
18
- },
19
- rules: {
20
- "no-shadow": "off",
21
- "@typescript-eslint/no-shadow": ["error"],
22
- "@typescript-eslint/no-unsafe-member-access": "off",
23
- "@typescript-eslint/no-floating-promises": "off",
24
- "@typescript-eslint/no-explicit-any": "off",
25
- "@typescript-eslint/no-unsafe-assignment": "off",
26
- "@typescript-eslint/ban-ts-comment": "off",
27
- "@typescript-eslint/no-unsafe-call": "off",
28
- "@typescript-eslint/no-non-null-assertion": "off",
29
- "@typescript-eslint/no-empty-function": "off",
30
- "lines-between-class-members": "off",
31
- }
32
- }] : [];
9
+ const getTsModeOverrides = () => {
10
+ const tsConfiguration = {
11
+ files: ["*.ts"],
12
+ parser: "@typescript-eslint/parser",
13
+ plugins: ["@typescript-eslint"],
14
+ extends: [
15
+ "plugin:@typescript-eslint/recommended",
16
+ "plugin:@typescript-eslint/recommended-requiring-type-checking"
17
+ ],
18
+ parserOptions: {
19
+ "project": [
20
+ "./tsconfig.json"
21
+ ],
22
+ EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true,
23
+ },
24
+ rules: {
25
+ "no-shadow": "off",
26
+ "@typescript-eslint/consistent-type-imports": "error",
27
+ "import/consistent-type-specifier-style": ["error", "prefer-top-level"],
28
+ "@typescript-eslint/no-shadow": ["error"],
29
+ "@typescript-eslint/no-unsafe-member-access": "off",
30
+ "@typescript-eslint/no-floating-promises": "off",
31
+ "@typescript-eslint/no-explicit-any": "off",
32
+ "@typescript-eslint/no-unsafe-assignment": "off",
33
+ "@typescript-eslint/ban-ts-comment": "off",
34
+ "@typescript-eslint/no-unsafe-call": "off",
35
+ "@typescript-eslint/no-non-null-assertion": "off",
36
+ "@typescript-eslint/no-empty-function": "off",
37
+ "@typescript-eslint/no-empty-interface": "off",
38
+ "lines-between-class-members": "off",
39
+ }
40
+ };
41
+
42
+ const tsxConfiguration = JSON.parse(JSON.stringify(tsConfiguration));
43
+ tsxConfiguration.files = ["*.tsx"];
44
+ tsxConfiguration.plugins.push("jsx-no-leaked-values");
45
+ tsxConfiguration.rules = {
46
+ ...tsxConfiguration.rules,
47
+ "jsx-no-leaked-values/jsx-no-leaked-values": "error",
48
+ "@typescript-eslint/unbound-method": "off", // to be able to attach on* listeners
49
+ "@typescript-eslint/no-misused-promises": "off", // to be able to have async event listeners
50
+ "operator-linebreak": "off",
51
+ "no-nested-ternary": "off",
52
+ "implicit-arrow-linebreak": "off",
53
+ "function-paren-newline": "off",
54
+ "comma-dangle": "off"
55
+ };
56
+
57
+ return [
58
+ tsConfiguration,
59
+ tsxConfiguration
60
+ ];
61
+ }
33
62
 
34
63
  module.exports = {
35
64
  "env": {
@@ -38,7 +67,7 @@ module.exports = {
38
67
  },
39
68
  "root": true,
40
69
  "extends": "airbnb-base",
41
- overrides,
70
+ "overrides": tsMode ? getTsModeOverrides() : [],
42
71
  "parserOptions": {
43
72
  "ecmaVersion": 2018,
44
73
  "sourceType": "module"
@@ -81,6 +110,7 @@ module.exports = {
81
110
  "curly": [2, "all"],
82
111
  // "default-case": 1, // removed for UI5 WebComponents
83
112
  "import/extensions": ["error", "always"], // override for UI5 WebComponents
113
+ "import/order": "off",
84
114
  "no-alert": 2,
85
115
  "no-caller": 2,
86
116
  "no-div-regex": 2,
@@ -122,7 +152,7 @@ module.exports = {
122
152
  "no-shadow-restricted-names": 2,
123
153
  "no-undef-init": 2,
124
154
  "no-undef": 2,
125
- "no-unused-vars": [2, {"vars":"all", "args":"none"}],
155
+ "no-unused-vars": [2, { "vars": "all", "args": "none" }],
126
156
 
127
157
  "brace-style": [2, "1tbs", { "allowSingleLine": true }],
128
158
  "camelcase": [1, { "properties": "never" }], // added for UI5 WebComponents
@@ -138,7 +168,7 @@ module.exports = {
138
168
  "no-new-object": 2,
139
169
  "no-spaced-func": 2,
140
170
  "quote-props": [2, "as-needed", { "keywords": true, "unnecessary": false }],
141
- "semi-spacing": [1, {"before": false, "after": true}],
171
+ "semi-spacing": [1, { "before": false, "after": true }],
142
172
  "semi": 2,
143
173
  "keyword-spacing": 2,
144
174
  "space-infix-ops": 2,
@@ -1,29 +1,54 @@
1
1
  const path = require("path");
2
2
  const fs = require("fs");
3
- const resolve = require("resolve");
4
3
  const LIB = path.join(__dirname, `../lib/`);
5
- const preprocessJSDocScript = resolve.sync("@ui5/webcomponents-tools/lib/jsdoc/preprocess.js");
4
+ let websiteBaseUrl = "/";
6
5
 
7
- const getScripts = (options) => {
6
+ const isPreview = !!process.env.PR_NUMBER;
7
+ const getPreviewBaseUrl = () => {
8
+ if (process.env.DEPLOYMENT_TYPE === "netlify_preview") {
9
+ return "/";
10
+ }
11
+ return `/webcomponents/pr-${process.env.PR_NUMBER}/`;
12
+ }
8
13
 
14
+ if (process.env.DEPLOY) {
15
+ websiteBaseUrl = "/webcomponents/";
16
+ } else if (process.env.DEPLOY_NIGHTLY) {
17
+ websiteBaseUrl = "/webcomponents/nightly/";
18
+ } else if (isPreview) {
19
+ websiteBaseUrl = getPreviewBaseUrl();
20
+ }
21
+
22
+ const getScripts = (options) => {
9
23
  // The script creates all JS modules (dist/illustrations/{illustrationName}.js) out of the existing SVGs
10
24
  const illustrationsData = options.illustrationsData || [];
11
- const illustrations = illustrationsData.map(illustration => `node "${LIB}/create-illustrations/index.js" ${illustration.path} ${illustration.defaultText} ${illustration.illustrationsPrefix} ${illustration.set} ${illustration.destinationPath}`);
12
- const createIllustrationsJSImportsScript = illustrations.join(" && ");
25
+ const createIllustrationsJSImportsScript = {
26
+ default: `ui5nps-p ${illustrationsData.map(illustrations => `build.illustrations.build-${illustrations.set}-${illustrations.collection}`).join(" ")}` // concurently,
27
+ }
28
+ illustrationsData.forEach((illustration) => {
29
+ createIllustrationsJSImportsScript[`build-${illustration.set}-${illustration.collection}`] = `ui5nps-script "${LIB}create-illustrations/index.js" ${illustration.path} ${illustration.defaultText} ${illustration.illustrationsPrefix} ${illustration.set} ${illustration.destinationPath} ${illustration.collection}`
30
+ });
31
+ // The script creates the "src/generated/js-imports/Illustration.js" file that registers loaders (dynamic JS imports) for each illustration
32
+ const createIllustrationsLoadersScript = {
33
+ default: `ui5nps-p ${illustrationsData.map(illustrations => `build.jsImports.illustrationsLoaders.generate-${illustrations.set}-${illustrations.collection}`).join(" ")}` // concurently,
34
+ }
35
+ illustrationsData.forEach((illustrations) => {
36
+ createIllustrationsLoadersScript[`generate-${illustrations.set}-${illustrations.collection}`] = `ui5nps-script ${LIB}generate-js-imports/illustrations.js ${illustrations.path} ${illustrations.dynamicImports.outputFile} ${illustrations.set} ${illustrations.collection} ${illustrations.dynamicImports.location} ${illustrations.dynamicImports.filterOut.join(",")}`
37
+ });
13
38
 
14
- // The script creates the "dist/generated/js-imports/Illustration.js" file that registers loaders (dynamic JS imports) for each illustration
15
- const illustrationDestinationPaths = illustrationsData.map(illustrations => illustrations.destinationPath);
16
- const createIllustrationsLoadersScript = options.fioriPackage ? `node ${LIB}/generate-js-imports/illustrations.js ${illustrationDestinationPaths[0]} ${illustrationDestinationPaths[1]} dist/generated/js-imports` : "";
17
- const tsOption = options.typescript;
18
- const tsCommand = tsOption ? "tsc" : "";
19
- const tsWatchCommand = tsOption ? "tsc --watch" : "";
20
- const tsCrossEnv = tsOption ? "cross-env UI5_TS=true" : "";
21
- const copySrcGenerated = tsOption ? "" : "copy.srcGenerated";
39
+
40
+ const tsOption = !!(!options.legacy || options.jsx);
41
+ const tsCommandOld = tsOption ? "tsc" : "";
42
+ let tsWatchCommandStandalone = tsOption ? "tsc --watch" : "";
43
+ // this command is only used for standalone projects. monorepo projects get their watch from vite, so opt-out here
44
+ if (options.noWatchTS) {
45
+ tsWatchCommandStandalone = "";
46
+ }
22
47
 
23
48
  if (tsOption) {
24
49
  try {
25
50
  require("typescript");
26
- } catch(e) {
51
+ } catch (e) {
27
52
  console.error(`TypeScript is not found. Try to install it by running \`npm install --save-dev typescript\` if you are using npm or by running \`yarn add --dev typescript\` if you are using yarn.`);
28
53
  process.exit(e.code);
29
54
  }
@@ -41,101 +66,108 @@ const getScripts = (options) => {
41
66
  viteConfig = `-c "${require.resolve("@ui5/webcomponents-tools/components-package/vite.config.js")}"`;
42
67
  }
43
68
 
44
- let eslintConfig;
45
- if (fs.existsSync(".eslintrc.js") || fs.existsSync(".eslintrc.cjs")) {
46
- // preferred way of custom configuration in root project folder
47
- eslintConfig = "";
48
- } else {
49
- // no custom configuration - use default from tools project
50
- eslintConfig = `--config "${require.resolve("@ui5/webcomponents-tools/components-package/eslint.js")}"`;
51
- }
52
-
53
69
  const scripts = {
54
- clean: 'rimraf jsdoc-dist && rimraf src/generated && rimraf dist && rimraf .port && nps "scope.testPages.clean"',
55
- lint: `eslint . ${eslintConfig}`,
56
- lintfix: `eslint . ${eslintConfig} --fix`,
70
+ __ui5envs: {
71
+ UI5_CEM_MODE: options.dev,
72
+ UI5_TS: `${tsOption}`,
73
+ CSS_VARIABLES_TARGET: options.cssVariablesTarget ?? "root",
74
+ CYPRESS_COVERAGE: !!(options.internal?.cypress_code_coverage),
75
+ },
76
+ clean: {
77
+ "default": "ui5nps clean.generated clean.dist scope.testPages.clean",
78
+ "generated": `ui5nps-script "${LIB}/rimraf/rimraf.js src/generated`,
79
+ "dist": `ui5nps-script "${LIB}/rimraf/rimraf.js dist`,
80
+ },
81
+ lint: `ui5nps-script "${LIB}eslint/eslint.js"`,
82
+ lintfix: `ui5nps-script "${LIB}eslint/eslint.js" --fix`,
83
+ generate: {
84
+ default: `ui5nps prepare.all`,
85
+ all: `ui5nps-p build.templates build.i18n prepare.styleRelated copyProps build.illustrations`, // concurently
86
+ styleRelated: "ui5nps build.styles build.jsonImports build.jsImports",
87
+ },
57
88
  prepare: {
58
- default: `${tsCrossEnv} nps clean prepare.all typescript generateAPI`,
59
- all: 'concurrently "nps build.templates" "nps build.i18n" "nps prepare.styleRelated" "nps copy" "nps build.illustrations"',
60
- styleRelated: "nps build.styles build.jsonImports build.jsImports",
89
+ default: `ui5nps clean prepare.all copy copyProps prepare.typescript generateAPI`,
90
+ all: `ui5nps-p build.templates build.i18n prepare.styleRelated build.illustrations`, // concurently
91
+ styleRelated: "ui5nps build.styles build.jsonImports build.jsImports",
92
+ typescript: tsCommandOld,
61
93
  },
62
- typescript: tsCommand,
63
94
  build: {
64
- default: "nps prepare lint build.bundle",
65
- templates: `mkdirp dist/generated/templates && ${tsCrossEnv} node "${LIB}/hbs2ui5/index.js" -d src/ -o src/generated/templates`,
95
+ default: "ui5nps prepare lint build.bundle", // build.bundle2
96
+ templates: options.legacy ? `node "${LIB}hbs2ui5/index.js" -d src/ -o src/generated/templates` : "",
66
97
  styles: {
67
- default: `nps build.styles.themes build.styles.components ${copySrcGenerated}`,
68
- themes: `node "${LIB}/postcss-p/postcss-p.mjs"`,
69
- components: "postcss src/themes/*.css --config config/postcss.components --base src --dir dist/css/", // When updating this, also update the new files script
98
+ default: `ui5nps-p build.styles.themes build.styles.components`, // concurently
99
+ themes: `ui5nps-script "${LIB}css-processors/css-processor-themes.mjs"`,
100
+ themesWithWatch: `ui5nps-script "${LIB}css-processors/css-processor-themes.mjs" -w`,
101
+ components: `ui5nps-script "${LIB}css-processors/css-processor-components.mjs"`,
102
+ componentsWithWatch: `ui5nps-script "${LIB}css-processors/css-processor-components.mjs" -w`,
70
103
  },
71
104
  i18n: {
72
- default: "nps build.i18n.defaultsjs build.i18n.json",
73
- defaultsjs: `node "${LIB}/i18n/defaults.js" src/i18n src/generated/i18n`,
74
- json: `node "${LIB}/i18n/toJSON.js" src/i18n dist/generated/assets/i18n`,
105
+ default: "ui5nps build.i18n.defaultsjs build.i18n.json",
106
+ defaultsjs: `ui5nps-script "${LIB}i18n/defaults.js" src/i18n src/generated/i18n`,
107
+ json: `ui5nps-script "${LIB}i18n/toJSON.js" src/i18n dist/generated/assets/i18n`,
75
108
  },
76
109
  jsonImports: {
77
- default: "mkdirp dist/generated/json-imports && nps build.jsonImports.themes build.jsonImports.i18n",
78
- themes: `node "${LIB}/generate-json-imports/themes.js" dist/generated/assets/themes dist/generated/json-imports`,
79
- i18n: `node "${LIB}/generate-json-imports/i18n.js" dist/generated/assets/i18n dist/generated/json-imports`,
110
+ default: "ui5nps build.jsonImports.themes build.jsonImports.i18n",
111
+ themes: `ui5nps-script "${LIB}generate-json-imports/themes.js" src/themes src/generated/json-imports`,
112
+ i18n: `ui5nps-script "${LIB}generate-json-imports/i18n.js" src/i18n src/generated/json-imports`,
80
113
  },
81
114
  jsImports: {
82
- default: "mkdirp dist/generated/js-imports && nps build.jsImports.illustrationsLoaders",
115
+ default: "ui5nps build.jsImports.illustrationsLoaders",
83
116
  illustrationsLoaders: createIllustrationsLoadersScript,
84
117
  },
85
- bundle: `vite build ${viteConfig}`,
118
+ bundle: `ui5nps-script "${LIB}vite-bundler/vite-bundler.mjs" ${viteConfig} --mode testing --base ${websiteBaseUrl}`,
119
+ bundle2: ``,
86
120
  illustrations: createIllustrationsJSImportsScript,
87
121
  },
122
+ copyProps: `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "src/i18n/*.properties" dist/`,
123
+ copyPropsWithWatch: `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "src/i18n/*.properties" dist/ --watch --safe --skip-initial-copy`,
124
+ copySrcWithWatch: `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "src/**/*.{js,json}" dist/ --watch --safe --skip-initial-copy`,
88
125
  copy: {
89
- default: "nps copy.src copy.props",
90
- src: `node "${LIB}/copy-and-watch/index.js" --silent "src/**/*.js" dist/`,
91
- srcGenerated: `node "${LIB}/copy-and-watch/index.js" --silent "src/generated/**/*.js" dist/generated/`,
92
- props: `node "${LIB}/copy-and-watch/index.js" --silent "src/**/*.properties" dist/`,
126
+ default: options.legacy ? "ui5nps copy.src copy.props" : "",
127
+ src: options.legacy ? `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "src/**/*.{js,json}" dist/` : "",
128
+ props: options.legacy ? `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "src/i18n/*.properties" dist/` : "",
93
129
  },
94
130
  watch: {
95
- default: `${tsCrossEnv} concurrently "nps watch.templates" "nps watch.api" "nps watch.src" "nps watch.typescript" "nps watch.styles" "nps watch.i18n" "nps watch.props"`,
96
- devServer: 'concurrently "nps watch.default" "nps watch.bundle"',
97
- src: 'nps "copy.src --watch --safe --skip-initial-copy"',
98
- typescript: tsWatchCommand,
99
- props: 'nps "copy.props --watch --safe --skip-initial-copy"',
100
- bundle: `node ${LIB}/dev-server/dev-server.js ${viteConfig}`,
131
+ default: `ui5nps-p watch.templates watch.typescript watch.src watch.styles watch.i18n watch.props`, // concurently
132
+ devServer: 'ui5nps-p watch.default watch.bundle', // concurently
133
+ src: options.legacy ? 'ui5nps copySrcWithWatch' : "",
134
+ typescript: tsWatchCommandStandalone,
135
+ props: 'ui5nps copyPropsWithWatch',
136
+ bundle: `ui5nps-script ${LIB}dev-server/dev-server.mjs ${viteConfig}`,
101
137
  styles: {
102
- default: 'concurrently "nps watch.styles.themes" "nps watch.styles.components"',
103
- themes: 'nps "build.styles.themes -w"',
104
- components: {
105
- default: 'concurrently "nps watch.styles.components.existingFiles" "nps watch.styles.components.newFiles"',
106
- existingFiles: `nps "build.styles.components -w"`,
107
- newFiles: `node "${LIB}/postcss-new-files/index.js" --srcFiles="src/themes/*.css"`,
108
- },
138
+ default: 'ui5nps-p watch.styles.themes watch.styles.components', // concurently
139
+ themes: 'ui5nps build.styles.themesWithWatch',
140
+ components: `ui5nps build.styles.componentsWithWatch`,
109
141
  },
110
- templates: 'chokidar "src/**/*.hbs" -c "nps build.templates"',
111
- api: 'chokidar "test/**/*.sample.html" -c "nps generateAPI"',
112
- i18n: 'chokidar "src/i18n/messagebundle.properties" -c "nps build.i18n.defaultsjs"'
142
+ templates: options.legacy ? `ui5nps-script "${LIB}chokidar/chokidar.js" "src/**/*.hbs" "ui5nps build.templates"` : "",
143
+ i18n: `ui5nps-script "${LIB}chokidar/chokidar.js" "src/i18n/messagebundle.properties" "ui5nps build.i18n.defaultsjs"`
113
144
  },
114
- start: "nps prepare watch.devServer",
115
- test: `node "${LIB}/test-runner/test-runner.js"`,
116
- "test-suite-1": `node "${LIB}/test-runner/test-runner.js" --suite suite1`,
117
- "test-suite-2": `node "${LIB}/test-runner/test-runner.js" --suite suite2`,
118
- startWithScope: "nps scope.prepare scope.watchWithBundle",
145
+ start: "ui5nps prepare watch.devServer",
146
+ test: `ui5nps-script "${LIB}/test-runner/test-runner.js"`,
147
+ "test-cy-ci": `cypress run --component --browser chrome`,
148
+ "test-cy-ci-suite-1": `cypress run --component --browser chrome --spec "**/specs/[A-C]*.cy.{js,jsx,ts,tsx},**/specs/[^D-Z]*.cy.{js,jsx,ts,tsx}"`,
149
+ "test-cy-ci-suite-2": `cypress run --component --browser chrome --spec "**/specs/[D-L]*.cy.{js,jsx,ts,tsx}"`,
150
+ "test-cy-ci-suite-3": `cypress run --component --browser chrome --spec "**/specs/[M-S]*.cy.{js,jsx,ts,tsx}"`,
151
+ "test-cy-ci-suite-4": `cypress run --component --browser chrome --spec "**/specs/[T-Z]*.cy.{js,jsx,ts,tsx}"`,
152
+ "test-cy-open": `cypress open --component --browser chrome`,
153
+ startWithScope: "ui5nps scope.prepare scope.watchWithBundle",
119
154
  scope: {
120
- prepare: "nps scope.lint prepare scope.testPages",
121
- lint: `node "${LIB}/scoping/lint-src.js"`,
155
+ prepare: "ui5nps scope.lint scope.testPages",
156
+ lint: `ui5nps-script "${LIB}scoping/lint-src.js"`,
122
157
  testPages: {
123
- default: "nps scope.testPages.clean scope.testPages.copy scope.testPages.replace",
124
- clean: "rimraf test/pages/scoped",
125
- copy: `node "${LIB}/copy-and-watch/index.js" --silent "test/pages/**/*" test/pages/scoped`,
126
- replace: `node "${LIB}/scoping/scope-test-pages.js" test/pages/scoped demo`,
158
+ default: "ui5nps scope.testPages.clean scope.testPages.copy scope.testPages.replace",
159
+ "clean": `ui5nps-script "${LIB}/rimraf/rimraf.js test/pages/scoped`,
160
+ copy: `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "test/pages/**/*" test/pages/scoped`,
161
+ replace: `ui5nps-script "${LIB}scoping/scope-test-pages.js" test/pages/scoped demo`,
127
162
  },
128
- watchWithBundle: 'concurrently "nps scope.watch" "nps scope.bundle" ',
129
- watch: 'concurrently "nps watch.templates" "nps watch.api" "nps watch.src" "nps watch.props" "nps watch.styles"',
130
- bundle: `node ${LIB}/dev-server/dev-server.js ${viteConfig}`,
163
+ watchWithBundle: 'ui5nps-p scope.watch scope.bundle', // concurently
164
+ watch: 'ui5nps-p watch.templates watch.props watch.styles', // concurently
165
+ bundle: `ui5nps-script ${LIB}dev-server/dev-server.mjs ${viteConfig}`,
131
166
  },
132
167
  generateAPI: {
133
- default: "nps generateAPI.prepare generateAPI.preprocess generateAPI.jsdoc generateAPI.cleanup generateAPI.prepareManifest",
134
- prepare: `node "${LIB}/copy-and-watch/index.js" --silent "dist/**/*.js" jsdoc-dist/`,
135
- prepareManifest: `node "${LIB}/generate-custom-elements-manifest/index.js" dist dist`,
136
- preprocess: `node "${preprocessJSDocScript}" jsdoc-dist/ src`,
137
- jsdoc: `jsdoc -c "${LIB}/jsdoc/configTypescript.json"`,
138
- cleanup: "rimraf jsdoc-dist/"
168
+ default: tsOption ? "ui5nps generateAPI.generateCEM generateAPI.validateCEM" : "",
169
+ generateCEM: `ui5nps-script "${LIB}cem/cem.js" analyze --config "${LIB}cem/custom-elements-manifest.config.mjs"`,
170
+ validateCEM: `ui5nps-script "${LIB}cem/validate.js"`,
139
171
  },
140
172
  };
141
173
 
@@ -1,21 +1 @@
1
- const postcssImport = require('postcss-import');
2
- const postcssCSStoESM = require('../lib/postcss-css-to-esm/index.js');
3
- const cssnano = require('cssnano');
4
- const fs = require("fs");
5
-
6
- const packageName = JSON.parse(fs.readFileSync("./package.json")).name;
7
-
8
- module.exports = {
9
- plugins: [
10
- postcssImport(),
11
- cssnano({
12
- preset: [
13
- 'default', {
14
- mergeLonghand: false, // https://github.com/cssnano/cssnano/issues/675
15
- mergeRules: false, // https://github.com/cssnano/cssnano/issues/730
16
- },
17
- ]
18
- }),
19
- postcssCSStoESM({ toReplace: 'src', includeDefaultTheme: true, packageName }),
20
- ]
21
- }
1
+ module.exports = {}
@@ -1,26 +1 @@
1
- const postcssImport = require('postcss-import');
2
- const combineSelectors = require('../lib/postcss-combine-duplicated-selectors/index.js');
3
- const postcssCSStoJSON = require('../lib/postcss-css-to-json/index.js');
4
- const postcssCSStoESM = require('../lib/postcss-css-to-esm/index.js');
5
- const cssnano = require('cssnano');
6
- const fs = require("fs");
7
-
8
- const packageName = JSON.parse(fs.readFileSync("./package.json")).name;
9
-
10
- module.exports = {
11
- plugins: [
12
- postcssImport(),
13
- combineSelectors({
14
- removeDuplicatedProperties: true
15
- }),
16
- cssnano({
17
- preset: [
18
- 'default', {
19
- mergeLonghand: false, // https://github.com/cssnano/cssnano/issues/675
20
- },
21
- ]
22
- },),
23
- postcssCSStoJSON({ toReplace: 'src', packageName }),
24
- postcssCSStoESM({ toReplace: 'src', packageName }),
25
- ]
26
- };
1
+ module.exports = {};
@@ -1,13 +1,9 @@
1
1
  // vite.config.js
2
- import { defineConfig } from 'vite';
3
- import virtualIndex from '../lib/dev-server/virtual-index-html-plugin.js';
2
+ const virtualIndex = require('../lib/dev-server/virtual-index-html-plugin.js');
4
3
 
5
- export default defineConfig(async () => {
6
- const data = await virtualIndex();
7
- return {
8
- build: {
9
- emptyOutDir: false,
10
- },
11
- plugins: [data],
12
- }
13
- })
4
+ module.exports = {
5
+ build: {
6
+ emptyOutDir: false,
7
+ },
8
+ plugins: [virtualIndex()],
9
+ };