{"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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAyB;AAMzB,MAAM,SAAS,CAAC,MAA0B,OAAO,MAAM,YAAY,CAAC,CAAC,KAAK,UAAU;AACpF,MAAM,aAAa,CAAC,QAAgB,iDAAiD,KAAK,GAAG;AAEtF,MAAM,OAAO,CAAiB,MAAM,mCAC1C;AAAA,EACC,CAAC,EAAE,OAAO,SAAS,KAAK,GAAG,SAC1B,KAAK;AAAA,IACJ,IAAI,OAAO,WAAW,KAAK,SAAS,OAAO,eAAe,KAAK;AAAA,IAC/D,mBAAmB,GAAG,MAAM,KAAK,KAAK,IAAI;AAAA,EAC3C;AAAA,EACD;AAAA,IACC,SAAS,EAAE,QAAQ,WAAW;AAAA,IAC9B,QAAQ,OAAO,EAAE,MAAM,UAAU,QAAQ,SAAS;AAAA,EACnD;AACD;AAEM,MAAM,QAAQ,CAAiB,MAAM,yCAC3C;AAAA,EACC,CAAC,EAAE,OAAO,SAAS,KAAK,GAAG,SAC1B,KAAK;AAAA,IACJ,IAAI,OAAO,WAAW,KAAK,SAAS,OAAO,eAAe,KAAK,cAAc,KAAK;AAAA,IAClF,mBAAmB,GAAG,MAAM,KAAK,KAAK,IAAI;AAAA,EAC3C;AAAA,EACD;AAAA,IACC,SAAS,EAAE,QAAQ,WAAW;AAAA,EAC/B;AACD;AAEM,MAAM,QAAQ,CAAiB,MAAM,yCAC3C;AAAA,EACC,CAAC,EAAE,OAAO,SAAS,KAAK,GAAG,SAC1B,KAAK;AAAA,IACJ,IAAI,OAAO,WAAW,KAAK,SAAS,OAAO,eAAe,KAAK,cAAc,KAAK;AAAA,IAClF,mBAAmB,GAAG,MAAM,KAAK,KAAK,IAAI;AAAA,EAC3C;AAAA,EACD;AAAA,IACC,SAAS,EAAE,QAAQ,WAAW;AAAA,EAC/B;AACD;AAEM,MAAM,QAAQ,CAAiB,MAAM,yCAC3C;AAAA,EACC,CAAC,EAAE,OAAO,SAAS,KAAK,GAAG,SAC1B,KAAK;AAAA,IACJ,IAAI,OAAO,WAAW,KAAK,SAAS,OAAO,eAAe,KAAK,cAAc,KAAK;AAAA,IAClF,mBAAmB,GAAG,MAAM,KAAK,KAAK,IAAI;AAAA,EAC3C;AAAA,EACD;AAAA,IACC,SAAS,EAAE,QAAQ,WAAW;AAAA,EAC/B;AACD;AAEM,MAAM,WAAW,CAAiB,SAA4B,MAAM,kCAC1E;AAAA,EACC,CAAC,EAAE,OAAO,SAAS,KAAK,GAAG,SAC1B,KAAK;AAAA,IACJ,IAAI,OAAO,WAAW,KAAK,SAAS,OAAO,eAAe,KAAK,cAAc,OAAO,cAAc,OAAO,4BAA4B,KAAK;AAAA,IAC1I,mBAAmB,GAAG,MAAM,KAAK,KAAK,IAAI;AAAA,EAC3C;AAAA,EACD;AAAA,IACC,SAAS;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,CAAC,MAAY,MAAM,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;AAAA,IAClD;AAAA,EACD;AACD;","names":[]}