html2canvas-pro 1.6.7 → 2.0.1

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 (133) hide show
  1. package/README.md +1 -0
  2. package/demo/image-smoothing-demo.html +256 -0
  3. package/demo/refactoring-test.html +602 -0
  4. package/dist/html2canvas-pro.esm.js +3391 -1491
  5. package/dist/html2canvas-pro.esm.js.map +1 -1
  6. package/dist/html2canvas-pro.js +3394 -1490
  7. package/dist/html2canvas-pro.js.map +1 -1
  8. package/dist/html2canvas-pro.min.js +5 -4
  9. package/dist/lib/__tests__/index.js +8 -2
  10. package/dist/lib/__tests__/index.js.map +1 -1
  11. package/dist/lib/config.js +72 -0
  12. package/dist/lib/config.js.map +1 -0
  13. package/dist/lib/core/__tests__/cache-storage.js +6 -3
  14. package/dist/lib/core/__tests__/cache-storage.js.map +1 -1
  15. package/dist/lib/core/__tests__/cache-storage.test.js +158 -0
  16. package/dist/lib/core/__tests__/cache-storage.test.js.map +1 -0
  17. package/dist/lib/core/__tests__/validator.js +296 -0
  18. package/dist/lib/core/__tests__/validator.js.map +1 -0
  19. package/dist/lib/core/cache-storage.js +130 -11
  20. package/dist/lib/core/cache-storage.js.map +1 -1
  21. package/dist/lib/core/context.js +5 -2
  22. package/dist/lib/core/context.js.map +1 -1
  23. package/dist/lib/core/debugger.js +3 -0
  24. package/dist/lib/core/debugger.js.map +1 -1
  25. package/dist/lib/core/origin-checker.js +54 -0
  26. package/dist/lib/core/origin-checker.js.map +1 -0
  27. package/dist/lib/core/performance-monitor.js +208 -0
  28. package/dist/lib/core/performance-monitor.js.map +1 -0
  29. package/dist/lib/core/validator.js +501 -0
  30. package/dist/lib/core/validator.js.map +1 -0
  31. package/dist/lib/css/index.js +4 -0
  32. package/dist/lib/css/index.js.map +1 -1
  33. package/dist/lib/css/property-descriptors/__tests__/background-tests.js +7 -1
  34. package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +1 -1
  35. package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js +273 -0
  36. package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js.map +1 -0
  37. package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js +142 -0
  38. package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js.map +1 -0
  39. package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js +167 -0
  40. package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js.map +1 -0
  41. package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js +61 -0
  42. package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js.map +1 -0
  43. package/dist/lib/css/property-descriptors/clip-path.js +190 -0
  44. package/dist/lib/css/property-descriptors/clip-path.js.map +1 -0
  45. package/dist/lib/css/property-descriptors/image-rendering.js +34 -0
  46. package/dist/lib/css/property-descriptors/image-rendering.js.map +1 -0
  47. package/dist/lib/css/types/__tests__/image-tests.js +7 -1
  48. package/dist/lib/css/types/__tests__/image-tests.js.map +1 -1
  49. package/dist/lib/css/types/color-math.js +26 -0
  50. package/dist/lib/css/types/color-math.js.map +1 -0
  51. package/dist/lib/css/types/color-spaces/srgb.js +6 -6
  52. package/dist/lib/css/types/color-spaces/srgb.js.map +1 -1
  53. package/dist/lib/css/types/color-utilities.js +13 -22
  54. package/dist/lib/css/types/color-utilities.js.map +1 -1
  55. package/dist/lib/dom/__tests__/dom-normalizer.test.js +113 -0
  56. package/dist/lib/dom/__tests__/dom-normalizer.test.js.map +1 -0
  57. package/dist/lib/dom/__tests__/element-container.test.js +109 -0
  58. package/dist/lib/dom/__tests__/element-container.test.js.map +1 -0
  59. package/dist/lib/dom/document-cloner.js +3 -3
  60. package/dist/lib/dom/document-cloner.js.map +1 -1
  61. package/dist/lib/dom/dom-normalizer.js +116 -0
  62. package/dist/lib/dom/dom-normalizer.js.map +1 -0
  63. package/dist/lib/dom/element-container.js +32 -15
  64. package/dist/lib/dom/element-container.js.map +1 -1
  65. package/dist/lib/dom/node-parser.js +16 -20
  66. package/dist/lib/dom/node-parser.js.map +1 -1
  67. package/dist/lib/dom/node-type-guards.js +44 -0
  68. package/dist/lib/dom/node-type-guards.js.map +1 -0
  69. package/dist/lib/dom/replaced-elements/iframe-element-container.js +5 -4
  70. package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -1
  71. package/dist/lib/index.js +148 -41
  72. package/dist/lib/index.js.map +1 -1
  73. package/dist/lib/render/canvas/__tests__/background-renderer.test.js +65 -0
  74. package/dist/lib/render/canvas/__tests__/background-renderer.test.js.map +1 -0
  75. package/dist/lib/render/canvas/__tests__/border-renderer.test.js +23 -0
  76. package/dist/lib/render/canvas/__tests__/border-renderer.test.js.map +1 -0
  77. package/dist/lib/render/canvas/__tests__/effects-renderer.test.js +30 -0
  78. package/dist/lib/render/canvas/__tests__/effects-renderer.test.js.map +1 -0
  79. package/dist/lib/render/canvas/__tests__/text-renderer.test.js +310 -0
  80. package/dist/lib/render/canvas/__tests__/text-renderer.test.js.map +1 -0
  81. package/dist/lib/render/canvas/background-renderer.js +222 -0
  82. package/dist/lib/render/canvas/background-renderer.js.map +1 -0
  83. package/dist/lib/render/canvas/border-renderer.js +185 -0
  84. package/dist/lib/render/canvas/border-renderer.js.map +1 -0
  85. package/dist/lib/render/canvas/canvas-renderer.js +61 -689
  86. package/dist/lib/render/canvas/canvas-renderer.js.map +1 -1
  87. package/dist/lib/render/canvas/effects-renderer.js +94 -0
  88. package/dist/lib/render/canvas/effects-renderer.js.map +1 -0
  89. package/dist/lib/render/canvas/text-renderer.js +575 -0
  90. package/dist/lib/render/canvas/text-renderer.js.map +1 -0
  91. package/dist/lib/render/effects.js +17 -1
  92. package/dist/lib/render/effects.js.map +1 -1
  93. package/dist/lib/render/renderer-interface.js +3 -0
  94. package/dist/lib/render/renderer-interface.js.map +1 -0
  95. package/dist/lib/render/stacking-context.js +131 -0
  96. package/dist/lib/render/stacking-context.js.map +1 -1
  97. package/dist/types/config.d.ts +54 -0
  98. package/dist/types/core/__tests__/cache-storage.test.d.ts +1 -0
  99. package/dist/types/core/__tests__/validator.d.ts +1 -0
  100. package/dist/types/core/cache-storage.d.ts +42 -1
  101. package/dist/types/core/context.d.ts +5 -1
  102. package/dist/types/core/origin-checker.d.ts +33 -0
  103. package/dist/types/core/performance-monitor.d.ts +131 -0
  104. package/dist/types/core/validator.d.ts +132 -0
  105. package/dist/types/css/index.d.ts +4 -0
  106. package/dist/types/css/property-descriptors/__tests__/clip-path.test.d.ts +1 -0
  107. package/dist/types/css/property-descriptors/__tests__/image-rendering-integration.test.d.ts +1 -0
  108. package/dist/types/css/property-descriptors/__tests__/image-rendering-performance.test.d.ts +1 -0
  109. package/dist/types/css/property-descriptors/__tests__/image-rendering.test.d.ts +1 -0
  110. package/dist/types/css/property-descriptors/clip-path.d.ts +62 -0
  111. package/dist/types/css/property-descriptors/image-rendering.d.ts +8 -0
  112. package/dist/types/css/types/color-math.d.ts +12 -0
  113. package/dist/types/css/types/color-utilities.d.ts +2 -3
  114. package/dist/types/dom/__tests__/dom-normalizer.test.d.ts +1 -0
  115. package/dist/types/dom/__tests__/element-container.test.d.ts +1 -0
  116. package/dist/types/dom/dom-normalizer.d.ts +62 -0
  117. package/dist/types/dom/element-container.d.ts +20 -1
  118. package/dist/types/dom/node-parser.d.ts +2 -7
  119. package/dist/types/dom/node-type-guards.d.ts +33 -0
  120. package/dist/types/dom/replaced-elements/iframe-element-container.d.ts +4 -1
  121. package/dist/types/index.d.ts +48 -3
  122. package/dist/types/render/canvas/__tests__/background-renderer.test.d.ts +1 -0
  123. package/dist/types/render/canvas/__tests__/border-renderer.test.d.ts +1 -0
  124. package/dist/types/render/canvas/__tests__/effects-renderer.test.d.ts +1 -0
  125. package/dist/types/render/canvas/__tests__/text-renderer.test.d.ts +1 -0
  126. package/dist/types/render/canvas/background-renderer.d.ts +87 -0
  127. package/dist/types/render/canvas/border-renderer.d.ts +67 -0
  128. package/dist/types/render/canvas/canvas-renderer.d.ts +19 -23
  129. package/dist/types/render/canvas/effects-renderer.d.ts +65 -0
  130. package/dist/types/render/canvas/text-renderer.d.ts +75 -0
  131. package/dist/types/render/effects.d.ts +15 -1
  132. package/dist/types/render/renderer-interface.d.ts +26 -0
  133. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/render/effects.ts"],"names":[],"mappings":";;;AAmBA,MAAa,eAAe;IAIxB,YACa,OAAe,EACf,OAAe,EACf,MAAc;QAFd,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;QANlB,SAAI,gCAAoC;QACxC,WAAM,GAAW,sEAAsD,CAAC;IAM9E,CAAC;CACP;AATD,0CASC;AAED,MAAa,UAAU;IAGnB,YACa,IAAY,EACZ,MAAoB;QADpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAc;QAJxB,SAAI,2BAA+B;IAKzC,CAAC;CACP;AAPD,gCAOC;AAED,MAAa,aAAa;IAItB,YAAqB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAH3B,SAAI,8BAAkC;QACtC,WAAM,GAAW,sEAAsD,CAAC;IAE1C,CAAC;CAC3C;AALD,sCAKC;AAEM,MAAM,iBAAiB,GAAG,CAAC,MAAsB,EAA6B,EAAE,CACnF,MAAM,CAAC,IAAI,iCAAyB,CAAC;AAD5B,QAAA,iBAAiB,qBACW;AAClC,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAwB,EAAE,CAAC,MAAM,CAAC,IAAI,4BAAoB,CAAC;AAAjG,QAAA,YAAY,gBAAqF;AACvG,MAAM,eAAe,GAAG,CAAC,MAAsB,EAA2B,EAAE,CAAC,MAAM,CAAC,IAAI,+BAAuB,CAAC;AAA1G,QAAA,eAAe,mBAA2F"}
1
+ {"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/render/effects.ts"],"names":[],"mappings":";;;AAoBA,MAAa,eAAe;IAIxB,YACa,OAAe,EACf,OAAe,EACf,MAAc;QAFd,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;QANlB,SAAI,gCAAoC;QACxC,WAAM,GAAW,sEAAsD,CAAC;IAM9E,CAAC;CACP;AATD,0CASC;AAED,MAAa,UAAU;IAGnB,YACa,IAAY,EACZ,MAAoB;QADpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAc;QAJxB,SAAI,2BAA+B;IAKzC,CAAC;CACP;AAPD,gCAOC;AAED,MAAa,aAAa;IAItB,YAAqB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAH3B,SAAI,8BAAkC;QACtC,WAAM,GAAW,sEAAsD,CAAC;IAE1C,CAAC;CAC3C;AALD,sCAKC;AAED;;;;;GAKG;AACH,MAAa,cAAc;IAIvB,YAAqB,SAAkD;QAAlD,cAAS,GAAT,SAAS,CAAyC;QAH9D,SAAI,gCAAoC;QACxC,WAAM,GAAW,sEAAsD,CAAC;IAEP,CAAC;CAC9E;AALD,wCAKC;AAEM,MAAM,iBAAiB,GAAG,CAAC,MAAsB,EAA6B,EAAE,CACnF,MAAM,CAAC,IAAI,iCAAyB,CAAC;AAD5B,QAAA,iBAAiB,qBACW;AAClC,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAwB,EAAE,CAAC,MAAM,CAAC,IAAI,4BAAoB,CAAC;AAAjG,QAAA,YAAY,gBAAqF;AACvG,MAAM,eAAe,GAAG,CAAC,MAAsB,EAA2B,EAAE,CAAC,MAAM,CAAC,IAAI,+BAAuB,CAAC;AAA1G,QAAA,eAAe,mBAA2F;AAChH,MAAM,gBAAgB,GAAG,CAAC,MAAsB,EAA4B,EAAE,CACjF,MAAM,CAAC,IAAI,iCAAyB,CAAC;AAD5B,QAAA,gBAAgB,oBACY"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=renderer-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-interface.js","sourceRoot":"","sources":["../../../src/render/renderer-interface.ts"],"names":[],"mappings":""}
@@ -61,6 +61,12 @@ class ElementPaint {
61
61
  this.effects.push(new effects_1.ClipEffect(paddingBox, 4 /* EffectTarget.CONTENT */));
62
62
  }
63
63
  }
64
+ if (this.container.styles.clipPath.type !== 0 /* CLIP_PATH_TYPE.NONE */) {
65
+ const clipPathEffect = buildClipPathEffect(this.container.styles.clipPath, this.container.bounds);
66
+ if (clipPathEffect) {
67
+ this.effects.push(clipPathEffect);
68
+ }
69
+ }
64
70
  }
65
71
  getEffects(target) {
66
72
  let inFlow = [2 /* POSITION.ABSOLUTE */, 3 /* POSITION.FIXED */].indexOf(this.container.styles.position) === -1;
@@ -88,6 +94,131 @@ class ElementPaint {
88
94
  }
89
95
  }
90
96
  exports.ElementPaint = ElementPaint;
97
+ /**
98
+ * Resolve a `closest-side` or `farthest-side` shape-radius keyword to pixels
99
+ * for a single axis. Used by both `circle()` (per-axis) and `ellipse()`.
100
+ *
101
+ * @param r - The ShapeRadius (keyword or length-percentage).
102
+ * @param center - Absolute center coordinate on this axis (cx or cy).
103
+ * @param start - Absolute start of the reference box on this axis.
104
+ * @param end - Absolute end of the reference box on this axis.
105
+ * @param dimRef - Reference dimension for resolving a length-percentage value.
106
+ */
107
+ const resolveAxisRadius = (r, center, start, end, dimRef) => {
108
+ if (r === 'closest-side')
109
+ return Math.min(center - start, end - center);
110
+ if (r === 'farthest-side')
111
+ return Math.max(center - start, end - center);
112
+ return (0, length_percentage_1.getAbsoluteValue)(r, dimRef);
113
+ };
114
+ /**
115
+ * Convert a parsed ClipPathValue + element bounds into a ClipPathEffect whose
116
+ * `applyClip` callback draws the clip shape directly onto the canvas context.
117
+ *
118
+ * All coordinates are computed in page-absolute space at construction time so
119
+ * the callback itself is allocation-free and executes synchronously.
120
+ */
121
+ const buildClipPathEffect = (clipPath, bounds) => {
122
+ const { left: bLeft, top: bTop, width: bWidth, height: bHeight } = bounds;
123
+ switch (clipPath.type) {
124
+ case 1 /* CLIP_PATH_TYPE.INSET */: {
125
+ const iLeft = (0, length_percentage_1.getAbsoluteValue)(clipPath.left, bWidth);
126
+ const iTop = (0, length_percentage_1.getAbsoluteValue)(clipPath.top, bHeight);
127
+ const x = bLeft + iLeft;
128
+ const y = bTop + iTop;
129
+ // Clamp to zero: per CSS spec, overlapping insets produce an empty shape.
130
+ const w = Math.max(0, bWidth - iLeft - (0, length_percentage_1.getAbsoluteValue)(clipPath.right, bWidth));
131
+ const h = Math.max(0, bHeight - iTop - (0, length_percentage_1.getAbsoluteValue)(clipPath.bottom, bHeight));
132
+ return new effects_1.ClipPathEffect((ctx) => {
133
+ ctx.beginPath();
134
+ ctx.rect(x, y, w, h);
135
+ ctx.clip();
136
+ });
137
+ }
138
+ case 2 /* CLIP_PATH_TYPE.CIRCLE */: {
139
+ const cx = bLeft + (0, length_percentage_1.getAbsoluteValue)(clipPath.cx, bWidth);
140
+ const cy = bTop + (0, length_percentage_1.getAbsoluteValue)(clipPath.cy, bHeight);
141
+ let r;
142
+ if (clipPath.radius === 'closest-side') {
143
+ r = Math.min(cx - bLeft, cy - bTop, bLeft + bWidth - cx, bTop + bHeight - cy);
144
+ }
145
+ else if (clipPath.radius === 'farthest-side') {
146
+ r = Math.max(cx - bLeft, cy - bTop, bLeft + bWidth - cx, bTop + bHeight - cy);
147
+ }
148
+ else {
149
+ // Per CSS spec, percentage is relative to sqrt(w² + h²) / sqrt(2).
150
+ r = (0, length_percentage_1.getAbsoluteValue)(clipPath.radius, Math.sqrt(bWidth * bWidth + bHeight * bHeight) / Math.SQRT2);
151
+ }
152
+ return new effects_1.ClipPathEffect((ctx) => {
153
+ ctx.beginPath();
154
+ ctx.arc(cx, cy, Math.max(0, r), 0, Math.PI * 2);
155
+ ctx.clip();
156
+ });
157
+ }
158
+ case 3 /* CLIP_PATH_TYPE.ELLIPSE */: {
159
+ const cx = bLeft + (0, length_percentage_1.getAbsoluteValue)(clipPath.cx, bWidth);
160
+ const cy = bTop + (0, length_percentage_1.getAbsoluteValue)(clipPath.cy, bHeight);
161
+ const rx = resolveAxisRadius(clipPath.rx, cx, bLeft, bLeft + bWidth, bWidth);
162
+ const ry = resolveAxisRadius(clipPath.ry, cy, bTop, bTop + bHeight, bHeight);
163
+ return new effects_1.ClipPathEffect((ctx) => {
164
+ ctx.beginPath();
165
+ ctx.ellipse(cx, cy, Math.max(0, rx), Math.max(0, ry), 0, 0, Math.PI * 2);
166
+ ctx.clip();
167
+ });
168
+ }
169
+ case 4 /* CLIP_PATH_TYPE.POLYGON */: {
170
+ // Pre-compute all vertices in page-absolute coordinates.
171
+ const absPoints = clipPath.points.map(([px, py]) => [bLeft + (0, length_percentage_1.getAbsoluteValue)(px, bWidth), bTop + (0, length_percentage_1.getAbsoluteValue)(py, bHeight)]);
172
+ return new effects_1.ClipPathEffect((ctx) => {
173
+ ctx.beginPath();
174
+ if (absPoints.length > 0) {
175
+ ctx.moveTo(absPoints[0][0], absPoints[0][1]);
176
+ for (let i = 1; i < absPoints.length; i++) {
177
+ ctx.lineTo(absPoints[i][0], absPoints[i][1]);
178
+ }
179
+ ctx.closePath();
180
+ }
181
+ // Calling clip() with an empty path (zero points) is intentional:
182
+ // it clips the entire region to nothing, which is the correct
183
+ // behaviour for a degenerate polygon() per the CSS spec.
184
+ ctx.clip();
185
+ });
186
+ }
187
+ case 5 /* CLIP_PATH_TYPE.PATH */: {
188
+ // path() coordinates are in the element's local space (0,0 = element top-left).
189
+ // We temporarily translate the canvas origin to the element's position, clip
190
+ // with the Path2D, then restore only the transform matrix (not the clipping
191
+ // region) via setTransform so the clip persists for the enclosing
192
+ // ctx.save() / ctx.restore() pair managed by EffectsRenderer.
193
+ //
194
+ // When the element also has a CSS transform, that transform was already applied
195
+ // by a preceding TransformEffect, so the path coordinates end up correctly in
196
+ // the element's transformed local space — matching browser behaviour.
197
+ const { d } = clipPath;
198
+ return new effects_1.ClipPathEffect((ctx) => {
199
+ try {
200
+ const savedTransform = ctx.getTransform();
201
+ ctx.translate(bLeft, bTop);
202
+ ctx.clip(new Path2D(d));
203
+ ctx.setTransform(savedTransform);
204
+ }
205
+ catch (_e) {
206
+ // Path2D or getTransform/setTransform not supported in this environment.
207
+ }
208
+ });
209
+ }
210
+ case 0 /* CLIP_PATH_TYPE.NONE */:
211
+ return null;
212
+ default: {
213
+ // Exhaustiveness guard: if a new CLIP_PATH_TYPE is added in the future
214
+ // without a corresponding case above, TypeScript will raise a compile-time
215
+ // error here rather than silently falling through.
216
+ const _exhaustive = clipPath;
217
+ void _exhaustive;
218
+ return null;
219
+ }
220
+ }
221
+ };
91
222
  const parseStackTree = (parent, stackingContext, realStackingContext, listItems) => {
92
223
  parent.container.elements.forEach((child) => {
93
224
  const treatAsRealStackingContext = (0, bitwise_1.contains)(child.flags, 4 /* FLAGS.CREATES_REAL_STACKING_CONTEXT */);
@@ -1 +1 @@
1
- {"version":3,"file":"stacking-context.js","sourceRoot":"","sources":["../../../src/render/stacking-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stacking-context.js","sourceRoot":"","sources":["../../../src/render/stacking-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { Cache } from './core/cache-storage';
2
+ /**
3
+ * Configuration options for Html2Canvas
4
+ *
5
+ * This class manages global configuration without using module-level static variables.
6
+ * Each html2canvas invocation can have its own configuration instance.
7
+ */
8
+ export interface ConfigOptions {
9
+ /**
10
+ * Window object to use for DOM operations
11
+ */
12
+ window?: Window;
13
+ /**
14
+ * CSP nonce for inline styles
15
+ * See: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
16
+ */
17
+ cspNonce?: string;
18
+ /**
19
+ * Cache instance to reuse across multiple calls
20
+ * Useful for avoiding redundant image loads
21
+ */
22
+ cache?: Cache;
23
+ }
24
+ /**
25
+ * Html2Canvas Configuration
26
+ *
27
+ * Manages configuration state for html2canvas rendering.
28
+ * Eliminates the need for global static variables.
29
+ */
30
+ export declare class Html2CanvasConfig {
31
+ readonly window: Window;
32
+ readonly cspNonce?: string;
33
+ readonly cache?: Cache;
34
+ constructor(options?: ConfigOptions);
35
+ /**
36
+ * Create configuration from an element
37
+ * Extracts window from element's owner document
38
+ */
39
+ static fromElement(element: HTMLElement, options?: Partial<ConfigOptions>): Html2CanvasConfig;
40
+ /**
41
+ * Clone configuration with override options
42
+ */
43
+ clone(options?: Partial<ConfigOptions>): Html2CanvasConfig;
44
+ }
45
+ /**
46
+ * Set default configuration
47
+ * @deprecated Pass configuration directly to html2canvas instead
48
+ */
49
+ export declare function setDefaultConfig(config: Html2CanvasConfig): void;
50
+ /**
51
+ * Get default configuration
52
+ * @deprecated Pass configuration directly to html2canvas instead
53
+ */
54
+ export declare function getDefaultConfig(): Html2CanvasConfig | null;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,9 +1,26 @@
1
1
  import { Context } from './context';
2
+ /**
3
+ * CacheStorage (Deprecated static methods)
4
+ *
5
+ * @deprecated The static methods of CacheStorage are deprecated.
6
+ * Use OriginChecker class instead for instance-based origin checking.
7
+ *
8
+ * For backward compatibility, these methods remain but should not be used in new code.
9
+ */
2
10
  export declare class CacheStorage {
3
11
  private static _link?;
4
12
  private static _origin;
13
+ /**
14
+ * @deprecated Use OriginChecker.getOrigin() instead
15
+ */
5
16
  static getOrigin(url: string): string;
17
+ /**
18
+ * @deprecated Use OriginChecker.isSameOrigin() instead
19
+ */
6
20
  static isSameOrigin(src: string): boolean;
21
+ /**
22
+ * @deprecated No longer needed. OriginChecker is created per Context.
23
+ */
7
24
  static setContext(window: Window): void;
8
25
  }
9
26
  export interface ResourceOptions {
@@ -12,14 +29,38 @@ export interface ResourceOptions {
12
29
  allowTaint: boolean;
13
30
  proxy?: string;
14
31
  customIsSameOrigin?: (this: void, src: string, oldFn: (src: string) => boolean) => boolean | Promise<boolean>;
32
+ maxCacheSize?: number;
15
33
  }
16
34
  export declare class Cache {
17
35
  private readonly context;
18
36
  private readonly _options;
19
37
  private readonly _cache;
38
+ private readonly maxSize;
39
+ private readonly _pendingOperations;
20
40
  constructor(context: Context, _options: ResourceOptions);
21
41
  addImage(src: string): Promise<void>;
22
- match(src: string): Promise<any>;
42
+ private _addImageInternal;
43
+ match(src: string): Promise<any> | undefined;
44
+ /**
45
+ * Set a value in cache with LRU eviction
46
+ */
47
+ private set;
48
+ /**
49
+ * Evict least recently used entry
50
+ */
51
+ private evictLRU;
52
+ /**
53
+ * Get cache size
54
+ */
55
+ size(): number;
56
+ /**
57
+ * Get max cache size
58
+ */
59
+ getMaxSize(): number;
60
+ /**
61
+ * Clear all cache entries
62
+ */
63
+ clear(): void;
23
64
  private loadImage;
24
65
  private has;
25
66
  keys(): Promise<string[]>;
@@ -1,6 +1,8 @@
1
1
  import { Logger } from './logger';
2
2
  import { Cache, ResourceOptions } from './cache-storage';
3
3
  import { Bounds } from '../css/layout/bounds';
4
+ import { OriginChecker } from './origin-checker';
5
+ import { Html2CanvasConfig } from '../config';
4
6
  export type ContextOptions = {
5
7
  logging: boolean;
6
8
  cache?: Cache;
@@ -10,6 +12,8 @@ export declare class Context {
10
12
  private readonly instanceName;
11
13
  readonly logger: Logger;
12
14
  readonly cache: Cache;
15
+ readonly originChecker: OriginChecker;
16
+ readonly config: Html2CanvasConfig;
13
17
  private static instanceCount;
14
- constructor(options: ContextOptions, windowBounds: Bounds);
18
+ constructor(options: ContextOptions, windowBounds: Bounds, config: Html2CanvasConfig);
15
19
  }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Origin Checker
3
+ *
4
+ * Provides origin checking functionality without global static state.
5
+ * Each instance maintains its own anchor element and origin reference.
6
+ *
7
+ * Replaces the static methods in CacheStorage with instance-based approach.
8
+ */
9
+ export declare class OriginChecker {
10
+ private readonly link;
11
+ private readonly origin;
12
+ constructor(window: Window);
13
+ /**
14
+ * Get the origin (protocol + hostname + port) of a URL
15
+ *
16
+ * @param url - URL to parse
17
+ * @returns Origin string (e.g., "https://example.com:8080")
18
+ */
19
+ getOrigin(url: string): string;
20
+ /**
21
+ * Check if a URL is from the same origin as the context
22
+ *
23
+ * @param src - URL to check
24
+ * @returns true if same origin, false otherwise
25
+ */
26
+ isSameOrigin(src: string): boolean;
27
+ /**
28
+ * Get the current context origin
29
+ *
30
+ * @returns The origin of the context window
31
+ */
32
+ getContextOrigin(): string;
33
+ }
@@ -0,0 +1,131 @@
1
+ import { Context } from './context';
2
+ /**
3
+ * Performance Metric
4
+ *
5
+ * Represents a single performance measurement
6
+ */
7
+ export interface PerformanceMetric {
8
+ name: string;
9
+ startTime: number;
10
+ endTime?: number;
11
+ duration?: number;
12
+ metadata?: Record<string, any>;
13
+ }
14
+ /**
15
+ * Performance Summary
16
+ *
17
+ * Aggregated performance data
18
+ */
19
+ export interface PerformanceSummary {
20
+ totalDuration: number;
21
+ metrics: PerformanceMetric[];
22
+ breakdown: Array<{
23
+ name: string;
24
+ duration: number;
25
+ percentage: string;
26
+ }>;
27
+ }
28
+ /**
29
+ * Performance Monitor
30
+ *
31
+ * Tracks performance metrics throughout the rendering pipeline.
32
+ * Provides insights into where time is spent during rendering.
33
+ *
34
+ * Usage:
35
+ * ```typescript
36
+ * const monitor = new PerformanceMonitor(context);
37
+ *
38
+ * monitor.start('clone');
39
+ * await cloneDocument();
40
+ * monitor.end('clone');
41
+ *
42
+ * const summary = monitor.getSummary();
43
+ * ```
44
+ */
45
+ export declare class PerformanceMonitor {
46
+ private readonly context;
47
+ private readonly activeMetrics;
48
+ private readonly completedMetrics;
49
+ private readonly enabled;
50
+ private readonly getTime;
51
+ constructor(context: Context | null, enabled?: boolean);
52
+ /**
53
+ * Start measuring a performance metric
54
+ *
55
+ * @param name - Unique name for this metric
56
+ * @param metadata - Optional metadata to attach
57
+ */
58
+ start(name: string, metadata?: Record<string, any>): void;
59
+ /**
60
+ * End measuring a performance metric
61
+ *
62
+ * @param name - Name of the metric to end
63
+ * @returns The completed metric, or undefined if not found
64
+ */
65
+ end(name: string): PerformanceMetric | undefined;
66
+ /**
67
+ * Measure a synchronous function
68
+ *
69
+ * @param name - Name for this measurement
70
+ * @param fn - Function to measure
71
+ * @param metadata - Optional metadata
72
+ * @returns The function's return value
73
+ */
74
+ measure<T>(name: string, fn: () => T, metadata?: Record<string, any>): T;
75
+ /**
76
+ * Measure an asynchronous function
77
+ *
78
+ * @param name - Name for this measurement
79
+ * @param fn - Async function to measure
80
+ * @param metadata - Optional metadata
81
+ * @returns Promise resolving to the function's return value
82
+ */
83
+ measureAsync<T>(name: string, fn: () => Promise<T>, metadata?: Record<string, any>): Promise<T>;
84
+ /**
85
+ * Get all completed metrics
86
+ *
87
+ * @returns Array of completed performance metrics
88
+ */
89
+ getMetrics(): PerformanceMetric[];
90
+ /**
91
+ * Get a specific metric by name
92
+ *
93
+ * @param name - Metric name
94
+ * @returns The metric, or undefined if not found
95
+ */
96
+ getMetric(name: string): PerformanceMetric | undefined;
97
+ /**
98
+ * Get performance summary
99
+ *
100
+ * @returns Aggregated performance data
101
+ */
102
+ getSummary(): PerformanceSummary;
103
+ /**
104
+ * Log performance summary to console
105
+ */
106
+ logSummary(): void;
107
+ /**
108
+ * Clear all metrics
109
+ */
110
+ clear(): void;
111
+ /**
112
+ * Check if monitoring is enabled
113
+ */
114
+ isEnabled(): boolean;
115
+ /**
116
+ * Get active (uncompleted) metrics
117
+ * Useful for debugging leaked measurements
118
+ */
119
+ getActiveMetrics(): string[];
120
+ }
121
+ /**
122
+ * Create a no-op performance monitor for production
123
+ * Has minimal overhead when disabled
124
+ */
125
+ export declare class NoOpPerformanceMonitor extends PerformanceMonitor {
126
+ constructor();
127
+ start(): void;
128
+ end(): undefined;
129
+ measure<T>(_name: string, fn: () => T): T;
130
+ measureAsync<T>(_name: string, fn: () => Promise<T>): Promise<T>;
131
+ }
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Input Validator
3
+ *
4
+ * Provides validation and sanitization for user inputs to prevent security vulnerabilities
5
+ * including SSRF, XSS, and injection attacks.
6
+ */
7
+ /**
8
+ * Validation result
9
+ */
10
+ export interface ValidationResult {
11
+ valid: boolean;
12
+ error?: string;
13
+ sanitized?: any;
14
+ /**
15
+ * Indicates if runtime validation is recommended
16
+ * (e.g., for proxy URLs to prevent DNS rebinding attacks)
17
+ */
18
+ requiresRuntimeCheck?: boolean;
19
+ }
20
+ /**
21
+ * Validator configuration
22
+ */
23
+ export interface ValidatorConfig {
24
+ /**
25
+ * Allowed proxy domains for SSRF prevention
26
+ * If empty, no domain restrictions
27
+ */
28
+ allowedProxyDomains?: string[];
29
+ /**
30
+ * Allow localhost/127.0.0.1 as proxy URL. Only set for development or test (e.g. Karma reftests).
31
+ * @default false
32
+ */
33
+ allowLocalhostProxy?: boolean;
34
+ /**
35
+ * Maximum allowed image timeout in milliseconds
36
+ */
37
+ maxImageTimeout?: number;
38
+ /**
39
+ * Whether to allow data URLs
40
+ */
41
+ allowDataUrls?: boolean;
42
+ /**
43
+ * Custom validation function
44
+ */
45
+ customValidator?: (value: any, type: string) => ValidationResult;
46
+ }
47
+ /**
48
+ * Input Validator
49
+ *
50
+ * Validates and sanitizes user inputs for security and correctness.
51
+ */
52
+ export declare class Validator {
53
+ private readonly config;
54
+ constructor(config?: ValidatorConfig);
55
+ /**
56
+ * Validate a URL
57
+ *
58
+ * @param url - URL to validate
59
+ * @param context - Context for validation (e.g., 'proxy', 'image')
60
+ * @returns Validation result
61
+ */
62
+ validateUrl(url: string, context?: 'proxy' | 'image' | 'general'): ValidationResult;
63
+ /**
64
+ * Check if a hostname is a private IP address
65
+ */
66
+ private isPrivateIP;
67
+ /**
68
+ * Check if an IPv6 address is private or special
69
+ * Handles compressed IPv6 addresses (e.g., ::1, fc00::1)
70
+ */
71
+ private isPrivateIPv6;
72
+ /**
73
+ * Expand compressed IPv6 address to full form
74
+ * e.g., "::1" -> "0000:0000:0000:0000:0000:0000:0000:0001"
75
+ */
76
+ private expandIPv6;
77
+ /**
78
+ * Fallback prefix matching for IPv6 when expansion fails
79
+ */
80
+ private isPrivateIPv6Prefix;
81
+ /**
82
+ * Validate CSP nonce
83
+ *
84
+ * @param nonce - CSP nonce to validate
85
+ * @returns Validation result
86
+ */
87
+ validateCspNonce(nonce: string): ValidationResult;
88
+ /**
89
+ * Validate image timeout
90
+ *
91
+ * @param timeout - Timeout in milliseconds
92
+ * @returns Validation result
93
+ */
94
+ validateImageTimeout(timeout: number): ValidationResult;
95
+ /**
96
+ * Validate window dimensions
97
+ *
98
+ * @param width - Window width
99
+ * @param height - Window height
100
+ * @returns Validation result
101
+ */
102
+ validateDimensions(width: number, height: number): ValidationResult;
103
+ /**
104
+ * Validate scale factor
105
+ *
106
+ * @param scale - Scale factor
107
+ * @returns Validation result
108
+ */
109
+ validateScale(scale: number): ValidationResult;
110
+ /**
111
+ * Validate HTML element
112
+ *
113
+ * @param element - Element to validate
114
+ * @returns Validation result
115
+ */
116
+ validateElement(element: any): ValidationResult;
117
+ /**
118
+ * Validate entire options object
119
+ *
120
+ * @param options - Options to validate
121
+ * @returns Validation result with all errors
122
+ */
123
+ validateOptions(options: any): ValidationResult;
124
+ }
125
+ /**
126
+ * Create a default validator instance
127
+ */
128
+ export declare function createDefaultValidator(config?: ValidatorConfig): Validator;
129
+ /**
130
+ * Create a strict validator with security-focused settings
131
+ */
132
+ export declare function createStrictValidator(allowedProxyDomains: string[]): Validator;