UNPKG

@mastra/core

Version:
1 lines 2.83 kB
{"version":3,"file":"file-BdP8crPU.cjs","names":["isUrlString"],"sources":["../src/stream/aisdk/v5/file.ts"],"sourcesContent":["import { convertBase64ToUint8Array, convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils-v5';\nimport { isUrlString } from './compat/content';\n\n/**\n * A generated file.\n */\nexport interface GeneratedFile {\n /**\n File as a base64 encoded string.\n */\n readonly base64: string;\n\n /**\n File as a Uint8Array.\n */\n readonly uint8Array: Uint8Array;\n\n /**\n The IANA media type of the file.\n \n @see https://www.iana.org/assignments/media-types/media-types.xhtml\n */\n readonly mediaType: string;\n}\n\nexport class DefaultGeneratedFile implements GeneratedFile {\n private base64Data: string | undefined;\n private uint8ArrayData: Uint8Array | undefined;\n\n readonly mediaType: string;\n\n constructor({ data, mediaType }: { data: string | Uint8Array; mediaType: string }) {\n const isUint8Array = data instanceof Uint8Array;\n this.base64Data = isUint8Array ? undefined : data;\n this.uint8ArrayData = isUint8Array ? data : undefined;\n this.mediaType = mediaType;\n }\n\n // lazy conversion with caching to avoid unnecessary conversion overhead:\n get base64() {\n if (this.base64Data == null) {\n this.base64Data = convertUint8ArrayToBase64(this.uint8ArrayData!);\n }\n return this.base64Data;\n }\n\n // lazy conversion with caching to avoid unnecessary conversion overhead:\n get uint8Array() {\n if (this.uint8ArrayData == null) {\n // URL-backed generated files (AI SDK v7 models) store the URL string in\n // place of base64. Fail loudly instead of decoding the URL as base64.\n if (isUrlString(this.base64Data!)) {\n throw new Error(\n `Cannot convert URL-backed generated file to Uint8Array. Download the file from ${this.base64Data} instead.`,\n );\n }\n this.uint8ArrayData = convertBase64ToUint8Array(this.base64Data!);\n }\n return this.uint8ArrayData;\n }\n}\n\nexport class DefaultGeneratedFileWithType extends DefaultGeneratedFile {\n readonly type = 'file';\n\n constructor(options: { data: string | Uint8Array; mediaType: string }) {\n super(options);\n }\n}\n"],"mappings":";;;AAyBA,IAAa,uBAAb,MAA2D;CACzD;CACA;CAEA;CAEA,YAAY,EAAE,MAAM,aAA+D;EACjF,MAAM,eAAe,gBAAgB;EACrC,KAAK,aAAa,eAAe,KAAA,IAAY;EAC7C,KAAK,iBAAiB,eAAe,OAAO,KAAA;EAC5C,KAAK,YAAY;CACnB;CAGA,IAAI,SAAS;EACX,IAAI,KAAK,cAAc,MACrB,KAAK,cAAA,GAAA,0BAAA,0BAAA,CAAuC,KAAK,cAAe;EAElE,OAAO,KAAK;CACd;CAGA,IAAI,aAAa;EACf,IAAI,KAAK,kBAAkB,MAAM;GAG/B,IAAIA,gBAAAA,YAAY,KAAK,UAAW,GAC9B,MAAM,IAAI,MACR,kFAAkF,KAAK,WAAW,UACpG;GAEF,KAAK,kBAAA,GAAA,0BAAA,0BAAA,CAA2C,KAAK,UAAW;EAClE;EACA,OAAO,KAAK;CACd;AACF;AAEA,IAAa,+BAAb,cAAkD,qBAAqB;CACrE,OAAgB;CAEhB,YAAY,SAA2D;EACrE,MAAM,OAAO;CACf;AACF"}