ugcinc 4.1.25 → 4.1.27

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.
@@ -1,6 +1,6 @@
1
- import type { DeduplicationLevel } from '../../render/types';
1
+ import type { DeduplicationInput } from '../../render/types';
2
2
  declare const definition: import("./types").NodeDefinition<"generator", {
3
- deduplication: DeduplicationLevel;
3
+ deduplication: DeduplicationInput;
4
4
  outputMode: "per-input";
5
5
  selectionMode: null;
6
6
  }, false>;
@@ -1,6 +1,19 @@
1
1
  type ImageGenerationTextModel = 'fal-ai/gemini-3-pro-image-preview' | 'fal-ai/nano-banana-pro' | 'fal-ai/nano-banana' | 'fal-ai/gpt-image-1/text-to-image';
2
2
  type ImageGenerationEditModel = 'fal-ai/gemini-3-pro-image-preview/edit' | 'fal-ai/nano-banana-pro/edit' | 'fal-ai/nano-banana/edit' | 'fal-ai/gpt-image-1/edit-image';
3
3
  type ImageGenerationModel = ImageGenerationTextModel | ImageGenerationEditModel;
4
+ type ImageModelProvider = 'google' | 'nano-banana' | 'openai';
5
+ interface ImageModelOption {
6
+ id: ImageGenerationModel;
7
+ name: string;
8
+ provider: ImageModelProvider;
9
+ isEditModel: boolean;
10
+ }
11
+ interface AspectRatioOption {
12
+ id: string;
13
+ name: string;
14
+ }
15
+ declare const ALL_IMAGE_MODELS: ImageModelOption[];
16
+ declare const IMAGE_ASPECT_RATIOS: AspectRatioOption[];
4
17
  declare function isEditModel(model: ImageGenerationModel): model is ImageGenerationEditModel;
5
18
  declare const definition: import("./types").NodeDefinition<"generator", {
6
19
  model: ImageGenerationModel;
@@ -11,6 +24,6 @@ declare const definition: import("./types").NodeDefinition<"generator", {
11
24
  selectionMode: null;
12
25
  }, false>;
13
26
  export default definition;
14
- export { isEditModel };
15
- export type { ImageGenerationTextModel, ImageGenerationEditModel, ImageGenerationModel };
27
+ export { isEditModel, ALL_IMAGE_MODELS, IMAGE_ASPECT_RATIOS };
28
+ export type { ImageGenerationTextModel, ImageGenerationEditModel, ImageGenerationModel, ImageModelProvider, ImageModelOption, AspectRatioOption };
16
29
  export type GenerateImageNodeConfig = typeof definition.defaults;
@@ -1,7 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IMAGE_ASPECT_RATIOS = exports.ALL_IMAGE_MODELS = void 0;
3
4
  exports.isEditModel = isEditModel;
4
5
  const types_1 = require("./types");
6
+ const ALL_IMAGE_MODELS = [
7
+ // Google Gemini
8
+ { id: 'fal-ai/gemini-3-pro-image-preview', name: 'Gemini 3 Pro', provider: 'google', isEditModel: false },
9
+ { id: 'fal-ai/gemini-3-pro-image-preview/edit', name: 'Gemini 3 Pro Edit', provider: 'google', isEditModel: true },
10
+ // Nano Banana Pro
11
+ { id: 'fal-ai/nano-banana-pro', name: 'Nano Banana Pro', provider: 'nano-banana', isEditModel: false },
12
+ { id: 'fal-ai/nano-banana-pro/edit', name: 'Nano Banana Pro Edit', provider: 'nano-banana', isEditModel: true },
13
+ // Nano Banana
14
+ { id: 'fal-ai/nano-banana', name: 'Nano Banana', provider: 'nano-banana', isEditModel: false },
15
+ { id: 'fal-ai/nano-banana/edit', name: 'Nano Banana Edit', provider: 'nano-banana', isEditModel: true },
16
+ // OpenAI GPT Image
17
+ { id: 'fal-ai/gpt-image-1/text-to-image', name: 'GPT Image 1', provider: 'openai', isEditModel: false },
18
+ { id: 'fal-ai/gpt-image-1/edit-image', name: 'GPT Image 1 Edit', provider: 'openai', isEditModel: true },
19
+ ];
20
+ exports.ALL_IMAGE_MODELS = ALL_IMAGE_MODELS;
21
+ const IMAGE_ASPECT_RATIOS = [
22
+ { id: '1:1', name: '1:1 (Square)' },
23
+ { id: '16:9', name: '16:9 (Landscape)' },
24
+ { id: '9:16', name: '9:16 (Portrait)' },
25
+ { id: '4:3', name: '4:3' },
26
+ { id: '3:4', name: '3:4' },
27
+ { id: '21:9', name: '21:9 (Ultrawide)' },
28
+ { id: '3:2', name: '3:2' },
29
+ { id: '2:3', name: '2:3' },
30
+ ];
31
+ exports.IMAGE_ASPECT_RATIOS = IMAGE_ASPECT_RATIOS;
5
32
  function isEditModel(model) {
6
33
  return model.includes('/edit') || model.includes('/edit-image');
7
34
  }
@@ -1,7 +1,29 @@
1
- type VideoGenerationTextToVideoModel = 'fal-ai/veo3.1' | 'fal-ai/veo3' | 'fal-ai/veo3/fast' | 'fal-ai/kling-video/v2.6/pro/text-to-video' | 'fal-ai/kling-video/v2.5/pro/text-to-video' | 'fal-ai/luma-dream-machine/ray-2' | 'fal-ai/luma-dream-machine/ray-2-flash' | 'fal-ai/minimax/hailuo-2.3/pro/text-to-video' | 'wan/v2.6/text-to-video' | 'fal-ai/sora-2/text-to-video';
2
- type VideoGenerationImageToVideoModel = 'fal-ai/veo3.1/image-to-video' | 'fal-ai/veo3/image-to-video' | 'fal-ai/kling-video/v2.6/pro/image-to-video' | 'fal-ai/kling-video/v2.5/pro/image-to-video' | 'fal-ai/luma-dream-machine/ray-2/image-to-video' | 'fal-ai/luma-dream-machine/ray-2-flash/image-to-video' | 'fal-ai/minimax/hailuo-2.3/pro/image-to-video' | 'wan/v2.6/image-to-video' | 'fal-ai/sora-2/image-to-video/pro';
1
+ type VideoGenerationTextToVideoModel = 'fal-ai/veo3.1' | 'fal-ai/veo3' | 'fal-ai/veo3/fast' | 'fal-ai/kling-video/v2.6/pro/text-to-video' | 'fal-ai/kling-video/v2.5/pro/text-to-video' | 'fal-ai/minimax/hailuo-2.3/pro/text-to-video' | 'wan/v2.6/text-to-video' | 'fal-ai/sora-2/text-to-video';
2
+ type VideoGenerationImageToVideoModel = 'fal-ai/veo3.1/image-to-video' | 'fal-ai/veo3/image-to-video' | 'fal-ai/kling-video/v2.6/pro/image-to-video' | 'fal-ai/kling-video/v2.5/pro/image-to-video' | 'fal-ai/minimax/hailuo-2.3/pro/image-to-video' | 'wan/v2.6/image-to-video' | 'fal-ai/sora-2/image-to-video/pro';
3
3
  type VideoGenerationModel = VideoGenerationTextToVideoModel | VideoGenerationImageToVideoModel;
4
+ type VideoModelProvider = 'google' | 'kling' | 'minimax' | 'wan' | 'openai';
5
+ type VideoModelTier = 'premium' | 'standard' | 'fast';
6
+ interface VideoAspectRatioOption {
7
+ id: string;
8
+ name: string;
9
+ }
10
+ interface VideoDurationOption {
11
+ id: number;
12
+ name: string;
13
+ }
14
+ interface VideoModelOption {
15
+ id: VideoGenerationModel;
16
+ name: string;
17
+ provider: VideoModelProvider;
18
+ isImageToVideo: boolean;
19
+ tier: VideoModelTier;
20
+ aspectRatios: VideoAspectRatioOption[];
21
+ durations: VideoDurationOption[];
22
+ }
23
+ declare const ALL_VIDEO_MODELS: VideoModelOption[];
4
24
  declare function isImageToVideoModel(model: VideoGenerationModel): model is VideoGenerationImageToVideoModel;
25
+ declare function getModelAspectRatios(modelId: string): VideoAspectRatioOption[];
26
+ declare function getModelDurations(modelId: string): VideoDurationOption[];
5
27
  declare const definition: import("./types").NodeDefinition<"generator", {
6
28
  model: VideoGenerationModel;
7
29
  aspectRatio: string;
@@ -11,6 +33,6 @@ declare const definition: import("./types").NodeDefinition<"generator", {
11
33
  selectionMode: null;
12
34
  }, false>;
13
35
  export default definition;
14
- export { isImageToVideoModel };
15
- export type { VideoGenerationTextToVideoModel, VideoGenerationImageToVideoModel, VideoGenerationModel };
36
+ export { isImageToVideoModel, ALL_VIDEO_MODELS, getModelAspectRatios, getModelDurations };
37
+ export type { VideoGenerationTextToVideoModel, VideoGenerationImageToVideoModel, VideoGenerationModel, VideoModelProvider, VideoModelTier, VideoAspectRatioOption, VideoDurationOption, VideoModelOption, };
16
38
  export type GenerateVideoNodeConfig = typeof definition.defaults;
@@ -1,10 +1,67 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ALL_VIDEO_MODELS = void 0;
3
4
  exports.isImageToVideoModel = isImageToVideoModel;
5
+ exports.getModelAspectRatios = getModelAspectRatios;
6
+ exports.getModelDurations = getModelDurations;
4
7
  const types_1 = require("./types");
8
+ // Common aspect ratio options
9
+ const LANDSCAPE_PORTRAIT_SQUARE = [
10
+ { id: '16:9', name: '16:9 (Landscape)' },
11
+ { id: '9:16', name: '9:16 (Portrait)' },
12
+ { id: '1:1', name: '1:1 (Square)' },
13
+ ];
14
+ const LANDSCAPE_PORTRAIT = [
15
+ { id: '16:9', name: '16:9 (Landscape)' },
16
+ { id: '9:16', name: '9:16 (Portrait)' },
17
+ ];
18
+ // Common duration options
19
+ const DURATIONS_5_10 = [
20
+ { id: 5, name: '5 seconds' },
21
+ { id: 10, name: '10 seconds' },
22
+ ];
23
+ const DURATIONS_5 = [
24
+ { id: 5, name: '5 seconds' },
25
+ ];
26
+ const DURATIONS_8 = [
27
+ { id: 8, name: '8 seconds' },
28
+ ];
29
+ const ALL_VIDEO_MODELS = [
30
+ // Google Veo 3.1
31
+ { id: 'fal-ai/veo3.1', name: 'Veo 3.1', provider: 'google', isImageToVideo: false, tier: 'premium', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_8 },
32
+ { id: 'fal-ai/veo3.1/image-to-video', name: 'Veo 3.1 Image', provider: 'google', isImageToVideo: true, tier: 'premium', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_8 },
33
+ // Google Veo 3
34
+ { id: 'fal-ai/veo3', name: 'Veo 3', provider: 'google', isImageToVideo: false, tier: 'premium', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_8 },
35
+ { id: 'fal-ai/veo3/fast', name: 'Veo 3 Fast', provider: 'google', isImageToVideo: false, tier: 'fast', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_8 },
36
+ { id: 'fal-ai/veo3/image-to-video', name: 'Veo 3 Image', provider: 'google', isImageToVideo: true, tier: 'premium', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_8 },
37
+ // Kling 2.6
38
+ { id: 'fal-ai/kling-video/v2.6/pro/text-to-video', name: 'Kling 2.6 Pro', provider: 'kling', isImageToVideo: false, tier: 'premium', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_5_10 },
39
+ { id: 'fal-ai/kling-video/v2.6/pro/image-to-video', name: 'Kling 2.6 Pro Image', provider: 'kling', isImageToVideo: true, tier: 'premium', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_5_10 },
40
+ // Kling 2.5
41
+ { id: 'fal-ai/kling-video/v2.5/pro/text-to-video', name: 'Kling 2.5 Pro', provider: 'kling', isImageToVideo: false, tier: 'standard', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_5_10 },
42
+ { id: 'fal-ai/kling-video/v2.5/pro/image-to-video', name: 'Kling 2.5 Pro Image', provider: 'kling', isImageToVideo: true, tier: 'standard', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_5_10 },
43
+ // MiniMax Hailuo
44
+ { id: 'fal-ai/minimax/hailuo-2.3/pro/text-to-video', name: 'Hailuo 2.3 Pro', provider: 'minimax', isImageToVideo: false, tier: 'premium', aspectRatios: LANDSCAPE_PORTRAIT, durations: DURATIONS_5 },
45
+ { id: 'fal-ai/minimax/hailuo-2.3/pro/image-to-video', name: 'Hailuo 2.3 Pro Image', provider: 'minimax', isImageToVideo: true, tier: 'premium', aspectRatios: LANDSCAPE_PORTRAIT, durations: DURATIONS_5 },
46
+ // Wan 2.6
47
+ { id: 'wan/v2.6/text-to-video', name: 'Wan 2.6', provider: 'wan', isImageToVideo: false, tier: 'standard', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_5 },
48
+ { id: 'wan/v2.6/image-to-video', name: 'Wan 2.6 Image', provider: 'wan', isImageToVideo: true, tier: 'standard', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_5 },
49
+ // Sora
50
+ { id: 'fal-ai/sora-2/text-to-video', name: 'Sora 2', provider: 'openai', isImageToVideo: false, tier: 'premium', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_5_10 },
51
+ { id: 'fal-ai/sora-2/image-to-video/pro', name: 'Sora 2 Pro Image', provider: 'openai', isImageToVideo: true, tier: 'premium', aspectRatios: LANDSCAPE_PORTRAIT_SQUARE, durations: DURATIONS_5_10 },
52
+ ];
53
+ exports.ALL_VIDEO_MODELS = ALL_VIDEO_MODELS;
5
54
  function isImageToVideoModel(model) {
6
55
  return model.includes('/image-to-video');
7
56
  }
57
+ function getModelAspectRatios(modelId) {
58
+ const model = ALL_VIDEO_MODELS.find(m => m.id === modelId);
59
+ return model?.aspectRatios ?? LANDSCAPE_PORTRAIT_SQUARE;
60
+ }
61
+ function getModelDurations(modelId) {
62
+ const model = ALL_VIDEO_MODELS.find(m => m.id === modelId);
63
+ return model?.durations ?? DURATIONS_5_10;
64
+ }
8
65
  const definition = (0, types_1.defineNode)({
9
66
  nodeId: 'generate-video',
10
67
  label: 'Generate Video',
@@ -103,7 +103,7 @@ export declare const nodeDefinitions: {
103
103
  selectionMode: null;
104
104
  }, false>;
105
105
  readonly deduplicate: NodeDefinition<"generator", {
106
- deduplication: import("../..").DeduplicationLevel;
106
+ deduplication: import("../..").DeduplicationInput;
107
107
  outputMode: "per-input";
108
108
  selectionMode: null;
109
109
  }, false>;
package/dist/index.d.ts CHANGED
@@ -15,8 +15,8 @@ export { MediaClient } from './media';
15
15
  export { CommentsClient } from './comments';
16
16
  export { areTypesCompatible, computePortsForNode, getAllNodes, getNodeByType, getOutputSchema, createNode, deriveConnections, addConnection, removeConnection, removeNodeConnections, cleanupStaleConnections, getForEachContext, checkCrossContextViolation, validateWorkflow, getErrorNodeIds, getPortErrorsForNode, hasMissingTriggerError, hasMissingTerminalError, getWorkflowOutputSchema, type WorkflowOutputSchemaEntry, resolveNodePreview, } from './graph-controller';
17
17
  export { nodeDefinitions, internalNodeTypes, isAsyncExecutor, formatPortType } from './automations/types';
18
- export { isEditModel } from './automations/nodes/generate-image';
19
- export { isImageToVideoModel } from './automations/nodes/generate-video';
18
+ export { isEditModel, ALL_IMAGE_MODELS, IMAGE_ASPECT_RATIOS } from './automations/nodes/generate-image';
19
+ export { isImageToVideoModel, ALL_VIDEO_MODELS, getModelAspectRatios, getModelDurations } from './automations/nodes/generate-video';
20
20
  export { selectFromPool } from './automations/selection';
21
21
  export { portId, isValidPortId, portIdToTitle, normalizeToPortId, PortIdSchema } from './port-id';
22
22
  export type { PortId } from './port-id';
@@ -46,8 +46,8 @@ export type { DeduplicateNodeConfig } from './automations/nodes/deduplicate';
46
46
  export type { DestructureNodeConfig, DestructureSelection, IndexExpression, } from './automations/nodes/destructure';
47
47
  export { indexExpressionToIndexes } from './automations/nodes/destructure';
48
48
  export type { ForEachNodeConfig, ForEachOutputProperty, ForEachInputPort, } from './automations/nodes/for-each';
49
- export type { GenerateImageNodeConfig, ImageGenerationTextModel, ImageGenerationEditModel, ImageGenerationModel, } from './automations/nodes/generate-image';
50
- export type { GenerateVideoNodeConfig, VideoGenerationTextToVideoModel, VideoGenerationImageToVideoModel, VideoGenerationModel, } from './automations/nodes/generate-video';
49
+ export type { GenerateImageNodeConfig, ImageGenerationTextModel, ImageGenerationEditModel, ImageGenerationModel, ImageModelProvider, ImageModelOption, AspectRatioOption, } from './automations/nodes/generate-image';
50
+ export type { GenerateVideoNodeConfig, VideoGenerationTextToVideoModel, VideoGenerationImageToVideoModel, VideoGenerationModel, VideoModelProvider, VideoModelTier, VideoAspectRatioOption, VideoDurationOption, VideoModelOption, } from './automations/nodes/generate-video';
51
51
  export type { IfNodeConfig, IfLogicOperator, IfBooleanInput, IfPassthroughInput, } from './automations/nodes/if';
52
52
  export { IfLogicOperators } from './automations/nodes/if';
53
53
  export type { LLMNodeConfig, LLMProvider, LLMApiKeys, } from './automations/nodes/llm';
package/dist/index.js CHANGED
@@ -5,7 +5,8 @@
5
5
  * Official TypeScript/JavaScript client for the UGC Inc API
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.prepareVideoComposerInput = exports.LLMProviders = exports.IfLogicOperators = exports.indexExpressionToIndexes = exports.prepareImageComposerInput = exports.extractTemplateVariables = exports.PortIdSchema = exports.normalizeToPortId = exports.portIdToTitle = exports.isValidPortId = exports.portId = exports.selectFromPool = exports.isImageToVideoModel = exports.isEditModel = exports.formatPortType = exports.isAsyncExecutor = exports.internalNodeTypes = exports.nodeDefinitions = exports.resolveNodePreview = exports.getWorkflowOutputSchema = exports.hasMissingTerminalError = exports.hasMissingTriggerError = exports.getPortErrorsForNode = exports.getErrorNodeIds = exports.validateWorkflow = exports.checkCrossContextViolation = exports.getForEachContext = exports.cleanupStaleConnections = exports.removeNodeConnections = exports.removeConnection = exports.addConnection = exports.deriveConnections = exports.createNode = exports.getOutputSchema = exports.getNodeByType = exports.getAllNodes = exports.computePortsForNode = exports.areTypesCompatible = exports.CommentsClient = exports.MediaClient = exports.AutomationsClient = exports.RenderClient = exports.OrganizationClient = exports.StatsClient = exports.PostsClient = exports.TasksClient = exports.AccountsClient = exports.UGCClient = void 0;
8
+ exports.indexExpressionToIndexes = exports.prepareImageComposerInput = exports.extractTemplateVariables = exports.PortIdSchema = exports.normalizeToPortId = exports.portIdToTitle = exports.isValidPortId = exports.portId = exports.selectFromPool = exports.getModelDurations = exports.getModelAspectRatios = exports.ALL_VIDEO_MODELS = exports.isImageToVideoModel = exports.IMAGE_ASPECT_RATIOS = exports.ALL_IMAGE_MODELS = exports.isEditModel = exports.formatPortType = exports.isAsyncExecutor = exports.internalNodeTypes = exports.nodeDefinitions = exports.resolveNodePreview = exports.getWorkflowOutputSchema = exports.hasMissingTerminalError = exports.hasMissingTriggerError = exports.getPortErrorsForNode = exports.getErrorNodeIds = exports.validateWorkflow = exports.checkCrossContextViolation = exports.getForEachContext = exports.cleanupStaleConnections = exports.removeNodeConnections = exports.removeConnection = exports.addConnection = exports.deriveConnections = exports.createNode = exports.getOutputSchema = exports.getNodeByType = exports.getAllNodes = exports.computePortsForNode = exports.areTypesCompatible = exports.CommentsClient = exports.MediaClient = exports.AutomationsClient = exports.RenderClient = exports.OrganizationClient = exports.StatsClient = exports.PostsClient = exports.TasksClient = exports.AccountsClient = exports.UGCClient = void 0;
9
+ exports.prepareVideoComposerInput = exports.LLMProviders = exports.IfLogicOperators = void 0;
9
10
  // =============================================================================
10
11
  // Client Exports
11
12
  // =============================================================================
@@ -72,8 +73,13 @@ Object.defineProperty(exports, "isAsyncExecutor", { enumerable: true, get: funct
72
73
  Object.defineProperty(exports, "formatPortType", { enumerable: true, get: function () { return types_1.formatPortType; } });
73
74
  var generate_image_1 = require("./automations/nodes/generate-image");
74
75
  Object.defineProperty(exports, "isEditModel", { enumerable: true, get: function () { return generate_image_1.isEditModel; } });
76
+ Object.defineProperty(exports, "ALL_IMAGE_MODELS", { enumerable: true, get: function () { return generate_image_1.ALL_IMAGE_MODELS; } });
77
+ Object.defineProperty(exports, "IMAGE_ASPECT_RATIOS", { enumerable: true, get: function () { return generate_image_1.IMAGE_ASPECT_RATIOS; } });
75
78
  var generate_video_1 = require("./automations/nodes/generate-video");
76
79
  Object.defineProperty(exports, "isImageToVideoModel", { enumerable: true, get: function () { return generate_video_1.isImageToVideoModel; } });
80
+ Object.defineProperty(exports, "ALL_VIDEO_MODELS", { enumerable: true, get: function () { return generate_video_1.ALL_VIDEO_MODELS; } });
81
+ Object.defineProperty(exports, "getModelAspectRatios", { enumerable: true, get: function () { return generate_video_1.getModelAspectRatios; } });
82
+ Object.defineProperty(exports, "getModelDurations", { enumerable: true, get: function () { return generate_video_1.getModelDurations; } });
77
83
  var selection_1 = require("./automations/selection");
78
84
  Object.defineProperty(exports, "selectFromPool", { enumerable: true, get: function () { return selection_1.selectFromPool; } });
79
85
  var port_id_1 = require("./port-id");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugcinc",
3
- "version": "4.1.25",
3
+ "version": "4.1.27",
4
4
  "description": "TypeScript/JavaScript client for the UGC Inc API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",