{"version":3,"file":"index.mjs","names":[],"sources":["../../src/sip-message/index.ts"],"sourcesContent":["import { uuid } from \"../utils.js\";\n\nclass SipMessage {\n  public static fromString(str: string) {\n    const sipMessage = new SipMessage();\n    const [init, ...body] = str.split(\"\\r\\n\\r\\n\");\n    sipMessage.body = body.join(\"\\r\\n\\r\\n\");\n    const [subject, ...headers] = init.split(\"\\r\\n\");\n    sipMessage.subject = subject;\n    sipMessage.headers = Object.fromEntries(\n      headers.map((line) => line.split(\": \")),\n    );\n    if (sipMessage.headers.To && !sipMessage.headers.To.includes(\";tag=\")) {\n      sipMessage.headers.To += \";tag=\" + uuid(); // generate local tag\n    }\n    return sipMessage;\n  }\n\n  public subject: string;\n  public headers: {\n    [key: string]: string;\n  };\n  public body: string;\n  public direction!: \"inbound\" | \"outbound\";\n\n  public constructor(subject = \"\", headers = {}, body = \"\") {\n    this.subject = subject;\n    this.headers = headers;\n    this.body = body\n      .trim()\n      .split(/[\\r\\n]+/)\n      .join(\"\\r\\n\");\n    if (this.body.length > 0) {\n      this.body += \"\\r\\n\";\n    }\n  }\n\n  public toString() {\n    const r = [\n      this.subject,\n      ...Object.keys(this.headers).map((key) => `${key}: ${this.headers[key]}`),\n      \"\",\n      this.body,\n    ].join(\"\\r\\n\");\n    return r;\n  }\n\n  public get shortString() {\n    return `${this.direction} - ${this.subject}`;\n  }\n}\n\nexport default SipMessage;\n"],"mappings":";;AAEA,IAAM,aAAN,MAAM,WAAW;CACf,OAAc,WAAW,KAAa;EACpC,MAAM,aAAa,IAAI,YAAY;EACnC,MAAM,CAAC,MAAM,GAAG,QAAQ,IAAI,MAAM,WAAW;AAC7C,aAAW,OAAO,KAAK,KAAK,WAAW;EACvC,MAAM,CAAC,SAAS,GAAG,WAAW,KAAK,MAAM,OAAO;AAChD,aAAW,UAAU;AACrB,aAAW,UAAU,OAAO,YAC1B,QAAQ,KAAK,SAAS,KAAK,MAAM,KAAK,CAAC,CACxC;AACD,MAAI,WAAW,QAAQ,MAAM,CAAC,WAAW,QAAQ,GAAG,SAAS,QAAQ,CACnE,YAAW,QAAQ,MAAM,UAAU,MAAM;AAE3C,SAAO;;CAGT;CACA;CAGA;CACA;CAEA,YAAmB,UAAU,IAAI,UAAU,EAAE,EAAE,OAAO,IAAI;AACxD,OAAK,UAAU;AACf,OAAK,UAAU;AACf,OAAK,OAAO,KACT,MAAM,CACN,MAAM,UAAU,CAChB,KAAK,OAAO;AACf,MAAI,KAAK,KAAK,SAAS,EACrB,MAAK,QAAQ;;CAIjB,WAAkB;AAOhB,SANU;GACR,KAAK;GACL,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,KAAK,QAAQ,GAAG,IAAI,IAAI,KAAK,QAAQ,OAAO;GACzE;GACA,KAAK;GACN,CAAC,KAAK,OACC;;CAGV,IAAW,cAAc;AACvB,SAAO,GAAG,KAAK,UAAU,KAAK,KAAK"}