@uploadista/flow-images-nodes 0.0.12 → 0.0.13-beta.3

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/dist/index.d.cts CHANGED
@@ -1,10 +1,10 @@
1
- import * as _uploadista_core_flow0 from "@uploadista/core/flow";
1
+ import * as _uploadista_core_flow1 from "@uploadista/core/flow";
2
2
  import { ImageAiPlugin, ImagePlugin, OptimizeParams, ResizeParams, TransformImageParams } from "@uploadista/core/flow";
3
- import * as _uploadista_core_errors0 from "@uploadista/core/errors";
3
+ import * as _uploadista_core_errors1 from "@uploadista/core/errors";
4
4
  import { UploadistaError } from "@uploadista/core/errors";
5
5
  import { Effect } from "effect";
6
- import * as _uploadista_core_types0 from "@uploadista/core/types";
7
- import * as _uploadista_core_upload0 from "@uploadista/core/upload";
6
+ import * as _uploadista_core_types1 from "@uploadista/core/types";
7
+ import * as _uploadista_core_upload1 from "@uploadista/core/upload";
8
8
  import { UploadServer } from "@uploadista/core/upload";
9
9
 
10
10
  //#region src/describe-image-node.d.ts
@@ -12,7 +12,7 @@ declare function createDescribeImageNode(id: string, {
12
12
  credentialId
13
13
  }?: {
14
14
  credentialId?: string;
15
- }): Effect.Effect<_uploadista_core_flow0.FlowNode<{
15
+ }): Effect.Effect<_uploadista_core_flow1.FlowNode<{
16
16
  id: string;
17
17
  offset: number;
18
18
  storage: {
@@ -101,7 +101,7 @@ declare function createDescribeImageNode(id: string, {
101
101
  declare function createOptimizeNode(id: string, {
102
102
  quality,
103
103
  format
104
- }: OptimizeParams): Effect.Effect<_uploadista_core_flow0.FlowNode<{
104
+ }: OptimizeParams): Effect.Effect<_uploadista_core_flow1.FlowNode<{
105
105
  id: string;
106
106
  offset: number;
107
107
  storage: {
@@ -128,14 +128,14 @@ declare function createOptimizeNode(id: string, {
128
128
  nodeId: string;
129
129
  jobId: string;
130
130
  } | undefined;
131
- }, _uploadista_core_types0.UploadFile, _uploadista_core_errors0.UploadistaError>, never, ImagePlugin | _uploadista_core_upload0.UploadServer>;
131
+ }, _uploadista_core_types1.UploadFile, _uploadista_core_errors1.UploadistaError>, never, ImagePlugin | _uploadista_core_upload1.UploadServer>;
132
132
  //#endregion
133
133
  //#region src/remove-background-node.d.ts
134
134
  declare function createRemoveBackgroundNode(id: string, {
135
135
  credentialId
136
136
  }?: {
137
137
  credentialId?: string;
138
- }): Effect.Effect<_uploadista_core_flow0.FlowNode<{
138
+ }): Effect.Effect<_uploadista_core_flow1.FlowNode<{
139
139
  id: string;
140
140
  offset: number;
141
141
  storage: {
@@ -162,14 +162,14 @@ declare function createRemoveBackgroundNode(id: string, {
162
162
  nodeId: string;
163
163
  jobId: string;
164
164
  } | undefined;
165
- }, _uploadista_core_types0.UploadFile, UploadistaError>, never, ImageAiPlugin | UploadServer>;
165
+ }, _uploadista_core_types1.UploadFile, UploadistaError>, never, ImageAiPlugin | UploadServer>;
166
166
  //#endregion
167
167
  //#region src/resize-node.d.ts
168
168
  declare function createResizeNode(id: string, {
169
169
  width,
170
170
  height,
171
171
  fit
172
- }: ResizeParams): Effect.Effect<_uploadista_core_flow0.FlowNode<{
172
+ }: ResizeParams): Effect.Effect<_uploadista_core_flow1.FlowNode<{
173
173
  id: string;
174
174
  offset: number;
175
175
  storage: {
@@ -196,7 +196,7 @@ declare function createResizeNode(id: string, {
196
196
  nodeId: string;
197
197
  jobId: string;
198
198
  } | undefined;
199
- }, _uploadista_core_types0.UploadFile, _uploadista_core_errors0.UploadistaError>, never, ImagePlugin | _uploadista_core_upload0.UploadServer>;
199
+ }, _uploadista_core_types1.UploadFile, _uploadista_core_errors1.UploadistaError>, never, ImagePlugin | _uploadista_core_upload1.UploadServer>;
200
200
  //#endregion
201
201
  //#region src/transform-image-node.d.ts
202
202
  /**
@@ -237,7 +237,7 @@ declare function createResizeNode(id: string, {
237
237
  */
238
238
  declare function createTransformImageNode(id: string, {
239
239
  transformations
240
- }: TransformImageParams): Effect.Effect<_uploadista_core_flow0.FlowNode<{
240
+ }: TransformImageParams): Effect.Effect<_uploadista_core_flow1.FlowNode<{
241
241
  id: string;
242
242
  offset: number;
243
243
  storage: {
@@ -264,7 +264,7 @@ declare function createTransformImageNode(id: string, {
264
264
  nodeId: string;
265
265
  jobId: string;
266
266
  } | undefined;
267
- }, _uploadista_core_types0.UploadFile, _uploadista_core_errors0.UploadistaError>, never, ImagePlugin | _uploadista_core_upload0.UploadServer>;
267
+ }, _uploadista_core_types1.UploadFile, _uploadista_core_errors1.UploadistaError>, never, ImagePlugin | _uploadista_core_upload1.UploadServer>;
268
268
  //#endregion
269
269
  //#region src/wait-for-url.d.ts
270
270
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/describe-image-node.ts","../src/optimize-node.ts","../src/remove-background-node.ts","../src/resize-node.ts","../src/transform-image-node.ts","../src/wait-for-url.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/describe-image-node.ts","../src/optimize-node.ts","../src/remove-background-node.ts","../src/resize-node.ts","../src/transform-image-node.ts","../src/wait-for-url.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/describe-image-node.ts","../src/optimize-node.ts","../src/remove-background-node.ts","../src/resize-node.ts","../src/transform-image-node.ts","../src/wait-for-url.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/describe-image-node.ts","../src/optimize-node.ts","../src/remove-background-node.ts","../src/resize-node.ts","../src/transform-image-node.ts","../src/wait-for-url.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["formatToMimeType: Record<OptimizeParams[\"format\"], string>","formatToExtension: Record<OptimizeParams[\"format\"], string>"],"sources":["../src/wait-for-url.ts","../src/describe-image-node.ts","../src/optimize-node.ts","../src/remove-background-node.ts","../src/resize-node.ts","../src/transform-image-node.ts"],"sourcesContent":["import { UploadistaError } from \"@uploadista/core/errors\";\nimport { Effect } from \"effect\";\n\n/**\n * Waits for a URL to become available by periodically checking its accessibility.\n * This is useful when a file has just been uploaded and may not be immediately\n * accessible due to CDN propagation or storage consistency delays.\n *\n * @param url - The URL to check for availability\n * @param options - Configuration options\n * @param options.maxWaitTime - Maximum time to wait in milliseconds (default: 10000)\n * @param options.retryDelay - Delay between retries in milliseconds (default: 500)\n * @returns Effect that succeeds when URL is available or fails with UploadistaError\n */\nexport function waitForUrlAvailability(\n url: string,\n options: {\n maxWaitTime?: number;\n retryDelay?: number;\n } = {},\n): Effect.Effect<void, UploadistaError> {\n const { maxWaitTime = 10000, retryDelay = 500 } = options;\n\n return Effect.gen(function* () {\n const startTime = Date.now();\n\n while (Date.now() - startTime < maxWaitTime) {\n const response = yield* Effect.tryPromise(() =>\n fetch(url, { method: \"HEAD\" }),\n ).pipe(Effect.catchAll(() => Effect.succeed(null)));\n\n if (response?.ok) {\n yield* Effect.logInfo(`URL ${url} is now available`);\n return;\n }\n\n if (response) {\n yield* Effect.logDebug(\n `URL not ready yet (${response.status}), retrying...`,\n );\n } else {\n yield* Effect.logDebug(`URL check failed, retrying...`);\n }\n\n yield* Effect.sleep(retryDelay);\n }\n\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause: `URL ${url} not available after ${maxWaitTime}ms`,\n }).toEffect();\n });\n}\n","import { UploadistaError } from \"@uploadista/core/errors\";\nimport {\n completeNodeExecution,\n createFlowNode,\n ImageAiPlugin,\n NodeType,\n resolveUploadMetadata,\n} from \"@uploadista/core/flow\";\nimport { uploadFileSchema } from \"@uploadista/core/types\";\n\nimport { Effect } from \"effect\";\nimport { waitForUrlAvailability } from \"./wait-for-url\";\n\nexport function createDescribeImageNode(\n id: string,\n { credentialId }: { credentialId?: string } = {},\n) {\n return Effect.gen(function* () {\n const imageAiService = yield* ImageAiPlugin;\n\n return yield* createFlowNode({\n id,\n name: \"Describe Image\",\n description: \"Describes the image using AI\",\n type: NodeType.process,\n inputSchema: uploadFileSchema,\n outputSchema: uploadFileSchema,\n run: ({ data: file, flowId, jobId, clientId }) => {\n return Effect.gen(function* () {\n const flow = {\n flowId,\n nodeId: id,\n jobId,\n };\n\n const fileUrl = file.url;\n\n // Validate input\n if (!fileUrl) {\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause: \"URL is required for describe image operation\",\n }).toEffect();\n }\n\n yield* Effect.logInfo(\n `Describing image for file ${file.id} at URL: ${fileUrl}`,\n );\n\n // Wait for URL to be available with retry mechanism\n yield* waitForUrlAvailability(fileUrl);\n\n // Build context for ImageAI plugin\n const context = {\n clientId,\n credentialId,\n };\n\n // Describe image with error handling\n const { description } = yield* imageAiService\n .describeImage(fileUrl, context)\n .pipe(\n Effect.catchAll((error) =>\n Effect.gen(function* () {\n yield* Effect.logError(\"Failed to describe image\", error);\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause:\n error instanceof Error\n ? error.message\n : \"Failed to describe image\",\n }).toEffect();\n }),\n ),\n );\n\n const { metadata } = resolveUploadMetadata(file.metadata);\n\n // add description to metadata\n const newMetadata = {\n ...file.metadata,\n ...metadata,\n description,\n };\n\n yield* Effect.logInfo(\n `Successfully described image for file ${file.id}`,\n );\n\n return completeNodeExecution(\n newMetadata\n ? {\n ...file,\n metadata: newMetadata,\n flow,\n }\n : file,\n );\n });\n },\n });\n });\n}\n","import {\n createTransformNode,\n ImagePlugin,\n type OptimizeParams,\n} from \"@uploadista/core/flow\";\nimport { Effect } from \"effect\";\n\n// Map image format to MIME type\nconst formatToMimeType: Record<OptimizeParams[\"format\"], string> = {\n jpeg: \"image/jpeg\",\n webp: \"image/webp\",\n png: \"image/png\",\n avif: \"image/avif\",\n};\n\n// Map image format to file extension\nconst formatToExtension: Record<OptimizeParams[\"format\"], string> = {\n jpeg: \"jpg\",\n webp: \"webp\",\n png: \"png\",\n avif: \"avif\",\n};\n\nexport function createOptimizeNode(\n id: string,\n { quality, format }: OptimizeParams,\n) {\n return Effect.gen(function* () {\n const imageService = yield* ImagePlugin;\n\n return yield* createTransformNode({\n id,\n name: \"Optimize\",\n description: \"Optimizes an image for web delivery\",\n transform: (inputBytes, file) =>\n Effect.map(\n imageService.optimize(inputBytes, { quality, format }),\n (optimizedBytes) => {\n // Return bytes with updated metadata if format changes\n const newType = formatToMimeType[format];\n const newExtension = formatToExtension[format];\n\n // Update file extension if format changed\n const fileName = file.metadata?.fileName;\n const newFileName =\n fileName && typeof fileName === \"string\"\n ? fileName.replace(/\\.[^.]+$/, `.${newExtension}`)\n : undefined;\n\n return {\n bytes: optimizedBytes,\n type: newType,\n fileName: newFileName,\n } as\n | Uint8Array\n | { bytes: Uint8Array; type: string; fileName?: string };\n },\n ),\n });\n });\n}\n","import { UploadistaError } from \"@uploadista/core/errors\";\nimport {\n completeNodeExecution,\n createFlowNode,\n ImageAiPlugin,\n NodeType,\n resolveUploadMetadata,\n} from \"@uploadista/core/flow\";\nimport { uploadFileSchema } from \"@uploadista/core/types\";\nimport { UploadServer } from \"@uploadista/core/upload\";\nimport { Effect } from \"effect\";\nimport { waitForUrlAvailability } from \"./wait-for-url\";\n\nexport function createRemoveBackgroundNode(\n id: string,\n { credentialId }: { credentialId?: string } = {},\n) {\n return Effect.gen(function* () {\n const imageAiService = yield* ImageAiPlugin;\n const uploadServer = yield* UploadServer;\n\n return yield* createFlowNode({\n id,\n name: \"Remove Background\",\n description: \"Removes the background from an image\",\n type: NodeType.process,\n inputSchema: uploadFileSchema,\n outputSchema: uploadFileSchema,\n run: ({ data: file, flowId, jobId, storageId, clientId }) => {\n return Effect.gen(function* () {\n const flow = {\n flowId,\n nodeId: id,\n jobId,\n };\n\n const fileUrl = file.url;\n\n // Validate input\n if (!fileUrl) {\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause: \"URL is required for remove background operation\",\n }).toEffect();\n }\n\n yield* Effect.logInfo(\n `Removing background for file ${file.id} at URL: ${file.url}`,\n );\n\n // Wait for URL to be available with retry mechanism\n yield* waitForUrlAvailability(fileUrl);\n\n // Build context for ImageAI plugin\n const context = {\n clientId,\n credentialId,\n };\n\n // Remove background with error handling\n const backgroundRemovalResult = yield* imageAiService\n .removeBackground(fileUrl, context)\n .pipe(\n Effect.catchAll((error) =>\n Effect.gen(function* () {\n yield* Effect.logError(\"Failed to remove background\", error);\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause:\n error instanceof Error\n ? error.message\n : \"Failed to remove background from image\",\n }).toEffect();\n }),\n ),\n );\n\n const { outputUrl } = backgroundRemovalResult;\n const { type, fileName, metadata, metadataJson } =\n resolveUploadMetadata(file.metadata);\n\n yield* Effect.logInfo(`Uploading processed file to storage`);\n\n // Upload the transformed bytes back to the upload server with error handling\n const result = yield* uploadServer\n .uploadFromUrl(\n {\n storageId,\n size: 0,\n type,\n fileName,\n lastModified: 0,\n metadata: metadataJson,\n flow,\n },\n clientId,\n outputUrl,\n )\n .pipe(\n Effect.catchAll((error) =>\n Effect.gen(function* () {\n yield* Effect.logError(\n \"Failed to upload processed file\",\n error,\n );\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause:\n error instanceof Error\n ? error.message\n : \"Failed to upload processed file\",\n }).toEffect();\n }),\n ),\n );\n\n yield* Effect.logInfo(\n `Successfully removed background for file ${file.id}`,\n );\n\n return completeNodeExecution(\n metadata\n ? {\n ...result,\n metadata,\n }\n : result,\n );\n });\n },\n });\n });\n}\n","import {\n createTransformNode,\n ImagePlugin,\n type ResizeParams,\n} from \"@uploadista/core/flow\";\nimport { Effect } from \"effect\";\n\nexport function createResizeNode(\n id: string,\n { width, height, fit }: ResizeParams,\n) {\n return Effect.gen(function* () {\n const imageService = yield* ImagePlugin;\n\n return yield* createTransformNode({\n id,\n name: \"Resize\",\n description: \"Resizes an image to the specified dimensions\",\n transform: (inputBytes) =>\n imageService.resize(inputBytes, { height, width, fit }),\n });\n });\n}\n","import {\n createTransformNode,\n ImagePlugin,\n type TransformImageParams,\n} from \"@uploadista/core/flow\";\nimport { Effect } from \"effect\";\n\n/**\n * Apply a chain of transformations to an image by reducing over the transformations array.\n * Each transformation receives the output of the previous transformation as input.\n *\n * @param imageService - The image plugin service to use for transformations\n * @param inputBytes - The input image bytes\n * @param transformations - Array of transformations to apply in sequence\n * @returns Effect that resolves to the final transformed image bytes\n */\nfunction applyTransformationChain(\n imageService: ReturnType<typeof ImagePlugin.of>,\n inputBytes: Uint8Array,\n transformations: TransformImageParams[\"transformations\"],\n) {\n return Effect.reduce(\n transformations,\n inputBytes,\n (bytes, transformation) => imageService.transform(bytes, transformation),\n );\n}\n\n/**\n * Creates a transform image node that applies multiple transformations sequentially.\n *\n * This node enables complex image processing workflows by chaining multiple transformations\n * together. Each transformation is applied to the output of the previous transformation,\n * allowing for powerful image manipulation pipelines.\n *\n * Supported transformations include:\n * - Basic: resize, blur, rotate, flip\n * - Filters: grayscale, sepia, brightness, contrast\n * - Effects: sharpen\n * - Advanced: watermark, logo, text\n *\n * Note: Watermark and logo transformations require imagePath to be a valid URL.\n * Images will be fetched from the provided URL during transformation.\n *\n * @param id - Unique identifier for this node\n * @param params - Parameters including the transformations array\n * @returns Effect that resolves to a transform node\n *\n * @example\n * ```typescript\n * const node = createTransformImageNode(\"transform-1\", {\n * transformations: [\n * { type: 'resize', width: 800, height: 600, fit: 'cover' },\n * { type: 'brightness', value: 20 },\n * {\n * type: 'watermark',\n * imagePath: 'https://cdn.example.com/watermark.png',\n * position: 'bottom-right',\n * opacity: 0.5\n * }\n * ]\n * });\n * ```\n */\nexport function createTransformImageNode(\n id: string,\n { transformations }: TransformImageParams,\n) {\n return Effect.gen(function* () {\n const imageService = yield* ImagePlugin;\n\n return yield* createTransformNode({\n id,\n name: \"Transform Image\",\n description: `Apply ${transformations.length} transformation${transformations.length === 1 ? \"\" : \"s\"} to the image`,\n transform: (inputBytes) =>\n applyTransformationChain(imageService, inputBytes, transformations),\n });\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["formatToMimeType: Record<OptimizeParams[\"format\"], string>","formatToExtension: Record<OptimizeParams[\"format\"], string>"],"sources":["../src/wait-for-url.ts","../src/describe-image-node.ts","../src/optimize-node.ts","../src/remove-background-node.ts","../src/resize-node.ts","../src/transform-image-node.ts"],"sourcesContent":["import { UploadistaError } from \"@uploadista/core/errors\";\nimport { Effect } from \"effect\";\n\n/**\n * Waits for a URL to become available by periodically checking its accessibility.\n * This is useful when a file has just been uploaded and may not be immediately\n * accessible due to CDN propagation or storage consistency delays.\n *\n * @param url - The URL to check for availability\n * @param options - Configuration options\n * @param options.maxWaitTime - Maximum time to wait in milliseconds (default: 10000)\n * @param options.retryDelay - Delay between retries in milliseconds (default: 500)\n * @returns Effect that succeeds when URL is available or fails with UploadistaError\n */\nexport function waitForUrlAvailability(\n url: string,\n options: {\n maxWaitTime?: number;\n retryDelay?: number;\n } = {},\n): Effect.Effect<void, UploadistaError> {\n const { maxWaitTime = 10000, retryDelay = 500 } = options;\n\n return Effect.gen(function* () {\n const startTime = Date.now();\n\n while (Date.now() - startTime < maxWaitTime) {\n const response = yield* Effect.tryPromise(() =>\n fetch(url, { method: \"HEAD\" }),\n ).pipe(Effect.catchAll(() => Effect.succeed(null)));\n\n if (response?.ok) {\n yield* Effect.logInfo(`URL ${url} is now available`);\n return;\n }\n\n if (response) {\n yield* Effect.logDebug(\n `URL not ready yet (${response.status}), retrying...`,\n );\n } else {\n yield* Effect.logDebug(`URL check failed, retrying...`);\n }\n\n yield* Effect.sleep(retryDelay);\n }\n\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause: `URL ${url} not available after ${maxWaitTime}ms`,\n }).toEffect();\n });\n}\n","import { UploadistaError } from \"@uploadista/core/errors\";\nimport {\n completeNodeExecution,\n createFlowNode,\n ImageAiPlugin,\n NodeType,\n resolveUploadMetadata,\n} from \"@uploadista/core/flow\";\nimport { uploadFileSchema } from \"@uploadista/core/types\";\n\nimport { Effect } from \"effect\";\nimport { waitForUrlAvailability } from \"./wait-for-url\";\n\nexport function createDescribeImageNode(\n id: string,\n { credentialId }: { credentialId?: string } = {},\n) {\n return Effect.gen(function* () {\n const imageAiService = yield* ImageAiPlugin;\n\n return yield* createFlowNode({\n id,\n name: \"Describe Image\",\n description: \"Describes the image using AI\",\n type: NodeType.process,\n inputSchema: uploadFileSchema,\n outputSchema: uploadFileSchema,\n run: ({ data: file, flowId, jobId, clientId }) => {\n return Effect.gen(function* () {\n const flow = {\n flowId,\n nodeId: id,\n jobId,\n };\n\n const fileUrl = file.url;\n\n // Validate input\n if (!fileUrl) {\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause: \"URL is required for describe image operation\",\n }).toEffect();\n }\n\n yield* Effect.logInfo(\n `Describing image for file ${file.id} at URL: ${fileUrl}`,\n );\n\n // Wait for URL to be available with retry mechanism\n yield* waitForUrlAvailability(fileUrl);\n\n // Build context for ImageAI plugin\n const context = {\n clientId,\n credentialId,\n };\n\n // Describe image with error handling\n const { description } = yield* imageAiService\n .describeImage(fileUrl, context)\n .pipe(\n Effect.catchAll((error) =>\n Effect.gen(function* () {\n yield* Effect.logError(\"Failed to describe image\", error);\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause:\n error instanceof Error\n ? error.message\n : \"Failed to describe image\",\n }).toEffect();\n }),\n ),\n );\n\n const { metadata } = resolveUploadMetadata(file.metadata);\n\n // add description to metadata\n const newMetadata = {\n ...file.metadata,\n ...metadata,\n description,\n };\n\n yield* Effect.logInfo(\n `Successfully described image for file ${file.id}`,\n );\n\n return completeNodeExecution(\n newMetadata\n ? {\n ...file,\n metadata: newMetadata,\n flow,\n }\n : file,\n );\n });\n },\n });\n });\n}\n","import {\n createTransformNode,\n ImagePlugin,\n type OptimizeParams,\n} from \"@uploadista/core/flow\";\nimport { Effect } from \"effect\";\n\n// Map image format to MIME type\nconst formatToMimeType: Record<OptimizeParams[\"format\"], string> = {\n jpeg: \"image/jpeg\",\n webp: \"image/webp\",\n png: \"image/png\",\n avif: \"image/avif\",\n};\n\n// Map image format to file extension\nconst formatToExtension: Record<OptimizeParams[\"format\"], string> = {\n jpeg: \"jpg\",\n webp: \"webp\",\n png: \"png\",\n avif: \"avif\",\n};\n\nexport function createOptimizeNode(\n id: string,\n { quality, format }: OptimizeParams,\n) {\n return Effect.gen(function* () {\n const imageService = yield* ImagePlugin;\n\n return yield* createTransformNode({\n id,\n name: \"Optimize\",\n description: \"Optimizes an image for web delivery\",\n transform: (inputBytes, file) =>\n Effect.map(\n imageService.optimize(inputBytes, { quality, format }),\n (optimizedBytes) => {\n // Return bytes with updated metadata if format changes\n const newType = formatToMimeType[format];\n const newExtension = formatToExtension[format];\n\n // Update file extension if format changed\n const fileName = file.metadata?.fileName;\n const newFileName =\n fileName && typeof fileName === \"string\"\n ? fileName.replace(/\\.[^.]+$/, `.${newExtension}`)\n : undefined;\n\n return {\n bytes: optimizedBytes,\n type: newType,\n fileName: newFileName,\n } as\n | Uint8Array\n | { bytes: Uint8Array; type: string; fileName?: string };\n },\n ),\n });\n });\n}\n","import { UploadistaError } from \"@uploadista/core/errors\";\nimport {\n completeNodeExecution,\n createFlowNode,\n ImageAiPlugin,\n NodeType,\n resolveUploadMetadata,\n} from \"@uploadista/core/flow\";\nimport { uploadFileSchema } from \"@uploadista/core/types\";\nimport { UploadServer } from \"@uploadista/core/upload\";\nimport { Effect } from \"effect\";\nimport { waitForUrlAvailability } from \"./wait-for-url\";\n\nexport function createRemoveBackgroundNode(\n id: string,\n { credentialId }: { credentialId?: string } = {},\n) {\n return Effect.gen(function* () {\n const imageAiService = yield* ImageAiPlugin;\n const uploadServer = yield* UploadServer;\n\n return yield* createFlowNode({\n id,\n name: \"Remove Background\",\n description: \"Removes the background from an image\",\n type: NodeType.process,\n inputSchema: uploadFileSchema,\n outputSchema: uploadFileSchema,\n run: ({ data: file, flowId, jobId, storageId, clientId }) => {\n return Effect.gen(function* () {\n const flow = {\n flowId,\n nodeId: id,\n jobId,\n };\n\n const fileUrl = file.url;\n\n // Validate input\n if (!fileUrl) {\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause: \"URL is required for remove background operation\",\n }).toEffect();\n }\n\n yield* Effect.logInfo(\n `Removing background for file ${file.id} at URL: ${file.url}`,\n );\n\n // Wait for URL to be available with retry mechanism\n yield* waitForUrlAvailability(fileUrl);\n\n // Build context for ImageAI plugin\n const context = {\n clientId,\n credentialId,\n };\n\n // Remove background with error handling\n const backgroundRemovalResult = yield* imageAiService\n .removeBackground(fileUrl, context)\n .pipe(\n Effect.catchAll((error) =>\n Effect.gen(function* () {\n yield* Effect.logError(\"Failed to remove background\", error);\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause:\n error instanceof Error\n ? error.message\n : \"Failed to remove background from image\",\n }).toEffect();\n }),\n ),\n );\n\n const { outputUrl } = backgroundRemovalResult;\n const { type, fileName, metadata, metadataJson } =\n resolveUploadMetadata(file.metadata);\n\n yield* Effect.logInfo(`Uploading processed file to storage`);\n\n // Upload the transformed bytes back to the upload server with error handling\n const result = yield* uploadServer\n .uploadFromUrl(\n {\n storageId,\n size: 0,\n type,\n fileName,\n lastModified: 0,\n metadata: metadataJson,\n flow,\n },\n clientId,\n outputUrl,\n )\n .pipe(\n Effect.catchAll((error) =>\n Effect.gen(function* () {\n yield* Effect.logError(\n \"Failed to upload processed file\",\n error,\n );\n return yield* UploadistaError.fromCode(\"FLOW_NODE_ERROR\", {\n cause:\n error instanceof Error\n ? error.message\n : \"Failed to upload processed file\",\n }).toEffect();\n }),\n ),\n );\n\n yield* Effect.logInfo(\n `Successfully removed background for file ${file.id}`,\n );\n\n return completeNodeExecution(\n metadata\n ? {\n ...result,\n metadata,\n }\n : result,\n );\n });\n },\n });\n });\n}\n","import {\n createTransformNode,\n ImagePlugin,\n type ResizeParams,\n} from \"@uploadista/core/flow\";\nimport { Effect } from \"effect\";\n\nexport function createResizeNode(\n id: string,\n { width, height, fit }: ResizeParams,\n) {\n return Effect.gen(function* () {\n const imageService = yield* ImagePlugin;\n\n return yield* createTransformNode({\n id,\n name: \"Resize\",\n description: \"Resizes an image to the specified dimensions\",\n transform: (inputBytes) =>\n imageService.resize(inputBytes, { height, width, fit }),\n });\n });\n}\n","import {\n createTransformNode,\n ImagePlugin,\n type TransformImageParams,\n} from \"@uploadista/core/flow\";\nimport { Effect } from \"effect\";\n\n/**\n * Apply a chain of transformations to an image by reducing over the transformations array.\n * Each transformation receives the output of the previous transformation as input.\n *\n * @param imageService - The image plugin service to use for transformations\n * @param inputBytes - The input image bytes\n * @param transformations - Array of transformations to apply in sequence\n * @returns Effect that resolves to the final transformed image bytes\n */\nfunction applyTransformationChain(\n imageService: ReturnType<typeof ImagePlugin.of>,\n inputBytes: Uint8Array,\n transformations: TransformImageParams[\"transformations\"],\n) {\n return Effect.reduce(transformations, inputBytes, (bytes, transformation) =>\n imageService.transform(bytes, transformation),\n );\n}\n\n/**\n * Creates a transform image node that applies multiple transformations sequentially.\n *\n * This node enables complex image processing workflows by chaining multiple transformations\n * together. Each transformation is applied to the output of the previous transformation,\n * allowing for powerful image manipulation pipelines.\n *\n * Supported transformations include:\n * - Basic: resize, blur, rotate, flip\n * - Filters: grayscale, sepia, brightness, contrast\n * - Effects: sharpen\n * - Advanced: watermark, logo, text\n *\n * Note: Watermark and logo transformations require imagePath to be a valid URL.\n * Images will be fetched from the provided URL during transformation.\n *\n * @param id - Unique identifier for this node\n * @param params - Parameters including the transformations array\n * @returns Effect that resolves to a transform node\n *\n * @example\n * ```typescript\n * const node = createTransformImageNode(\"transform-1\", {\n * transformations: [\n * { type: 'resize', width: 800, height: 600, fit: 'cover' },\n * { type: 'brightness', value: 20 },\n * {\n * type: 'watermark',\n * imagePath: 'https://cdn.example.com/watermark.png',\n * position: 'bottom-right',\n * opacity: 0.5\n * }\n * ]\n * });\n * ```\n */\nexport function createTransformImageNode(\n id: string,\n { transformations }: TransformImageParams,\n) {\n return Effect.gen(function* () {\n const imageService = yield* ImagePlugin;\n\n return yield* createTransformNode({\n id,\n name: \"Transform Image\",\n description: `Apply ${transformations.length} transformation${transformations.length === 1 ? \"\" : \"s\"} to the image`,\n transform: (inputBytes) =>\n applyTransformationChain(imageService, inputBytes, transformations),\n });\n });\n}\n"],"mappings":"mYAcA,SAAgB,EACd,EACA,EAGI,EAAE,CACgC,CACtC,GAAM,CAAE,cAAc,IAAO,aAAa,KAAQ,EAElD,OAAO,EAAO,IAAI,WAAa,CAC7B,IAAM,EAAY,KAAK,KAAK,CAE5B,KAAO,KAAK,KAAK,CAAG,EAAY,GAAa,CAC3C,IAAM,EAAW,MAAO,EAAO,eAC7B,MAAM,EAAK,CAAE,OAAQ,OAAQ,CAAC,CAC/B,CAAC,KAAK,EAAO,aAAe,EAAO,QAAQ,KAAK,CAAC,CAAC,CAEnD,GAAI,GAAU,GAAI,CAChB,MAAO,EAAO,QAAQ,OAAO,EAAI,mBAAmB,CACpD,OAGE,EACF,MAAO,EAAO,SACZ,sBAAsB,EAAS,OAAO,gBACvC,CAED,MAAO,EAAO,SAAS,gCAAgC,CAGzD,MAAO,EAAO,MAAM,EAAW,CAGjC,OAAO,MAAO,EAAgB,SAAS,kBAAmB,CACxD,MAAO,OAAO,EAAI,uBAAuB,EAAY,IACtD,CAAC,CAAC,UAAU,EACb,CCrCJ,SAAgB,EACd,EACA,CAAE,gBAA4C,EAAE,CAChD,CACA,OAAO,EAAO,IAAI,WAAa,CAC7B,IAAM,EAAiB,MAAO,EAE9B,OAAO,MAAO,EAAe,CAC3B,KACA,KAAM,iBACN,YAAa,+BACb,KAAM,EAAS,QACf,YAAa,EACb,aAAc,EACd,KAAM,CAAE,KAAM,EAAM,SAAQ,QAAO,cAC1B,EAAO,IAAI,WAAa,CAC7B,IAAM,EAAO,CACX,SACA,OAAQ,EACR,QACD,CAEK,EAAU,EAAK,IAGrB,GAAI,CAAC,EACH,OAAO,MAAO,EAAgB,SAAS,kBAAmB,CACxD,MAAO,+CACR,CAAC,CAAC,UAAU,CAGf,MAAO,EAAO,QACZ,6BAA6B,EAAK,GAAG,WAAW,IACjD,CAGD,MAAO,EAAuB,EAAQ,CAGtC,IAAM,EAAU,CACd,WACA,eACD,CAGK,CAAE,eAAgB,MAAO,EAC5B,cAAc,EAAS,EAAQ,CAC/B,KACC,EAAO,SAAU,GACf,EAAO,IAAI,WAAa,CAEtB,OADA,MAAO,EAAO,SAAS,2BAA4B,EAAM,CAClD,MAAO,EAAgB,SAAS,kBAAmB,CACxD,MACE,aAAiB,MACb,EAAM,QACN,2BACP,CAAC,CAAC,UAAU,EACb,CACH,CACF,CAEG,CAAE,YAAa,EAAsB,EAAK,SAAS,CAGnD,EAAc,CAClB,GAAG,EAAK,SACR,GAAG,EACH,cACD,CAMD,OAJA,MAAO,EAAO,QACZ,yCAAyC,EAAK,KAC/C,CAEM,EACL,EACI,CACE,GAAG,EACH,SAAU,EACV,OACD,CACD,EACL,EACD,CAEL,CAAC,EACF,CC3FJ,MAAMA,EAA6D,CACjE,KAAM,aACN,KAAM,aACN,IAAK,YACL,KAAM,aACP,CAGKC,EAA8D,CAClE,KAAM,MACN,KAAM,OACN,IAAK,MACL,KAAM,OACP,CAED,SAAgB,EACd,EACA,CAAE,UAAS,UACX,CACA,OAAO,EAAO,IAAI,WAAa,CAC7B,IAAM,EAAe,MAAO,EAE5B,OAAO,MAAO,EAAoB,CAChC,KACA,KAAM,WACN,YAAa,sCACb,WAAY,EAAY,IACtB,EAAO,IACL,EAAa,SAAS,EAAY,CAAE,UAAS,SAAQ,CAAC,CACrD,GAAmB,CAElB,IAAM,EAAU,EAAiB,GAC3B,EAAe,EAAkB,GAGjC,EAAW,EAAK,UAAU,SAMhC,MAAO,CACL,MAAO,EACP,KAAM,EACN,SAPA,GAAY,OAAO,GAAa,SAC5B,EAAS,QAAQ,WAAY,IAAI,IAAe,CAChD,IAAA,GAML,EAIJ,CACJ,CAAC,EACF,CC9CJ,SAAgB,EACd,EACA,CAAE,gBAA4C,EAAE,CAChD,CACA,OAAO,EAAO,IAAI,WAAa,CAC7B,IAAM,EAAiB,MAAO,EACxB,EAAe,MAAO,EAE5B,OAAO,MAAO,EAAe,CAC3B,KACA,KAAM,oBACN,YAAa,uCACb,KAAM,EAAS,QACf,YAAa,EACb,aAAc,EACd,KAAM,CAAE,KAAM,EAAM,SAAQ,QAAO,YAAW,cACrC,EAAO,IAAI,WAAa,CAC7B,IAAM,EAAO,CACX,SACA,OAAQ,EACR,QACD,CAEK,EAAU,EAAK,IAGrB,GAAI,CAAC,EACH,OAAO,MAAO,EAAgB,SAAS,kBAAmB,CACxD,MAAO,kDACR,CAAC,CAAC,UAAU,CAGf,MAAO,EAAO,QACZ,gCAAgC,EAAK,GAAG,WAAW,EAAK,MACzD,CAGD,MAAO,EAAuB,EAAQ,CAGtC,IAAM,EAAU,CACd,WACA,eACD,CAmBK,CAAE,aAhBwB,MAAO,EACpC,iBAAiB,EAAS,EAAQ,CAClC,KACC,EAAO,SAAU,GACf,EAAO,IAAI,WAAa,CAEtB,OADA,MAAO,EAAO,SAAS,8BAA+B,EAAM,CACrD,MAAO,EAAgB,SAAS,kBAAmB,CACxD,MACE,aAAiB,MACb,EAAM,QACN,yCACP,CAAC,CAAC,UAAU,EACb,CACH,CACF,CAGG,CAAE,OAAM,WAAU,WAAU,gBAChC,EAAsB,EAAK,SAAS,CAEtC,MAAO,EAAO,QAAQ,sCAAsC,CAG5D,IAAM,EAAS,MAAO,EACnB,cACC,CACE,YACA,KAAM,EACN,OACA,WACA,aAAc,EACd,SAAU,EACV,OACD,CACD,EACA,EACD,CACA,KACC,EAAO,SAAU,GACf,EAAO,IAAI,WAAa,CAKtB,OAJA,MAAO,EAAO,SACZ,kCACA,EACD,CACM,MAAO,EAAgB,SAAS,kBAAmB,CACxD,MACE,aAAiB,MACb,EAAM,QACN,kCACP,CAAC,CAAC,UAAU,EACb,CACH,CACF,CAMH,OAJA,MAAO,EAAO,QACZ,4CAA4C,EAAK,KAClD,CAEM,EACL,EACI,CACE,GAAG,EACH,WACD,CACD,EACL,EACD,CAEL,CAAC,EACF,CCzHJ,SAAgB,EACd,EACA,CAAE,QAAO,SAAQ,OACjB,CACA,OAAO,EAAO,IAAI,WAAa,CAC7B,IAAM,EAAe,MAAO,EAE5B,OAAO,MAAO,EAAoB,CAChC,KACA,KAAM,SACN,YAAa,+CACb,UAAY,GACV,EAAa,OAAO,EAAY,CAAE,SAAQ,QAAO,MAAK,CAAC,CAC1D,CAAC,EACF,CCLJ,SAAS,EACP,EACA,EACA,EACA,CACA,OAAO,EAAO,OAAO,EAAiB,GAAa,EAAO,IACxD,EAAa,UAAU,EAAO,EAAe,CAC9C,CAuCH,SAAgB,EACd,EACA,CAAE,mBACF,CACA,OAAO,EAAO,IAAI,WAAa,CAC7B,IAAM,EAAe,MAAO,EAE5B,OAAO,MAAO,EAAoB,CAChC,KACA,KAAM,kBACN,YAAa,SAAS,EAAgB,OAAO,iBAAiB,EAAgB,SAAW,EAAI,GAAK,IAAI,eACtG,UAAY,GACV,EAAyB,EAAc,EAAY,EAAgB,CACtE,CAAC,EACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@uploadista/flow-images-nodes",
3
3
  "type": "module",
4
- "version": "0.0.12",
4
+ "version": "0.0.13-beta.3",
5
5
  "description": "Image processing nodes for Uploadista Flow",
6
6
  "license": "MIT",
7
7
  "author": "Uploadista",
@@ -14,14 +14,14 @@
14
14
  }
15
15
  },
16
16
  "dependencies": {
17
- "effect": "3.19.1",
17
+ "effect": "3.19.2",
18
18
  "zod": "4.1.12",
19
- "@uploadista/core": "0.0.12"
19
+ "@uploadista/core": "0.0.13-beta.3"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/node": "24.10.0",
23
23
  "tsdown": "0.16.0",
24
- "@uploadista/typescript-config": "0.0.12"
24
+ "@uploadista/typescript-config": "0.0.13-beta.3"
25
25
  },
26
26
  "scripts": {
27
27
  "build": "tsdown",
@@ -19,10 +19,8 @@ function applyTransformationChain(
19
19
  inputBytes: Uint8Array,
20
20
  transformations: TransformImageParams["transformations"],
21
21
  ) {
22
- return Effect.reduce(
23
- transformations,
24
- inputBytes,
25
- (bytes, transformation) => imageService.transform(bytes, transformation),
22
+ return Effect.reduce(transformations, inputBytes, (bytes, transformation) =>
23
+ imageService.transform(bytes, transformation),
26
24
  );
27
25
  }
28
26