{"version":3,"sources":["../../../src/api/files.ts"],"sourcesContent":["import { standard } from './base/pipes'\n\nexport interface File {\n\ttype: string\n}\n\nconst isFile = (v: unknown): v is File => typeof v === 'object' && !!v && 'type' in v\nconst isMimeType = (str: string) => /^[a-zA-Z0-9!#$&^_.+-]+\\/[a-zA-Z0-9!#$&^_.+-]+$/.test(str)\n\nexport const file = <T extends File>(err = 'is not a recognized file') =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`!${context}.isFile(${input}) || !${context}.isMimeType(${input}.type)`,\n\t\t\t\t`PipeError.root('${err}', ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { isFile, isMimeType },\n\t\t\tschema: () => ({ type: 'string', format: 'binary' }),\n\t\t},\n\t)\n\nexport const image = <T extends File>(err = 'is not a recognized image file') =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`!${context}.isFile(${input}) || !${context}.isMimeType(${input}.type) || !${input}.type.startsWith('image/')`,\n\t\t\t\t`PipeError.root('${err}', ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { isFile, isMimeType },\n\t\t},\n\t)\n\nexport const audio = <T extends File>(err = 'is not a recognized audio file') =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`!${context}.isFile(${input}) || !${context}.isMimeType(${input}.type) || !${input}.type.startsWith('audio/')`,\n\t\t\t\t`PipeError.root('${err}', ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { isFile, isMimeType },\n\t\t},\n\t)\n\nexport const video = <T extends File>(err = 'is not a recognized video file') =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`!${context}.isFile(${input}) || !${context}.isMimeType(${input}.type) || !${input}.type.startsWith('video/')`,\n\t\t\t\t`PipeError.root('${err}', ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { isFile, isMimeType },\n\t\t},\n\t)\n\nexport const fileType = <T extends File>(typesFn: string | string[], err = 'is not a supported file') =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`!${context}.isFile(${input}) || !${context}.isMimeType(${input}.type) || !${context}.makeArray(${context}.typesFn).some((type) => ${input}.type === type)`,\n\t\t\t\t`PipeError.root('${err}', ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: {\n\t\t\t\tisFile,\n\t\t\t\tisMimeType,\n\t\t\t\ttypesFn,\n\t\t\t\tmakeArray: (x: any) => (Array.isArray(x) ? x : [x]),\n\t\t\t},\n\t\t},\n\t)\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,aAAAC,EAAA,UAAAC,EAAA,UAAAC,IAAA,eAAAC,EAAAP,GAAA,IAAAQ,EAAyB,wBAMzB,MAAMC,EAAUC,GAA0B,OAAOA,GAAM,UAAY,CAAC,CAACA,GAAK,SAAUA,EAC9EC,EAAcC,GAAgB,iDAAiD,KAAKA,CAAG,EAEhFT,EAAO,CAAiBU,EAAM,gCAC1C,YACC,CAAC,CAAE,MAAAC,EAAO,QAAAC,EAAS,KAAAC,CAAK,EAAGC,IAC1BA,EAAK,UACJ,IAAIF,CAAO,WAAWD,CAAK,SAASC,CAAO,eAAeD,CAAK,SAC/D,mBAAmBD,CAAG,MAAMC,CAAK,KAAKE,CAAI,GAC3C,EACD,CACC,QAAS,CAAE,OAAAP,EAAQ,WAAAE,CAAW,EAC9B,OAAQ,KAAO,CAAE,KAAM,SAAU,OAAQ,QAAS,EACnD,CACD,EAEYN,EAAQ,CAAiBQ,EAAM,sCAC3C,YACC,CAAC,CAAE,MAAAC,EAAO,QAAAC,EAAS,KAAAC,CAAK,EAAGC,IAC1BA,EAAK,UACJ,IAAIF,CAAO,WAAWD,CAAK,SAASC,CAAO,eAAeD,CAAK,cAAcA,CAAK,6BAClF,mBAAmBD,CAAG,MAAMC,CAAK,KAAKE,CAAI,GAC3C,EACD,CACC,QAAS,CAAE,OAAAP,EAAQ,WAAAE,CAAW,CAC/B,CACD,EAEYT,EAAQ,CAAiBW,EAAM,sCAC3C,YACC,CAAC,CAAE,MAAAC,EAAO,QAAAC,EAAS,KAAAC,CAAK,EAAGC,IAC1BA,EAAK,UACJ,IAAIF,CAAO,WAAWD,CAAK,SAASC,CAAO,eAAeD,CAAK,cAAcA,CAAK,6BAClF,mBAAmBD,CAAG,MAAMC,CAAK,KAAKE,CAAI,GAC3C,EACD,CACC,QAAS,CAAE,OAAAP,EAAQ,WAAAE,CAAW,CAC/B,CACD,EAEYL,EAAQ,CAAiBO,EAAM,sCAC3C,YACC,CAAC,CAAE,MAAAC,EAAO,QAAAC,EAAS,KAAAC,CAAK,EAAGC,IAC1BA,EAAK,UACJ,IAAIF,CAAO,WAAWD,CAAK,SAASC,CAAO,eAAeD,CAAK,cAAcA,CAAK,6BAClF,mBAAmBD,CAAG,MAAMC,CAAK,KAAKE,CAAI,GAC3C,EACD,CACC,QAAS,CAAE,OAAAP,EAAQ,WAAAE,CAAW,CAC/B,CACD,EAEYP,EAAW,CAAiBc,EAA4BL,EAAM,+BAC1E,YACC,CAAC,CAAE,MAAAC,EAAO,QAAAC,EAAS,KAAAC,CAAK,EAAGC,IAC1BA,EAAK,UACJ,IAAIF,CAAO,WAAWD,CAAK,SAASC,CAAO,eAAeD,CAAK,cAAcC,CAAO,cAAcA,CAAO,4BAA4BD,CAAK,kBAC1I,mBAAmBD,CAAG,MAAMC,CAAK,KAAKE,CAAI,GAC3C,EACD,CACC,QAAS,CACR,OAAAP,EACA,WAAAE,EACA,QAAAO,EACA,UAAYC,GAAY,MAAM,QAAQA,CAAC,EAAIA,EAAI,CAACA,CAAC,CAClD,CACD,CACD","names":["files_exports","__export","audio","file","fileType","image","video","__toCommonJS","import_pipes","isFile","v","isMimeType","str","err","input","context","path","opts","typesFn","x"]}