@stencil/core 4.18.3 → 4.19.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 (47) hide show
  1. package/cli/index.cjs +43 -16
  2. package/cli/index.js +43 -16
  3. package/cli/package.json +1 -1
  4. package/compiler/package.json +1 -1
  5. package/compiler/stencil.js +175 -72
  6. package/dev-server/client/index.js +1 -1
  7. package/dev-server/client/package.json +1 -1
  8. package/dev-server/connector.html +3 -3
  9. package/dev-server/index.js +1 -1
  10. package/dev-server/package.json +1 -1
  11. package/dev-server/server-process.js +2 -2
  12. package/dev-server/ws.js +1 -1
  13. package/internal/app-data/package.json +1 -1
  14. package/internal/client/index.js +534 -507
  15. package/internal/client/package.json +3 -1
  16. package/internal/client/patch-browser.js +1 -1
  17. package/internal/hydrate/index.js +108 -50
  18. package/internal/hydrate/package.json +1 -1
  19. package/internal/hydrate/runner.d.ts +29 -11
  20. package/internal/hydrate/runner.js +239 -260
  21. package/internal/package.json +1 -1
  22. package/internal/stencil-private.d.ts +39 -14
  23. package/internal/stencil-public-compiler.d.ts +21 -0
  24. package/internal/stencil-public-runtime.d.ts +0 -2
  25. package/internal/testing/index.js +439 -407
  26. package/internal/testing/package.json +1 -1
  27. package/mock-doc/index.cjs +137 -131
  28. package/mock-doc/index.d.ts +18 -4
  29. package/mock-doc/index.js +137 -131
  30. package/mock-doc/package.json +1 -1
  31. package/package.json +34 -6
  32. package/screenshot/index.js +1 -1
  33. package/screenshot/package.json +1 -1
  34. package/screenshot/pixel-match.js +1 -1
  35. package/sys/node/index.js +10 -10
  36. package/sys/node/package.json +1 -1
  37. package/sys/node/worker.js +1 -1
  38. package/testing/index.js +95 -16
  39. package/testing/jest/jest-27-and-under/matchers/events.d.ts +4 -0
  40. package/testing/jest/jest-27-and-under/matchers/index.d.ts +2 -1
  41. package/testing/jest/jest-28/matchers/events.d.ts +4 -0
  42. package/testing/jest/jest-28/matchers/index.d.ts +2 -1
  43. package/testing/jest/jest-29/matchers/events.d.ts +4 -0
  44. package/testing/jest/jest-29/matchers/index.d.ts +2 -1
  45. package/testing/mocks.d.ts +9 -9
  46. package/testing/package.json +1 -1
  47. package/testing/puppeteer/puppeteer-declarations.d.ts +11 -0
package/cli/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- Stencil CLI (CommonJS) v4.18.3 | MIT Licensed | https://stenciljs.com
2
+ Stencil CLI (CommonJS) v4.19.0 | MIT Licensed | https://stenciljs.com
3
3
  */
4
4
  "use strict";
5
5
  var __create = Object.create;
@@ -3617,8 +3617,14 @@ var taskGenerate = async (config) => {
3617
3617
  config.logger.error(tagError);
3618
3618
  return config.sys.exit(1);
3619
3619
  }
3620
- const filesToGenerateExt = await chooseFilesToGenerate();
3621
- if (void 0 === filesToGenerateExt) {
3620
+ let cssExtension = "css";
3621
+ if (!!config.plugins.find((plugin) => plugin.name === "sass")) {
3622
+ cssExtension = await chooseSassExtension();
3623
+ } else if (!!config.plugins.find((plugin) => plugin.name === "less")) {
3624
+ cssExtension = "less";
3625
+ }
3626
+ const filesToGenerateExt = await chooseFilesToGenerate(cssExtension);
3627
+ if (!filesToGenerateExt) {
3622
3628
  return;
3623
3629
  }
3624
3630
  const extensionsToGenerate = ["tsx", ...filesToGenerateExt];
@@ -3632,7 +3638,13 @@ var taskGenerate = async (config) => {
3632
3638
  await checkForOverwrite(filesToGenerate, config);
3633
3639
  const writtenFiles = await Promise.all(
3634
3640
  filesToGenerate.map(
3635
- (file) => getBoilerplateAndWriteFile(config, componentName, extensionsToGenerate.includes("css"), file)
3641
+ (file) => getBoilerplateAndWriteFile(
3642
+ config,
3643
+ componentName,
3644
+ extensionsToGenerate.includes("css") || extensionsToGenerate.includes("sass") || extensionsToGenerate.includes("scss") || extensionsToGenerate.includes("less"),
3645
+ file,
3646
+ cssExtension
3647
+ )
3636
3648
  )
3637
3649
  ).catch((error) => config.logger.error(error));
3638
3650
  if (!writtenFiles) {
@@ -3645,22 +3657,34 @@ var taskGenerate = async (config) => {
3645
3657
  const absoluteRootDir = config.rootDir;
3646
3658
  writtenFiles.map((file) => console.log(` - ${(0, import_path2.relative)(absoluteRootDir, file)}`));
3647
3659
  };
3648
- var chooseFilesToGenerate = async () => {
3660
+ var chooseFilesToGenerate = async (cssExtension) => {
3649
3661
  const { prompt } = await Promise.resolve().then(() => __toESM(require_lib()));
3650
3662
  return (await prompt({
3651
3663
  name: "filesToGenerate",
3652
3664
  type: "multiselect",
3653
3665
  message: "Which additional files do you want to generate?",
3654
3666
  choices: [
3655
- { value: "css", title: "Stylesheet (.css)", selected: true },
3667
+ { value: cssExtension, title: `Stylesheet (.${cssExtension})`, selected: true },
3656
3668
  { value: "spec.tsx", title: "Spec Test (.spec.tsx)", selected: true },
3657
3669
  { value: "e2e.ts", title: "E2E Test (.e2e.ts)", selected: true }
3658
3670
  ]
3659
3671
  })).filesToGenerate;
3660
3672
  };
3673
+ var chooseSassExtension = async () => {
3674
+ const { prompt } = await Promise.resolve().then(() => __toESM(require_lib()));
3675
+ return (await prompt({
3676
+ name: "sassFormat",
3677
+ type: "select",
3678
+ message: "Which Sass format would you like to use? (More info: https://sass-lang.com/documentation/syntax/#the-indented-syntax)",
3679
+ choices: [
3680
+ { value: "sass", title: `*.sass Format`, selected: true },
3681
+ { value: "scss", title: "*.scss Format" }
3682
+ ]
3683
+ })).sassFormat;
3684
+ };
3661
3685
  var getFilepathForFile = (filePath, componentName, extension) => isTest2(extension) ? normalizePath((0, import_path2.join)(filePath, "test", `${componentName}.${extension}`)) : normalizePath((0, import_path2.join)(filePath, `${componentName}.${extension}`));
3662
- var getBoilerplateAndWriteFile = async (config, componentName, withCss, file) => {
3663
- const boilerplate = getBoilerplateByExtension(componentName, file.extension, withCss);
3686
+ var getBoilerplateAndWriteFile = async (config, componentName, withCss, file, styleExtension) => {
3687
+ const boilerplate = getBoilerplateByExtension(componentName, file.extension, withCss, styleExtension);
3664
3688
  await config.sys.writeFile(normalizePath(file.path), boilerplate);
3665
3689
  return file.path;
3666
3690
  };
@@ -3684,12 +3708,15 @@ var checkForOverwrite = async (files, config) => {
3684
3708
  var isTest2 = (extension) => {
3685
3709
  return extension === "e2e.ts" || extension === "spec.tsx";
3686
3710
  };
3687
- var getBoilerplateByExtension = (tagName, extension, withCss) => {
3711
+ var getBoilerplateByExtension = (tagName, extension, withCss, styleExtension) => {
3688
3712
  switch (extension) {
3689
3713
  case "tsx":
3690
- return getComponentBoilerplate(tagName, withCss);
3714
+ return getComponentBoilerplate(tagName, withCss, styleExtension);
3691
3715
  case "css":
3692
- return getStyleUrlBoilerplate();
3716
+ case "less":
3717
+ case "sass":
3718
+ case "scss":
3719
+ return getStyleUrlBoilerplate(styleExtension);
3693
3720
  case "spec.tsx":
3694
3721
  return getSpecTestBoilerplate(tagName);
3695
3722
  case "e2e.ts":
@@ -3698,11 +3725,11 @@ var getBoilerplateByExtension = (tagName, extension, withCss) => {
3698
3725
  throw new Error(`Unkown extension "${extension}".`);
3699
3726
  }
3700
3727
  };
3701
- var getComponentBoilerplate = (tagName, hasStyle) => {
3728
+ var getComponentBoilerplate = (tagName, hasStyle, styleExtension) => {
3702
3729
  const decorator = [`{`];
3703
3730
  decorator.push(` tag: '${tagName}',`);
3704
3731
  if (hasStyle) {
3705
- decorator.push(` styleUrl: '${tagName}.css',`);
3732
+ decorator.push(` styleUrl: '${tagName}.${styleExtension}',`);
3706
3733
  }
3707
3734
  decorator.push(` shadow: true,`);
3708
3735
  decorator.push(`}`);
@@ -3710,7 +3737,6 @@ var getComponentBoilerplate = (tagName, hasStyle) => {
3710
3737
 
3711
3738
  @Component(${decorator.join("\n")})
3712
3739
  export class ${toPascalCase(tagName)} {
3713
-
3714
3740
  render() {
3715
3741
  return (
3716
3742
  <Host>
@@ -3718,11 +3744,12 @@ export class ${toPascalCase(tagName)} {
3718
3744
  </Host>
3719
3745
  );
3720
3746
  }
3721
-
3722
3747
  }
3723
3748
  `;
3724
3749
  };
3725
- var getStyleUrlBoilerplate = () => `:host {
3750
+ var getStyleUrlBoilerplate = (ext) => ext === "sass" ? `:host
3751
+ display: block
3752
+ ` : `:host {
3726
3753
  display: block;
3727
3754
  }
3728
3755
  `;
package/cli/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- Stencil CLI v4.18.3 | MIT Licensed | https://stenciljs.com
2
+ Stencil CLI v4.19.0 | MIT Licensed | https://stenciljs.com
3
3
  */
4
4
  var __create = Object.create;
5
5
  var __defProp = Object.defineProperty;
@@ -3611,8 +3611,14 @@ var taskGenerate = async (config) => {
3611
3611
  config.logger.error(tagError);
3612
3612
  return config.sys.exit(1);
3613
3613
  }
3614
- const filesToGenerateExt = await chooseFilesToGenerate();
3615
- if (void 0 === filesToGenerateExt) {
3614
+ let cssExtension = "css";
3615
+ if (!!config.plugins.find((plugin) => plugin.name === "sass")) {
3616
+ cssExtension = await chooseSassExtension();
3617
+ } else if (!!config.plugins.find((plugin) => plugin.name === "less")) {
3618
+ cssExtension = "less";
3619
+ }
3620
+ const filesToGenerateExt = await chooseFilesToGenerate(cssExtension);
3621
+ if (!filesToGenerateExt) {
3616
3622
  return;
3617
3623
  }
3618
3624
  const extensionsToGenerate = ["tsx", ...filesToGenerateExt];
@@ -3626,7 +3632,13 @@ var taskGenerate = async (config) => {
3626
3632
  await checkForOverwrite(filesToGenerate, config);
3627
3633
  const writtenFiles = await Promise.all(
3628
3634
  filesToGenerate.map(
3629
- (file) => getBoilerplateAndWriteFile(config, componentName, extensionsToGenerate.includes("css"), file)
3635
+ (file) => getBoilerplateAndWriteFile(
3636
+ config,
3637
+ componentName,
3638
+ extensionsToGenerate.includes("css") || extensionsToGenerate.includes("sass") || extensionsToGenerate.includes("scss") || extensionsToGenerate.includes("less"),
3639
+ file,
3640
+ cssExtension
3641
+ )
3630
3642
  )
3631
3643
  ).catch((error) => config.logger.error(error));
3632
3644
  if (!writtenFiles) {
@@ -3639,22 +3651,34 @@ var taskGenerate = async (config) => {
3639
3651
  const absoluteRootDir = config.rootDir;
3640
3652
  writtenFiles.map((file) => console.log(` - ${relative(absoluteRootDir, file)}`));
3641
3653
  };
3642
- var chooseFilesToGenerate = async () => {
3654
+ var chooseFilesToGenerate = async (cssExtension) => {
3643
3655
  const { prompt } = await Promise.resolve().then(() => __toESM(require_lib()));
3644
3656
  return (await prompt({
3645
3657
  name: "filesToGenerate",
3646
3658
  type: "multiselect",
3647
3659
  message: "Which additional files do you want to generate?",
3648
3660
  choices: [
3649
- { value: "css", title: "Stylesheet (.css)", selected: true },
3661
+ { value: cssExtension, title: `Stylesheet (.${cssExtension})`, selected: true },
3650
3662
  { value: "spec.tsx", title: "Spec Test (.spec.tsx)", selected: true },
3651
3663
  { value: "e2e.ts", title: "E2E Test (.e2e.ts)", selected: true }
3652
3664
  ]
3653
3665
  })).filesToGenerate;
3654
3666
  };
3667
+ var chooseSassExtension = async () => {
3668
+ const { prompt } = await Promise.resolve().then(() => __toESM(require_lib()));
3669
+ return (await prompt({
3670
+ name: "sassFormat",
3671
+ type: "select",
3672
+ message: "Which Sass format would you like to use? (More info: https://sass-lang.com/documentation/syntax/#the-indented-syntax)",
3673
+ choices: [
3674
+ { value: "sass", title: `*.sass Format`, selected: true },
3675
+ { value: "scss", title: "*.scss Format" }
3676
+ ]
3677
+ })).sassFormat;
3678
+ };
3655
3679
  var getFilepathForFile = (filePath, componentName, extension) => isTest2(extension) ? normalizePath(join2(filePath, "test", `${componentName}.${extension}`)) : normalizePath(join2(filePath, `${componentName}.${extension}`));
3656
- var getBoilerplateAndWriteFile = async (config, componentName, withCss, file) => {
3657
- const boilerplate = getBoilerplateByExtension(componentName, file.extension, withCss);
3680
+ var getBoilerplateAndWriteFile = async (config, componentName, withCss, file, styleExtension) => {
3681
+ const boilerplate = getBoilerplateByExtension(componentName, file.extension, withCss, styleExtension);
3658
3682
  await config.sys.writeFile(normalizePath(file.path), boilerplate);
3659
3683
  return file.path;
3660
3684
  };
@@ -3678,12 +3702,15 @@ var checkForOverwrite = async (files, config) => {
3678
3702
  var isTest2 = (extension) => {
3679
3703
  return extension === "e2e.ts" || extension === "spec.tsx";
3680
3704
  };
3681
- var getBoilerplateByExtension = (tagName, extension, withCss) => {
3705
+ var getBoilerplateByExtension = (tagName, extension, withCss, styleExtension) => {
3682
3706
  switch (extension) {
3683
3707
  case "tsx":
3684
- return getComponentBoilerplate(tagName, withCss);
3708
+ return getComponentBoilerplate(tagName, withCss, styleExtension);
3685
3709
  case "css":
3686
- return getStyleUrlBoilerplate();
3710
+ case "less":
3711
+ case "sass":
3712
+ case "scss":
3713
+ return getStyleUrlBoilerplate(styleExtension);
3687
3714
  case "spec.tsx":
3688
3715
  return getSpecTestBoilerplate(tagName);
3689
3716
  case "e2e.ts":
@@ -3692,11 +3719,11 @@ var getBoilerplateByExtension = (tagName, extension, withCss) => {
3692
3719
  throw new Error(`Unkown extension "${extension}".`);
3693
3720
  }
3694
3721
  };
3695
- var getComponentBoilerplate = (tagName, hasStyle) => {
3722
+ var getComponentBoilerplate = (tagName, hasStyle, styleExtension) => {
3696
3723
  const decorator = [`{`];
3697
3724
  decorator.push(` tag: '${tagName}',`);
3698
3725
  if (hasStyle) {
3699
- decorator.push(` styleUrl: '${tagName}.css',`);
3726
+ decorator.push(` styleUrl: '${tagName}.${styleExtension}',`);
3700
3727
  }
3701
3728
  decorator.push(` shadow: true,`);
3702
3729
  decorator.push(`}`);
@@ -3704,7 +3731,6 @@ var getComponentBoilerplate = (tagName, hasStyle) => {
3704
3731
 
3705
3732
  @Component(${decorator.join("\n")})
3706
3733
  export class ${toPascalCase(tagName)} {
3707
-
3708
3734
  render() {
3709
3735
  return (
3710
3736
  <Host>
@@ -3712,11 +3738,12 @@ export class ${toPascalCase(tagName)} {
3712
3738
  </Host>
3713
3739
  );
3714
3740
  }
3715
-
3716
3741
  }
3717
3742
  `;
3718
3743
  };
3719
- var getStyleUrlBoilerplate = () => `:host {
3744
+ var getStyleUrlBoilerplate = (ext) => ext === "sass" ? `:host
3745
+ display: block
3746
+ ` : `:host {
3720
3747
  display: block;
3721
3748
  }
3722
3749
  `;
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stencil/core/cli",
3
- "version": "4.18.3",
3
+ "version": "4.19.0",
4
4
  "description": "Stencil CLI.",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stencil/core/compiler",
3
- "version": "4.18.3",
3
+ "version": "4.19.0",
4
4
  "description": "Stencil Compiler.",
5
5
  "main": "./stencil.js",
6
6
  "types": "./stencil.d.ts",