@teamflojo/floimg 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/LICENSE +21 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +165 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/filter.d.ts +4 -0
- package/dist/cli/commands/filter.d.ts.map +1 -0
- package/dist/cli/commands/filter.js +102 -0
- package/dist/cli/commands/filter.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +3 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +49 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +88 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/plugins.d.ts +3 -0
- package/dist/cli/commands/plugins.d.ts.map +1 -0
- package/dist/cli/commands/plugins.js +66 -0
- package/dist/cli/commands/plugins.js.map +1 -0
- package/dist/cli/commands/run.d.ts +3 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +45 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/save.d.ts +3 -0
- package/dist/cli/commands/save.d.ts.map +1 -0
- package/dist/cli/commands/save.js +54 -0
- package/dist/cli/commands/save.js.map +1 -0
- package/dist/cli/commands/text.d.ts +3 -0
- package/dist/cli/commands/text.d.ts.map +1 -0
- package/dist/cli/commands/text.js +143 -0
- package/dist/cli/commands/text.js.map +1 -0
- package/dist/cli/commands/transform.d.ts +3 -0
- package/dist/cli/commands/transform.d.ts.map +1 -0
- package/dist/cli/commands/transform.js +59 -0
- package/dist/cli/commands/transform.js.map +1 -0
- package/dist/cli/commands/upload.d.ts +3 -0
- package/dist/cli/commands/upload.d.ts.map +1 -0
- package/dist/cli/commands/upload.js +59 -0
- package/dist/cli/commands/upload.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +139 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +38 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +23 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +189 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/core/client.d.ts +63 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +318 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/errors.d.ts +38 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +75 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/logger.d.ts +12 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +26 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/pipeline-runner.d.ts +64 -0
- package/dist/core/pipeline-runner.d.ts.map +1 -0
- package/dist/core/pipeline-runner.js +109 -0
- package/dist/core/pipeline-runner.js.map +1 -0
- package/dist/core/types.d.ts +392 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +731 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/providers/ai/index.d.ts +3 -0
- package/dist/providers/ai/index.d.ts.map +1 -0
- package/dist/providers/ai/index.js +2 -0
- package/dist/providers/ai/index.js.map +1 -0
- package/dist/providers/ai/openai.d.ts +44 -0
- package/dist/providers/ai/openai.d.ts.map +1 -0
- package/dist/providers/ai/openai.js +133 -0
- package/dist/providers/ai/openai.js.map +1 -0
- package/dist/providers/save/FsSaveProvider.d.ts +20 -0
- package/dist/providers/save/FsSaveProvider.d.ts.map +1 -0
- package/dist/providers/save/FsSaveProvider.js +34 -0
- package/dist/providers/save/FsSaveProvider.js.map +1 -0
- package/dist/providers/save/S3SaveProvider.d.ts +26 -0
- package/dist/providers/save/S3SaveProvider.d.ts.map +1 -0
- package/dist/providers/save/S3SaveProvider.js +42 -0
- package/dist/providers/save/S3SaveProvider.js.map +1 -0
- package/dist/providers/store/fs.d.ts +20 -0
- package/dist/providers/store/fs.d.ts.map +1 -0
- package/dist/providers/store/fs.js +42 -0
- package/dist/providers/store/fs.js.map +1 -0
- package/dist/providers/store/index.d.ts +3 -0
- package/dist/providers/store/index.d.ts.map +1 -0
- package/dist/providers/store/index.js +3 -0
- package/dist/providers/store/index.js.map +1 -0
- package/dist/providers/store/s3.d.ts +62 -0
- package/dist/providers/store/s3.d.ts.map +1 -0
- package/dist/providers/store/s3.js +92 -0
- package/dist/providers/store/s3.js.map +1 -0
- package/dist/providers/svg/index.d.ts +2 -0
- package/dist/providers/svg/index.d.ts.map +1 -0
- package/dist/providers/svg/index.js +2 -0
- package/dist/providers/svg/index.js.map +1 -0
- package/dist/providers/svg/shapes.d.ts +18 -0
- package/dist/providers/svg/shapes.d.ts.map +1 -0
- package/dist/providers/svg/shapes.js +161 -0
- package/dist/providers/svg/shapes.js.map +1 -0
- package/dist/providers/transform/index.d.ts +2 -0
- package/dist/providers/transform/index.d.ts.map +1 -0
- package/dist/providers/transform/index.js +2 -0
- package/dist/providers/transform/index.js.map +1 -0
- package/dist/providers/transform/presets.d.ts +44 -0
- package/dist/providers/transform/presets.d.ts.map +1 -0
- package/dist/providers/transform/presets.js +205 -0
- package/dist/providers/transform/presets.js.map +1 -0
- package/dist/providers/transform/sharp.d.ts +64 -0
- package/dist/providers/transform/sharp.d.ts.map +1 -0
- package/dist/providers/transform/sharp.js +732 -0
- package/dist/providers/transform/sharp.js.map +1 -0
- package/dist/providers/transform/text.d.ts +38 -0
- package/dist/providers/transform/text.d.ts.map +1 -0
- package/dist/providers/transform/text.js +116 -0
- package/dist/providers/transform/text.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { readFile, access } from "fs/promises";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
import { homedir } from "os";
|
|
4
|
+
/**
|
|
5
|
+
* Configuration search paths (in order of priority)
|
|
6
|
+
*/
|
|
7
|
+
const CONFIG_SEARCH_PATHS = [
|
|
8
|
+
// 1. Current directory configs
|
|
9
|
+
"./floimg.config.ts",
|
|
10
|
+
"./floimg.config.js",
|
|
11
|
+
"./floimg.config.mjs",
|
|
12
|
+
"./.floimgrc.json",
|
|
13
|
+
"./.floimgrc",
|
|
14
|
+
// 2. Global config in home directory
|
|
15
|
+
join(homedir(), ".floimg", "config.json"),
|
|
16
|
+
join(homedir(), ".floimgrc.json"),
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Load configuration from multiple sources with priority:
|
|
20
|
+
* 1. Explicit config file path (if provided)
|
|
21
|
+
* 2. Config file in current directory
|
|
22
|
+
* 3. Global config file in ~/.floimg/
|
|
23
|
+
* 4. Environment variables
|
|
24
|
+
*/
|
|
25
|
+
export async function loadConfig(explicitPath) {
|
|
26
|
+
const config = {};
|
|
27
|
+
// Step 1: Try explicit path if provided
|
|
28
|
+
if (explicitPath) {
|
|
29
|
+
try {
|
|
30
|
+
const loadedConfig = await loadConfigFile(explicitPath);
|
|
31
|
+
Object.assign(config, loadedConfig);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
throw new Error(`Failed to load config from ${explicitPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Step 2: Search for config files
|
|
39
|
+
for (const path of CONFIG_SEARCH_PATHS) {
|
|
40
|
+
try {
|
|
41
|
+
const exists = await fileExists(path);
|
|
42
|
+
if (exists) {
|
|
43
|
+
const loadedConfig = await loadConfigFile(path);
|
|
44
|
+
Object.assign(config, loadedConfig);
|
|
45
|
+
break; // Use first found config
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Continue to next path
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Step 3: Layer in environment variables as fallbacks
|
|
54
|
+
const envConfig = loadEnvConfig();
|
|
55
|
+
// Merge env config but don't override existing config
|
|
56
|
+
if (!config.save && envConfig.save) {
|
|
57
|
+
config.save = envConfig.save;
|
|
58
|
+
}
|
|
59
|
+
if (!config.ai && envConfig.ai) {
|
|
60
|
+
config.ai = envConfig.ai;
|
|
61
|
+
}
|
|
62
|
+
return config;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Load config from a specific file
|
|
66
|
+
*/
|
|
67
|
+
async function loadConfigFile(path) {
|
|
68
|
+
if (path.endsWith('.json')) {
|
|
69
|
+
// JSON config
|
|
70
|
+
const content = await readFile(path, 'utf-8');
|
|
71
|
+
return JSON.parse(content);
|
|
72
|
+
}
|
|
73
|
+
else if (path.endsWith('.ts') || path.endsWith('.js') || path.endsWith('.mjs')) {
|
|
74
|
+
// TypeScript/JavaScript config - convert to absolute file:// URL for import()
|
|
75
|
+
const { resolve } = await import("path");
|
|
76
|
+
const absolutePath = resolve(process.cwd(), path);
|
|
77
|
+
const fileUrl = `file://${absolutePath}`;
|
|
78
|
+
const module = await import(fileUrl);
|
|
79
|
+
return module.default || module;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// Try as JSON first
|
|
83
|
+
try {
|
|
84
|
+
const content = await readFile(path, 'utf-8');
|
|
85
|
+
return JSON.parse(content);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Try as module - convert to absolute file:// URL
|
|
89
|
+
const { resolve } = await import("path");
|
|
90
|
+
const absolutePath = resolve(process.cwd(), path);
|
|
91
|
+
const fileUrl = `file://${absolutePath}`;
|
|
92
|
+
const module = await import(fileUrl);
|
|
93
|
+
return module.default || module;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Load configuration from environment variables
|
|
99
|
+
* Supports multiple S3-compatible services via environment variables
|
|
100
|
+
*/
|
|
101
|
+
function loadEnvConfig() {
|
|
102
|
+
const config = {};
|
|
103
|
+
// S3-compatible storage configuration
|
|
104
|
+
// Support standard AWS env vars, plus Tigris-specific ones
|
|
105
|
+
const hasS3Config = process.env.S3_BUCKET ||
|
|
106
|
+
process.env.AWS_REGION ||
|
|
107
|
+
process.env.TIGRIS_BUCKET_NAME ||
|
|
108
|
+
process.env.TIGRIS_ACCESS_KEY_ID;
|
|
109
|
+
if (hasS3Config) {
|
|
110
|
+
const bucket = process.env.TIGRIS_BUCKET_NAME || process.env.S3_BUCKET;
|
|
111
|
+
const region = process.env.TIGRIS_REGION || process.env.AWS_REGION || 'auto';
|
|
112
|
+
const accessKeyId = process.env.TIGRIS_ACCESS_KEY_ID || process.env.AWS_ACCESS_KEY_ID;
|
|
113
|
+
const secretAccessKey = process.env.TIGRIS_SECRET_ACCESS_KEY || process.env.AWS_SECRET_ACCESS_KEY;
|
|
114
|
+
const endpoint = process.env.S3_ENDPOINT ||
|
|
115
|
+
(process.env.TIGRIS_BUCKET_NAME ? 'https://fly.storage.tigris.dev' : undefined);
|
|
116
|
+
config.save = {
|
|
117
|
+
default: 's3',
|
|
118
|
+
s3: {
|
|
119
|
+
bucket,
|
|
120
|
+
region,
|
|
121
|
+
...(endpoint && { endpoint }),
|
|
122
|
+
...(accessKeyId && secretAccessKey && {
|
|
123
|
+
credentials: {
|
|
124
|
+
accessKeyId,
|
|
125
|
+
secretAccessKey,
|
|
126
|
+
},
|
|
127
|
+
}),
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// AI configuration
|
|
132
|
+
if (process.env.OPENAI_API_KEY) {
|
|
133
|
+
config.ai = {
|
|
134
|
+
default: 'openai',
|
|
135
|
+
openai: {
|
|
136
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return config;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Check if a file exists
|
|
144
|
+
*/
|
|
145
|
+
async function fileExists(path) {
|
|
146
|
+
try {
|
|
147
|
+
await access(path);
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Merge CLI arguments into config (CLI args have highest priority)
|
|
156
|
+
*/
|
|
157
|
+
export function mergeCliArgs(config, cliArgs) {
|
|
158
|
+
const merged = { ...config };
|
|
159
|
+
// Override S3 settings from CLI
|
|
160
|
+
if (cliArgs.bucket || cliArgs.region) {
|
|
161
|
+
merged.save = {
|
|
162
|
+
...merged.save,
|
|
163
|
+
s3: {
|
|
164
|
+
...merged.save?.s3,
|
|
165
|
+
...(cliArgs.bucket && { bucket: cliArgs.bucket }),
|
|
166
|
+
...(cliArgs.region && { region: cliArgs.region }),
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// Override storage provider
|
|
171
|
+
if (cliArgs.provider) {
|
|
172
|
+
merged.save = {
|
|
173
|
+
...merged.save,
|
|
174
|
+
default: cliArgs.provider,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return merged;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Save config to global config file
|
|
181
|
+
*/
|
|
182
|
+
export async function saveGlobalConfig(config) {
|
|
183
|
+
const { mkdir, writeFile } = await import("fs/promises");
|
|
184
|
+
const configDir = join(homedir(), ".floimg");
|
|
185
|
+
const configPath = join(configDir, "config.json");
|
|
186
|
+
await mkdir(configDir, { recursive: true });
|
|
187
|
+
await writeFile(configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { FloimgConfig, ImageGenerator, TransformProvider, SaveProvider, GenerateInput, TransformInput, SaveInput, ImageBlob, SaveResult, Pipeline, PipelineResult, ClientCapabilities } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Main floimg client for image generation, transformation, and upload
|
|
4
|
+
*/
|
|
5
|
+
export declare class Floimg {
|
|
6
|
+
private logger;
|
|
7
|
+
private config;
|
|
8
|
+
/**
|
|
9
|
+
* Registry of available providers
|
|
10
|
+
*/
|
|
11
|
+
providers: {
|
|
12
|
+
generators: Record<string, ImageGenerator>;
|
|
13
|
+
transform: Record<string, TransformProvider>;
|
|
14
|
+
save: Record<string, SaveProvider>;
|
|
15
|
+
};
|
|
16
|
+
constructor(config?: FloimgConfig);
|
|
17
|
+
/**
|
|
18
|
+
* Generate an image using any registered generator
|
|
19
|
+
*/
|
|
20
|
+
generate(input: GenerateInput): Promise<ImageBlob>;
|
|
21
|
+
/**
|
|
22
|
+
* Transform an image (convert format, resize, etc.)
|
|
23
|
+
*/
|
|
24
|
+
transform(input: TransformInput): Promise<ImageBlob>;
|
|
25
|
+
/**
|
|
26
|
+
* Save an image (filesystem or cloud) with smart destination routing
|
|
27
|
+
*/
|
|
28
|
+
save(blob: ImageBlob, destination: string | SaveInput): Promise<SaveResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Parse destination string or object into provider and path
|
|
31
|
+
*/
|
|
32
|
+
private parseDestination;
|
|
33
|
+
/**
|
|
34
|
+
* Run a declarative pipeline of operations
|
|
35
|
+
*
|
|
36
|
+
* Steps are analyzed for dependencies and executed in parallel where possible.
|
|
37
|
+
* The `concurrency` option controls maximum parallel steps (default: Infinity).
|
|
38
|
+
*/
|
|
39
|
+
run(pipeline: Pipeline): Promise<PipelineResult[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Execute a single pipeline step
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
private executeStep;
|
|
45
|
+
/**
|
|
46
|
+
* Get capabilities of all registered providers
|
|
47
|
+
* This allows consumers to discover available generators, transforms, and save providers
|
|
48
|
+
*/
|
|
49
|
+
getCapabilities(): ClientCapabilities;
|
|
50
|
+
/**
|
|
51
|
+
* Register a custom generator
|
|
52
|
+
*/
|
|
53
|
+
registerGenerator(generator: ImageGenerator): void;
|
|
54
|
+
/**
|
|
55
|
+
* Register a custom transform provider
|
|
56
|
+
*/
|
|
57
|
+
registerTransformProvider(provider: TransformProvider): void;
|
|
58
|
+
/**
|
|
59
|
+
* Register a custom save provider
|
|
60
|
+
*/
|
|
61
|
+
registerSaveProvider(provider: SaveProvider): void;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,iBAAiB,EAEjB,YAAY,EACZ,aAAa,EACb,cAAc,EAEd,SAAS,EACT,SAAS,EAET,UAAU,EACV,QAAQ,EAER,cAAc,EACd,kBAAkB,EAInB,MAAM,YAAY,CAAC;AAapB;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAe;IAE7B;;OAEG;IACI,SAAS,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC7C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACpC,CAAC;gBAEU,MAAM,GAAE,YAAiB;IAiBrC;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAsBxD;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IAwK1D;;OAEG;IACG,IAAI,CACR,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,OAAO,CAAC,UAAU,CAAC;IAkBtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;;;;OAKG;IACG,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA4CxD;;;OAGG;YACW,WAAW;IA+CzB;;;OAGG;IACH,eAAe,IAAI,kBAAkB;IA2BrC;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAKlD;;OAEG;IACH,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAK5D;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;CAInD"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { Logger } from "./logger.js";
|
|
2
|
+
import { ProviderNotFoundError, ConfigurationError, } from "./errors.js";
|
|
3
|
+
import { buildDependencyGraph, computeExecutionWaves, executeWithConcurrency, } from "./pipeline-runner.js";
|
|
4
|
+
/**
|
|
5
|
+
* Main floimg client for image generation, transformation, and upload
|
|
6
|
+
*/
|
|
7
|
+
export class Floimg {
|
|
8
|
+
logger;
|
|
9
|
+
config;
|
|
10
|
+
/**
|
|
11
|
+
* Registry of available providers
|
|
12
|
+
*/
|
|
13
|
+
providers;
|
|
14
|
+
constructor(config = {}) {
|
|
15
|
+
this.config = {
|
|
16
|
+
cacheDir: ".floimg",
|
|
17
|
+
verbose: false,
|
|
18
|
+
...config,
|
|
19
|
+
};
|
|
20
|
+
this.logger = new Logger(this.config.verbose);
|
|
21
|
+
this.providers = {
|
|
22
|
+
generators: {},
|
|
23
|
+
transform: {},
|
|
24
|
+
save: {},
|
|
25
|
+
};
|
|
26
|
+
this.logger.info("Floimg client initialized");
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Generate an image using any registered generator
|
|
30
|
+
*/
|
|
31
|
+
async generate(input) {
|
|
32
|
+
const { generator, params = {} } = input;
|
|
33
|
+
// Use default generator if configured
|
|
34
|
+
const generatorName = generator || this.config.generators?.default;
|
|
35
|
+
if (!generatorName) {
|
|
36
|
+
throw new ConfigurationError("No generator specified and no default configured");
|
|
37
|
+
}
|
|
38
|
+
this.logger.info(`Generating image with generator: ${generatorName}`, params);
|
|
39
|
+
const imageGenerator = this.providers.generators[generatorName];
|
|
40
|
+
if (!imageGenerator) {
|
|
41
|
+
throw new ProviderNotFoundError("generator", generatorName);
|
|
42
|
+
}
|
|
43
|
+
return imageGenerator.generate(params);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Transform an image (convert format, resize, etc.)
|
|
47
|
+
*/
|
|
48
|
+
async transform(input) {
|
|
49
|
+
const { blob, op, to, params = {} } = input;
|
|
50
|
+
this.logger.info(`Transforming image with operation: ${op}`);
|
|
51
|
+
// Get default transform provider
|
|
52
|
+
const providerName = this.config.transform?.default || "sharp";
|
|
53
|
+
const transformProvider = this.providers.transform[providerName];
|
|
54
|
+
if (!transformProvider) {
|
|
55
|
+
throw new ProviderNotFoundError("transform", providerName);
|
|
56
|
+
}
|
|
57
|
+
switch (op) {
|
|
58
|
+
case "convert":
|
|
59
|
+
if (!to) {
|
|
60
|
+
throw new ConfigurationError("Convert operation requires 'to' parameter");
|
|
61
|
+
}
|
|
62
|
+
return transformProvider.convert(blob, to);
|
|
63
|
+
case "resize":
|
|
64
|
+
if (!transformProvider.resize) {
|
|
65
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support resize operation`);
|
|
66
|
+
}
|
|
67
|
+
return transformProvider.resize(blob, params);
|
|
68
|
+
case "composite":
|
|
69
|
+
if (!transformProvider.composite) {
|
|
70
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support composite operation`);
|
|
71
|
+
}
|
|
72
|
+
return transformProvider.composite(blob, params.overlays);
|
|
73
|
+
case "optimizeSvg":
|
|
74
|
+
if (!transformProvider.optimizeSvg) {
|
|
75
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support optimizeSvg operation`);
|
|
76
|
+
}
|
|
77
|
+
return transformProvider.optimizeSvg(blob);
|
|
78
|
+
// Filter operations
|
|
79
|
+
case "blur":
|
|
80
|
+
if (!transformProvider.blur) {
|
|
81
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support blur operation`);
|
|
82
|
+
}
|
|
83
|
+
return transformProvider.blur(blob, params.sigma);
|
|
84
|
+
case "sharpen":
|
|
85
|
+
if (!transformProvider.sharpen) {
|
|
86
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support sharpen operation`);
|
|
87
|
+
}
|
|
88
|
+
return transformProvider.sharpen(blob, params);
|
|
89
|
+
case "grayscale":
|
|
90
|
+
if (!transformProvider.grayscale) {
|
|
91
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support grayscale operation`);
|
|
92
|
+
}
|
|
93
|
+
return transformProvider.grayscale(blob);
|
|
94
|
+
case "negate":
|
|
95
|
+
if (!transformProvider.negate) {
|
|
96
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support negate operation`);
|
|
97
|
+
}
|
|
98
|
+
return transformProvider.negate(blob);
|
|
99
|
+
case "normalize":
|
|
100
|
+
if (!transformProvider.normalize) {
|
|
101
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support normalize operation`);
|
|
102
|
+
}
|
|
103
|
+
return transformProvider.normalize(blob);
|
|
104
|
+
case "threshold":
|
|
105
|
+
if (!transformProvider.threshold) {
|
|
106
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support threshold operation`);
|
|
107
|
+
}
|
|
108
|
+
return transformProvider.threshold(blob, params.value);
|
|
109
|
+
case "modulate":
|
|
110
|
+
if (!transformProvider.modulate) {
|
|
111
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support modulate operation`);
|
|
112
|
+
}
|
|
113
|
+
return transformProvider.modulate(blob, params);
|
|
114
|
+
case "tint":
|
|
115
|
+
if (!transformProvider.tint) {
|
|
116
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support tint operation`);
|
|
117
|
+
}
|
|
118
|
+
return transformProvider.tint(blob, params.color);
|
|
119
|
+
// Border & frame operations
|
|
120
|
+
case "extend":
|
|
121
|
+
if (!transformProvider.extend) {
|
|
122
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support extend operation`);
|
|
123
|
+
}
|
|
124
|
+
return transformProvider.extend(blob, params);
|
|
125
|
+
case "extract":
|
|
126
|
+
if (!transformProvider.extract) {
|
|
127
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support extract operation`);
|
|
128
|
+
}
|
|
129
|
+
return transformProvider.extract(blob, params);
|
|
130
|
+
case "roundCorners":
|
|
131
|
+
if (!transformProvider.roundCorners) {
|
|
132
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support roundCorners operation`);
|
|
133
|
+
}
|
|
134
|
+
return transformProvider.roundCorners(blob, params.radius);
|
|
135
|
+
// Text operations
|
|
136
|
+
case "addText":
|
|
137
|
+
if (!transformProvider.addText) {
|
|
138
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support addText operation`);
|
|
139
|
+
}
|
|
140
|
+
return transformProvider.addText(blob, params);
|
|
141
|
+
case "addCaption":
|
|
142
|
+
if (!transformProvider.addCaption) {
|
|
143
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support addCaption operation`);
|
|
144
|
+
}
|
|
145
|
+
return transformProvider.addCaption(blob, params);
|
|
146
|
+
// Preset filters
|
|
147
|
+
case "preset":
|
|
148
|
+
if (!transformProvider.preset) {
|
|
149
|
+
throw new ConfigurationError(`Transform provider "${providerName}" does not support preset operation`);
|
|
150
|
+
}
|
|
151
|
+
return transformProvider.preset(blob, params.name);
|
|
152
|
+
default:
|
|
153
|
+
throw new ConfigurationError(`Unknown transform operation: ${op}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Save an image (filesystem or cloud) with smart destination routing
|
|
158
|
+
*/
|
|
159
|
+
async save(blob, destination) {
|
|
160
|
+
// Parse destination
|
|
161
|
+
const parsed = this.parseDestination(destination);
|
|
162
|
+
this.logger.info(`Saving image with provider: ${parsed.provider} to ${parsed.path}`);
|
|
163
|
+
// Get save provider
|
|
164
|
+
const saveProvider = this.providers.save[parsed.provider];
|
|
165
|
+
if (!saveProvider) {
|
|
166
|
+
throw new ProviderNotFoundError("save", parsed.provider);
|
|
167
|
+
}
|
|
168
|
+
return saveProvider.save({
|
|
169
|
+
blob,
|
|
170
|
+
...parsed,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Parse destination string or object into provider and path
|
|
175
|
+
*/
|
|
176
|
+
parseDestination(destination) {
|
|
177
|
+
// If it's an object, use it directly
|
|
178
|
+
if (typeof destination === "object") {
|
|
179
|
+
return {
|
|
180
|
+
provider: destination.provider || this.config.save?.default || "fs",
|
|
181
|
+
...destination,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// Protocol-based routing (s3://, r2://, file://)
|
|
185
|
+
if (destination.includes("://")) {
|
|
186
|
+
const [protocol, rest] = destination.split("://");
|
|
187
|
+
return { provider: protocol, path: rest };
|
|
188
|
+
}
|
|
189
|
+
// Local path detection (starts with ./, /, ../)
|
|
190
|
+
if (destination.startsWith("./") ||
|
|
191
|
+
destination.startsWith("/") ||
|
|
192
|
+
destination.startsWith("../")) {
|
|
193
|
+
return { provider: "fs", path: destination };
|
|
194
|
+
}
|
|
195
|
+
// Use default provider from config
|
|
196
|
+
const defaultProvider = this.config.save?.default || "fs";
|
|
197
|
+
return { provider: defaultProvider, path: destination };
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Run a declarative pipeline of operations
|
|
201
|
+
*
|
|
202
|
+
* Steps are analyzed for dependencies and executed in parallel where possible.
|
|
203
|
+
* The `concurrency` option controls maximum parallel steps (default: Infinity).
|
|
204
|
+
*/
|
|
205
|
+
async run(pipeline) {
|
|
206
|
+
this.logger.info(`Running pipeline: ${pipeline.name || "unnamed"}`);
|
|
207
|
+
const results = [];
|
|
208
|
+
const variables = new Map();
|
|
209
|
+
const concurrency = pipeline.concurrency ?? Infinity;
|
|
210
|
+
// Build dependency graph and compute execution waves
|
|
211
|
+
const nodes = buildDependencyGraph(pipeline.steps);
|
|
212
|
+
const waves = computeExecutionWaves(nodes);
|
|
213
|
+
this.logger.debug(`Pipeline has ${waves.length} execution waves, concurrency: ${concurrency}`);
|
|
214
|
+
// Execute waves sequentially, steps within each wave in parallel
|
|
215
|
+
for (const wave of waves) {
|
|
216
|
+
this.logger.debug(`Executing wave with ${wave.steps.length} steps`);
|
|
217
|
+
// Execute all steps in this wave in parallel (bounded by concurrency)
|
|
218
|
+
const waveResults = await executeWithConcurrency(wave.steps.map((node) => () => this.executeStep(node.step, variables)), concurrency);
|
|
219
|
+
// Collect results and update variables map
|
|
220
|
+
for (let i = 0; i < wave.steps.length; i++) {
|
|
221
|
+
const node = wave.steps[i];
|
|
222
|
+
const result = waveResults[i];
|
|
223
|
+
results.push(result);
|
|
224
|
+
// Store output in variables map for dependent steps
|
|
225
|
+
if (result.value && result.out) {
|
|
226
|
+
variables.set(result.out, result.value);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
this.logger.info(`Pipeline completed with ${results.length} steps`);
|
|
231
|
+
return results;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Execute a single pipeline step
|
|
235
|
+
* @internal
|
|
236
|
+
*/
|
|
237
|
+
async executeStep(step, variables) {
|
|
238
|
+
this.logger.debug(`Executing step: ${step.kind}`);
|
|
239
|
+
if (step.kind === "generate") {
|
|
240
|
+
const blob = await this.generate({
|
|
241
|
+
generator: step.generator,
|
|
242
|
+
params: step.params,
|
|
243
|
+
});
|
|
244
|
+
return { step, out: step.out, value: blob };
|
|
245
|
+
}
|
|
246
|
+
else if (step.kind === "transform") {
|
|
247
|
+
const inputBlob = variables.get(step.in);
|
|
248
|
+
if (!inputBlob || !("bytes" in inputBlob)) {
|
|
249
|
+
throw new ConfigurationError(`Transform step references undefined or invalid variable: ${step.in}`);
|
|
250
|
+
}
|
|
251
|
+
const blob = await this.transform({
|
|
252
|
+
blob: inputBlob,
|
|
253
|
+
op: step.op,
|
|
254
|
+
params: step.params,
|
|
255
|
+
});
|
|
256
|
+
return { step, out: step.out, value: blob };
|
|
257
|
+
}
|
|
258
|
+
else if (step.kind === "save") {
|
|
259
|
+
const inputBlob = variables.get(step.in);
|
|
260
|
+
if (!inputBlob || !("bytes" in inputBlob)) {
|
|
261
|
+
throw new ConfigurationError(`Save step references undefined or invalid variable: ${step.in}`);
|
|
262
|
+
}
|
|
263
|
+
const result = await this.save(inputBlob, step.provider
|
|
264
|
+
? { path: step.destination, provider: step.provider }
|
|
265
|
+
: step.destination);
|
|
266
|
+
return { step, out: step.out || step.destination, value: result };
|
|
267
|
+
}
|
|
268
|
+
throw new ConfigurationError(`Unknown step kind: ${step.kind}`);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Get capabilities of all registered providers
|
|
272
|
+
* This allows consumers to discover available generators, transforms, and save providers
|
|
273
|
+
*/
|
|
274
|
+
getCapabilities() {
|
|
275
|
+
const generators = [];
|
|
276
|
+
const transforms = [];
|
|
277
|
+
const saveProviders = [];
|
|
278
|
+
// Collect generator schemas
|
|
279
|
+
for (const generator of Object.values(this.providers.generators)) {
|
|
280
|
+
generators.push(generator.schema);
|
|
281
|
+
}
|
|
282
|
+
// Collect transform operation schemas
|
|
283
|
+
for (const provider of Object.values(this.providers.transform)) {
|
|
284
|
+
transforms.push(...Object.values(provider.operationSchemas));
|
|
285
|
+
}
|
|
286
|
+
// Collect save provider info
|
|
287
|
+
for (const provider of Object.values(this.providers.save)) {
|
|
288
|
+
// SaveProvider doesn't have schema yet, create minimal info
|
|
289
|
+
saveProviders.push({
|
|
290
|
+
name: provider.name,
|
|
291
|
+
description: `Save provider: ${provider.name}`,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
return { generators, transforms, saveProviders };
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Register a custom generator
|
|
298
|
+
*/
|
|
299
|
+
registerGenerator(generator) {
|
|
300
|
+
this.providers.generators[generator.name] = generator;
|
|
301
|
+
this.logger.debug(`Registered generator: ${generator.name}`);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Register a custom transform provider
|
|
305
|
+
*/
|
|
306
|
+
registerTransformProvider(provider) {
|
|
307
|
+
this.providers.transform[provider.name] = provider;
|
|
308
|
+
this.logger.debug(`Registered transform provider: ${provider.name}`);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Register a custom save provider
|
|
312
|
+
*/
|
|
313
|
+
registerSaveProvider(provider) {
|
|
314
|
+
this.providers.save[provider.name] = provider;
|
|
315
|
+
this.logger.debug(`Registered save provider: ${provider.name}`);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for floimg errors
|
|
3
|
+
*/
|
|
4
|
+
export declare class FloimgError extends Error {
|
|
5
|
+
code?: string | undefined;
|
|
6
|
+
constructor(message: string, code?: string | undefined);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Error thrown when a provider is not found
|
|
10
|
+
*/
|
|
11
|
+
export declare class ProviderNotFoundError extends FloimgError {
|
|
12
|
+
constructor(providerType: string, providerName: string);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Error thrown when provider configuration is invalid
|
|
16
|
+
*/
|
|
17
|
+
export declare class ConfigurationError extends FloimgError {
|
|
18
|
+
constructor(message: string);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Error thrown when an image transformation fails
|
|
22
|
+
*/
|
|
23
|
+
export declare class TransformError extends FloimgError {
|
|
24
|
+
constructor(message: string);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Error thrown when an upload operation fails
|
|
28
|
+
*/
|
|
29
|
+
export declare class UploadError extends FloimgError {
|
|
30
|
+
constructor(message: string);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Error thrown when image generation fails
|
|
34
|
+
*/
|
|
35
|
+
export declare class GenerationError extends FloimgError {
|
|
36
|
+
constructor(message: string);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACA,IAAI,CAAC,EAAE,MAAM;gBAArC,OAAO,EAAE,MAAM,EAAS,IAAI,CAAC,EAAE,MAAM,YAAA;CAIlD;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,WAAW;gBACxC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAwBvD;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,WAAW;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,WAAW;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,OAAO,EAAE,MAAM;CAI5B"}
|