@rindo/core 4.18.2 → 4.18.3-dev.1734304270.ca7046f

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 +27 -12
  2. package/cli/index.js +27 -12
  3. package/cli/package.json +1 -1
  4. package/compiler/package.json +1 -1
  5. package/compiler/rindo.js +939 -679
  6. package/dev-server/client/index.js +1 -1
  7. package/dev-server/client/package.json +1 -1
  8. package/dev-server/connector.html +2 -2
  9. package/dev-server/index.js +1 -1
  10. package/dev-server/package.json +1 -1
  11. package/dev-server/server-process.js +52 -40
  12. package/dev-server/ws.js +1 -1
  13. package/internal/app-data/package.json +1 -1
  14. package/internal/client/index.js +38 -17
  15. package/internal/client/package.json +1 -1
  16. package/internal/client/patch-browser.js +1 -1
  17. package/internal/hydrate/index.js +36 -17
  18. package/internal/hydrate/package.json +1 -1
  19. package/internal/hydrate/runner.js +70 -60
  20. package/internal/package.json +1 -1
  21. package/internal/rindo-private.d.ts +13 -7
  22. package/internal/rindo-public-compiler.d.ts +10 -3
  23. package/internal/testing/index.js +35 -16
  24. package/internal/testing/package.json +1 -1
  25. package/mock-doc/index.cjs +70 -60
  26. package/mock-doc/index.d.ts +36 -30
  27. package/mock-doc/index.js +70 -60
  28. package/mock-doc/package.json +1 -1
  29. package/package.json +18 -21
  30. package/screenshot/index.js +1 -1
  31. package/screenshot/package.json +1 -1
  32. package/screenshot/pixel-match.js +4 -1
  33. package/sys/node/autoprefixer.js +2 -2
  34. package/sys/node/glob.js +1 -1
  35. package/sys/node/index.js +2 -2
  36. package/sys/node/node-fetch.js +10 -2
  37. package/sys/node/package.json +1 -1
  38. package/sys/node/worker.js +1 -1
  39. package/testing/index.js +33 -15
  40. package/testing/mock-fetch.d.ts +4 -4
  41. package/testing/mocks.d.ts +9 -9
  42. package/testing/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*
2
- Rindo Hydrate Runner v4.18.2 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Hydrate Runner v4.18.3-dev.1734304270.ca7046f | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  var __defProp = Object.defineProperty;
5
5
  var __export = (target, all) => {
@@ -12329,67 +12329,75 @@ var MockUListElement = class extends MockHTMLElement {
12329
12329
  super(ownerDocument, "ul");
12330
12330
  }
12331
12331
  };
12332
+ var CanvasRenderingContext = class {
12333
+ constructor(context, contextAttributes) {
12334
+ this.context = context;
12335
+ this.contextAttributes = contextAttributes;
12336
+ }
12337
+ fillRect() {
12338
+ return;
12339
+ }
12340
+ clearRect() {
12341
+ }
12342
+ getImageData(_, __, w, h) {
12343
+ return {
12344
+ data: new Array(w * h * 4)
12345
+ };
12346
+ }
12347
+ toDataURL() {
12348
+ return "data:,";
12349
+ }
12350
+ putImageData() {
12351
+ }
12352
+ createImageData() {
12353
+ return {};
12354
+ }
12355
+ setTransform() {
12356
+ }
12357
+ drawImage() {
12358
+ }
12359
+ save() {
12360
+ }
12361
+ fillText() {
12362
+ }
12363
+ restore() {
12364
+ }
12365
+ beginPath() {
12366
+ }
12367
+ moveTo() {
12368
+ }
12369
+ lineTo() {
12370
+ }
12371
+ closePath() {
12372
+ }
12373
+ stroke() {
12374
+ }
12375
+ translate() {
12376
+ }
12377
+ scale() {
12378
+ }
12379
+ rotate() {
12380
+ }
12381
+ arc() {
12382
+ }
12383
+ fill() {
12384
+ }
12385
+ measureText() {
12386
+ return { width: 0 };
12387
+ }
12388
+ transform() {
12389
+ }
12390
+ rect() {
12391
+ }
12392
+ clip() {
12393
+ }
12394
+ };
12332
12395
  var MockCanvasElement = class extends MockHTMLElement {
12333
12396
  constructor(ownerDocument) {
12334
12397
  super(ownerDocument, "canvas");
12335
12398
  }
12336
- getContext() {
12337
- return {
12338
- fillRect() {
12339
- return;
12340
- },
12341
- clearRect() {
12342
- },
12343
- getImageData: function(_, __, w, h) {
12344
- return {
12345
- data: new Array(w * h * 4)
12346
- };
12347
- },
12348
- putImageData() {
12349
- },
12350
- createImageData: function() {
12351
- return [];
12352
- },
12353
- setTransform() {
12354
- },
12355
- drawImage() {
12356
- },
12357
- save() {
12358
- },
12359
- fillText() {
12360
- },
12361
- restore() {
12362
- },
12363
- beginPath() {
12364
- },
12365
- moveTo() {
12366
- },
12367
- lineTo() {
12368
- },
12369
- closePath() {
12370
- },
12371
- stroke() {
12372
- },
12373
- translate() {
12374
- },
12375
- scale() {
12376
- },
12377
- rotate() {
12378
- },
12379
- arc() {
12380
- },
12381
- fill() {
12382
- },
12383
- measureText() {
12384
- return { width: 0 };
12385
- },
12386
- transform() {
12387
- },
12388
- rect() {
12389
- },
12390
- clip() {
12391
- }
12392
- };
12399
+ getContext(context, contextAttributes) {
12400
+ return new CanvasRenderingContext(context, contextAttributes);
12393
12401
  }
12394
12402
  };
12395
12403
  function fullUrl(elm, attrName) {
@@ -12816,14 +12824,16 @@ var WINDOW_PROPS = [
12816
12824
  ];
12817
12825
  var GLOBAL_CONSTRUCTORS = [
12818
12826
  ["CustomEvent", MockCustomEvent],
12827
+ ["DocumentFragment", MockDocumentFragment],
12828
+ ["DOMParser", MockDOMParser],
12819
12829
  ["Event", MockEvent],
12820
- ["Headers", MockHeaders],
12821
12830
  ["FocusEvent", MockFocusEvent],
12831
+ ["Headers", MockHeaders],
12822
12832
  ["KeyboardEvent", MockKeyboardEvent],
12823
12833
  ["MouseEvent", MockMouseEvent],
12824
12834
  ["Request", MockRequest],
12825
12835
  ["Response", MockResponse],
12826
- ["DOMParser", MockDOMParser],
12836
+ ["ShadowRoot", MockDocumentFragment],
12827
12837
  ["HTMLAnchorElement", MockAnchorElement],
12828
12838
  ["HTMLBaseElement", MockBaseElement],
12829
12839
  ["HTMLButtonElement", MockButtonElement],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/internal",
3
- "version": "4.18.2",
3
+ "version": "4.18.3-dev.1734304270.ca7046f",
4
4
  "description": "Rindo internals only to be imported by the Rindo Compiler. Breaking changes can and will happen at any time.",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -964,11 +964,11 @@ export interface HostElement extends HTMLElement {
964
964
  */
965
965
  ['s-sc']?: string;
966
966
  /**
967
- * Root Scope Id
968
- * The scope id of the root component when using scoped css encapsulation
967
+ * Scope Ids
968
+ * All the possible scope ids of this component when using scoped css encapsulation
969
969
  * or using shadow dom but the browser doesn't support it
970
970
  */
971
- ['s-rsc']?: string;
971
+ ['s-scs']?: string[];
972
972
  /**
973
973
  * Hot Module Replacement, dev mode only
974
974
  *
@@ -1276,7 +1276,7 @@ export interface ComponentRuntimeMeta {
1276
1276
  /**
1277
1277
  * This number is used to hold a series of bitflags for various features we
1278
1278
  * support on components. The flags which this value is intended to store are
1279
- * documented in the {@link CMP_FLAGS} enum.
1279
+ * documented in the `CMP_FLAGS` enum.
1280
1280
  */
1281
1281
  $flags$: number;
1282
1282
  /**
@@ -1320,7 +1320,7 @@ export interface ComponentRuntimeMembers {
1320
1320
  * The fields are:
1321
1321
  *
1322
1322
  * 1. A number used to hold bitflags for component members. The bit flags which
1323
- * this is intended to store are documented in the {@link MEMBER_FLAGS} enum.
1323
+ * this is intended to store are documented in the `MEMBER_FLAGS` enum.
1324
1324
  * 2. The attribute name to observe.
1325
1325
  */
1326
1326
  export type ComponentRuntimeMember = [number, string?];
@@ -1329,7 +1329,7 @@ export type ComponentRuntimeMember = [number, string?];
1329
1329
  * runtime. The field are:
1330
1330
  *
1331
1331
  * 1. A number used to hold bitflags for listeners. The bit flags which this is
1332
- * intended to store are documented in the {@link LISTENER_FLAGS} enum.
1332
+ * intended to store are documented in the `LISTENER_FLAGS` enum.
1333
1333
  * 2. The event name.
1334
1334
  * 3. The method name.
1335
1335
  */
@@ -1610,6 +1610,12 @@ export interface ScreenshotOptions {
1610
1610
  * more sensitive. Defaults to the testing config `pixelmatchThreshold` value;
1611
1611
  */
1612
1612
  pixelmatchThreshold?: number;
1613
+ /**
1614
+ * Capture the screenshot beyond the viewport.
1615
+ *
1616
+ * @defaultValue `false` if there is no `clip`. `true` otherwise.
1617
+ */
1618
+ captureBeyondViewport?: boolean;
1613
1619
  }
1614
1620
  export interface ScreenshotBoundingBox {
1615
1621
  /**
@@ -2134,7 +2140,7 @@ export interface CompilerWorkerContext {
2134
2140
  transformCssToEsm(input: TransformCssToEsmInput): Promise<TransformCssToEsmOutput>;
2135
2141
  }
2136
2142
  /**
2137
- * The methods that are supported on a {@link d.CompilerWorkerContext}
2143
+ * The methods that are supported on a {@link CompilerWorkerContext}
2138
2144
  */
2139
2145
  export type WorkerContextMethod = keyof CompilerWorkerContext;
2140
2146
  /**
@@ -79,6 +79,13 @@ export interface RindoConfig {
79
79
  * Below is an example folder structure containing a webapp's global sass file, named app.css.
80
80
  */
81
81
  globalStyle?: string;
82
+ /**
83
+ * Will generate {@link https://nodejs.org/api/packages.html#packages_exports export map} entry points
84
+ * for each component in the build when `true`.
85
+ *
86
+ * @default false
87
+ */
88
+ generateExportMaps?: boolean;
82
89
  /**
83
90
  * When the hashFileNames config is set to true, and it is a production build,
84
91
  * the hashedFileNameLength config is used to determine how many characters the file name's hash should be.
@@ -2370,9 +2377,9 @@ export interface ResolveModuleOptions {
2370
2377
  }
2371
2378
  export interface PrerenderStartOptions {
2372
2379
  buildId?: string;
2373
- hydrateAppFilePath: string;
2374
- componentGraph: BuildResultsComponentGraph;
2375
- srcIndexHtmlPath: string;
2380
+ hydrateAppFilePath?: string;
2381
+ componentGraph?: BuildResultsComponentGraph;
2382
+ srcIndexHtmlPath?: string;
2376
2383
  }
2377
2384
  export interface PrerenderResults {
2378
2385
  buildId: string;
@@ -979,6 +979,9 @@ var createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
979
979
  if ((import_app_data10.BUILD.shadowDom || import_app_data10.BUILD.scoped) && isDef(scopeId) && elm["s-si"] !== scopeId) {
980
980
  elm.classList.add(elm["s-si"] = scopeId);
981
981
  }
982
+ if (import_app_data10.BUILD.scoped) {
983
+ updateElementScopeIds(elm, parentElm);
984
+ }
982
985
  if (newVNode2.$children$) {
983
986
  for (i2 = 0; i2 < newVNode2.$children$.length; ++i2) {
984
987
  childNode = createElm(oldParentVNode, newVNode2, i2, elm);
@@ -1340,22 +1343,33 @@ var nullifyVNodeRefs = (vNode) => {
1340
1343
  var insertBefore = (parent, newNode, reference) => {
1341
1344
  const inserted = parent == null ? void 0 : parent.insertBefore(newNode, reference);
1342
1345
  if (import_app_data10.BUILD.scoped) {
1343
- setParentScopeIdAsClassName(newNode, parent);
1346
+ updateElementScopeIds(newNode, parent);
1344
1347
  }
1345
1348
  return inserted;
1346
1349
  };
1347
- var findParentScopeId = (element) => {
1348
- return element ? element["s-rsc"] || element["s-si"] || element["s-sc"] || findParentScopeId(element.parentElement) : void 0;
1350
+ var findScopeIds = (element) => {
1351
+ const scopeIds = [];
1352
+ if (element) {
1353
+ scopeIds.push(
1354
+ ...element["s-scs"] || [],
1355
+ element["s-si"],
1356
+ element["s-sc"],
1357
+ ...findScopeIds(element.parentElement)
1358
+ );
1359
+ }
1360
+ return scopeIds;
1349
1361
  };
1350
- var setParentScopeIdAsClassName = (element, parent) => {
1351
- var _a, _b, _c;
1352
- if (element && parent) {
1353
- const oldRootScopeId = element["s-rsc"];
1354
- const newRootScopeId = findParentScopeId(parent);
1355
- oldRootScopeId && ((_a = element.classList) == null ? void 0 : _a.contains(oldRootScopeId)) && element.classList.remove(oldRootScopeId);
1356
- if (newRootScopeId) {
1357
- element["s-rsc"] = newRootScopeId;
1358
- !((_b = element.classList) == null ? void 0 : _b.contains(newRootScopeId)) && ((_c = element.classList) == null ? void 0 : _c.add(newRootScopeId));
1362
+ var updateElementScopeIds = (element, parent, iterateChildNodes = false) => {
1363
+ var _a;
1364
+ if (element && parent && element.nodeType === 1 /* ElementNode */) {
1365
+ const scopeIds = new Set(findScopeIds(parent).filter(Boolean));
1366
+ if (scopeIds.size) {
1367
+ (_a = element.classList) == null ? void 0 : _a.add(...element["s-scs"] = [...scopeIds]);
1368
+ if (element["s-ol"] || iterateChildNodes) {
1369
+ for (const childNode of Array.from(element.childNodes)) {
1370
+ updateElementScopeIds(childNode, element, true);
1371
+ }
1372
+ }
1359
1373
  }
1360
1374
  }
1361
1375
  };
@@ -1541,7 +1555,10 @@ var dispatchHooks = (hostRef, isInitialLoad) => {
1541
1555
  endSchedule();
1542
1556
  return enqueue(maybePromise, () => updateComponent(hostRef, instance, isInitialLoad));
1543
1557
  };
1544
- var enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn) : fn();
1558
+ var enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn).catch((err2) => {
1559
+ console.error(err2);
1560
+ fn();
1561
+ }) : fn();
1545
1562
  var isPromisey = (maybePromise) => maybePromise instanceof Promise || maybePromise && maybePromise.then && typeof maybePromise.then === "function";
1546
1563
  var updateComponent = async (hostRef, instance, isInitialLoad) => {
1547
1564
  var _a;
@@ -2169,7 +2186,7 @@ var patchCloneNode = (HostElementPrototype) => {
2169
2186
  "s-nr",
2170
2187
  "s-si",
2171
2188
  "s-rf",
2172
- "s-rsc"
2189
+ "s-scs"
2173
2190
  ];
2174
2191
  for (; i2 < srcNode.childNodes.length; i2++) {
2175
2192
  slotted = srcNode.childNodes[i2]["s-nr"];
@@ -2746,10 +2763,11 @@ var addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) =>
2746
2763
  }
2747
2764
  };
2748
2765
  var hostListenerProxy = (hostRef, methodName) => (ev) => {
2766
+ var _a;
2749
2767
  try {
2750
2768
  if (import_app_data20.BUILD.lazyLoad) {
2751
2769
  if (hostRef.$flags$ & 256 /* isListenReady */) {
2752
- hostRef.$lazyInstance$[methodName](ev);
2770
+ (_a = hostRef.$lazyInstance$) == null ? void 0 : _a[methodName](ev);
2753
2771
  } else {
2754
2772
  (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);
2755
2773
  }
@@ -2764,7 +2782,8 @@ var getHostListenerTarget = (elm, flags) => {
2764
2782
  if (import_app_data20.BUILD.hostListenerTargetDocument && flags & 4 /* TargetDocument */) return doc;
2765
2783
  if (import_app_data20.BUILD.hostListenerTargetWindow && flags & 8 /* TargetWindow */) return win;
2766
2784
  if (import_app_data20.BUILD.hostListenerTargetBody && flags & 16 /* TargetBody */) return doc.body;
2767
- if (import_app_data20.BUILD.hostListenerTargetParent && flags & 32 /* TargetParent */) return elm.parentElement;
2785
+ if (import_app_data20.BUILD.hostListenerTargetParent && flags & 32 /* TargetParent */ && elm.parentElement)
2786
+ return elm.parentElement;
2768
2787
  return elm;
2769
2788
  };
2770
2789
  var hostListenerOpts = (flags) => supportsListenerOptions ? {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/internal/testing",
3
- "version": "4.18.2",
3
+ "version": "4.18.3-dev.1734304270.ca7046f",
4
4
  "description": "Rindo internal testing platform to be imported by the Rindo Compiler. Breaking changes can and will happen at any time.",
5
5
  "main": "./index.js",
6
6
  "private": true
@@ -1,5 +1,5 @@
1
1
  /*!
2
- Rindo Mock Doc (CommonJS) v4.18.2 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Mock Doc (CommonJS) v4.18.3-dev.1734304270.ca7046f | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  "use strict";
5
5
  var __defProp = Object.defineProperty;
@@ -8202,67 +8202,75 @@ var MockUListElement = class extends MockHTMLElement {
8202
8202
  super(ownerDocument, "ul");
8203
8203
  }
8204
8204
  };
8205
+ var CanvasRenderingContext = class {
8206
+ constructor(context, contextAttributes) {
8207
+ this.context = context;
8208
+ this.contextAttributes = contextAttributes;
8209
+ }
8210
+ fillRect() {
8211
+ return;
8212
+ }
8213
+ clearRect() {
8214
+ }
8215
+ getImageData(_, __, w, h) {
8216
+ return {
8217
+ data: new Array(w * h * 4)
8218
+ };
8219
+ }
8220
+ toDataURL() {
8221
+ return "data:,";
8222
+ }
8223
+ putImageData() {
8224
+ }
8225
+ createImageData() {
8226
+ return {};
8227
+ }
8228
+ setTransform() {
8229
+ }
8230
+ drawImage() {
8231
+ }
8232
+ save() {
8233
+ }
8234
+ fillText() {
8235
+ }
8236
+ restore() {
8237
+ }
8238
+ beginPath() {
8239
+ }
8240
+ moveTo() {
8241
+ }
8242
+ lineTo() {
8243
+ }
8244
+ closePath() {
8245
+ }
8246
+ stroke() {
8247
+ }
8248
+ translate() {
8249
+ }
8250
+ scale() {
8251
+ }
8252
+ rotate() {
8253
+ }
8254
+ arc() {
8255
+ }
8256
+ fill() {
8257
+ }
8258
+ measureText() {
8259
+ return { width: 0 };
8260
+ }
8261
+ transform() {
8262
+ }
8263
+ rect() {
8264
+ }
8265
+ clip() {
8266
+ }
8267
+ };
8205
8268
  var MockCanvasElement = class extends MockHTMLElement {
8206
8269
  constructor(ownerDocument) {
8207
8270
  super(ownerDocument, "canvas");
8208
8271
  }
8209
- getContext() {
8210
- return {
8211
- fillRect() {
8212
- return;
8213
- },
8214
- clearRect() {
8215
- },
8216
- getImageData: function(_, __, w, h) {
8217
- return {
8218
- data: new Array(w * h * 4)
8219
- };
8220
- },
8221
- putImageData() {
8222
- },
8223
- createImageData: function() {
8224
- return [];
8225
- },
8226
- setTransform() {
8227
- },
8228
- drawImage() {
8229
- },
8230
- save() {
8231
- },
8232
- fillText() {
8233
- },
8234
- restore() {
8235
- },
8236
- beginPath() {
8237
- },
8238
- moveTo() {
8239
- },
8240
- lineTo() {
8241
- },
8242
- closePath() {
8243
- },
8244
- stroke() {
8245
- },
8246
- translate() {
8247
- },
8248
- scale() {
8249
- },
8250
- rotate() {
8251
- },
8252
- arc() {
8253
- },
8254
- fill() {
8255
- },
8256
- measureText() {
8257
- return { width: 0 };
8258
- },
8259
- transform() {
8260
- },
8261
- rect() {
8262
- },
8263
- clip() {
8264
- }
8265
- };
8272
+ getContext(context, contextAttributes) {
8273
+ return new CanvasRenderingContext(context, contextAttributes);
8266
8274
  }
8267
8275
  };
8268
8276
  function fullUrl(elm, attrName) {
@@ -8732,14 +8740,16 @@ var WINDOW_PROPS = [
8732
8740
  ];
8733
8741
  var GLOBAL_CONSTRUCTORS = [
8734
8742
  ["CustomEvent", MockCustomEvent],
8743
+ ["DocumentFragment", MockDocumentFragment],
8744
+ ["DOMParser", MockDOMParser],
8735
8745
  ["Event", MockEvent],
8736
- ["Headers", MockHeaders],
8737
8746
  ["FocusEvent", MockFocusEvent],
8747
+ ["Headers", MockHeaders],
8738
8748
  ["KeyboardEvent", MockKeyboardEvent],
8739
8749
  ["MouseEvent", MockMouseEvent],
8740
8750
  ["Request", MockRequest],
8741
8751
  ["Response", MockResponse],
8742
- ["DOMParser", MockDOMParser],
8752
+ ["ShadowRoot", MockDocumentFragment],
8743
8753
  ["HTMLAnchorElement", MockAnchorElement],
8744
8754
  ["HTMLBaseElement", MockBaseElement],
8745
8755
  ["HTMLButtonElement", MockButtonElement],
@@ -312,38 +312,44 @@ declare class MockTitleElement extends MockHTMLElement {
312
312
  declare class MockUListElement extends MockHTMLElement {
313
313
  constructor(ownerDocument: any);
314
314
  }
315
+ type CanvasContext = '2d' | 'webgl' | 'webgl2' | 'bitmaprenderer';
316
+ declare class CanvasRenderingContext {
317
+ context: CanvasContext;
318
+ contextAttributes: WebGLContextAttributes;
319
+ constructor(context: CanvasContext, contextAttributes?: WebGLContextAttributes);
320
+ fillRect(): void;
321
+ clearRect(): void;
322
+ getImageData(_: number, __: number, w: number, h: number): {
323
+ data: any[];
324
+ };
325
+ toDataURL(): string;
326
+ putImageData(): void;
327
+ createImageData(): ImageData;
328
+ setTransform(): void;
329
+ drawImage(): void;
330
+ save(): void;
331
+ fillText(): void;
332
+ restore(): void;
333
+ beginPath(): void;
334
+ moveTo(): void;
335
+ lineTo(): void;
336
+ closePath(): void;
337
+ stroke(): void;
338
+ translate(): void;
339
+ scale(): void;
340
+ rotate(): void;
341
+ arc(): void;
342
+ fill(): void;
343
+ measureText(): {
344
+ width: number;
345
+ };
346
+ transform(): void;
347
+ rect(): void;
348
+ clip(): void;
349
+ }
315
350
  declare class MockCanvasElement extends MockHTMLElement {
316
351
  constructor(ownerDocument: any);
317
- getContext(): {
318
- fillRect(): void;
319
- clearRect(): void;
320
- getImageData: (_: number, __: number, w: number, h: number) => {
321
- data: any[];
322
- };
323
- putImageData(): void;
324
- createImageData: () => any[];
325
- setTransform(): void;
326
- drawImage(): void;
327
- save(): void;
328
- fillText(): void;
329
- restore(): void;
330
- beginPath(): void;
331
- moveTo(): void;
332
- lineTo(): void;
333
- closePath(): void;
334
- stroke(): void;
335
- translate(): void;
336
- scale(): void;
337
- rotate(): void;
338
- arc(): void;
339
- fill(): void;
340
- measureText(): {
341
- width: number;
342
- };
343
- transform(): void;
344
- rect(): void;
345
- clip(): void;
346
- };
352
+ getContext(context: CanvasContext, contextAttributes?: WebGLContextAttributes): CanvasRenderingContext;
347
353
  }
348
354
  declare class MockEvent {
349
355
  bubbles: boolean;