@ui5/webcomponents-tools 0.0.0-3e3654870 → 0.0.0-4034de059

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 +1612 -0
  2. package/LICENSE.txt +201 -0
  3. package/README.md +7 -10
  4. package/assets-meta.js +7 -9
  5. package/bin/dev.js +3 -2
  6. package/bin/ui5nps.js +274 -0
  7. package/components-package/eslint.js +59 -29
  8. package/components-package/nps.js +113 -82
  9. package/components-package/postcss.components.js +1 -24
  10. package/components-package/postcss.themes.js +1 -30
  11. package/components-package/vite.config.js +7 -11
  12. package/components-package/wdio.js +421 -405
  13. package/icons-collection/nps.js +31 -20
  14. package/lib/amd-to-es6/index.js +107 -0
  15. package/lib/amd-to-es6/no-remaining-require.js +33 -0
  16. package/lib/cem/cem.js +12 -0
  17. package/lib/cem/custom-elements-manifest.config.mjs +546 -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 +423 -0
  78. package/lib/cem/validate.js +76 -0
  79. package/lib/chokidar/chokidar.js +28 -0
  80. package/lib/copy-and-watch/index.js +105 -97
  81. package/lib/copy-list/index.js +16 -10
  82. package/lib/create-icons/index.js +32 -25
  83. package/lib/create-illustrations/index.js +80 -50
  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 +92 -0
  88. package/lib/css-processors/css-processor-themes.mjs +118 -0
  89. package/lib/css-processors/scope-variables.mjs +57 -0
  90. package/lib/css-processors/shared.mjs +46 -0
  91. package/lib/dev-server/custom-hot-update-plugin.js +4 -4
  92. package/lib/dev-server/{dev-server.js → dev-server.mjs} +26 -14
  93. package/lib/dev-server/virtual-index-html-plugin.js +24 -20
  94. package/lib/eslint/eslint.js +44 -0
  95. package/lib/generate-js-imports/illustrations.js +55 -53
  96. package/lib/generate-json-imports/i18n.js +62 -69
  97. package/lib/generate-json-imports/themes.js +34 -43
  98. package/lib/hbs2ui5/RenderTemplates/LitRenderer.js +12 -7
  99. package/lib/hbs2ui5/index.js +3 -3
  100. package/lib/i18n/defaults.js +15 -9
  101. package/lib/i18n/toJSON.js +15 -12
  102. package/lib/icons-hash/icons-hash.mjs +149 -0
  103. package/lib/postcss-combine-duplicated-selectors/index.js +12 -5
  104. package/lib/remove-dev-mode/remove-dev-mode.mjs +51 -0
  105. package/lib/rimraf/rimraf.js +31 -0
  106. package/lib/scoping/get-all-tags.js +10 -3
  107. package/lib/scoping/lint-src.js +8 -7
  108. package/lib/scoping/scope-test-pages.js +2 -1
  109. package/lib/test-runner/test-runner.js +56 -48
  110. package/lib/vite-bundler/vite-bundler.mjs +35 -0
  111. package/package.json +29 -24
  112. package/tsconfig.json +18 -0
  113. package/components-package/wdio.sync.js +0 -368
  114. package/lib/create-new-component/jsFileContentTemplate.js +0 -73
  115. package/lib/esm-abs-to-rel/index.js +0 -58
  116. package/lib/generate-custom-elements-manifest/index.js +0 -327
  117. package/lib/jsdoc/config.json +0 -29
  118. package/lib/jsdoc/configTypescript.json +0 -29
  119. package/lib/jsdoc/plugin.js +0 -2468
  120. package/lib/jsdoc/preprocess.js +0 -146
  121. package/lib/jsdoc/template/publish.js +0 -4120
  122. package/lib/postcss-css-to-esm/index.js +0 -90
  123. package/lib/postcss-css-to-json/index.js +0 -47
  124. package/lib/postcss-new-files/index.js +0 -36
  125. package/lib/postcss-p/postcss-p.mjs +0 -14
  126. package/lib/postcss-scope-vars/index.js +0 -24
  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} ${illustration.collection}`);
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 createIllustrationsLoadersScript = illustrationsData.map(illustrations => `node ${LIB}/generate-js-imports/illustrations.js ${illustrations.destinationPath} ${illustrations.dynamicImports.outputFile} ${illustrations.collection} ${illustrations.dynamicImports.location} ${illustrations.dynamicImports.prefix || '\"\"'} ${illustrations.dynamicImports.filterOut.join(" ")}`).join(" && ");
16
39
 
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";
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,107 @@ 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
+ CYPRESS_COVERAGE: !!(options.internal?.cypress_code_coverage),
74
+ },
75
+ clean: {
76
+ "default": "ui5nps clean.generated clean.dist scope.testPages.clean",
77
+ "generated": `ui5nps-script "${LIB}/rimraf/rimraf.js src/generated`,
78
+ "dist": `ui5nps-script "${LIB}/rimraf/rimraf.js dist`,
79
+ },
80
+ lint: `ui5nps-script "${LIB}eslint/eslint.js"`,
81
+ lintfix: `ui5nps-script "${LIB}eslint/eslint.js" --fix`,
82
+ generate: {
83
+ default: `ui5nps prepare.all`,
84
+ all: `ui5nps-p build.templates build.i18n prepare.styleRelated copyProps build.illustrations`, // concurently
85
+ styleRelated: "ui5nps build.styles build.jsonImports build.jsImports",
86
+ },
57
87
  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",
88
+ default: `ui5nps clean prepare.all copy copyProps prepare.typescript generateAPI`,
89
+ all: `ui5nps-p build.templates build.i18n prepare.styleRelated build.illustrations`, // concurently
90
+ styleRelated: "ui5nps build.styles build.jsonImports build.jsImports",
91
+ typescript: tsCommandOld,
61
92
  },
62
- typescript: tsCommand,
63
93
  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`,
94
+ default: "ui5nps prepare lint build.bundle", // build.bundle2
95
+ templates: options.legacy ? `mkdir -p src/generated/templates && node "${LIB}hbs2ui5/index.js" -d src/ -o src/generated/templates` : "",
66
96
  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
97
+ default: `ui5nps-p build.styles.themes build.styles.components`, // concurently
98
+ themes: `ui5nps-script "${LIB}css-processors/css-processor-themes.mjs"`,
99
+ themesWithWatch: `ui5nps-script "${LIB}css-processors/css-processor-themes.mjs" -w`,
100
+ components: `ui5nps-script "${LIB}css-processors/css-processor-components.mjs"`,
101
+ componentsWithWatch: `ui5nps-script "${LIB}css-processors/css-processor-components.mjs" -w`,
70
102
  },
71
103
  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`,
104
+ default: "ui5nps build.i18n.defaultsjs build.i18n.json",
105
+ defaultsjs: `ui5nps-script "${LIB}i18n/defaults.js" src/i18n src/generated/i18n`,
106
+ json: `ui5nps-script "${LIB}i18n/toJSON.js" src/i18n dist/generated/assets/i18n`,
75
107
  },
76
108
  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`,
109
+ default: "ui5nps build.jsonImports.themes build.jsonImports.i18n",
110
+ themes: `ui5nps-script "${LIB}generate-json-imports/themes.js" src/themes src/generated/json-imports`,
111
+ i18n: `ui5nps-script "${LIB}generate-json-imports/i18n.js" src/i18n src/generated/json-imports`,
80
112
  },
81
113
  jsImports: {
82
- default: "mkdirp dist/generated/js-imports && nps build.jsImports.illustrationsLoaders",
114
+ default: "ui5nps build.jsImports.illustrationsLoaders",
83
115
  illustrationsLoaders: createIllustrationsLoadersScript,
84
116
  },
85
- bundle: `vite build ${viteConfig}`,
117
+ bundle: `ui5nps-script "${LIB}vite-bundler/vite-bundler.mjs" ${viteConfig} --mode testing --base ${websiteBaseUrl}`,
118
+ bundle2: ``,
86
119
  illustrations: createIllustrationsJSImportsScript,
87
120
  },
121
+ copyProps: `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "src/i18n/*.properties" dist/`,
122
+ copyPropsWithWatch: `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "src/i18n/*.properties" dist/ --watch --safe --skip-initial-copy`,
123
+ copySrcWithWatch: `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "src/**/*.{js,json}" dist/ --watch --safe --skip-initial-copy`,
88
124
  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/`,
125
+ default: options.legacy ? "ui5nps copy.src copy.props" : "",
126
+ src: options.legacy ? `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "src/**/*.{js,json}" dist/` : "",
127
+ props: options.legacy ? `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "src/i18n/*.properties" dist/` : "",
93
128
  },
94
129
  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}`,
130
+ default: `ui5nps-p watch.templates watch.typescript watch.src watch.styles watch.i18n watch.props`, // concurently
131
+ devServer: 'ui5nps-p watch.default watch.bundle', // concurently
132
+ src: options.legacy ? 'ui5nps copySrcWithWatch' : "",
133
+ typescript: tsWatchCommandStandalone,
134
+ props: 'ui5nps copyPropsWithWatch',
135
+ bundle: `ui5nps-script ${LIB}dev-server/dev-server.mjs ${viteConfig}`,
101
136
  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
- },
137
+ default: 'ui5nps-p watch.styles.themes watch.styles.components', // concurently
138
+ themes: 'ui5nps build.styles.themesWithWatch',
139
+ components: `ui5nps build.styles.componentsWithWatch`,
109
140
  },
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"'
141
+ templates: options.legacy ? `ui5nps-script "${LIB}chokidar/chokidar.js" "src/**/*.hbs" "ui5nps build.templates"` : "",
142
+ i18n: `ui5nps-script "${LIB}chokidar/chokidar.js" "src/i18n/messagebundle.properties" "ui5nps build.i18n.defaultsjs"`
113
143
  },
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",
144
+ start: "ui5nps prepare watch.devServer",
145
+ test: `ui5nps-script "${LIB}/test-runner/test-runner.js"`,
146
+ "test-cy-ci": `cypress run --component --browser chrome`,
147
+ "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}"`,
148
+ "test-cy-ci-suite-2": `cypress run --component --browser chrome --spec "**/specs/[D-L]*.cy.{js,jsx,ts,tsx}"`,
149
+ "test-cy-ci-suite-3": `cypress run --component --browser chrome --spec "**/specs/[M-S]*.cy.{js,jsx,ts,tsx}"`,
150
+ "test-cy-ci-suite-4": `cypress run --component --browser chrome --spec "**/specs/[T-Z]*.cy.{js,jsx,ts,tsx}"`,
151
+ "test-cy-open": `cypress open --component --browser chrome`,
152
+ startWithScope: "ui5nps scope.prepare scope.watchWithBundle",
119
153
  scope: {
120
- prepare: "nps scope.lint prepare scope.testPages",
121
- lint: `node "${LIB}/scoping/lint-src.js"`,
154
+ prepare: "ui5nps scope.lint scope.testPages",
155
+ lint: `ui5nps-script "${LIB}scoping/lint-src.js"`,
122
156
  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`,
157
+ default: "ui5nps scope.testPages.clean scope.testPages.copy scope.testPages.replace",
158
+ "clean": `ui5nps-script "${LIB}/rimraf/rimraf.js test/pages/scoped`,
159
+ copy: `ui5nps-script "${LIB}copy-and-watch/index.js" --silent "test/pages/**/*" test/pages/scoped`,
160
+ replace: `ui5nps-script "${LIB}scoping/scope-test-pages.js" test/pages/scoped demo`,
127
161
  },
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}`,
162
+ watchWithBundle: 'ui5nps-p scope.watch scope.bundle', // concurently
163
+ watch: 'ui5nps-p watch.templates watch.props watch.styles', // concurently
164
+ bundle: `ui5nps-script ${LIB}dev-server/dev-server.mjs ${viteConfig}`,
131
165
  },
132
166
  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/"
167
+ default: tsOption ? "ui5nps generateAPI.generateCEM generateAPI.validateCEM" : "",
168
+ generateCEM: `ui5nps-script "${LIB}cem/cem.js" analyze --config "${LIB}cem/custom-elements-manifest.config.mjs"`,
169
+ validateCEM: `ui5nps-script "${LIB}cem/validate.js"`,
139
170
  },
140
171
  };
141
172
 
@@ -1,24 +1 @@
1
- const postcssImport = require('postcss-import');
2
- const postcssCSStoESM = require('../lib/postcss-css-to-esm/index.js');
3
- const postcssScopeVars = require('../lib/postcss-scope-vars/index.js');
4
- const cssnano = require('cssnano');
5
- const fs = require("fs")
6
-
7
-
8
- const packageJSON = JSON.parse(fs.readFileSync("./package.json"))
9
-
10
- module.exports = {
11
- plugins: [
12
- postcssImport(),
13
- cssnano({
14
- preset: [
15
- 'default', {
16
- mergeLonghand: false, // https://github.com/cssnano/cssnano/issues/675
17
- mergeRules: false, // https://github.com/cssnano/cssnano/issues/730
18
- },
19
- ]
20
- }),
21
- postcssScopeVars({version: packageJSON.version}),
22
- postcssCSStoESM({ toReplace: 'src', includeDefaultTheme: true, packageName: packageJSON.name }),
23
- ]
24
- }
1
+ module.exports = {}
@@ -1,30 +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 postcssScopeVars = require('../lib/postcss-scope-vars/index.js');
6
- const cssnano = require('cssnano');
7
- const fs = require("fs");
8
-
9
-
10
- const packageJSON = JSON.parse(fs.readFileSync("./package.json"))
11
- const packageName = packageJSON.name;
12
-
13
- module.exports = {
14
- plugins: [
15
- postcssScopeVars({version: packageJSON.version}),
16
- postcssImport(),
17
- combineSelectors({
18
- removeDuplicatedProperties: true
19
- }),
20
- cssnano({
21
- preset: [
22
- 'default', {
23
- mergeLonghand: false, // https://github.com/cssnano/cssnano/issues/675
24
- },
25
- ]
26
- },),
27
- postcssCSStoJSON({ toReplace: 'src', packageName }),
28
- postcssCSStoESM({ toReplace: 'src', packageName }),
29
- ]
30
- };
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
+ };