image-exporter 1.2.3 → 1.3.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 (45) hide show
  1. package/README.md +32 -3
  2. package/dist/capture/capture-element.d.ts +2 -1
  3. package/dist/capture/capture-element.d.ts.map +1 -1
  4. package/dist/capture/capture.dom.test.d.ts +2 -0
  5. package/dist/capture/capture.dom.test.d.ts.map +1 -0
  6. package/dist/capture/copy-to-clipboard.d.ts +13 -0
  7. package/dist/capture/copy-to-clipboard.d.ts.map +1 -0
  8. package/dist/capture/copy-to-clipboard.dom.test.d.ts +2 -0
  9. package/dist/capture/copy-to-clipboard.dom.test.d.ts.map +1 -0
  10. package/dist/capture/cors-cleanup.dom.test.d.ts +2 -0
  11. package/dist/capture/cors-cleanup.dom.test.d.ts.map +1 -0
  12. package/dist/capture/data-url-to-blob.d.ts +9 -0
  13. package/dist/capture/data-url-to-blob.d.ts.map +1 -0
  14. package/dist/capture/data-url-to-blob.node.test.d.ts +2 -0
  15. package/dist/capture/data-url-to-blob.node.test.d.ts.map +1 -0
  16. package/dist/capture/dedup-consistency.node.test.d.ts +2 -0
  17. package/dist/capture/dedup-consistency.node.test.d.ts.map +1 -0
  18. package/dist/capture/determine-total-elements.d.ts +7 -3
  19. package/dist/capture/determine-total-elements.d.ts.map +1 -1
  20. package/dist/capture/determine-total-elements.dom.test.d.ts +2 -0
  21. package/dist/capture/determine-total-elements.dom.test.d.ts.map +1 -0
  22. package/dist/capture/download-images.d.ts +8 -0
  23. package/dist/capture/download-images.d.ts.map +1 -1
  24. package/dist/capture/get-image-options.dom.test.d.ts +2 -0
  25. package/dist/capture/get-image-options.dom.test.d.ts.map +1 -0
  26. package/dist/capture/handle-filenames.d.ts +5 -6
  27. package/dist/capture/handle-filenames.d.ts.map +1 -1
  28. package/dist/capture/index.d.ts.map +1 -1
  29. package/dist/capture/make-unique.d.ts +14 -0
  30. package/dist/capture/make-unique.d.ts.map +1 -0
  31. package/dist/capture/make-unique.node.test.d.ts +2 -0
  32. package/dist/capture/make-unique.node.test.d.ts.map +1 -0
  33. package/dist/index.browser.js +16 -16
  34. package/dist/index.browser.js.map +20 -17
  35. package/dist/index.cjs +195 -122
  36. package/dist/index.cjs.map +20 -17
  37. package/dist/index.d.ts +10 -2
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +195 -122
  40. package/dist/index.js.map +20 -17
  41. package/dist/logger.d.ts +5 -5
  42. package/dist/logger.d.ts.map +1 -1
  43. package/dist/types.d.ts +33 -0
  44. package/dist/types.d.ts.map +1 -1
  45. package/package.json +27 -3
package/dist/logger.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  export declare const log: {
2
- info: (...messages: any[]) => Promise<void>;
3
- error: (...messages: any[]) => Promise<void>;
4
- verbose: (...messages: any[]) => Promise<void>;
2
+ info: (...messages: unknown[]) => Promise<void>;
3
+ error: (...messages: unknown[]) => Promise<void>;
4
+ verbose: (...messages: unknown[]) => Promise<void>;
5
5
  progress: (progress: number, total: number) => Promise<void>;
6
6
  group: {
7
- open: (...messages: any[]) => Promise<void>;
8
- close: (...messages: any[]) => Promise<void>;
7
+ open: (...messages: unknown[]) => Promise<void>;
8
+ close: (...messages: unknown[]) => Promise<void>;
9
9
  };
10
10
  };
11
11
  type LogType = "info" | "error" | "verbose" | "progress" | "group" | "groupEnd";
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG;wBACM,GAAG,EAAE;yBACJ,GAAG,EAAE;2BACH,GAAG,EAAE;yBACP,MAAM,SAAS,MAAM;;4BAEpB,GAAG,EAAE;6BACJ,GAAG,EAAE;;CAE7B,CAAC;AAwCF,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;AAEhF,KAAK,GAAG,GAAG;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,iBAAiB,EAAE,GAAG,EAAE,CAAC;QACzB,qBAAqB,EAAE,QAAQ,EAAE,CAAC;KACnC;CACF"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,GAAG;wBACM,OAAO,EAAE;yBACR,OAAO,EAAE;2BACP,OAAO,EAAE;yBACX,MAAM,SAAS,MAAM;;4BAEpB,OAAO,EAAE;6BACR,OAAO,EAAE;;CAEjC,CAAC;AAyCF,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;AAEhF,KAAK,GAAG,GAAG;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,iBAAiB,EAAE,GAAG,EAAE,CAAC;QACzB,qBAAqB,EAAE,QAAQ,EAAE,CAAC;KACnC;CACF"}
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { Options as ModernScreenshotOptions } from "modern-screenshot";
1
2
  export interface ImageOptions {
2
3
  /** Label for image. Does not include file extension or scale. */
3
4
  label: Label;
@@ -30,15 +31,47 @@ export interface Config extends ImageOptions {
30
31
  enableWindowLogging: boolean;
31
32
  /** Enable verbose logging for debugging. */
32
33
  loggingLevel: LoggingLevel;
34
+ /**
35
+ * Called after each capture completes, with the number completed so far and
36
+ * the total number of captures. A package-friendly alternative to polling
37
+ * `window.imageExporterProgress`.
38
+ */
39
+ onProgress?: (completed: number, total: number) => void;
40
+ /**
41
+ * Abort an in-progress capture. When the signal fires, the loop stops and
42
+ * the images captured so far are returned (download is skipped).
43
+ */
44
+ signal?: AbortSignal;
45
+ /**
46
+ * Extra options passed through to modern-screenshot (fonts, width/height,
47
+ * pixelRatio, backgroundColor, etc.). `scale` and `quality` remain controlled
48
+ * by the per-image options; a `filter` here is combined with the built-in
49
+ * `data-ignore-capture` filter (both must pass).
50
+ */
51
+ screenshotOptions?: Partial<ModernScreenshotOptions>;
52
+ /**
53
+ * What the returned images carry:
54
+ * - `"dataurl"` (default): `dataURL` only
55
+ * - `"blob"`: `blob` only (no base64 retained — lighter on memory)
56
+ * - `"both"`: `dataURL` and `blob`
57
+ *
58
+ * Downloading works in every mode.
59
+ */
60
+ output?: Output;
33
61
  }
34
62
  export interface ParsedImageOptions extends ImageOptions {
35
63
  /** After parsing, this will always be a number rather than possibly an array. */
36
64
  scale: number;
37
65
  }
38
66
  export interface Image {
67
+ /** base64 data URL. Empty when `output` is `"blob"`. */
39
68
  dataURL: string;
40
69
  fileName: string;
70
+ /** Populated when `config.output` is `"blob"` or `"both"`. */
71
+ blob?: Blob;
41
72
  }
73
+ /** What the returned Image carries. Default `"dataurl"`. */
74
+ export type Output = "dataurl" | "blob" | "both";
42
75
  export type Label = string;
43
76
  export type Format = "jpg" | "png" | "svg" | "webp";
44
77
  export type Scale = number | number[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,KAAK,EAAE,KAAK,CAAC;IACb,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,KAAK,EAAE,KAAK,CAAC;IACb,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,sFAAsF;IACtF,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C;AAED,MAAM,WAAW,MAAO,SAAQ,YAAY;IAC1C,6CAA6C;IAC7C,cAAc,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,EAAE,KAAK,CAAC;IAChB;;;;;;;OAOG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,4CAA4C;IAC5C,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAC3B,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AACtC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAC7B,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAC1C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,KAAK,EAAE,KAAK,CAAC;IACb,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,KAAK,EAAE,KAAK,CAAC;IACb,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,sFAAsF;IACtF,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C;AAED,MAAM,WAAW,MAAO,SAAQ,YAAY;IAC1C,6CAA6C;IAC7C,cAAc,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,EAAE,KAAK,CAAC;IAChB;;;;;;;OAOG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,4CAA4C;IAC5C,YAAY,EAAE,YAAY,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACrD;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,4DAA4D;AAC5D,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAC3B,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AACtC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAC7B,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAC1C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,13 @@
1
1
  {
2
2
  "name": "image-exporter",
3
- "version": "1.2.3",
3
+ "version": "1.3.0",
4
4
  "description": "Easily download one or more DOM elements as images",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
7
7
  "module": "./dist/index.js",
8
8
  "browser": "./dist/index.browser.js",
9
+ "unpkg": "./dist/index.browser.js",
10
+ "jsdelivr": "./dist/index.browser.js",
9
11
  "types": "./dist/index.d.ts",
10
12
  "exports": {
11
13
  ".": {
@@ -23,6 +25,14 @@
23
25
  "scripts": {
24
26
  "dev": "bun run --watch src/index.ts",
25
27
  "build": "bun run scripts/build.ts",
28
+ "test": "bun run test:dom && bun run test:node",
29
+ "test:dom": "bun test --preload ./test/happydom.ts dom.test",
30
+ "test:node": "bun test node.test",
31
+ "typecheck": "tsc --noEmit -p tsconfig.test.json",
32
+ "lint": "eslint .",
33
+ "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
34
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
35
+ "release": "bun run build && changeset publish",
26
36
  "prepublishOnly": "bun run build"
27
37
  },
28
38
  "repository": {
@@ -39,18 +49,32 @@
39
49
  "gennyflow"
40
50
  ],
41
51
  "author": "Brian Tucker",
42
- "license": "ISC",
52
+ "license": "Apache-2.0",
43
53
  "bugs": {
44
54
  "url": "https://github.com/briantuckerdesign/image-exporter/issues"
45
55
  },
46
56
  "homepage": "https://github.com/briantuckerdesign/image-exporter#readme",
57
+ "publishConfig": {
58
+ "access": "public",
59
+ "provenance": true
60
+ },
47
61
  "dependencies": {
48
62
  "jszip": "^3.10.1",
49
63
  "modern-screenshot": "^4.6.0"
50
64
  },
51
65
  "devDependencies": {
66
+ "@changesets/changelog-github": "^0.7.0",
67
+ "@changesets/cli": "^2.31.0",
68
+ "@eslint/js": "^10.0.1",
69
+ "@happy-dom/global-registrator": "^20.10.6",
70
+ "@types/bun": "^1.3.14",
52
71
  "concurrently": "^9.1.2",
72
+ "eslint": "^10.5.0",
73
+ "eslint-config-prettier": "^10.1.8",
74
+ "globals": "^17.7.0",
53
75
  "http-server": "^14.1.1",
54
- "typescript": "^5.7.3"
76
+ "prettier": "^3.8.4",
77
+ "typescript": "^5.7.3",
78
+ "typescript-eslint": "^8.62.0"
55
79
  }
56
80
  }