@stencil/core 2.16.0 → 2.17.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 (42) hide show
  1. package/cli/index.cjs +124 -16
  2. package/cli/index.js +124 -16
  3. package/cli/package.json +1 -1
  4. package/compiler/package.json +1 -1
  5. package/compiler/stencil.js +728 -263
  6. package/compiler/stencil.min.js +2 -2
  7. package/dependencies.json +1 -1
  8. package/dev-server/client/index.js +1 -1
  9. package/dev-server/client/package.json +1 -1
  10. package/dev-server/connector.html +3 -3
  11. package/dev-server/index.js +1 -1
  12. package/dev-server/package.json +1 -1
  13. package/dev-server/server-process.js +4 -2
  14. package/internal/app-data/package.json +1 -1
  15. package/internal/client/css-shim.js +1 -1
  16. package/internal/client/dom.js +1 -1
  17. package/internal/client/index.js +1 -1
  18. package/internal/client/package.json +1 -1
  19. package/internal/client/patch-browser.js +1 -1
  20. package/internal/client/patch-esm.js +1 -1
  21. package/internal/client/shadow-css.js +1 -1
  22. package/internal/hydrate/index.js +3 -3
  23. package/internal/hydrate/package.json +1 -1
  24. package/internal/package.json +1 -1
  25. package/internal/stencil-private.d.ts +4 -0
  26. package/internal/stencil-public-compiler.d.ts +3 -2
  27. package/internal/testing/index.js +1 -1
  28. package/internal/testing/package.json +1 -1
  29. package/mock-doc/index.cjs +142 -5
  30. package/mock-doc/index.d.ts +77 -1
  31. package/mock-doc/index.js +142 -5
  32. package/mock-doc/package.json +1 -1
  33. package/package.json +2 -1
  34. package/screenshot/index.js +2 -0
  35. package/screenshot/package.json +1 -1
  36. package/sys/node/index.js +325 -314
  37. package/sys/node/package.json +1 -1
  38. package/sys/node/worker.js +1 -1
  39. package/testing/index.d.ts +1 -1
  40. package/testing/index.js +105 -62
  41. package/testing/mocks.d.ts +22 -2
  42. package/testing/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- Stencil Mock Doc (CommonJS) v2.16.0 | MIT Licensed | https://stenciljs.com
2
+ Stencil Mock Doc (CommonJS) v2.17.0 | MIT Licensed | https://stenciljs.com
3
3
  */
4
4
  var mockDoc = (function(exports) {
5
5
  'use strict';
@@ -1601,6 +1601,9 @@ class MockElement extends MockNode {
1601
1601
  this.shadowRoot = shadowRoot;
1602
1602
  return shadowRoot;
1603
1603
  }
1604
+ blur() {
1605
+ /**/
1606
+ }
1604
1607
  get shadowRoot() {
1605
1608
  return this.__shadowRoot || null;
1606
1609
  }
@@ -1669,6 +1672,7 @@ class MockElement extends MockNode {
1669
1672
  get firstElementChild() {
1670
1673
  return this.children[0] || null;
1671
1674
  }
1675
+ focus(_options) { }
1672
1676
  getAttribute(attrName) {
1673
1677
  if (attrName === 'style') {
1674
1678
  if (this.__style != null && this.__style.length > 0) {
@@ -2572,7 +2576,28 @@ function createElementNS(ownerDocument, namespaceURI, tagName) {
2572
2576
  return createElement(ownerDocument, tagName);
2573
2577
  }
2574
2578
  else if (namespaceURI === 'http://www.w3.org/2000/svg') {
2575
- return new MockSVGElement(ownerDocument, tagName);
2579
+ switch (tagName.toLowerCase()) {
2580
+ case 'text':
2581
+ case 'tspan':
2582
+ case 'tref':
2583
+ case 'altglyph':
2584
+ case 'textpath':
2585
+ return new MockSVGTextContentElement(ownerDocument, tagName);
2586
+ case 'circle':
2587
+ case 'ellipse':
2588
+ case 'image':
2589
+ case 'line':
2590
+ case 'path':
2591
+ case 'polygon':
2592
+ case 'polyline':
2593
+ case 'rect':
2594
+ case 'use':
2595
+ return new MockSVGGraphicsElement(ownerDocument, tagName);
2596
+ case 'svg':
2597
+ return new MockSVGSVGElement(ownerDocument, tagName);
2598
+ default:
2599
+ return new MockSVGElement(ownerDocument, tagName);
2600
+ }
2576
2601
  }
2577
2602
  else {
2578
2603
  return new MockElement(ownerDocument, tagName);
@@ -2719,6 +2744,98 @@ class MockScriptElement extends MockHTMLElement {
2719
2744
  patchPropAttributes(MockScriptElement.prototype, {
2720
2745
  type: String,
2721
2746
  });
2747
+ class MockDOMMatrix {
2748
+ constructor() {
2749
+ this.a = 1;
2750
+ this.b = 0;
2751
+ this.c = 0;
2752
+ this.d = 1;
2753
+ this.e = 0;
2754
+ this.f = 0;
2755
+ this.m11 = 1;
2756
+ this.m12 = 0;
2757
+ this.m13 = 0;
2758
+ this.m14 = 0;
2759
+ this.m21 = 0;
2760
+ this.m22 = 1;
2761
+ this.m23 = 0;
2762
+ this.m24 = 0;
2763
+ this.m31 = 0;
2764
+ this.m32 = 0;
2765
+ this.m33 = 1;
2766
+ this.m34 = 0;
2767
+ this.m41 = 0;
2768
+ this.m42 = 0;
2769
+ this.m43 = 0;
2770
+ this.m44 = 1;
2771
+ this.is2D = true;
2772
+ this.isIdentity = true;
2773
+ }
2774
+ static fromMatrix() {
2775
+ return new MockDOMMatrix();
2776
+ }
2777
+ inverse() {
2778
+ return new MockDOMMatrix();
2779
+ }
2780
+ flipX() {
2781
+ return new MockDOMMatrix();
2782
+ }
2783
+ flipY() {
2784
+ return new MockDOMMatrix();
2785
+ }
2786
+ multiply() {
2787
+ return new MockDOMMatrix();
2788
+ }
2789
+ rotate() {
2790
+ return new MockDOMMatrix();
2791
+ }
2792
+ rotateAxisAngle() {
2793
+ return new MockDOMMatrix();
2794
+ }
2795
+ rotateFromVector() {
2796
+ return new MockDOMMatrix();
2797
+ }
2798
+ scale() {
2799
+ return new MockDOMMatrix();
2800
+ }
2801
+ scaleNonUniform() {
2802
+ return new MockDOMMatrix();
2803
+ }
2804
+ skewX() {
2805
+ return new MockDOMMatrix();
2806
+ }
2807
+ skewY() {
2808
+ return new MockDOMMatrix();
2809
+ }
2810
+ toJSON() { }
2811
+ toString() { }
2812
+ transformPoint() {
2813
+ return new MockDOMPoint();
2814
+ }
2815
+ translate() {
2816
+ return new MockDOMMatrix();
2817
+ }
2818
+ }
2819
+ class MockDOMPoint {
2820
+ constructor() {
2821
+ this.w = 1;
2822
+ this.x = 0;
2823
+ this.y = 0;
2824
+ this.z = 0;
2825
+ }
2826
+ toJSON() { }
2827
+ matrixTransform() {
2828
+ return new MockDOMMatrix();
2829
+ }
2830
+ }
2831
+ class MockSVGRect {
2832
+ constructor() {
2833
+ this.height = 10;
2834
+ this.width = 10;
2835
+ this.x = 0;
2836
+ this.y = 0;
2837
+ }
2838
+ }
2722
2839
  class MockStyleElement extends MockHTMLElement {
2723
2840
  constructor(ownerDocument) {
2724
2841
  super(ownerDocument, 'style');
@@ -2751,9 +2868,6 @@ class MockSVGElement extends MockElement {
2751
2868
  get viewportElement() {
2752
2869
  return null;
2753
2870
  }
2754
- focus() {
2755
- /**/
2756
- }
2757
2871
  onunload() {
2758
2872
  /**/
2759
2873
  }
@@ -2771,6 +2885,27 @@ class MockSVGElement extends MockElement {
2771
2885
  return 0;
2772
2886
  }
2773
2887
  }
2888
+ class MockSVGGraphicsElement extends MockSVGElement {
2889
+ getBBox(_options) {
2890
+ return new MockSVGRect();
2891
+ }
2892
+ getCTM() {
2893
+ return new MockDOMMatrix();
2894
+ }
2895
+ getScreenCTM() {
2896
+ return new MockDOMMatrix();
2897
+ }
2898
+ }
2899
+ class MockSVGSVGElement extends MockSVGGraphicsElement {
2900
+ createSVGPoint() {
2901
+ return new MockDOMPoint();
2902
+ }
2903
+ }
2904
+ class MockSVGTextContentElement extends MockSVGGraphicsElement {
2905
+ getComputedTextLength() {
2906
+ return 0;
2907
+ }
2908
+ }
2774
2909
  class MockBaseElement extends MockHTMLElement {
2775
2910
  constructor(ownerDocument) {
2776
2911
  super(ownerDocument, 'base');
@@ -4267,9 +4402,11 @@ function cloneDocument(srcDoc) {
4267
4402
  const dstWin = cloneWindow(srcDoc.defaultView);
4268
4403
  return dstWin.document;
4269
4404
  }
4405
+ // TODO(STENCIL-345) - Evaluate reconciling MockWindow, Window differences
4270
4406
  /**
4271
4407
  * Constrain setTimeout() to 1ms, but still async. Also
4272
4408
  * only allow setInterval() to fire once, also constrained to 1ms.
4409
+ * @param win the mock window instance to update
4273
4410
  */
4274
4411
  function constrainTimeouts(win) {
4275
4412
  win.__allowInterval = false;
@@ -199,6 +199,62 @@ declare class MockScriptElement extends MockHTMLElement {
199
199
  get src(): string;
200
200
  set src(value: string);
201
201
  }
202
+ declare class MockDOMMatrix {
203
+ static fromMatrix(): MockDOMMatrix;
204
+ a: number;
205
+ b: number;
206
+ c: number;
207
+ d: number;
208
+ e: number;
209
+ f: number;
210
+ m11: number;
211
+ m12: number;
212
+ m13: number;
213
+ m14: number;
214
+ m21: number;
215
+ m22: number;
216
+ m23: number;
217
+ m24: number;
218
+ m31: number;
219
+ m32: number;
220
+ m33: number;
221
+ m34: number;
222
+ m41: number;
223
+ m42: number;
224
+ m43: number;
225
+ m44: number;
226
+ is2D: boolean;
227
+ isIdentity: boolean;
228
+ inverse(): MockDOMMatrix;
229
+ flipX(): MockDOMMatrix;
230
+ flipY(): MockDOMMatrix;
231
+ multiply(): MockDOMMatrix;
232
+ rotate(): MockDOMMatrix;
233
+ rotateAxisAngle(): MockDOMMatrix;
234
+ rotateFromVector(): MockDOMMatrix;
235
+ scale(): MockDOMMatrix;
236
+ scaleNonUniform(): MockDOMMatrix;
237
+ skewX(): MockDOMMatrix;
238
+ skewY(): MockDOMMatrix;
239
+ toJSON(): void;
240
+ toString(): void;
241
+ transformPoint(): MockDOMPoint;
242
+ translate(): MockDOMMatrix;
243
+ }
244
+ declare class MockDOMPoint {
245
+ w: number;
246
+ x: number;
247
+ y: number;
248
+ z: number;
249
+ toJSON(): void;
250
+ matrixTransform(): MockDOMMatrix;
251
+ }
252
+ declare class MockSVGRect {
253
+ height: number;
254
+ width: number;
255
+ x: number;
256
+ y: number;
257
+ }
202
258
  declare class MockStyleElement extends MockHTMLElement {
203
259
  sheet: MockCSSStyleSheet;
204
260
  constructor(ownerDocument: any);
@@ -212,13 +268,28 @@ declare class MockStyleElement extends MockHTMLElement {
212
268
  declare class MockSVGElement extends MockElement {
213
269
  get ownerSVGElement(): SVGSVGElement;
214
270
  get viewportElement(): SVGElement;
215
- focus(): void;
216
271
  onunload(): void;
217
272
  get pathLength(): number;
218
273
  isPointInFill(_pt: DOMPoint): boolean;
219
274
  isPointInStroke(_pt: DOMPoint): boolean;
220
275
  getTotalLength(): number;
221
276
  }
277
+ declare class MockSVGGraphicsElement extends MockSVGElement {
278
+ getBBox(_options?: {
279
+ clipped: boolean;
280
+ fill: boolean;
281
+ markers: boolean;
282
+ stroke: boolean;
283
+ }): MockSVGRect;
284
+ getCTM(): MockDOMMatrix;
285
+ getScreenCTM(): MockDOMMatrix;
286
+ }
287
+ declare class MockSVGSVGElement extends MockSVGGraphicsElement {
288
+ createSVGPoint(): MockDOMPoint;
289
+ }
290
+ declare class MockSVGTextContentElement extends MockSVGGraphicsElement {
291
+ getComputedTextLength(): number;
292
+ }
222
293
  declare class MockBaseElement extends MockHTMLElement {
223
294
  constructor(ownerDocument: any);
224
295
  get href(): string;
@@ -438,6 +509,7 @@ declare class MockElement extends MockNode {
438
509
  constructor(ownerDocument: any, nodeName: string);
439
510
  addEventListener(type: string, handler: (ev?: any) => void): void;
440
511
  attachShadow(_opts: ShadowRootInit): any;
512
+ blur(): void;
441
513
  get shadowRoot(): any;
442
514
  set shadowRoot(shadowRoot: any);
443
515
  get attributes(): MockAttributeMap;
@@ -455,6 +527,9 @@ declare class MockElement extends MockNode {
455
527
  set dir(value: string);
456
528
  dispatchEvent(ev: MockEvent): boolean;
457
529
  get firstElementChild(): MockElement | null;
530
+ focus(_options?: {
531
+ preventScroll?: boolean;
532
+ }): void;
458
533
  getAttribute(attrName: string): any;
459
534
  getAttributeNS(namespaceURI: string, attrName: string): string;
460
535
  getBoundingClientRect(): {
@@ -923,6 +998,7 @@ declare function cloneDocument(srcDoc: Document): Document;
923
998
  /**
924
999
  * Constrain setTimeout() to 1ms, but still async. Also
925
1000
  * only allow setInterval() to fire once, also constrained to 1ms.
1001
+ * @param win the mock window instance to update
926
1002
  */
927
1003
  declare function constrainTimeouts(win: any): void;
928
1004
  export { MockAttr, MockAttributeMap, MockComment, MockCustomEvent, MockDocument, MockElement, MockHTMLElement, MockHeaders, MockKeyboardEvent, MockMouseEvent, MockNode, MockRequest, MockRequestInfo, MockRequestInit, MockResponse, MockResponseInit, MockTextNode, MockWindow, NODE_TYPES, SerializeNodeToHtmlOptions, cloneAttributes, cloneDocument, cloneWindow, constrainTimeouts, createDocument, createFragment, parseHtmlToDocument, parseHtmlToFragment, patchWindow, resetDocument, serializeNodeToHtml, setupGlobal, teardownGlobal }
package/mock-doc/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- Stencil Mock Doc v2.16.0 | MIT Licensed | https://stenciljs.com
2
+ Stencil Mock Doc v2.17.0 | MIT Licensed | https://stenciljs.com
3
3
  */
4
4
  const CONTENT_REF_ID = 'r';
5
5
  const ORG_LOCATION_ID = 'o';
@@ -1598,6 +1598,9 @@ class MockElement extends MockNode {
1598
1598
  this.shadowRoot = shadowRoot;
1599
1599
  return shadowRoot;
1600
1600
  }
1601
+ blur() {
1602
+ /**/
1603
+ }
1601
1604
  get shadowRoot() {
1602
1605
  return this.__shadowRoot || null;
1603
1606
  }
@@ -1666,6 +1669,7 @@ class MockElement extends MockNode {
1666
1669
  get firstElementChild() {
1667
1670
  return this.children[0] || null;
1668
1671
  }
1672
+ focus(_options) { }
1669
1673
  getAttribute(attrName) {
1670
1674
  if (attrName === 'style') {
1671
1675
  if (this.__style != null && this.__style.length > 0) {
@@ -2569,7 +2573,28 @@ function createElementNS(ownerDocument, namespaceURI, tagName) {
2569
2573
  return createElement(ownerDocument, tagName);
2570
2574
  }
2571
2575
  else if (namespaceURI === 'http://www.w3.org/2000/svg') {
2572
- return new MockSVGElement(ownerDocument, tagName);
2576
+ switch (tagName.toLowerCase()) {
2577
+ case 'text':
2578
+ case 'tspan':
2579
+ case 'tref':
2580
+ case 'altglyph':
2581
+ case 'textpath':
2582
+ return new MockSVGTextContentElement(ownerDocument, tagName);
2583
+ case 'circle':
2584
+ case 'ellipse':
2585
+ case 'image':
2586
+ case 'line':
2587
+ case 'path':
2588
+ case 'polygon':
2589
+ case 'polyline':
2590
+ case 'rect':
2591
+ case 'use':
2592
+ return new MockSVGGraphicsElement(ownerDocument, tagName);
2593
+ case 'svg':
2594
+ return new MockSVGSVGElement(ownerDocument, tagName);
2595
+ default:
2596
+ return new MockSVGElement(ownerDocument, tagName);
2597
+ }
2573
2598
  }
2574
2599
  else {
2575
2600
  return new MockElement(ownerDocument, tagName);
@@ -2716,6 +2741,98 @@ class MockScriptElement extends MockHTMLElement {
2716
2741
  patchPropAttributes(MockScriptElement.prototype, {
2717
2742
  type: String,
2718
2743
  });
2744
+ class MockDOMMatrix {
2745
+ constructor() {
2746
+ this.a = 1;
2747
+ this.b = 0;
2748
+ this.c = 0;
2749
+ this.d = 1;
2750
+ this.e = 0;
2751
+ this.f = 0;
2752
+ this.m11 = 1;
2753
+ this.m12 = 0;
2754
+ this.m13 = 0;
2755
+ this.m14 = 0;
2756
+ this.m21 = 0;
2757
+ this.m22 = 1;
2758
+ this.m23 = 0;
2759
+ this.m24 = 0;
2760
+ this.m31 = 0;
2761
+ this.m32 = 0;
2762
+ this.m33 = 1;
2763
+ this.m34 = 0;
2764
+ this.m41 = 0;
2765
+ this.m42 = 0;
2766
+ this.m43 = 0;
2767
+ this.m44 = 1;
2768
+ this.is2D = true;
2769
+ this.isIdentity = true;
2770
+ }
2771
+ static fromMatrix() {
2772
+ return new MockDOMMatrix();
2773
+ }
2774
+ inverse() {
2775
+ return new MockDOMMatrix();
2776
+ }
2777
+ flipX() {
2778
+ return new MockDOMMatrix();
2779
+ }
2780
+ flipY() {
2781
+ return new MockDOMMatrix();
2782
+ }
2783
+ multiply() {
2784
+ return new MockDOMMatrix();
2785
+ }
2786
+ rotate() {
2787
+ return new MockDOMMatrix();
2788
+ }
2789
+ rotateAxisAngle() {
2790
+ return new MockDOMMatrix();
2791
+ }
2792
+ rotateFromVector() {
2793
+ return new MockDOMMatrix();
2794
+ }
2795
+ scale() {
2796
+ return new MockDOMMatrix();
2797
+ }
2798
+ scaleNonUniform() {
2799
+ return new MockDOMMatrix();
2800
+ }
2801
+ skewX() {
2802
+ return new MockDOMMatrix();
2803
+ }
2804
+ skewY() {
2805
+ return new MockDOMMatrix();
2806
+ }
2807
+ toJSON() { }
2808
+ toString() { }
2809
+ transformPoint() {
2810
+ return new MockDOMPoint();
2811
+ }
2812
+ translate() {
2813
+ return new MockDOMMatrix();
2814
+ }
2815
+ }
2816
+ class MockDOMPoint {
2817
+ constructor() {
2818
+ this.w = 1;
2819
+ this.x = 0;
2820
+ this.y = 0;
2821
+ this.z = 0;
2822
+ }
2823
+ toJSON() { }
2824
+ matrixTransform() {
2825
+ return new MockDOMMatrix();
2826
+ }
2827
+ }
2828
+ class MockSVGRect {
2829
+ constructor() {
2830
+ this.height = 10;
2831
+ this.width = 10;
2832
+ this.x = 0;
2833
+ this.y = 0;
2834
+ }
2835
+ }
2719
2836
  class MockStyleElement extends MockHTMLElement {
2720
2837
  constructor(ownerDocument) {
2721
2838
  super(ownerDocument, 'style');
@@ -2748,9 +2865,6 @@ class MockSVGElement extends MockElement {
2748
2865
  get viewportElement() {
2749
2866
  return null;
2750
2867
  }
2751
- focus() {
2752
- /**/
2753
- }
2754
2868
  onunload() {
2755
2869
  /**/
2756
2870
  }
@@ -2768,6 +2882,27 @@ class MockSVGElement extends MockElement {
2768
2882
  return 0;
2769
2883
  }
2770
2884
  }
2885
+ class MockSVGGraphicsElement extends MockSVGElement {
2886
+ getBBox(_options) {
2887
+ return new MockSVGRect();
2888
+ }
2889
+ getCTM() {
2890
+ return new MockDOMMatrix();
2891
+ }
2892
+ getScreenCTM() {
2893
+ return new MockDOMMatrix();
2894
+ }
2895
+ }
2896
+ class MockSVGSVGElement extends MockSVGGraphicsElement {
2897
+ createSVGPoint() {
2898
+ return new MockDOMPoint();
2899
+ }
2900
+ }
2901
+ class MockSVGTextContentElement extends MockSVGGraphicsElement {
2902
+ getComputedTextLength() {
2903
+ return 0;
2904
+ }
2905
+ }
2771
2906
  class MockBaseElement extends MockHTMLElement {
2772
2907
  constructor(ownerDocument) {
2773
2908
  super(ownerDocument, 'base');
@@ -4264,9 +4399,11 @@ function cloneDocument(srcDoc) {
4264
4399
  const dstWin = cloneWindow(srcDoc.defaultView);
4265
4400
  return dstWin.document;
4266
4401
  }
4402
+ // TODO(STENCIL-345) - Evaluate reconciling MockWindow, Window differences
4267
4403
  /**
4268
4404
  * Constrain setTimeout() to 1ms, but still async. Also
4269
4405
  * only allow setInterval() to fire once, also constrained to 1ms.
4406
+ * @param win the mock window instance to update
4270
4407
  */
4271
4408
  function constrainTimeouts(win) {
4272
4409
  win.__allowInterval = false;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stencil/core/mock-doc",
3
- "version": "2.16.0",
3
+ "version": "2.17.0",
4
4
  "description": "Mock window, document and DOM outside of a browser environment.",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stencil/core",
3
- "version": "2.16.0",
3
+ "version": "2.17.0",
4
4
  "license": "MIT",
5
5
  "main": "./internal/stencil-core/index.cjs",
6
6
  "module": "./internal/stencil-core/index.js",
@@ -98,6 +98,7 @@
98
98
  "dts-bundle-generator": "~5.3.0",
99
99
  "eslint": "^8.13.0",
100
100
  "eslint-config-prettier": "^8.5.0",
101
+ "eslint-plugin-jsdoc": "^39.3.1",
101
102
  "execa": "4.1.0",
102
103
  "exit": "^0.1.2",
103
104
  "fast-deep-equal": "3.1.3",
@@ -437,6 +437,8 @@ class ScreenshotConnector {
437
437
  * Forward-slash paths can be used in Windows as long as they're not
438
438
  * extended-length paths and don't contain any non-ascii characters.
439
439
  * This was created since the path methods in Node.js outputs \\ paths on Windows.
440
+ * @param path the Windows-based path to convert
441
+ * @returns the converted path
440
442
  */
441
443
  const normalizePath = (path) => {
442
444
  if (typeof path !== 'string') {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stencil/core/screenshot",
3
- "version": "2.16.0",
3
+ "version": "2.17.0",
4
4
  "description": "Stencil Screenshot.",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",