multi-data
Version:
Create multipart form data
1 lines • 3.42 kB
Source Map (JSON)
{"version":3,"file":"multi-data.cjs","sources":["../../src/index.ts"],"sourcesContent":["export interface HeadersObject {\n [key: string]: string;\n}\n\nexport interface Options {\n headers?: HeadersObject;\n}\n\nexport interface Splittable<T> {\n slice(idx: number, len?: number): this;\n [idx: number]: T;\n readonly length: number;\n}\n\n/**\n * Class to build and concatenate multipart form data\n */\nexport default class MultiData {\n readonly boundary: string;\n protected lines: string[] = [];\n\n /**\n * @param boundary The string used to define multipart boundaries and the end of body.\n */\n constructor(boundary: string) {\n if (boundary === undefined) throw new TypeError('boundary expected');\n this.boundary = boundary;\n }\n\n /**\n * Append a part to the multipart form data.\n *\n * @param name The part name.\n * @param data The part data.\n * @param options Pass headers in the options for custom part headers.\n */\n append<T>(name: string, data: Splittable<T>, options?: Options): MultiData {\n if (name === undefined) throw new TypeError('name expected');\n if (data === undefined) throw new TypeError('data expected');\n\n this.lines.push(`--${this.boundary}`);\n this.lines.push(`Content-Disposition: form-data; name=\"${name}\"`);\n if (options && options.headers) {\n const headers = options.headers;\n for (const key in headers) this.lines.push(`${key}: ${headers[key]}`);\n }\n this.lines.push('');\n this.lines.push(data.toString());\n return this;\n }\n\n /**\n * After appending data, use toString() to concatenate the form data for your request.\n */\n toString(): string {\n this.lines.push(`--${this.boundary}--`);\n const string = this.lines.join('\\r\\n');\n this.lines.pop();\n return string;\n }\n}\n"],"names":["MultiData","boundary","lines","undefined","TypeError","append","name","data","options","push","headers","key","toString","string","join","pop"],"mappings":";;;;;;;;;;;AAiBe,MAAA,SAAA,iBAAA,WAAA;EAAMA,IAAAA,SAAAA,SAAAA,CAOPC,QAAgB,EAAA;EAPTD,QAAAA,iBAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA;EAETE,QAAAA,IAAAA,CAAAA,KAAAA,GAAkB,EAAE;EAM5B,QAAA,IAAID,QAAaE,KAAAA,SAAAA,EAAW,MAAM,IAAIC,SAAU,CAAA,mBAAA,CAAA;UAChD,IAAI,CAACH,QAAQ,GAAGA,QAAAA;;EATCD,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA;EAYnB;;;;;;QAOAK,MAAAA,CAAAA,MAaC,GAbDA,SAAAA,OAAUC,IAAY,EAAEC,IAAmB,EAAEC,OAAiB,EAAA;EAC5D,QAAA,IAAIF,IAASH,KAAAA,SAAAA,EAAW,MAAM,IAAIC,SAAU,CAAA,eAAA,CAAA;EAC5C,QAAA,IAAIG,IAASJ,KAAAA,SAAAA,EAAW,MAAM,IAAIC,SAAU,CAAA,eAAA,CAAA;UAE5C,IAAI,CAACF,KAAK,CAACO,IAAI,CAAC,IAAmB,CAAA,MAAA,CAAd,IAAI,CAACR,QAAQ,CAAA,CAAA;UAClC,IAAI,CAACC,KAAK,CAACO,IAAI,CAAC,wCAAC,CAA6C,OAALH,IAAK,EAAA,GAAA,CAAA,CAAA;UAC9D,IAAIE,OAAAA,IAAWA,OAAQE,CAAAA,OAAO,EAAE;cAC9B,IAAMA,OAAAA,GAAUF,QAAQE,OAAO;EAC/B,YAAA,IAAK,IAAMC,GAAOD,IAAAA,OAAAA,CAAS,IAAI,CAACR,KAAK,CAACO,IAAI,CAAE,GAAUC,MAARC,CAAAA,GAAAA,EAAI,MAAiB,MAAbD,CAAAA,OAAO,CAACC,GAAI,CAAA,CAAA,CAAA;EACpE;EACA,QAAA,IAAI,CAACT,KAAK,CAACO,IAAI,CAAC,EAAA,CAAA;EAChB,QAAA,IAAI,CAACP,KAAK,CAACO,IAAI,CAACF,KAAKK,QAAQ,EAAA,CAAA;EAC7B,QAAA,OAAO,IAAI;EACb,KAAA;EAEA;;QAGAA,MAAAA,CAAAA,QAKC,GALDA,SAAAA,QAAAA,GAAAA;UACE,IAAI,CAACV,KAAK,CAACO,IAAI,CAAC,IAAC,CAAkB,MAAd,CAAA,IAAI,CAACR,QAAQ,EAAC,IAAA,CAAA,CAAA;EACnC,QAAA,IAAMY,SAAS,IAAI,CAACX,KAAK,CAACY,IAAI,CAAC,MAAA,CAAA;UAC/B,IAAI,CAACZ,KAAK,CAACa,GAAG,EAAA;UACd,OAAOF,MAAAA;EACT,KAAA;EA1CmBb,IAAAA,OAAAA,SAAAA;;;;;;;;;"}