{"version":3,"sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO;AAcP,IAAM,iBAAN,MAAqB;AAAA,EAKnB,YAAY,OAAe,UAAmB,CAAC,GAAG;AAChD,QAAI,CAAC;AAAO,YAAM,IAAI,MAAM,qBAAqB;AAEjD,UAAM,EAAE,QAAQ,IAAI;AAEpB,SAAK,QAAQ;AACb,SAAK,UAAU;AAAA,MACb,SAAS;AAAA,OACN;AAGL,SAAK,UAAU;AAAA,MACb,gBAAgB;AAAA,MAChB,eAAe,UAAU,KAAK;AAAA,OAC3B;AAAA,EAEP;AAAA,EAEM,QAAQ,IAAwD;AAAA,+CAAxD,EAAE,QAAQ,UAAU,MAAM,SAAS,CAAC,EAAE,GAAkB;AACpE,YAAM,EAAE,QAAQ,IAAI,KAAK;AACzB,YAAM,UAAU,KAAK;AAErB,YAAM,cAAc,OAAO,KAAK,MAAM,EAAE,SACpC,IAAI,OAAO,KAAK,MAAM,EACnB;AAAA,QACC,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC,IAAI,mBAAmB,OAAO,CAAC,CAAC,CAAC;AAAA,MAClE,EACC,KAAK,GAAG,CAAC,KACZ;AAEJ,YAAM,MAAM,GAAG,OAAO,IAAI,QAAQ,GAAG,WAAW;AAEhD,YAAM,WAAW,MAAM,MAAM,KAAK;AAAA,QAChC;AAAA,SACI,UAAU,EAAE,OAAO,IACnB,QAAQ,EAAE,MAAM,KAAK,UAAU,IAAI,EAAE,EAC1C;AAED,YAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,UAAI,CAAC,SAAS;AAAI,cAAM;AAExB,aAAO;AAAA,IACT;AAAA;AAAA,EAEA,IAAI,UAAkB,QAA0C;AAC9D,WAAO,KAAK,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,EAC1C;AAAA,EAEA,KAAK,UAAkB,MAAW;AAChC,WAAO,KAAK,QAAQ,EAAE,QAAQ,QAAQ,UAAU,KAAK,CAAC;AAAA,EACxD;AAAA,EAEA,IAAI,UAAkB,MAAW;AAC/B,WAAO,KAAK,QAAQ,EAAE,QAAQ,OAAO,UAAU,KAAK,CAAC;AAAA,EACvD;AAAA,EAEA,OAAO,UAAkB;AACvB,WAAO,KAAK,QAAQ,EAAE,QAAQ,UAAU,SAAS,CAAC;AAAA,EACpD;AACF;AAEA,SAAe,QACb,UACA,IASA;AAAA;AATA,iBACE;AAAA;AAAA,IApFJ,IAmFE,IAEK,iBAFL,IAEK;AAAA,MADH;AAAA;AASF,UAAM,SAAS,IAAI,eAAe,KAAK;AAEvC,WAAO,OAAO,QAAQ,iBAAE,YAAa,KAAM;AAAA,EAC7C;AAAA","sourcesContent":["import \"whatwg-fetch\";\n\ninterface Options {\n  baseUrl?: string;\n  headers?: Record<string, string>;\n}\n\ninterface RequestParams {\n  method?: string;\n  endpoint: string;\n  data?: any;\n  params?: Record<string, string | number>;\n}\n\nclass PrintfulClient {\n  token: string;\n  options: Options;\n  headers: Record<string, string>;\n\n  constructor(token: string, options: Options = {}) {\n    if (!token) throw new Error(\"No API key provided\");\n\n    const { headers } = options;\n\n    this.token = token;\n    this.options = {\n      baseUrl: \"https://api.printful.com\",\n      ...options,\n    };\n\n    this.headers = {\n      \"Content-Type\": \"application/json\",\n      Authorization: `Bearer ${token}`,\n      ...headers,\n    };\n  }\n\n  async request({ method, endpoint, data, params = {} }: RequestParams) {\n    const { baseUrl } = this.options;\n    const headers = this.headers;\n\n    const queryString = Object.keys(params).length\n      ? `?${Object.keys(params)\n          .map(\n            (k) => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`\n          )\n          .join(\"&\")}`\n      : \"\";\n\n    const url = `${baseUrl}/${endpoint}${queryString}`;\n\n    const response = await fetch(url, {\n      headers,\n      ...(method && { method }),\n      ...(data && { body: JSON.stringify(data) }),\n    });\n\n    const json = await response.json();\n\n    if (!response.ok) throw json;\n\n    return json;\n  }\n\n  get(endpoint: string, params?: Record<string, string | number>) {\n    return this.request({ endpoint, params });\n  }\n\n  post(endpoint: string, data: any) {\n    return this.request({ method: \"POST\", endpoint, data });\n  }\n\n  put(endpoint: string, data: any) {\n    return this.request({ method: \"PUT\", endpoint, data });\n  }\n\n  delete(endpoint: string) {\n    return this.request({ method: \"DELETE\", endpoint });\n  }\n}\n\nasync function request(\n  endpoint: string,\n  {\n    token,\n    ...rest\n  }: {\n    token: string;\n    method?: string;\n    data?: any;\n    params?: Record<string, string | number>;\n  }\n) {\n  const client = new PrintfulClient(token);\n\n  return client.request({ endpoint, ...rest });\n}\n\nexport { PrintfulClient, request };\n"]}