@meonode/canvas 1.7.2 → 2.0.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.
- package/README.md +161 -7
- package/dist/cjs/canvas/canvas.type.d.ts +68 -5
- package/dist/cjs/canvas/canvas.type.d.ts.map +1 -1
- package/dist/cjs/canvas/image.canvas.util.d.ts +9 -37
- package/dist/cjs/canvas/image.canvas.util.d.ts.map +1 -1
- package/dist/cjs/canvas/image.canvas.util.js +37 -137
- package/dist/cjs/canvas/image.canvas.util.js.map +1 -1
- package/dist/cjs/canvas/root.canvas.util.d.ts +27 -7
- package/dist/cjs/canvas/root.canvas.util.d.ts.map +1 -1
- package/dist/cjs/canvas/root.canvas.util.js +58 -38
- package/dist/cjs/canvas/root.canvas.util.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/util/disk.cache.d.ts +6 -0
- package/dist/cjs/util/disk.cache.d.ts.map +1 -1
- package/dist/cjs/util/disk.cache.js +33 -0
- package/dist/cjs/util/disk.cache.js.map +1 -1
- package/dist/esm/canvas/canvas.type.d.ts +68 -5
- package/dist/esm/canvas/canvas.type.d.ts.map +1 -1
- package/dist/esm/canvas/image.canvas.util.d.ts +9 -37
- package/dist/esm/canvas/image.canvas.util.d.ts.map +1 -1
- package/dist/esm/canvas/image.canvas.util.js +38 -135
- package/dist/esm/canvas/root.canvas.util.d.ts +27 -7
- package/dist/esm/canvas/root.canvas.util.d.ts.map +1 -1
- package/dist/esm/canvas/root.canvas.util.js +59 -40
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -2
- package/dist/esm/util/disk.cache.d.ts +6 -0
- package/dist/esm/util/disk.cache.d.ts.map +1 -1
- package/dist/esm/util/disk.cache.js +32 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -544,6 +544,22 @@ The `Grid` component arranges its children in a grid layout. It is a specialized
|
|
|
544
544
|
|
|
545
545
|
---
|
|
546
546
|
|
|
547
|
+
### GridItem
|
|
548
|
+
|
|
549
|
+
The `GridItem` component represents a child item within a `Grid`. It inherits all `BoxProps` and adds grid placement properties.
|
|
550
|
+
|
|
551
|
+
#### GridItem-Specific Props
|
|
552
|
+
|
|
553
|
+
| Prop | Type | Description |
|
|
554
|
+
|------|------|-------------|
|
|
555
|
+
| `gridColumn` | `string` | Specifies the column span (e.g., `'span 2'`, `'1 / 3'`). |
|
|
556
|
+
| `gridRow` | `string` | Specifies the row span (e.g., `'span 2'`, `'1 / 3'`). |
|
|
557
|
+
| `gridArea` | `string` | Shorthand for `gridRow` and `gridColumn` (e.g., `'header'`). |
|
|
558
|
+
|
|
559
|
+
> **Note:** You can also use `gridColumn` and `gridRow` props directly on any child component (`Box`, `Text`, etc.) without wrapping in `GridItem`.
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
547
563
|
### Chart
|
|
548
564
|
|
|
549
565
|
The `Chart` component renders various types of charts. It inherits all `BoxProps`.
|
|
@@ -626,16 +642,154 @@ options: {
|
|
|
626
642
|
|
|
627
643
|
### Root
|
|
628
644
|
|
|
629
|
-
The `Root` component is the entry point for rendering. It is a specialized `ColumnNode`.
|
|
645
|
+
The `Root` component is the entry point for rendering. It is a specialized `ColumnNode` that inherits all `BoxProps`.
|
|
630
646
|
|
|
631
647
|
#### Root-Specific Props
|
|
632
648
|
|
|
633
|
-
| Prop
|
|
634
|
-
|
|
635
|
-
| `width`
|
|
636
|
-
| `height` | `number`
|
|
637
|
-
| `scale`
|
|
638
|
-
| `fonts`
|
|
649
|
+
| Prop | Type | Default | Description |
|
|
650
|
+
|----------|--------------------------|-------------|----------------------------------------------------------------------|
|
|
651
|
+
| `width` | `number` | - | **Required.** Width of the canvas in pixels. |
|
|
652
|
+
| `height` | `number` | - | Optional height of the canvas. If not set, it's calculated from content. |
|
|
653
|
+
| `scale` | `number` | `1` | Scale factor for rendering (e.g., 2 for 2x resolution). |
|
|
654
|
+
| `fonts` | `FontRegistrationInfo[]` | - | An array of font files to register for use in the canvas. |
|
|
655
|
+
| `useDiskCache` | `boolean` | `false` | Write fetched images to disk during render for faster re-decode. Disk entries are cleaned up automatically after render completes. |
|
|
656
|
+
| `workerMode` | `boolean` | `true` | Enable worker thread rendering for non-blocking operation. |
|
|
657
|
+
| `workers` | `number` | `cpus().length - 1` | Number of worker threads to use (only applies on first render with `workerMode: true`). |
|
|
658
|
+
|
|
659
|
+
#### Common Inherited Props (from BoxProps)
|
|
660
|
+
|
|
661
|
+
Since `Root` extends `BoxProps`, it also accepts:
|
|
662
|
+
|
|
663
|
+
| Prop | Type | Description |
|
|
664
|
+
|------|------|-------------|
|
|
665
|
+
| `children` | `CanvasElement \| CanvasElement[]` | **Required.** The component tree to render. |
|
|
666
|
+
| `backgroundColor` | `string` | Canvas background color. |
|
|
667
|
+
| `padding` | `number \| object \| string` | Canvas padding. |
|
|
668
|
+
| `gradient` | `object` | Background gradient (overrides `backgroundColor`). |
|
|
669
|
+
| `boxShadow` | `object \| object[]` | Box shadow effects. |
|
|
670
|
+
|
|
671
|
+
> For a complete list of inherited props, see [Box, Row, and Column](#box-row-and-column) above.
|
|
672
|
+
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
### Canvas Methods
|
|
676
|
+
|
|
677
|
+
The `Root()` function returns a Canvas object with the following methods and properties:
|
|
678
|
+
|
|
679
|
+
#### Export Methods
|
|
680
|
+
|
|
681
|
+
| Method | Signature | Description |
|
|
682
|
+
|--------|-----------|-------------|
|
|
683
|
+
| `toBufferSync` | `(format?: ExportFormat, options?: ExportOptions) => Buffer` | Synchronously returns a buffer. In worker mode, returns the pre-encoded PNG from render. |
|
|
684
|
+
| `toBuffer` | `(format: ExportFormat, options?: ExportOptions) => Promise<Buffer>` | Asynchronously encodes to the specified format. |
|
|
685
|
+
| `toURL` | `(format: ExportFormat, options?: ExportOptions) => Promise<string>` | Returns a data URL. |
|
|
686
|
+
| `toURLSync` | `(format?: ExportFormat, options?: ExportOptions) => string` | Synchronously returns a data URL (from pre-encoded PNG in worker mode). |
|
|
687
|
+
| `toFile` | `(filename: string, options?: SaveOptions) => Promise<void>` | Saves the canvas to a file. |
|
|
688
|
+
| `toSharp` | `(options?: RenderOptions) => Promise<Buffer>` | Returns a Sharp instance buffer for further processing. |
|
|
689
|
+
| `toSharpSync` | `(options?: RenderOptions) => never` | **Throws error.** Use `toSharp()` instead in worker mode. |
|
|
690
|
+
|
|
691
|
+
**Supported Export Formats:** `'png'`, `'jpg'` (or `'jpeg'`), `'webp'`, `'pdf'`, `'svg'`, `'raw'`
|
|
692
|
+
|
|
693
|
+
#### Canvas Properties
|
|
694
|
+
|
|
695
|
+
| Property | Type | Description |
|
|
696
|
+
|----------|------|-------------|
|
|
697
|
+
| `.width` | `number` | Canvas width in pixels (after scale). |
|
|
698
|
+
| `.height` | `number` | Canvas height in pixels (after scale). |
|
|
699
|
+
|
|
700
|
+
#### Convenience Getters
|
|
701
|
+
|
|
702
|
+
| Getter | Returns | Description |
|
|
703
|
+
|--------|---------|-------------|
|
|
704
|
+
| `.png` | `Promise<Buffer>` | Shortcut for `toBuffer('png')` |
|
|
705
|
+
| `.jpg` | `Promise<Buffer>` | Shortcut for `toBuffer('jpg')` |
|
|
706
|
+
| `.webp` | `Promise<Buffer>` | Shortcut for `toBuffer('webp')` |
|
|
707
|
+
| `.svg` | `Promise<Buffer>` | Shortcut for `toBuffer('svg')` |
|
|
708
|
+
| `.pdf` | `Promise<Buffer>` | Shortcut for `toBuffer('pdf')` |
|
|
709
|
+
| `.raw` | `Promise<Buffer>` | Shortcut for `toBuffer('raw')` - raw pixel data |
|
|
710
|
+
|
|
711
|
+
#### Memory Management (Worker Mode)
|
|
712
|
+
|
|
713
|
+
| Method | Description |
|
|
714
|
+
|--------|-------------|
|
|
715
|
+
| `.release()` | **Required in worker mode.** Releases the Canvas from worker memory. Call when done to prevent memory leaks. |
|
|
716
|
+
|
|
717
|
+
```typescript
|
|
718
|
+
import { Root } from '@meonode/canvas'
|
|
719
|
+
|
|
720
|
+
// Render with default worker mode (enabled)
|
|
721
|
+
const canvas = await Root({ width: 400, height: 400, children: [...] })
|
|
722
|
+
|
|
723
|
+
// Or explicitly disable worker mode
|
|
724
|
+
const canvas = await Root({ width: 400, height: 400, children: [...], workerMode: false })
|
|
725
|
+
|
|
726
|
+
// Use the canvas
|
|
727
|
+
const png = await canvas.png
|
|
728
|
+
const jpg = await canvas.jpg
|
|
729
|
+
await canvas.toFile('output.png')
|
|
730
|
+
|
|
731
|
+
// Release memory (worker mode only)
|
|
732
|
+
canvas.release()
|
|
733
|
+
```
|
|
734
|
+
|
|
735
|
+
> **Note:** A FinalizationRegistry provides automatic cleanup for forgotten `.release()` calls, but explicit cleanup is recommended for deterministic memory management in production.
|
|
736
|
+
|
|
737
|
+
---
|
|
738
|
+
|
|
739
|
+
### Cleanup Functions
|
|
740
|
+
|
|
741
|
+
#### `terminate()`
|
|
742
|
+
|
|
743
|
+
Terminate all worker pools and free worker thread resources. Call this when shutting down a long-running server.
|
|
744
|
+
|
|
745
|
+
```typescript
|
|
746
|
+
import { terminate } from '@meonode/canvas'
|
|
747
|
+
|
|
748
|
+
// Call on server shutdown
|
|
749
|
+
process.on('SIGTERM', () => {
|
|
750
|
+
terminate()
|
|
751
|
+
process.exit(0)
|
|
752
|
+
})
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
> After calling `terminate()`, you must call `configure()` again before rendering.
|
|
756
|
+
|
|
757
|
+
#### `clearDiskCache()`
|
|
758
|
+
|
|
759
|
+
Manually clear the entire disk cache directory. Useful for debugging or forced cleanup.
|
|
760
|
+
|
|
761
|
+
```typescript
|
|
762
|
+
import { clearDiskCache } from '@meonode/canvas'
|
|
763
|
+
|
|
764
|
+
// Clear all disk cache
|
|
765
|
+
await clearDiskCache()
|
|
766
|
+
```
|
|
767
|
+
|
|
768
|
+
> **Note:** Disk cache is automatically cleaned up after each render when `useDiskCache: true`, and on process exit.
|
|
769
|
+
|
|
770
|
+
---
|
|
771
|
+
|
|
772
|
+
### Configuration (Legacy)
|
|
773
|
+
|
|
774
|
+
#### `configure(options)`
|
|
775
|
+
|
|
776
|
+
> **Deprecated:** Pass `workerMode` and `workers` directly to `Root()` props instead.
|
|
777
|
+
|
|
778
|
+
Configure the canvas rendering engine. Call once at startup.
|
|
779
|
+
|
|
780
|
+
```typescript
|
|
781
|
+
import { configure } from '@meonode/canvas'
|
|
782
|
+
|
|
783
|
+
configure({
|
|
784
|
+
workerMode: true, // Default: true
|
|
785
|
+
workers: 4, // Default: cpus().length - 1
|
|
786
|
+
})
|
|
787
|
+
```
|
|
788
|
+
|
|
789
|
+
| Option | Type | Default | Description |
|
|
790
|
+
|--------|------|---------|-------------|
|
|
791
|
+
| `workerMode` | `boolean` | `true` | Enable worker thread rendering for non-blocking operation |
|
|
792
|
+
| `workers` | `number` | `cpus().length - 1` | Number of worker threads in the pool |
|
|
639
793
|
|
|
640
794
|
## Contributing
|
|
641
795
|
|
|
@@ -515,17 +515,80 @@ export interface GridItemProps extends BoxProps {
|
|
|
515
515
|
gridArea?: string;
|
|
516
516
|
}
|
|
517
517
|
/**
|
|
518
|
-
*
|
|
518
|
+
* Root component props for canvas rendering.
|
|
519
|
+
* Extends BoxProps for layout and styling capabilities.
|
|
519
520
|
*/
|
|
520
521
|
export interface RootProps extends BoxProps {
|
|
521
|
-
/**
|
|
522
|
+
/**
|
|
523
|
+
* Width of the canvas in pixels.
|
|
524
|
+
* @required
|
|
525
|
+
*/
|
|
522
526
|
width: number;
|
|
523
|
-
/**
|
|
527
|
+
/**
|
|
528
|
+
* Optional height of the canvas in pixels.
|
|
529
|
+
* If not set, height is calculated from content.
|
|
530
|
+
*/
|
|
524
531
|
height?: number;
|
|
525
|
-
/**
|
|
532
|
+
/**
|
|
533
|
+
* Scale factor for high-DPI rendering.
|
|
534
|
+
* @default 1
|
|
535
|
+
* @example 2 // For 2x Retina displays
|
|
536
|
+
*/
|
|
526
537
|
scale?: number;
|
|
527
|
-
/**
|
|
538
|
+
/**
|
|
539
|
+
* Font files to register for use in the canvas.
|
|
540
|
+
*/
|
|
528
541
|
fonts?: FontRegistrationInfo[];
|
|
542
|
+
/**
|
|
543
|
+
* Write fetched images to disk during this render for faster re-decode
|
|
544
|
+
* when the same source appears multiple times. Disk entries are deleted
|
|
545
|
+
* when the render completes — no cross-render sharing.
|
|
546
|
+
* @default false
|
|
547
|
+
*/
|
|
548
|
+
useDiskCache?: boolean;
|
|
549
|
+
/**
|
|
550
|
+
* Enable worker thread rendering for non-blocking operation.
|
|
551
|
+
* Worker mode renders in a separate thread to avoid blocking the event loop.
|
|
552
|
+
* @default true
|
|
553
|
+
*/
|
|
554
|
+
workerMode?: boolean;
|
|
555
|
+
/**
|
|
556
|
+
* Number of worker threads to use when workerMode is enabled.
|
|
557
|
+
* Only applies when workerMode is true or undefined (default).
|
|
558
|
+
* Has no effect when workerMode: false.
|
|
559
|
+
* @default cpus().length - 1
|
|
560
|
+
*/
|
|
561
|
+
workers?: number;
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* Root props when worker mode is enabled (default behavior).
|
|
565
|
+
* Includes .release() method for memory cleanup.
|
|
566
|
+
*/
|
|
567
|
+
export interface RootPropsWithWorker extends RootProps {
|
|
568
|
+
/**
|
|
569
|
+
* Worker mode enabled or default (undefined defaults to true).
|
|
570
|
+
*/
|
|
571
|
+
workerMode?: true;
|
|
572
|
+
/**
|
|
573
|
+
* Number of worker threads (only available in worker mode).
|
|
574
|
+
*/
|
|
575
|
+
workers?: number;
|
|
576
|
+
}
|
|
577
|
+
/**
|
|
578
|
+
* Root props when worker mode is disabled.
|
|
579
|
+
* Returns plain Canvas without .release() method.
|
|
580
|
+
* workers prop is not available in this mode.
|
|
581
|
+
*/
|
|
582
|
+
export interface RootPropsWithoutWorker extends RootProps {
|
|
583
|
+
/**
|
|
584
|
+
* Worker mode explicitly disabled.
|
|
585
|
+
*/
|
|
586
|
+
workerMode: false;
|
|
587
|
+
/**
|
|
588
|
+
* workers prop is not available when workerMode is false.
|
|
589
|
+
* Setting this will cause a TypeScript error.
|
|
590
|
+
*/
|
|
591
|
+
workers?: never;
|
|
529
592
|
}
|
|
530
593
|
/**
|
|
531
594
|
* Tracks can be specified as:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.type.d.ts","sourceRoot":"","sources":["../../../src/canvas/canvas.type.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvas.type.d.ts","sourceRoot":"","sources":["../../../src/canvas/canvas.type.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,38 +4,9 @@ import { BoxNode } from '../canvas/layout.canvas.util.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* Per-render image cache — keyed by `src|color` for string sources.
|
|
6
6
|
* Scoped to a single RootNode.render() call; discarded after rendering.
|
|
7
|
+
* Deduplicates concurrent fetches when multiple ImageNodes share the same src.
|
|
7
8
|
*/
|
|
8
9
|
export type RenderImageCache = Map<string, Promise<CanvasImage>>;
|
|
9
|
-
/**
|
|
10
|
-
* A simple LRU cache for resolved `CanvasImage` objects.
|
|
11
|
-
*
|
|
12
|
-
* - Persists across render passes so repeated renders of the same tree don't
|
|
13
|
-
* re-fetch every image.
|
|
14
|
-
* - Bounded by `maxSize` entries; least-recently-used entries are evicted first.
|
|
15
|
-
* - Call `dispose()` to eagerly release all held images, or rely on the
|
|
16
|
-
* automatic `process.on('exit')` hook that clears the singleton.
|
|
17
|
-
*/
|
|
18
|
-
export declare class ImageLRUCache {
|
|
19
|
-
private readonly map;
|
|
20
|
-
readonly maxSize: number;
|
|
21
|
-
constructor(maxSize: number);
|
|
22
|
-
get(key: string): CanvasImage | undefined;
|
|
23
|
-
set(key: string, image: CanvasImage): void;
|
|
24
|
-
has(key: string): boolean;
|
|
25
|
-
get size(): number;
|
|
26
|
-
dispose(): void;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Returns the singleton `ImageLRUCache`, creating it on first access.
|
|
30
|
-
* Registers a one-time process cleanup hook to clear the cache
|
|
31
|
-
* so native image buffers are freed when the process shuts down.
|
|
32
|
-
*/
|
|
33
|
-
export declare function getImageCache(maxSize?: number): ImageLRUCache;
|
|
34
|
-
/**
|
|
35
|
-
* Explicitly disposes the global image cache.
|
|
36
|
-
* Useful in tests or when tearing down the rendering engine.
|
|
37
|
-
*/
|
|
38
|
-
export declare function disposeImageCache(): void;
|
|
39
10
|
/**
|
|
40
11
|
* Renders images with configurable sizing, positioning, and effects.
|
|
41
12
|
* Supports object-fit modes, positioning, border radius, and saturation filters.
|
|
@@ -47,25 +18,26 @@ export declare class ImageNode extends BoxNode {
|
|
|
47
18
|
private naturalHeight;
|
|
48
19
|
private loadingPromise;
|
|
49
20
|
constructor(props: ImageProps);
|
|
50
|
-
load(cache?: RenderImageCache): Promise<void>;
|
|
21
|
+
load(cache?: RenderImageCache, diskCacheKeys?: Set<string>): Promise<void>;
|
|
51
22
|
/**
|
|
52
23
|
* Fetches and processes the image source into a CanvasImage.
|
|
53
24
|
* Does not touch node state — pure fetch logic.
|
|
54
25
|
*
|
|
55
|
-
* If `diskCacheKey`
|
|
56
|
-
* disk
|
|
26
|
+
* If `diskCacheKey` and `diskCacheKeys` are provided, the resolved image buffer
|
|
27
|
+
* is written to disk and the key is recorded so the caller can clean it up later.
|
|
57
28
|
*/
|
|
58
29
|
private _fetchCanvasImage;
|
|
59
30
|
/**
|
|
60
31
|
* Loads and processes an image.
|
|
61
32
|
*
|
|
62
33
|
* Resolution order:
|
|
63
|
-
* 1.
|
|
64
|
-
* 2.
|
|
65
|
-
*
|
|
66
|
-
*
|
|
34
|
+
* 1. Disk cache at `.cache/files/<hash>` — survives process restarts.
|
|
35
|
+
* 2. Per-render dedup cache — avoids duplicate in-flight fetches when
|
|
36
|
+
* multiple ImageNodes share the same src within one render pass.
|
|
37
|
+
* 3. Fresh fetch via `_fetchCanvasImage()` — writes buffer to disk cache.
|
|
67
38
|
*
|
|
68
39
|
* Buffer sources use a SHA-256 hash as their cache key (same as string sources).
|
|
40
|
+
* All resolved images are released when the render completes (no cross-render retention).
|
|
69
41
|
*/
|
|
70
42
|
private _loadImage;
|
|
71
43
|
getLoadingPromise(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.canvas.util.d.ts","sourceRoot":"","sources":["../../../src/canvas/image.canvas.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,IAAI,WAAW,EAAa,MAAM,aAAa,CAAA;AAC5F,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAuBxD
|
|
1
|
+
{"version":3,"file":"image.canvas.util.d.ts","sourceRoot":"","sources":["../../../src/canvas/image.canvas.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,IAAI,WAAW,EAAa,MAAM,aAAa,CAAA;AAC5F,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAuBxD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;AAEhE;;;GAGG;AACH,qBAAa,SAAU,SAAQ,OAAO;IAC5B,KAAK,EAAE,UAAU,GAAG,SAAS,CAAA;IACrC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,cAAc,CAA6B;gBAEvC,KAAK,EAAE,UAAU;IAYtB,IAAI,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjF;;;;;;OAMG;YACW,iBAAiB;IA4E/B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,UAAU;IAoEX,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzC;;;OAGG;cACgB,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAoJrH;AAED;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,OAAO,UAAU,KAAG,aAGxC,CAAA"}
|
|
@@ -23,86 +23,6 @@ function calculateOffsetFromValue(positionValue, availableSpace) {
|
|
|
23
23
|
console.warn(`[ImageNode] Invalid objectPosition value format: ${value}. Defaulting to 50%.`);
|
|
24
24
|
return availableSpace * 0.5;
|
|
25
25
|
}
|
|
26
|
-
/**
|
|
27
|
-
* A simple LRU cache for resolved `CanvasImage` objects.
|
|
28
|
-
*
|
|
29
|
-
* - Persists across render passes so repeated renders of the same tree don't
|
|
30
|
-
* re-fetch every image.
|
|
31
|
-
* - Bounded by `maxSize` entries; least-recently-used entries are evicted first.
|
|
32
|
-
* - Call `dispose()` to eagerly release all held images, or rely on the
|
|
33
|
-
* automatic `process.on('exit')` hook that clears the singleton.
|
|
34
|
-
*/
|
|
35
|
-
class ImageLRUCache {
|
|
36
|
-
map = new Map();
|
|
37
|
-
maxSize;
|
|
38
|
-
constructor(maxSize) {
|
|
39
|
-
this.maxSize = maxSize;
|
|
40
|
-
}
|
|
41
|
-
get(key) {
|
|
42
|
-
const entry = this.map.get(key);
|
|
43
|
-
if (!entry)
|
|
44
|
-
return undefined;
|
|
45
|
-
// Move to end (most-recently used)
|
|
46
|
-
this.map.delete(key);
|
|
47
|
-
this.map.set(key, entry);
|
|
48
|
-
return entry.image;
|
|
49
|
-
}
|
|
50
|
-
set(key, image) {
|
|
51
|
-
// If key already exists, refresh it
|
|
52
|
-
if (this.map.has(key)) {
|
|
53
|
-
this.map.delete(key);
|
|
54
|
-
}
|
|
55
|
-
// Evict oldest if at capacity
|
|
56
|
-
while (this.map.size >= this.maxSize) {
|
|
57
|
-
const oldest = this.map.keys().next().value;
|
|
58
|
-
this.map.delete(oldest);
|
|
59
|
-
}
|
|
60
|
-
this.map.set(key, { image, key });
|
|
61
|
-
}
|
|
62
|
-
has(key) {
|
|
63
|
-
return this.map.has(key);
|
|
64
|
-
}
|
|
65
|
-
get size() {
|
|
66
|
-
return this.map.size;
|
|
67
|
-
}
|
|
68
|
-
dispose() {
|
|
69
|
-
this.map.clear();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/** Module-level singleton — lazily created on first render. */
|
|
73
|
-
let _globalImageCache = null;
|
|
74
|
-
const DEFAULT_CACHE_SIZE = 128;
|
|
75
|
-
// Symbol key on process to track hook registration across module reloads (e.g. Jest resetModules)
|
|
76
|
-
const HOOK_KEY = Symbol.for('__meonode_canvas_image_cache_hook__');
|
|
77
|
-
/**
|
|
78
|
-
* Returns the singleton `ImageLRUCache`, creating it on first access.
|
|
79
|
-
* Registers a one-time process cleanup hook to clear the cache
|
|
80
|
-
* so native image buffers are freed when the process shuts down.
|
|
81
|
-
*/
|
|
82
|
-
function getImageCache(maxSize = DEFAULT_CACHE_SIZE) {
|
|
83
|
-
if (!_globalImageCache) {
|
|
84
|
-
_globalImageCache = new ImageLRUCache(maxSize);
|
|
85
|
-
}
|
|
86
|
-
if (!globalThis[HOOK_KEY]) {
|
|
87
|
-
globalThis[HOOK_KEY] = true;
|
|
88
|
-
const cleanup = () => {
|
|
89
|
-
_globalImageCache?.dispose();
|
|
90
|
-
_globalImageCache = null;
|
|
91
|
-
};
|
|
92
|
-
process.once('exit', cleanup);
|
|
93
|
-
process.once('SIGINT', cleanup);
|
|
94
|
-
process.once('SIGTERM', cleanup);
|
|
95
|
-
}
|
|
96
|
-
return _globalImageCache;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Explicitly disposes the global image cache.
|
|
100
|
-
* Useful in tests or when tearing down the rendering engine.
|
|
101
|
-
*/
|
|
102
|
-
function disposeImageCache() {
|
|
103
|
-
_globalImageCache?.dispose();
|
|
104
|
-
_globalImageCache = null;
|
|
105
|
-
}
|
|
106
26
|
/**
|
|
107
27
|
* Renders images with configurable sizing, positioning, and effects.
|
|
108
28
|
* Supports object-fit modes, positioning, border radius, and saturation filters.
|
|
@@ -122,9 +42,9 @@ class ImageNode extends layout_canvas_util.BoxNode {
|
|
|
122
42
|
...props,
|
|
123
43
|
};
|
|
124
44
|
}
|
|
125
|
-
load(cache) {
|
|
45
|
+
load(cache, diskCacheKeys) {
|
|
126
46
|
if (!this.loadingPromise) {
|
|
127
|
-
this.loadingPromise = this._loadImage(cache);
|
|
47
|
+
this.loadingPromise = this._loadImage(cache, diskCacheKeys);
|
|
128
48
|
}
|
|
129
49
|
return this.loadingPromise;
|
|
130
50
|
}
|
|
@@ -132,10 +52,10 @@ class ImageNode extends layout_canvas_util.BoxNode {
|
|
|
132
52
|
* Fetches and processes the image source into a CanvasImage.
|
|
133
53
|
* Does not touch node state — pure fetch logic.
|
|
134
54
|
*
|
|
135
|
-
* If `diskCacheKey`
|
|
136
|
-
* disk
|
|
55
|
+
* If `diskCacheKey` and `diskCacheKeys` are provided, the resolved image buffer
|
|
56
|
+
* is written to disk and the key is recorded so the caller can clean it up later.
|
|
137
57
|
*/
|
|
138
|
-
async _fetchCanvasImage(diskCacheKey) {
|
|
58
|
+
async _fetchCanvasImage(diskCacheKey, diskCacheKeys) {
|
|
139
59
|
const { fileTypeFromBuffer, fileTypeFromFile } = await import('file-type');
|
|
140
60
|
let finalSource = this.props.src;
|
|
141
61
|
let isSvg = false;
|
|
@@ -194,11 +114,13 @@ class ImageNode extends layout_canvas_util.BoxNode {
|
|
|
194
114
|
const modifiedSvgString = svgString.replace(/fill="[^"]*"/g, `fill="${this.props.color}"`);
|
|
195
115
|
finalSource = modifiedSvgString !== svgString ? Buffer.from(modifiedSvgString) : contentBuffer;
|
|
196
116
|
}
|
|
197
|
-
// Write
|
|
198
|
-
if (diskCacheKey) {
|
|
117
|
+
// Write to disk and track the key so the render owner can clean it up
|
|
118
|
+
if (diskCacheKey && diskCacheKeys) {
|
|
199
119
|
const cacheBuffer = Buffer.isBuffer(finalSource) ? finalSource : contentBuffer;
|
|
200
|
-
if (cacheBuffer)
|
|
201
|
-
disk_cache.writeDiskCache(diskCacheKey, cacheBuffer);
|
|
120
|
+
if (cacheBuffer) {
|
|
121
|
+
await disk_cache.writeDiskCache(diskCacheKey, cacheBuffer);
|
|
122
|
+
diskCacheKeys.add(diskCacheKey);
|
|
123
|
+
}
|
|
202
124
|
}
|
|
203
125
|
return skiaCanvas.loadImage(finalSource);
|
|
204
126
|
}
|
|
@@ -206,14 +128,15 @@ class ImageNode extends layout_canvas_util.BoxNode {
|
|
|
206
128
|
* Loads and processes an image.
|
|
207
129
|
*
|
|
208
130
|
* Resolution order:
|
|
209
|
-
* 1.
|
|
210
|
-
* 2.
|
|
211
|
-
*
|
|
212
|
-
*
|
|
131
|
+
* 1. Disk cache at `.cache/files/<hash>` — survives process restarts.
|
|
132
|
+
* 2. Per-render dedup cache — avoids duplicate in-flight fetches when
|
|
133
|
+
* multiple ImageNodes share the same src within one render pass.
|
|
134
|
+
* 3. Fresh fetch via `_fetchCanvasImage()` — writes buffer to disk cache.
|
|
213
135
|
*
|
|
214
136
|
* Buffer sources use a SHA-256 hash as their cache key (same as string sources).
|
|
137
|
+
* All resolved images are released when the render completes (no cross-render retention).
|
|
215
138
|
*/
|
|
216
|
-
_loadImage(cache) {
|
|
139
|
+
_loadImage(cache, diskCacheKeys) {
|
|
217
140
|
if (!this.props.src) {
|
|
218
141
|
const aspectRatioFromProps = typeof this.props.aspectRatio === 'number' && this.props.aspectRatio > 0 ? this.props.aspectRatio : undefined;
|
|
219
142
|
this.node.setAspectRatio(aspectRatioFromProps);
|
|
@@ -224,56 +147,36 @@ class ImageNode extends layout_canvas_util.BoxNode {
|
|
|
224
147
|
return new Promise(resolve => {
|
|
225
148
|
const load = async () => {
|
|
226
149
|
try {
|
|
227
|
-
const
|
|
228
|
-
const cacheKey =
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
this.props.onLoad?.();
|
|
245
|
-
resolve();
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
// 2. Check disk cache (persists across process restarts)
|
|
249
|
-
const diskBuffer = await disk_cache.readDiskCache(cacheKey);
|
|
250
|
-
if (diskBuffer) {
|
|
251
|
-
const img = await skiaCanvas.loadImage(diskBuffer);
|
|
252
|
-
lru.set(cacheKey, img);
|
|
253
|
-
this.loadedImage = img;
|
|
254
|
-
this.naturalWidth = img.width;
|
|
255
|
-
this.naturalHeight = img.height;
|
|
256
|
-
const calculatedAspectRatio = img.width > 0 && img.height > 0 ? img.width / img.height : undefined;
|
|
257
|
-
const finalAspectRatio = typeof this.props.aspectRatio === 'number' && this.props.aspectRatio > 0 ? this.props.aspectRatio : calculatedAspectRatio;
|
|
258
|
-
this.node.setAspectRatio(finalAspectRatio);
|
|
259
|
-
this.props.onLoad?.();
|
|
260
|
-
resolve();
|
|
261
|
-
return;
|
|
150
|
+
const srcHash = typeof this.props.src === 'string' ? disk_cache.hashBuffer(Buffer.from(this.props.src)) : disk_cache.hashBuffer(this.props.src);
|
|
151
|
+
const cacheKey = this.props.color ? `${srcHash}|${this.props.color}` : srcHash;
|
|
152
|
+
// 1. Disk cache read — only when disk caching is enabled for this render
|
|
153
|
+
if (diskCacheKeys) {
|
|
154
|
+
const diskBuffer = await disk_cache.readDiskCache(cacheKey);
|
|
155
|
+
if (diskBuffer) {
|
|
156
|
+
const img = await skiaCanvas.loadImage(diskBuffer);
|
|
157
|
+
this.loadedImage = img;
|
|
158
|
+
this.naturalWidth = img.width;
|
|
159
|
+
this.naturalHeight = img.height;
|
|
160
|
+
const calculatedAspectRatio = img.width > 0 && img.height > 0 ? img.width / img.height : undefined;
|
|
161
|
+
const finalAspectRatio = typeof this.props.aspectRatio === 'number' && this.props.aspectRatio > 0 ? this.props.aspectRatio : calculatedAspectRatio;
|
|
162
|
+
this.node.setAspectRatio(finalAspectRatio);
|
|
163
|
+
this.props.onLoad?.();
|
|
164
|
+
resolve();
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
262
167
|
}
|
|
263
|
-
//
|
|
168
|
+
// 2. Per-render memory dedup cache or fresh fetch
|
|
264
169
|
let imagePromise;
|
|
265
170
|
if (cache) {
|
|
266
171
|
if (!cache.has(cacheKey)) {
|
|
267
|
-
cache.set(cacheKey, this._fetchCanvasImage(cacheKey));
|
|
172
|
+
cache.set(cacheKey, this._fetchCanvasImage(diskCacheKeys ? cacheKey : undefined, diskCacheKeys));
|
|
268
173
|
}
|
|
269
174
|
imagePromise = cache.get(cacheKey);
|
|
270
175
|
}
|
|
271
176
|
else {
|
|
272
|
-
imagePromise = this._fetchCanvasImage(cacheKey);
|
|
177
|
+
imagePromise = this._fetchCanvasImage(diskCacheKeys ? cacheKey : undefined, diskCacheKeys);
|
|
273
178
|
}
|
|
274
179
|
const img = await imagePromise;
|
|
275
|
-
// 4. Store in persistent LRU cache
|
|
276
|
-
lru.set(cacheKey, img);
|
|
277
180
|
this.loadedImage = img;
|
|
278
181
|
this.naturalWidth = img.width;
|
|
279
182
|
this.naturalHeight = img.height;
|
|
@@ -455,8 +358,5 @@ const Image = (props) => ({
|
|
|
455
358
|
});
|
|
456
359
|
|
|
457
360
|
exports.Image = Image;
|
|
458
|
-
exports.ImageLRUCache = ImageLRUCache;
|
|
459
361
|
exports.ImageNode = ImageNode;
|
|
460
|
-
exports.disposeImageCache = disposeImageCache;
|
|
461
|
-
exports.getImageCache = getImageCache;
|
|
462
362
|
//# sourceMappingURL=image.canvas.util.js.map
|