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.
- package/README.md +98 -0
- package/dist/adapters/runtime.d.ts +7 -0
- package/dist/adapters/runtime.d.ts.map +1 -0
- package/dist/adapters/runtime.js +16 -0
- package/dist/adapters/runtime.js.map +1 -0
- package/dist/batch.d.ts +60 -0
- package/dist/batch.d.ts.map +1 -0
- package/dist/batch.js +207 -0
- package/dist/batch.js.map +1 -0
- package/dist/engines/node.d.ts +8 -0
- package/dist/engines/node.d.ts.map +1 -0
- package/dist/engines/node.js +176 -0
- package/dist/engines/node.js.map +1 -0
- package/dist/engines/wasm.d.ts +8 -0
- package/dist/engines/wasm.d.ts.map +1 -0
- package/dist/engines/wasm.js +199 -0
- package/dist/engines/wasm.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline.d.ts +45 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +135 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/transforms/ai.d.ts +6 -0
- package/dist/transforms/ai.d.ts.map +1 -0
- package/dist/transforms/ai.js +143 -0
- package/dist/transforms/ai.js.map +1 -0
- package/dist/types.d.ts +158 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/package.json +51 -0
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
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
|
+
}
|