imgcraft 0.1.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.
@@ -0,0 +1,158 @@
1
+ export type ImageInput = string | Buffer | Uint8Array | ArrayBuffer | URL;
2
+ export type FitMode = 'cover' | 'contain' | 'fill' | 'inside' | 'outside';
3
+ export type OutputFormat = 'jpeg' | 'png' | 'webp' | 'avif' | 'tiff';
4
+ export type BlendMode = 'over' | 'multiply' | 'screen' | 'darken' | 'lighten' | 'overlay' | 'add' | 'dest-out';
5
+ export type Gravity = 'center' | 'north' | 'northeast' | 'east' | 'southeast' | 'south' | 'southwest' | 'west' | 'northwest';
6
+ export interface RgbaColor {
7
+ r: number;
8
+ g: number;
9
+ b: number;
10
+ alpha?: number;
11
+ }
12
+ export interface ResizeOptions {
13
+ width?: number;
14
+ height?: number;
15
+ fit?: FitMode;
16
+ background?: string | RgbaColor;
17
+ withoutEnlargement?: boolean;
18
+ }
19
+ export interface CropOptions {
20
+ left: number;
21
+ top: number;
22
+ width: number;
23
+ height: number;
24
+ }
25
+ export interface RotateOptions {
26
+ angle: number;
27
+ background?: string | RgbaColor;
28
+ }
29
+ export interface FormatOptions {
30
+ format: OutputFormat;
31
+ quality?: number;
32
+ }
33
+ export interface BlurOptions {
34
+ sigma?: number;
35
+ }
36
+ export interface SharpenOptions {
37
+ sigma?: number;
38
+ m1?: number;
39
+ m2?: number;
40
+ }
41
+ export interface MedianOptions {
42
+ size?: number;
43
+ }
44
+ export interface TintOptions {
45
+ r: number;
46
+ g: number;
47
+ b: number;
48
+ }
49
+ export interface ModulateOptions {
50
+ brightness?: number;
51
+ saturation?: number;
52
+ hue?: number;
53
+ }
54
+ export interface ContrastOptions {
55
+ value: number;
56
+ }
57
+ export interface CompositeOptions {
58
+ input: string | Buffer | Uint8Array;
59
+ blend?: BlendMode;
60
+ top?: number;
61
+ left?: number;
62
+ gravity?: Gravity;
63
+ }
64
+ export interface SmartCropOptions {
65
+ padding?: number;
66
+ subject?: string;
67
+ }
68
+ export interface UpscaleOptions {
69
+ factor: 2 | 4;
70
+ }
71
+ export interface MetadataResult {
72
+ width?: number;
73
+ height?: number;
74
+ format?: string;
75
+ size?: number;
76
+ channels?: number;
77
+ hasAlpha?: boolean;
78
+ orientation?: number;
79
+ density?: number;
80
+ isProgressive?: boolean;
81
+ }
82
+ export interface EngineResult {
83
+ data: Buffer | Uint8Array;
84
+ format: string;
85
+ width: number;
86
+ height: number;
87
+ }
88
+ export type PipelineOp = {
89
+ op: 'resize';
90
+ options: ResizeOptions;
91
+ } | {
92
+ op: 'crop';
93
+ options: CropOptions;
94
+ } | {
95
+ op: 'rotate';
96
+ options: RotateOptions;
97
+ } | {
98
+ op: 'flip';
99
+ } | {
100
+ op: 'flop';
101
+ } | {
102
+ op: 'format';
103
+ options: FormatOptions;
104
+ } | {
105
+ op: 'quality';
106
+ value: number;
107
+ } | {
108
+ op: 'blur';
109
+ options: BlurOptions;
110
+ } | {
111
+ op: 'sharpen';
112
+ options: SharpenOptions;
113
+ } | {
114
+ op: 'median';
115
+ options: MedianOptions;
116
+ } | {
117
+ op: 'grayscale';
118
+ } | {
119
+ op: 'tint';
120
+ options: TintOptions;
121
+ } | {
122
+ op: 'negate';
123
+ } | {
124
+ op: 'brightness';
125
+ options: Pick<ModulateOptions, 'brightness'>;
126
+ } | {
127
+ op: 'saturation';
128
+ options: Pick<ModulateOptions, 'saturation'>;
129
+ } | {
130
+ op: 'contrast';
131
+ options: ContrastOptions;
132
+ } | {
133
+ op: 'composite';
134
+ options: CompositeOptions;
135
+ } | {
136
+ op: 'stripMeta';
137
+ } | {
138
+ op: 'removeBackground';
139
+ } | {
140
+ op: 'smartCrop';
141
+ options: SmartCropOptions;
142
+ } | {
143
+ op: 'upscale';
144
+ options: UpscaleOptions;
145
+ };
146
+ export interface PipelineState {
147
+ input: ImageInput;
148
+ ops: PipelineOp[];
149
+ }
150
+ export interface ImgCraftErrorOptions {
151
+ code: string;
152
+ message: string;
153
+ }
154
+ export declare class ImgCraftError extends Error {
155
+ readonly code: string;
156
+ constructor({ code, message }: ImgCraftErrorOptions);
157
+ }
158
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,9 @@
1
+ export class ImgCraftError extends Error {
2
+ code;
3
+ constructor({ code, message }) {
4
+ super(message);
5
+ this.name = 'ImgCraftError';
6
+ this.code = code;
7
+ }
8
+ }
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA8JA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAQ;IAErB,YAAY,EAAE,IAAI,EAAE,OAAO,EAAwB;QACjD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "imgcraft",
3
+ "version": "0.1.0",
4
+ "description": "Chainable image transform pipeline — Node + Browser WASM",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "sideEffects": false,
19
+ "scripts": {
20
+ "build": "tsc -p tsconfig.json",
21
+ "test": "vitest run --config ../../vitest.config.ts --passWithNoTests",
22
+ "typecheck": "tsc --noEmit"
23
+ },
24
+ "devDependencies": {
25
+ "@cf-wasm/photon": "^0.3.6",
26
+ "@squoosh/lib": "^0.5.3",
27
+ "sharp": "^0.33.0",
28
+ "typescript": "^5.5.0",
29
+ "vitest": "^2.0.0"
30
+ },
31
+ "peerDependencies": {
32
+ "@cf-wasm/photon": "^0.3.6",
33
+ "sharp": "^0.33.0"
34
+ },
35
+ "peerDependenciesMeta": {
36
+ "@cf-wasm/photon": {
37
+ "optional": true
38
+ },
39
+ "sharp": {
40
+ "optional": true
41
+ }
42
+ },
43
+ "dependencies": {
44
+ "@imgly/background-removal": "^1.7.0",
45
+ "@tensorflow-models/coco-ssd": "^2.2.3",
46
+ "@tensorflow/tfjs-node": "^4.22.0",
47
+ "@upscalerjs/esrgan-slim": "^1.0.0",
48
+ "p-queue": "^9.3.0",
49
+ "upscalerjs": "^1.0.0"
50
+ }
51
+ }