@uploadista/core 0.0.17 → 0.0.18-beta.1

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.
Files changed (92) hide show
  1. package/dist/{checksum-BIlVW8bD.cjs → checksum-B1XGxTsI.cjs} +1 -1
  2. package/dist/{checksum-DaCqP8Qa.mjs → checksum-DsSiXsPO.mjs} +2 -2
  3. package/dist/{checksum-DaCqP8Qa.mjs.map → checksum-DsSiXsPO.mjs.map} +1 -1
  4. package/dist/errors/index.cjs +1 -1
  5. package/dist/errors/index.d.cts +1 -1
  6. package/dist/errors/index.d.mts +1 -1
  7. package/dist/errors/index.mjs +1 -1
  8. package/dist/flow/index.cjs +1 -1
  9. package/dist/flow/index.d.cts +5 -5
  10. package/dist/flow/index.d.mts +5 -5
  11. package/dist/flow/index.mjs +1 -1
  12. package/dist/flow-CAywogte.mjs +2 -0
  13. package/dist/flow-CAywogte.mjs.map +1 -0
  14. package/dist/flow-D7QeEZVs.cjs +1 -0
  15. package/dist/{index-DIWuZlxd.d.mts → index-C4zZWqtz.d.cts} +2 -2
  16. package/dist/{index-DIWuZlxd.d.mts.map → index-C4zZWqtz.d.cts.map} +1 -1
  17. package/dist/{index-BGi1r_fi.d.mts → index-CHQtirAp.d.mts} +2 -2
  18. package/dist/{index-B_SvQ0MU.d.cts.map → index-CHQtirAp.d.mts.map} +1 -1
  19. package/dist/{index-B_SvQ0MU.d.cts → index-CoAMCnm6.d.cts} +2 -2
  20. package/dist/{index-BGi1r_fi.d.mts.map → index-CoAMCnm6.d.cts.map} +1 -1
  21. package/dist/{index-BQ5luyME.d.cts → index-D-0Qqv6Q.d.cts} +208 -191
  22. package/dist/index-D-0Qqv6Q.d.cts.map +1 -0
  23. package/dist/{index-BtnCNLsH.d.mts → index-nnPHcllj.d.mts} +208 -191
  24. package/dist/index-nnPHcllj.d.mts.map +1 -0
  25. package/dist/{index-qIN6ULCb.d.cts → index-zQ707AXp.d.mts} +2 -2
  26. package/dist/{index-qIN6ULCb.d.cts.map → index-zQ707AXp.d.mts.map} +1 -1
  27. package/dist/index.cjs +1 -1
  28. package/dist/index.d.cts +5 -5
  29. package/dist/index.d.mts +5 -5
  30. package/dist/index.mjs +1 -1
  31. package/dist/{stream-limiter-By0fxkAh.cjs → stream-limiter-B6CRA3Zd.cjs} +1 -1
  32. package/dist/{stream-limiter-D2Y8Z_Kv.mjs → stream-limiter-ByVdSC5T.mjs} +2 -2
  33. package/dist/{stream-limiter-D2Y8Z_Kv.mjs.map → stream-limiter-ByVdSC5T.mjs.map} +1 -1
  34. package/dist/streams/index.cjs +1 -1
  35. package/dist/streams/index.d.cts +2 -2
  36. package/dist/streams/index.d.mts +2 -2
  37. package/dist/streams/index.mjs +1 -1
  38. package/dist/testing/index.cjs +1 -1
  39. package/dist/testing/index.d.cts +4 -4
  40. package/dist/testing/index.d.mts +4 -4
  41. package/dist/testing/index.mjs +1 -1
  42. package/dist/types/index.cjs +1 -1
  43. package/dist/types/index.d.cts +4 -4
  44. package/dist/types/index.d.mts +4 -4
  45. package/dist/types/index.mjs +1 -1
  46. package/dist/{types-B5I4BioZ.cjs → types-Ce7ILjFt.cjs} +1 -1
  47. package/dist/{types-f6w5J3UD.mjs → types-CnhCQFkg.mjs} +2 -2
  48. package/dist/{types-f6w5J3UD.mjs.map → types-CnhCQFkg.mjs.map} +1 -1
  49. package/dist/upload/index.cjs +1 -1
  50. package/dist/upload/index.d.cts +4 -4
  51. package/dist/upload/index.d.mts +4 -4
  52. package/dist/upload/index.mjs +1 -1
  53. package/dist/{upload-Bq9h95w6.mjs → upload-DPX3jSQH.mjs} +2 -2
  54. package/dist/{upload-Bq9h95w6.mjs.map → upload-DPX3jSQH.mjs.map} +1 -1
  55. package/dist/{upload-bBgM3QFI.cjs → upload-uQfkhcMj.cjs} +1 -1
  56. package/dist/{uploadista-error-djFxVTLh.mjs → uploadista-error-B-kFH_SE.mjs} +3 -1
  57. package/dist/uploadista-error-B-kFH_SE.mjs.map +1 -0
  58. package/dist/{uploadista-error-Bb-qIIKM.d.cts → uploadista-error-DMMrZF03.d.mts} +3 -3
  59. package/dist/uploadista-error-DMMrZF03.d.mts.map +1 -0
  60. package/dist/{uploadista-error-DCRIscEv.cjs → uploadista-error-Di9fniB1.cjs} +3 -1
  61. package/dist/{uploadista-error-D7Gubrr1.d.mts → uploadista-error-DigegPz2.d.cts} +3 -3
  62. package/dist/uploadista-error-DigegPz2.d.cts.map +1 -0
  63. package/dist/utils/index.cjs +1 -1
  64. package/dist/utils/index.d.cts +2 -2
  65. package/dist/utils/index.d.mts +2 -2
  66. package/dist/utils/index.mjs +1 -1
  67. package/dist/{utils-DxLVhlLd.cjs → utils-B_unvkI4.cjs} +1 -1
  68. package/dist/{utils-MQUZyB9S.mjs → utils-C9dntrSe.mjs} +2 -2
  69. package/dist/{utils-MQUZyB9S.mjs.map → utils-C9dntrSe.mjs.map} +1 -1
  70. package/package.json +7 -5
  71. package/src/errors/uploadista-error.ts +10 -0
  72. package/src/flow/flow.ts +3 -3
  73. package/src/flow/index.ts +3 -2
  74. package/src/flow/input-type-registry.ts +229 -0
  75. package/src/flow/node-types/index.ts +26 -20
  76. package/src/flow/node.ts +33 -27
  77. package/src/flow/nodes/input-node.ts +3 -2
  78. package/src/flow/nodes/transform-node.ts +4 -4
  79. package/src/flow/output-type-registry.ts +231 -0
  80. package/src/flow/type-guards.ts +2 -2
  81. package/src/flow/types/flow-types.ts +7 -2
  82. package/tests/flow/type-registry.test.ts +1 -1
  83. package/tests/flow/type-system.test.ts +17 -14
  84. package/dist/flow-BiUCrFTv.cjs +0 -1
  85. package/dist/flow-vXXjtBBv.mjs +0 -2
  86. package/dist/flow-vXXjtBBv.mjs.map +0 -1
  87. package/dist/index-BQ5luyME.d.cts.map +0 -1
  88. package/dist/index-BtnCNLsH.d.mts.map +0 -1
  89. package/dist/uploadista-error-Bb-qIIKM.d.cts.map +0 -1
  90. package/dist/uploadista-error-D7Gubrr1.d.mts.map +0 -1
  91. package/dist/uploadista-error-djFxVTLh.mjs.map +0 -1
  92. package/src/flow/type-registry.ts +0 -379
@@ -1,5 +1,5 @@
1
- import { n as UploadistaError } from "./uploadista-error-Bb-qIIKM.cjs";
2
- import { l as GenerateId, p as GenerateIdShape } from "./index-B_SvQ0MU.cjs";
1
+ import { n as UploadistaError } from "./uploadista-error-DigegPz2.cjs";
2
+ import { l as GenerateId, p as GenerateIdShape } from "./index-CoAMCnm6.cjs";
3
3
  import { Context, Effect, Layer, Option, Stream } from "effect";
4
4
  import * as zod0 from "zod";
5
5
  import z$1, { z } from "zod";
@@ -211,7 +211,8 @@ type ConditionValue = string | number;
211
211
  * @param config.retry.maxRetries - Maximum number of retry attempts (default: 0)
212
212
  * @param config.retry.retryDelay - Base delay in milliseconds between retries (default: 1000)
213
213
  * @param config.retry.exponentialBackoff - Whether to use exponential backoff for retries (default: true)
214
- * @param config.nodeTypeId - Optional type ID from the registry (e.g., "storage-output-v1"). If provided, the node type must be registered.
214
+ * @param config.inputTypeId - Optional input type ID from inputTypeRegistry (e.g., "streaming-input-v1"). Used for input nodes to describe external interface.
215
+ * @param config.outputTypeId - Optional output type ID from outputTypeRegistry (e.g., "storage-output-v1"). Used for result type tagging.
215
216
  * @param config.keepOutput - If true, preserves this node's output even if it has outgoing edges (default: false). Useful for flows where intermediate results need to be kept (e.g., preserving the original file when also running OCR on it).
216
217
  *
217
218
  * @returns An Effect that succeeds with the created FlowNode
@@ -259,7 +260,8 @@ declare function createFlowNode<Input, Output, TType extends NodeType = NodeType
259
260
  multiOutput,
260
261
  pausable,
261
262
  retry,
262
- nodeTypeId,
263
+ inputTypeId,
264
+ outputTypeId,
263
265
  keepOutput
264
266
  }: {
265
267
  id: string;
@@ -288,7 +290,10 @@ declare function createFlowNode<Input, Output, TType extends NodeType = NodeType
288
290
  retryDelay?: number;
289
291
  exponentialBackoff?: boolean;
290
292
  };
291
- nodeTypeId?: string;
293
+ /** Input type ID from inputTypeRegistry - for input nodes describing external interface */
294
+ inputTypeId?: string;
295
+ /** Output type ID from outputTypeRegistry - for result type tagging */
296
+ outputTypeId?: string;
292
297
  keepOutput?: boolean;
293
298
  }): Effect.Effect<FlowNode<Input, Output, UploadistaError> & {
294
299
  type: TType;
@@ -301,7 +306,7 @@ declare function createFlowNode<Input, Output, TType extends NodeType = NodeType
301
306
  * the executable run function or schemas.
302
307
  *
303
308
  * @param node - The flow node to extract data from
304
- * @returns A plain object containing the node's metadata (id, name, description, type)
309
+ * @returns A plain object containing the node's metadata (id, name, description, type, inputTypeId, outputTypeId)
305
310
  */
306
311
  declare const getNodeData: (node: FlowNode<any, any, UploadistaError>) => FlowNodeData;
307
312
  //#endregion
@@ -570,6 +575,8 @@ type NodeTypeMap = Record<string, {
570
575
  * @property name - Human-readable node name
571
576
  * @property description - Explanation of what the node does
572
577
  * @property type - Node category (input, transform, conditional, output, etc.)
578
+ * @property inputTypeId - Optional input type ID from inputTypeRegistry (for input nodes)
579
+ * @property outputTypeId - Optional output type ID from outputTypeRegistry (for result typing)
573
580
  * @property keepOutput - If true, preserves this node's output even if it has outgoing edges (default: false)
574
581
  */
575
582
  type FlowNodeData = {
@@ -577,7 +584,10 @@ type FlowNodeData = {
577
584
  name: string;
578
585
  description: string;
579
586
  type: NodeType;
580
- nodeTypeId: string;
587
+ /** Input type ID from inputTypeRegistry - describes how external clients interact with this node */
588
+ inputTypeId?: string;
589
+ /** Output type ID from outputTypeRegistry - describes the data shape this node produces */
590
+ outputTypeId?: string;
581
591
  keepOutput?: boolean;
582
592
  };
583
593
  /**
@@ -710,7 +720,7 @@ type TypedOutput<T = unknown> = BuiltInTypedOutput | CustomTypedOutput<T>;
710
720
  *
711
721
  * Results now include optional type information (`nodeType` and `nodeId`) to
712
722
  * enable type-safe result consumption. These fields are automatically added
713
- * by the node execution wrapper when a node is created with a `nodeTypeId`.
723
+ * by the node execution wrapper when a node is created with an `outputTypeId`.
714
724
  *
715
725
  * @example
716
726
  * ```typescript
@@ -1900,57 +1910,33 @@ type Flow<TFlowInputSchema extends z.ZodSchema<any>, TFlowOutputSchema extends z
1900
1910
  */
1901
1911
  declare function createFlowWithSchema<TFlowInputSchema extends z.ZodSchema<any>, TFlowOutputSchema extends z.ZodSchema<any>, TRequirements = never, TNodeError = never, TNodeRequirements = never>(config: FlowConfig<TFlowInputSchema, TFlowOutputSchema, TNodeError, TNodeRequirements>): Effect.Effect<Flow<TFlowInputSchema, TFlowOutputSchema, TRequirements>, TNodeError, TNodeRequirements>;
1902
1912
  //#endregion
1903
- //#region src/flow/type-registry.d.ts
1913
+ //#region src/flow/input-type-registry.d.ts
1904
1914
  /**
1905
- * Node type category - determines where the node appears in the flow.
1915
+ * Defines a registered input type with its schema and metadata.
1906
1916
  *
1907
- * - `input`: Nodes that receive data from external sources (e.g., file uploads)
1908
- * - `output`: Nodes that produce final results (e.g., storage, webhooks, descriptions)
1909
- */
1910
- type NodeTypeCategory = "input" | "output";
1911
- /**
1912
- * Defines a registered node type with its schema and metadata.
1913
- *
1914
- * Node type definitions are registered globally and used to validate and type-narrow
1915
- * flow results at runtime. Each definition includes:
1916
- * - A unique identifier with versioning
1917
- * - A category (input or output)
1918
- * - A Zod schema for runtime validation
1919
- * - A semantic version for evolution
1920
- * - A human-readable description
1917
+ * Input type definitions describe how external clients interact with input nodes.
1918
+ * Unlike output types, input types define the external interface (e.g., init/finalize
1919
+ * operations for streaming uploads).
1921
1920
  *
1922
- * @template TSchema - The Zod schema type for this node's data
1921
+ * @template TSchema - The Zod schema type for this input's data
1923
1922
  *
1924
- * @property id - Unique identifier (e.g., "storage-output-v1", "webhook-output-v1")
1925
- * @property category - Whether this is an input or output node type
1926
- * @property schema - Zod schema for validating data produced by this node type
1923
+ * @property id - Unique identifier (e.g., "streaming-input-v1")
1924
+ * @property schema - Zod schema for validating input data from clients
1927
1925
  * @property version - Semantic version (e.g., "1.0.0") for tracking type evolution
1928
- * @property description - Human-readable explanation of what this node type does
1929
- *
1930
- * @example
1931
- * ```typescript
1932
- * const storageOutputDef: NodeTypeDefinition<z.infer<typeof uploadFileSchema>> = {
1933
- * id: "storage-output-v1",
1934
- * category: "output",
1935
- * schema: uploadFileSchema,
1936
- * version: "1.0.0",
1937
- * description: "Storage output node that saves files to configured storage backend",
1938
- * };
1939
- * ```
1926
+ * @property description - Human-readable explanation of what this input type does
1940
1927
  */
1941
- interface NodeTypeDefinition<TSchema = unknown> {
1928
+ interface InputTypeDefinition<TSchema = unknown> {
1942
1929
  id: string;
1943
- category: NodeTypeCategory;
1944
1930
  schema: z.ZodSchema<TSchema>;
1945
1931
  version: string;
1946
1932
  description: string;
1947
1933
  }
1948
1934
  /**
1949
- * Result type for validation operations.
1935
+ * Result type for input validation operations.
1950
1936
  *
1951
1937
  * @template T - The expected type on successful validation
1952
1938
  */
1953
- type ValidationResult<T> = {
1939
+ type InputValidationResult<T> = {
1954
1940
  success: true;
1955
1941
  data: T;
1956
1942
  } | {
@@ -1958,221 +1944,251 @@ type ValidationResult<T> = {
1958
1944
  error: UploadistaError;
1959
1945
  };
1960
1946
  /**
1961
- * Central registry for node type definitions.
1947
+ * Registry for input node type definitions.
1962
1948
  *
1963
- * The FlowTypeRegistry maintains a global registry of node types with their schemas
1964
- * and metadata. It provides methods for:
1965
- * - Registering new node types
1966
- * - Retrieving type definitions
1967
- * - Listing types by category
1968
- * - Validating data against registered schemas
1969
- *
1970
- * The registry is immutable after registration - types cannot be modified or removed
1971
- * once registered to prevent runtime errors.
1949
+ * The InputTypeRegistry maintains a global registry of input types with their schemas
1950
+ * and metadata. Input types describe how data enters the flow from external sources.
1972
1951
  *
1973
1952
  * @remarks
1974
- * - This is a singleton - use the exported `flowTypeRegistry` instance
1953
+ * - Use the exported `inputTypeRegistry` singleton instance
1975
1954
  * - Types cannot be unregistered or modified after registration
1976
1955
  * - Duplicate type IDs are rejected
1977
- * - Version strings should follow semantic versioning
1978
1956
  *
1979
1957
  * @example
1980
1958
  * ```typescript
1981
- * // Register a new type
1982
- * flowTypeRegistry.register({
1983
- * id: "webhook-output-v1",
1984
- * category: "output",
1985
- * schema: webhookResponseSchema,
1959
+ * // Register a new input type
1960
+ * inputTypeRegistry.register({
1961
+ * id: "form-input-v1",
1962
+ * schema: formInputSchema,
1986
1963
  * version: "1.0.0",
1987
- * description: "HTTP webhook notification output",
1964
+ * description: "Form-based file input",
1988
1965
  * });
1989
1966
  *
1990
- * // Retrieve a type definition
1991
- * const def = flowTypeRegistry.get("webhook-output-v1");
1992
- * if (def) {
1993
- * console.log(def.description);
1994
- * }
1995
- *
1996
- * // List all output types
1997
- * const outputTypes = flowTypeRegistry.listByCategory("output");
1998
- * console.log(outputTypes.map(t => t.id));
1999
- *
2000
- * // Validate data
2001
- * const result = flowTypeRegistry.validate("webhook-output-v1", data);
2002
- * if (result.success) {
2003
- * // data is now typed according to the schema
2004
- * processWebhookResponse(result.data);
1967
+ * // Check if type exists
1968
+ * if (inputTypeRegistry.has("streaming-input-v1")) {
1969
+ * const def = inputTypeRegistry.get("streaming-input-v1");
2005
1970
  * }
2006
1971
  * ```
2007
1972
  */
2008
- declare class FlowTypeRegistry {
1973
+ declare class InputTypeRegistry {
2009
1974
  private readonly types;
2010
1975
  constructor();
2011
1976
  /**
2012
- * Register a new node type in the registry.
2013
- *
2014
- * Once registered, a type cannot be modified or removed. Attempting to register
2015
- * a type with a duplicate ID will throw an error.
1977
+ * Register a new input type in the registry.
2016
1978
  *
2017
1979
  * @template T - The TypeScript type inferred from the Zod schema
2018
1980
  * @param definition - The complete type definition including schema and metadata
2019
1981
  * @throws {UploadistaError} If a type with the same ID is already registered
2020
- *
2021
- * @example
2022
- * ```typescript
2023
- * import { z } from "zod";
2024
- *
2025
- * flowTypeRegistry.register({
2026
- * id: "description-output-v1",
2027
- * category: "output",
2028
- * schema: z.object({
2029
- * description: z.string(),
2030
- * confidence: z.number().min(0).max(1),
2031
- * tags: z.array(z.string()).optional(),
2032
- * }),
2033
- * version: "1.0.0",
2034
- * description: "AI-generated image description with confidence score",
2035
- * });
2036
- * ```
2037
1982
  */
2038
- register<T>(definition: NodeTypeDefinition<T>): void;
1983
+ register<T>(definition: InputTypeDefinition<T>): void;
2039
1984
  /**
2040
1985
  * Retrieve a registered type definition by its ID.
2041
1986
  *
2042
- * @param id - The unique type identifier (e.g., "storage-output-v1")
1987
+ * @param id - The unique type identifier (e.g., "streaming-input-v1")
2043
1988
  * @returns The type definition if found, undefined otherwise
2044
- *
2045
- * @example
2046
- * ```typescript
2047
- * const def = flowTypeRegistry.get("storage-output-v1");
2048
- * if (def) {
2049
- * console.log(`Found ${def.description} (v${def.version})`);
2050
- * } else {
2051
- * console.warn("Type not registered");
2052
- * }
2053
- * ```
2054
1989
  */
2055
- get(id: string): NodeTypeDefinition<unknown> | undefined;
1990
+ get(id: string): InputTypeDefinition<unknown> | undefined;
2056
1991
  /**
2057
- * List all registered types in a specific category.
2058
- *
2059
- * @param category - The node category to filter by ("input" or "output")
2060
- * @returns Array of type definitions in the specified category
1992
+ * List all registered input types.
2061
1993
  *
2062
- * @example
2063
- * ```typescript
2064
- * // List all registered output types
2065
- * const outputTypes = flowTypeRegistry.listByCategory("output");
2066
- * console.log("Available output types:");
2067
- * for (const type of outputTypes) {
2068
- * console.log(`- ${type.id}: ${type.description}`);
2069
- * }
2070
- * ```
1994
+ * @returns Array of all input type definitions
2071
1995
  */
2072
- listByCategory(category: NodeTypeCategory): NodeTypeDefinition<unknown>[];
1996
+ list(): InputTypeDefinition<unknown>[];
2073
1997
  /**
2074
1998
  * Validate data against a registered type's schema.
2075
1999
  *
2076
- * This method performs runtime validation using the Zod schema associated with
2077
- * the type. If validation succeeds, the data is returned with proper typing.
2078
- * If validation fails, an UploadistaError is returned with details.
2079
- *
2080
2000
  * @template T - The expected TypeScript type after validation
2081
2001
  * @param typeId - The ID of the registered type to validate against
2082
2002
  * @param data - The data to validate
2083
2003
  * @returns A result object with either the validated data or an error
2084
- *
2085
- * @example
2086
- * ```typescript
2087
- * const result = flowTypeRegistry.validate("storage-output-v1", unknownData);
2088
- *
2089
- * if (result.success) {
2090
- * // TypeScript knows result.data is an UploadFile
2091
- * console.log(`File stored at: ${result.data.url}`);
2092
- * } else {
2093
- * console.error(`Validation failed: ${result.error.body}`);
2094
- * }
2095
- * ```
2096
2004
  */
2097
- validate<T>(typeId: string, data: unknown): ValidationResult<T>;
2005
+ validate<T>(typeId: string, data: unknown): InputValidationResult<T>;
2098
2006
  /**
2099
2007
  * Check if a type is registered.
2100
2008
  *
2101
2009
  * @param id - The unique type identifier to check
2102
2010
  * @returns True if the type is registered, false otherwise
2103
- *
2104
- * @example
2105
- * ```typescript
2106
- * if (flowTypeRegistry.has("custom-output-v1")) {
2107
- * console.log("Custom output type is available");
2108
- * }
2109
- * ```
2110
2011
  */
2111
2012
  has(id: string): boolean;
2112
2013
  /**
2113
2014
  * Get the total number of registered types.
2114
2015
  *
2115
2016
  * @returns The count of registered types
2116
- *
2117
- * @example
2118
- * ```typescript
2119
- * console.log(`Registry contains ${flowTypeRegistry.size()} types`);
2120
- * ```
2121
2017
  */
2122
2018
  size(): number;
2123
2019
  }
2124
2020
  /**
2125
- * Global singleton instance of the flow type registry.
2021
+ * Global singleton instance of the input type registry.
2126
2022
  *
2127
- * Use this instance to register and access node type definitions throughout
2128
- * your application. The registry is initialized once and shared globally.
2023
+ * Use this instance to register and access input node type definitions.
2024
+ * Input types describe how data enters the flow from external sources.
2129
2025
  *
2130
2026
  * @example
2131
2027
  * ```typescript
2132
- * import { flowTypeRegistry } from "@uploadista/core/flow";
2028
+ * import { inputTypeRegistry } from "@uploadista/core/flow";
2133
2029
  *
2134
2030
  * // Register a type
2135
- * flowTypeRegistry.register({
2136
- * id: "my-output-v1",
2137
- * category: "output",
2138
- * schema: mySchema,
2031
+ * inputTypeRegistry.register({
2032
+ * id: "my-input-v1",
2033
+ * schema: myInputSchema,
2139
2034
  * version: "1.0.0",
2140
- * description: "My custom output type",
2035
+ * description: "My custom input type",
2141
2036
  * });
2142
2037
  *
2143
2038
  * // Validate data
2144
- * const result = flowTypeRegistry.validate("my-output-v1", data);
2039
+ * const result = inputTypeRegistry.validate("my-input-v1", data);
2145
2040
  * ```
2146
2041
  */
2147
- declare const flowTypeRegistry: FlowTypeRegistry;
2042
+ declare const inputTypeRegistry: InputTypeRegistry;
2148
2043
  /**
2149
- * Validates flow input data against a registered node type.
2150
- *
2151
- * This helper function looks up the node type by ID and validates the provided
2152
- * data against its schema. It's specifically designed for input validation
2153
- * before flow execution.
2044
+ * Validates flow input data against a registered input type.
2154
2045
  *
2155
2046
  * @param typeId - The registered type ID (e.g., "streaming-input-v1")
2156
2047
  * @param data - The input data to validate
2157
2048
  * @returns A validation result with either the typed data or an error
2049
+ */
2050
+ declare function validateFlowInput<T = unknown>(typeId: string, data: unknown): InputValidationResult<T>;
2051
+ //#endregion
2052
+ //#region src/flow/output-type-registry.d.ts
2053
+ /**
2054
+ * Defines a registered output type with its schema and metadata.
2055
+ *
2056
+ * Output type definitions describe the data shapes produced by nodes. This enables
2057
+ * type-safe result consumption where clients can narrow types based on the
2058
+ * `nodeType` field in results.
2059
+ *
2060
+ * @template TSchema - The Zod schema type for this output's data
2061
+ *
2062
+ * @property id - Unique identifier (e.g., "storage-output-v1", "ocr-output-v1")
2063
+ * @property schema - Zod schema for validating output data
2064
+ * @property version - Semantic version (e.g., "1.0.0") for tracking type evolution
2065
+ * @property description - Human-readable explanation of what this output type contains
2066
+ */
2067
+ interface OutputTypeDefinition<TSchema = unknown> {
2068
+ id: string;
2069
+ schema: z.ZodSchema<TSchema>;
2070
+ version: string;
2071
+ description: string;
2072
+ }
2073
+ /**
2074
+ * Result type for output validation operations.
2075
+ *
2076
+ * @template T - The expected type on successful validation
2077
+ */
2078
+ type OutputValidationResult<T> = {
2079
+ success: true;
2080
+ data: T;
2081
+ } | {
2082
+ success: false;
2083
+ error: UploadistaError;
2084
+ };
2085
+ /**
2086
+ * Registry for output node type definitions.
2087
+ *
2088
+ * The OutputTypeRegistry maintains a global registry of output types with their schemas
2089
+ * and metadata. Output types describe the data shapes that flow through the system
2090
+ * and appear in results.
2091
+ *
2092
+ * @remarks
2093
+ * - Use the exported `outputTypeRegistry` singleton instance
2094
+ * - Types cannot be unregistered or modified after registration
2095
+ * - Duplicate type IDs are rejected
2158
2096
  *
2159
2097
  * @example
2160
2098
  * ```typescript
2161
- * import { validateFlowInput } from "@uploadista/core/flow";
2162
- *
2163
- * const result = validateFlowInput("streaming-input-v1", {
2164
- * operation: "url",
2165
- * url: "https://example.com/image.jpg"
2099
+ * // Register a new output type
2100
+ * outputTypeRegistry.register({
2101
+ * id: "metadata-output-v1",
2102
+ * schema: metadataSchema,
2103
+ * version: "1.0.0",
2104
+ * description: "File metadata extraction output",
2166
2105
  * });
2167
2106
  *
2107
+ * // Validate result data
2108
+ * const result = outputTypeRegistry.validate("storage-output-v1", data);
2168
2109
  * if (result.success) {
2169
- * console.log("Valid input:", result.data);
2170
- * } else {
2171
- * console.error("Validation error:", result.error);
2110
+ * console.log(result.data.url);
2172
2111
  * }
2173
2112
  * ```
2174
2113
  */
2175
- declare function validateFlowInput<T = unknown>(typeId: string, data: unknown): ValidationResult<T>;
2114
+ declare class OutputTypeRegistry {
2115
+ private readonly types;
2116
+ constructor();
2117
+ /**
2118
+ * Register a new output type in the registry.
2119
+ *
2120
+ * @template T - The TypeScript type inferred from the Zod schema
2121
+ * @param definition - The complete type definition including schema and metadata
2122
+ * @throws {UploadistaError} If a type with the same ID is already registered
2123
+ */
2124
+ register<T>(definition: OutputTypeDefinition<T>): void;
2125
+ /**
2126
+ * Retrieve a registered type definition by its ID.
2127
+ *
2128
+ * @param id - The unique type identifier (e.g., "storage-output-v1")
2129
+ * @returns The type definition if found, undefined otherwise
2130
+ */
2131
+ get(id: string): OutputTypeDefinition<unknown> | undefined;
2132
+ /**
2133
+ * List all registered output types.
2134
+ *
2135
+ * @returns Array of all output type definitions
2136
+ */
2137
+ list(): OutputTypeDefinition<unknown>[];
2138
+ /**
2139
+ * Validate data against a registered type's schema.
2140
+ *
2141
+ * @template T - The expected TypeScript type after validation
2142
+ * @param typeId - The ID of the registered type to validate against
2143
+ * @param data - The data to validate
2144
+ * @returns A result object with either the validated data or an error
2145
+ */
2146
+ validate<T>(typeId: string, data: unknown): OutputValidationResult<T>;
2147
+ /**
2148
+ * Check if a type is registered.
2149
+ *
2150
+ * @param id - The unique type identifier to check
2151
+ * @returns True if the type is registered, false otherwise
2152
+ */
2153
+ has(id: string): boolean;
2154
+ /**
2155
+ * Get the total number of registered types.
2156
+ *
2157
+ * @returns The count of registered types
2158
+ */
2159
+ size(): number;
2160
+ }
2161
+ /**
2162
+ * Global singleton instance of the output type registry.
2163
+ *
2164
+ * Use this instance to register and access output node type definitions.
2165
+ * Output types describe the data shapes produced by nodes and used in results.
2166
+ *
2167
+ * @example
2168
+ * ```typescript
2169
+ * import { outputTypeRegistry } from "@uploadista/core/flow";
2170
+ *
2171
+ * // Register a type
2172
+ * outputTypeRegistry.register({
2173
+ * id: "my-output-v1",
2174
+ * schema: myOutputSchema,
2175
+ * version: "1.0.0",
2176
+ * description: "My custom output type",
2177
+ * });
2178
+ *
2179
+ * // Validate result data
2180
+ * const result = outputTypeRegistry.validate("my-output-v1", data);
2181
+ * ```
2182
+ */
2183
+ declare const outputTypeRegistry: OutputTypeRegistry;
2184
+ /**
2185
+ * Validates flow output data against a registered output type.
2186
+ *
2187
+ * @param typeId - The registered type ID (e.g., "storage-output-v1")
2188
+ * @param data - The output data to validate
2189
+ * @returns A validation result with either the typed data or an error
2190
+ */
2191
+ declare function validateFlowOutput<T = unknown>(typeId: string, data: unknown): OutputValidationResult<T>;
2176
2192
  //#endregion
2177
2193
  //#region src/flow/node-types/index.d.ts
2178
2194
  /**
@@ -2183,11 +2199,12 @@ declare function validateFlowInput<T = unknown>(typeId: string, data: unknown):
2183
2199
  *
2184
2200
  * @example
2185
2201
  * ```typescript
2186
- * import { STREAMING_INPUT_TYPE_ID } from "@uploadista/core/flow";
2202
+ * import { STREAMING_INPUT_TYPE_ID, STORAGE_OUTPUT_TYPE_ID } from "@uploadista/core/flow";
2187
2203
  *
2188
2204
  * const inputNode = createFlowNode({
2189
2205
  * // ... other config
2190
- * nodeTypeId: STREAMING_INPUT_TYPE_ID
2206
+ * inputTypeId: STREAMING_INPUT_TYPE_ID,
2207
+ * outputTypeId: STORAGE_OUTPUT_TYPE_ID,
2191
2208
  * });
2192
2209
  * ```
2193
2210
  */
@@ -3218,7 +3235,7 @@ declare function createUploadServer(): Effect.Effect<{
3218
3235
  getCapabilities: (storageId: string, clientId: string | null) => Effect.Effect<DataStoreCapabilities, UploadistaError, never>;
3219
3236
  subscribeToUploadEvents: (uploadId: string, connection: WebSocketConnection) => Effect.Effect<void, UploadistaError, never>;
3220
3237
  unsubscribeFromUploadEvents: (uploadId: string) => Effect.Effect<void, UploadistaError, never>;
3221
- }, never, UploadFileDataStores | UploadFileKVStore | UploadEventEmitter | GenerateId>;
3238
+ }, never, GenerateId | UploadFileDataStores | UploadFileKVStore | UploadEventEmitter>;
3222
3239
  /**
3223
3240
  * Pre-built UploadServer Effect Layer.
3224
3241
  *
@@ -3249,7 +3266,7 @@ declare function createUploadServer(): Effect.Effect<{
3249
3266
  * }).pipe(Effect.provide(fullUploadSystem));
3250
3267
  * ```
3251
3268
  */
3252
- declare const uploadServer: Layer.Layer<UploadServer, never, UploadFileDataStores | UploadFileKVStore | UploadEventEmitter | GenerateId>;
3269
+ declare const uploadServer: Layer.Layer<UploadServer, never, GenerateId | UploadFileDataStores | UploadFileKVStore | UploadEventEmitter>;
3253
3270
  //#endregion
3254
3271
  //#region src/upload/upload-strategy-negotiator.d.ts
3255
3272
  /**
@@ -3804,8 +3821,8 @@ declare function createFlowServer(): Effect.Effect<{
3804
3821
  cancelFlow: (jobId: string, clientId: string | null) => Effect.Effect<FlowJob, UploadistaError, never>;
3805
3822
  subscribeToFlowEvents: (jobId: string, connection: WebSocketConnection) => Effect.Effect<void, UploadistaError, never>;
3806
3823
  unsubscribeFromFlowEvents: (jobId: string) => Effect.Effect<void, UploadistaError, never>;
3807
- }, never, UploadServer | FlowEventEmitter | FlowJobKVStore | FlowProvider>;
3808
- declare const flowServer: Layer.Layer<FlowServer, never, UploadServer | FlowEventEmitter | FlowJobKVStore | FlowProvider>;
3824
+ }, never, UploadServer | FlowProvider | FlowJobKVStore | FlowEventEmitter>;
3825
+ declare const flowServer: Layer.Layer<FlowServer, never, UploadServer | FlowProvider | FlowJobKVStore | FlowEventEmitter>;
3809
3826
  type FlowServerLayer = typeof flowServer;
3810
3827
  //#endregion
3811
3828
  //#region src/flow/nodes/input-node.d.ts
@@ -3946,8 +3963,8 @@ interface TransformNodeConfig {
3946
3963
  name: string;
3947
3964
  /** Description of what the node does */
3948
3965
  description: string;
3949
- /** Optional node type ID for result type registration */
3950
- nodeTypeId?: string;
3966
+ /** Optional output type ID from outputTypeRegistry for result type registration */
3967
+ outputTypeId?: string;
3951
3968
  /**
3952
3969
  * Whether to keep this node's output as a flow result even if it has outgoing edges.
3953
3970
  * When true, the node's output will be included in the final flow outputs alongside topology sinks.
@@ -4016,7 +4033,7 @@ declare function createTransformNode({
4016
4033
  id,
4017
4034
  name,
4018
4035
  description,
4019
- nodeTypeId,
4036
+ outputTypeId,
4020
4037
  keepOutput,
4021
4038
  transform
4022
4039
  }: TransformNodeConfig): Effect.Effect<FlowNodeData & {
@@ -6227,5 +6244,5 @@ type ResolvedUploadMetadata = {
6227
6244
  };
6228
6245
  declare function resolveUploadMetadata(metadata: FileMetadata): ResolvedUploadMetadata;
6229
6246
  //#endregion
6230
- export { VideoPluginShape as $, MiddlewareServiceLive as $n, TypedKvStore as $r, DocumentPluginLayer as $t, isOcrOutput as A, FlowEventNodeResponse as Ai, FlowServerShape as An, ValidationResult as Ar, brightnessTransformSchema as At, PluginLayer as B, uploadFileSchema as Bi, UploadStrategyNegotiator as Bn, DataStoreCapabilities as Br, transformImageParamsSchema as Bt, getFirstOutputByType as C, FlowEventFlowPause as Ci, inputDataSchema as Cn, STORAGE_OUTPUT_TYPE_ID as Cr, SharpenTransform as Ct, isFinalizeOperation as D, FlowEventNodeEnd as Di, FlowServer as Dn, FlowTypeRegistry as Dr, TransformationType as Dt, hasOutputOfType as E, FlowEventJobStart as Ei, FlowProviderShape as En, ocrOutputSchema as Er, Transformation as Et, RemoveBackgroundParams as F, ConditionValue as Fi, FlowJob as Fn, FlowExecutionResult as Fr, resizeTransformSchema as Ft, ZipPluginShape as G, createUploadServer as Gn, UploadFileDataStoresShape as Gr, OptimizeParams as Gt, ZipParams as H, UploadServer as Hn, DataStoreWriteOptions as Hr, watermarkTransformSchema as Ht, removeBackgroundParamsSchema as I, NodeType as Ii, FlowJobStatus as In, createFlowWithSchema as Ir, rotateTransformSchema as It, VirusScanPlugin as J, detectMimeType as Jn, isDataStore as Jr, ImageAiPlugin as Jt, ScanMetadata as K, uploadServer as Kn, UploadStrategy as Kr, optimizeParamsSchema as Kt, DescribeImageParams as L, createFlowNode as Li, FlowJobTask as Ln, getFlowData as Lr, sepiaTransformSchema as Lt, isUploadFile as M, FlowEventNodeStart as Mi, WaitUntilCallback as Mn, validateFlowInput as Mr, flipTransformSchema as Mt, isUploadOperation as N, ConditionField as Ni, createFlowServer as Nn, Flow as Nr, grayscaleTransformSchema as Nt, isImageDescriptionOutput as O, FlowEventNodeError as Oi, FlowServerLayer as On, NodeTypeCategory as Or, WatermarkTransform as Ot, isUrlOperation as P, ConditionOperator as Pi, flowServer as Pn, FlowData as Pr, logoTransformSchema as Pt, VideoPluginLayer as Q, MiddlewareService as Qn, KvStore as Qr, DocumentPlugin as Qt, describeImageParamsSchema as R, getNodeData as Ri, FlowJobTaskStatus as Rn, BufferedUploadFileDataStore as Rr, sharpenTransformSchema as Rt, filterOutputsByType as S, FlowEventFlowError as Si, createInputNode as Sn, OcrOutput as Sr, SepiaTransform as St, getSingleOutputByType as T, FlowEventJobEnd as Ti, FlowProvider as Tn, imageDescriptionOutputSchema as Tr, TransformImageParams as Tt, ZipPlugin as U, UploadServerOptions as Un, UploadFileDataStore as Ur, ResizeParams as Ut, ZipInput as V, UploadStrategyOptions as Vn, DataStoreConfig as Vr, transformationSchema as Vt, ZipPluginLayer as W, UploadServerShape as Wn, UploadFileDataStores as Wr, resizeParamsSchema as Wt, VirusScanPluginShape as X, MiddlewareContext as Xn, BaseKvStoreService as Xr, ImageAiPluginShape as Xt, VirusScanPluginLayer as Y, Middleware as Yn, BaseKvStore as Yr, ImageAiPluginLayer as Yt, VideoPlugin as Z, MiddlewareNext as Zn, FlowJobKVStore as Zr, DocumentMetadata as Zt, ExtractLayerService as _, waitingNodeExecution as _i, ParallelSchedulerConfig as _n, EventBroadcaster as _r, GrayscaleTransform as _t, FlowInputMap as a, createFlowEdge as ai, DocumentAiPlugin as an, FlowEventEmitter as ar, resizeVideoParamsSchema as at, FlowCondition as b, FlowEventFlowCancel as bi, InputData as bn, ImageDescriptionOutput as br, ResizeTransform as bt, FlowRequirements as c, FlowConfig as ci, OcrParams as cn, eventToMessageSerializer as cr, DescribeVideoMetadata as ct, TypedFlow as d, NodeConnectionValidator as di, OcrTaskType as dn, WebSocketConnection as dr, ImagePluginLayer as dt, UploadFileKVStore as ei, DocumentPluginShape as en, InputFile as er, TrimVideoParams as et, TypedFlowConfig as f, NodeExecutionResult as fi, CredentialProvider as fn, WebSocketMessage as fr, ImagePluginShape as ft, ExtractEffectRequirements as g, completeNodeExecution as gi, ParallelScheduler as gn, uploadEventSchema as gr, FlipTransform as gt, ExtractEffectError as h, TypedOutput as hi, ExecutionLevel as hn, UploadEventType as hr, ContrastTransform as ht, runArgsSchema as i, FlowEdge as ii, DocumentAiContext as in, EventEmitter as ir, ResizeVideoParams as it, isStorageOutput as j, FlowEventNodeResume as ji, FlowWaitUntil as jn, flowTypeRegistry as jr, contrastTransformSchema as jt, isInitOperation as k, FlowEventNodePause as ki, FlowServerOptions as kn, NodeTypeDefinition as kr, blurTransformSchema as kt, NodeDefinition as l, FlowNode as li, OcrResolution as ln, flowEventEmitter as lr, describeVideoMetadataSchema as lt, createFlow as m, TypeCompatibilityChecker as mi, CredentialProviderShape as mn, UploadEvent as mr, BrightnessTransform as mt, resolveUploadMetadata as n, jsonSerializer as ni, SplitPdfParams as nn, BaseEventEmitter as nr, TranscodeVideoParams as nt, FlowOutputMap as o, BuiltInTypedOutput as oi, DocumentAiPluginLayer as on, TypedEventEmitter as or, ExtractFrameVideoParams as ot, TypedFlowEdge as p, NodeTypeMap as pi, CredentialProviderLayer as pn, webSocketMessageSchema as pr, BlurTransform as pt, ScanResult as q, compareMimeTypes as qn, createDataStoreLayer as qr, ImageAiContext as qt, RunArgs as r, uploadFileKvStore as ri, SplitPdfResult as rn, BaseEventEmitterService as rr, transcodeVideoParamsSchema as rt, FlowPluginRequirements as s, CustomTypedOutput as si, DocumentAiPluginShape as sn, UploadEventEmitter as sr, extractFrameVideoParamsSchema as st, ResolvedUploadMetadata as t, flowJobKvStore as ti, MergePdfParams as tn, inputFileSchema as tr, trimVideoParamsSchema as tt, NodeDefinitionsRecord as u, FlowNodeData as ui, OcrResult as un, uploadEventEmitter as ur, ImagePlugin as ut, ExtractLayerServices as v, EventType as vi, TransformNodeConfig as vn, EventBroadcasterService as vr, LogoTransform as vt, getOutputByNodeId as w, FlowEventFlowStart as wi, inputNodeParamsSchema as wn, STREAMING_INPUT_TYPE_ID as wr, TextTransform as wt, createTypeGuard as x, FlowEventFlowEnd as xi, InputNodeParams as xn, OCR_OUTPUT_TYPE_ID as xr, RotateTransform as xt, ResolveEffect as y, FlowEvent as yi, createTransformNode as yn, IMAGE_DESCRIPTION_OUTPUT_TYPE_ID as yr, OverlayPosition as yt, Plugin as z, UploadFile as zi, NegotiatedStrategy as zn, DataStore as zr, textTransformSchema as zt };
6231
- //# sourceMappingURL=index-BQ5luyME.d.cts.map
6247
+ export { VideoPluginShape as $, MiddlewareServiceLive as $n, BaseKvStore as $r, DocumentPluginLayer as $t, isOcrOutput as A, FlowEventJobStart as Ai, FlowServerShape as An, outputTypeRegistry as Ar, brightnessTransformSchema as At, PluginLayer as B, NodeType as Bi, UploadStrategyNegotiator as Bn, createFlowWithSchema as Br, transformImageParamsSchema as Bt, getFirstOutputByType as C, FlowEvent as Ci, inputDataSchema as Cn, STORAGE_OUTPUT_TYPE_ID as Cr, SharpenTransform as Ct, isFinalizeOperation as D, FlowEventFlowPause as Di, FlowServer as Dn, OutputTypeDefinition as Dr, TransformationType as Dt, hasOutputOfType as E, FlowEventFlowError as Ei, FlowProviderShape as En, ocrOutputSchema as Er, Transformation as Et, RemoveBackgroundParams as F, FlowEventNodeResume as Fi, FlowJob as Fn, inputTypeRegistry as Fr, resizeTransformSchema as Ft, ZipPluginShape as G, createUploadServer as Gn, DataStoreConfig as Gr, OptimizeParams as Gt, ZipParams as H, getNodeData as Hi, UploadServer as Hn, BufferedUploadFileDataStore as Hr, watermarkTransformSchema as Ht, removeBackgroundParamsSchema as I, FlowEventNodeStart as Ii, FlowJobStatus as In, validateFlowInput as Ir, rotateTransformSchema as It, VirusScanPlugin as J, detectMimeType as Jn, UploadFileDataStores as Jr, ImageAiPlugin as Jt, ScanMetadata as K, uploadServer as Kn, DataStoreWriteOptions as Kr, optimizeParamsSchema as Kt, DescribeImageParams as L, ConditionField as Li, FlowJobTask as Ln, Flow as Lr, sepiaTransformSchema as Lt, isUploadFile as M, FlowEventNodeError as Mi, WaitUntilCallback as Mn, InputTypeDefinition as Mr, flipTransformSchema as Mt, isUploadOperation as N, FlowEventNodePause as Ni, createFlowServer as Nn, InputTypeRegistry as Nr, grayscaleTransformSchema as Nt, isImageDescriptionOutput as O, FlowEventFlowStart as Oi, FlowServerLayer as On, OutputTypeRegistry as Or, WatermarkTransform as Ot, isUrlOperation as P, FlowEventNodeResponse as Pi, flowServer as Pn, InputValidationResult as Pr, logoTransformSchema as Pt, VideoPluginLayer as Q, MiddlewareService as Qn, isDataStore as Qr, DocumentPlugin as Qt, describeImageParamsSchema as R, ConditionOperator as Ri, FlowJobTaskStatus as Rn, FlowData as Rr, sharpenTransformSchema as Rt, filterOutputsByType as S, EventType as Si, createInputNode as Sn, OcrOutput as Sr, SepiaTransform as St, getSingleOutputByType as T, FlowEventFlowEnd as Ti, FlowProvider as Tn, imageDescriptionOutputSchema as Tr, TransformImageParams as Tt, ZipPlugin as U, UploadFile as Ui, UploadServerOptions as Un, DataStore as Ur, ResizeParams as Ut, ZipInput as V, createFlowNode as Vi, UploadStrategyOptions as Vn, getFlowData as Vr, transformationSchema as Vt, ZipPluginLayer as W, uploadFileSchema as Wi, UploadServerShape as Wn, DataStoreCapabilities as Wr, resizeParamsSchema as Wt, VirusScanPluginShape as X, MiddlewareContext as Xn, UploadStrategy as Xr, ImageAiPluginShape as Xt, VirusScanPluginLayer as Y, Middleware as Yn, UploadFileDataStoresShape as Yr, ImageAiPluginLayer as Yt, VideoPlugin as Z, MiddlewareNext as Zn, createDataStoreLayer as Zr, DocumentMetadata as Zt, ExtractLayerService as _, NodeTypeMap as _i, ParallelSchedulerConfig as _n, EventBroadcaster as _r, GrayscaleTransform as _t, FlowInputMap as a, flowJobKvStore as ai, DocumentAiPlugin as an, FlowEventEmitter as ar, resizeVideoParamsSchema as at, FlowCondition as b, completeNodeExecution as bi, InputData as bn, ImageDescriptionOutput as br, ResizeTransform as bt, FlowRequirements as c, FlowEdge as ci, OcrParams as cn, eventToMessageSerializer as cr, DescribeVideoMetadata as ct, TypedFlow as d, CustomTypedOutput as di, OcrTaskType as dn, WebSocketConnection as dr, ImagePluginLayer as dt, BaseKvStoreService as ei, DocumentPluginShape as en, InputFile as er, TrimVideoParams as et, TypedFlowConfig as f, FlowConfig as fi, CredentialProvider as fn, WebSocketMessage as fr, ImagePluginShape as ft, ExtractEffectRequirements as g, NodeExecutionResult as gi, ParallelScheduler as gn, uploadEventSchema as gr, FlipTransform as gt, ExtractEffectError as h, NodeConnectionValidator as hi, ExecutionLevel as hn, UploadEventType as hr, ContrastTransform as ht, runArgsSchema as i, UploadFileKVStore as ii, DocumentAiContext as in, EventEmitter as ir, ResizeVideoParams as it, isStorageOutput as j, FlowEventNodeEnd as ji, FlowWaitUntil as jn, validateFlowOutput as jr, contrastTransformSchema as jt, isInitOperation as k, FlowEventJobEnd as ki, FlowServerOptions as kn, OutputValidationResult as kr, blurTransformSchema as kt, NodeDefinition as l, createFlowEdge as li, OcrResolution as ln, flowEventEmitter as lr, describeVideoMetadataSchema as lt, createFlow as m, FlowNodeData as mi, CredentialProviderShape as mn, UploadEvent as mr, BrightnessTransform as mt, resolveUploadMetadata as n, KvStore as ni, SplitPdfParams as nn, BaseEventEmitter as nr, TranscodeVideoParams as nt, FlowOutputMap as o, jsonSerializer as oi, DocumentAiPluginLayer as on, TypedEventEmitter as or, ExtractFrameVideoParams as ot, TypedFlowEdge as p, FlowNode as pi, CredentialProviderLayer as pn, webSocketMessageSchema as pr, BlurTransform as pt, ScanResult as q, compareMimeTypes as qn, UploadFileDataStore as qr, ImageAiContext as qt, RunArgs as r, TypedKvStore as ri, SplitPdfResult as rn, BaseEventEmitterService as rr, transcodeVideoParamsSchema as rt, FlowPluginRequirements as s, uploadFileKvStore as si, DocumentAiPluginShape as sn, UploadEventEmitter as sr, extractFrameVideoParamsSchema as st, ResolvedUploadMetadata as t, FlowJobKVStore as ti, MergePdfParams as tn, inputFileSchema as tr, trimVideoParamsSchema as tt, NodeDefinitionsRecord as u, BuiltInTypedOutput as ui, OcrResult as un, uploadEventEmitter as ur, ImagePlugin as ut, ExtractLayerServices as v, TypeCompatibilityChecker as vi, TransformNodeConfig as vn, EventBroadcasterService as vr, LogoTransform as vt, getOutputByNodeId as w, FlowEventFlowCancel as wi, inputNodeParamsSchema as wn, STREAMING_INPUT_TYPE_ID as wr, TextTransform as wt, createTypeGuard as x, waitingNodeExecution as xi, InputNodeParams as xn, OCR_OUTPUT_TYPE_ID as xr, RotateTransform as xt, ResolveEffect as y, TypedOutput as yi, createTransformNode as yn, IMAGE_DESCRIPTION_OUTPUT_TYPE_ID as yr, OverlayPosition as yt, Plugin as z, ConditionValue as zi, NegotiatedStrategy as zn, FlowExecutionResult as zr, textTransformSchema as zt };
6248
+ //# sourceMappingURL=index-D-0Qqv6Q.d.cts.map