{"version":3,"sources":["/home/renatorib/p/publissue/packages/api/dist/__chunks/YWC2F3JI.cjs","../../src/publissue/index.ts"],"names":["Publissue","options","addComment","createLabel","createPost","createRepository","deleteLabel","findPost","findPosts","getComments","getLabels","getPinnedPosts","getPost","getRateLimit","getMe","getRepository","owner","name","endpoint","init","method","path","__spreadProps","__spreadValues"],"mappings":"AAAA,sHAAkC,6CAAmC,6CAAmC,6CAAmC,6CAAmC,6CAAmC,6CAAmC,6CAAmC,6CAAmC,6CAAmC,6CAAmC,6CAAmC,6CAAmC,6CAAmC,6CAAqC,6CAA0C,IC8C3iBA,CAAAA,CAAN,KAAgB,CAGrB,WAAA,CAAmBC,CAAAA,CAA2B,CAA3B,IAAA,CAAA,OAAA,CAAAA,CAAAA,CAiEnB,IAAA,CAAA,UAAA,CAAaC,cAAAA,CAAW,IAAA,CAAK,IAAI,CAAA,CACjC,IAAA,CAAA,WAAA,CAAcC,cAAAA,CAAY,IAAA,CAAK,IAAI,CAAA,CACnC,IAAA,CAAA,UAAA,CAAaC,cAAAA,CAAW,IAAA,CAAK,IAAI,CAAA,CACjC,IAAA,CAAA,gBAAA,CAAmBC,cAAAA,CAAiB,IAAA,CAAK,IAAI,CAAA,CAC7C,IAAA,CAAA,WAAA,CAAcC,cAAAA,CAAY,IAAA,CAAK,IAAI,CAAA,CACnC,IAAA,CAAA,QAAA,CAAWC,cAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAC7B,IAAA,CAAA,SAAA,CAAYC,cAAAA,CAAU,IAAA,CAAK,IAAI,CAAA,CAC/B,IAAA,CAAA,WAAA,CAAcC,cAAAA,CAAY,IAAA,CAAK,IAAI,CAAA,CACnC,IAAA,CAAA,SAAA,CAAYC,cAAAA,CAAU,IAAA,CAAK,IAAI,CAAA,CAC/B,IAAA,CAAA,cAAA,CAAiBC,cAAAA,CAAe,IAAA,CAAK,IAAI,CAAA,CACzC,IAAA,CAAA,OAAA,CAAUC,cAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CAC3B,IAAA,CAAA,YAAA,CAAeC,cAAAA,CAAa,IAAA,CAAK,IAAI,CAAA,CACrC,IAAA,CAAA,KAAA,CAAQC,cAAAA,CAAM,IAAA,CAAK,IAAI,CAAA,CACvB,IAAA,CAAA,aAAA,CAAgBC,cAAAA,CAAc,IAAA,CAAK,IAAI,CAAA,CA7ErC,GAAM,CAACC,CAAAA,CAAOC,CAAI,CAAA,CAAIhB,CAAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAC5C,IAAA,CAAK,IAAA,CAAO,CAAE,KAAA,CAAAe,CAAAA,CAAO,IAAA,CAAAC,CAAAA,CAAM,QAAA,CAAUhB,CAAAA,CAAQ,IAAA,CAAM,EAAA,CAAI,KAAA,CAAU,CACnE,CAEA,MAAM,SAAA,CAAA,CAAY,CAChB,OAAK,IAAA,CAAK,IAAA,CAAK,EAAA,EAAA,CACb,IAAA,CAAK,IAAA,CAAK,EAAA,CAAA,CAAM,MAAM,IAAA,CAAK,aAAA,CAAc,CAAA,CAAA,CAAG,EAAA,CAAA,CAEvC,IAAA,CAAK,IAAA,CAAK,EACnB,CAEA,MAAM,IAAA,CAAiBiB,CAAAA,CAAuEC,CAAAA,CAAoB,CAChH,GAAM,CAACC,CAAAA,CAAQC,CAAI,CAAA,CAAIH,CAAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CACzC,OAAO,KAAA,CAAM,wBAAA,CAA2BG,CAAAA,CAAMC,4BAAAA,4BAAAC,CAC5C,MAAA,CAAAH,CAAAA,CAAAA,CACGD,CAAAA,CAAAA,CAFyC,CAG5C,OAAA,CAASI,4BAAAA,4BAAAA,4BAAAA,CACP,MAAA,CAAQ,qCAAA,CAAA,CACJH,CAAAA,GAAW,KAAA,EAAS,CAAE,gBAAA,CAAkB,GAAI,CAAA,CAAA,CAC5C,IAAA,CAAK,OAAA,CAAQ,KAAA,EAAS,CAAE,aAAA,CAAe,CAAA,OAAA,EAAU,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAA,CAAA","file":"/home/renatorib/p/publissue/packages/api/dist/__chunks/YWC2F3JI.cjs","sourcesContent":[null,"import { IsEmptyObject, DeepFlatten } from \"../lib/types\";\nimport { OperationString } from \"../lib/graphql\";\nimport { GithubGraphQLFormattedError, PublissueError, ensurePublissueError } from \"../lib/error\";\n\nimport { findPosts } from \"./findPosts\";\nimport { findPost } from \"./findPost\";\nimport { getLabels } from \"./getLabels\";\nimport { getPinnedPosts } from \"./getPinnedPosts\";\nimport { getComments } from \"./getComments\";\nimport { getPost } from \"./getPost\";\nimport { createRepository } from \"./createRepository\";\nimport { getRepository } from \"./getRepository\";\nimport { createLabel } from \"./createLabel\";\nimport { addComment } from \"./addComment\";\nimport { createPost } from \"./createPost\";\nimport { deleteLabel } from \"./deleteLabel\";\nimport { getRateLimit } from \"./getRateLimit\";\nimport { getMe } from \"./getMe\";\n\ntype PublissueOptions = {\n  /**\n   * Full repo string containing owner and name.\n   * @example { repo: \"my-user/posts\" }\n   */\n  repo: string;\n  /**\n   * GitHub access token\n   */\n  token: string;\n  /**\n   * Optional configuration\n   */\n  config?: {\n    /**\n     * A label that controls published state\n     * @default \"state:published\"\n     */\n    publishedLabel?: string;\n    /**\n     * A label that controls draft state\n     * @default \"state:draft\"\n     */\n    draftLabel?: string;\n  };\n};\n\nexport class Publissue {\n  repo: { owner: string; name: string; fullName: string; id?: string };\n\n  constructor(public options: PublissueOptions) {\n    const [owner, name] = options.repo.split(\"/\");\n    this.repo = { owner, name, fullName: options.repo, id: undefined };\n  }\n\n  async getRepoId() {\n    if (!this.repo.id) {\n      this.repo.id = (await this.getRepository()).id;\n    }\n    return this.repo.id;\n  }\n\n  async rest<T, E = any>(endpoint: `${\"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\"} /${string}`, init?: RequestInit) {\n    const [method, path] = endpoint.split(\" \");\n    return fetch(\"https://api.github.com\" + path, {\n      method,\n      ...init,\n      headers: {\n        Accept: \"Accept: application/vnd.github+json\",\n        ...(method === \"PUT\" && { \"Content-Length\": \"0\" }),\n        ...(this.options.token && { Authorization: `Bearer ${this.options.token}` }),\n        ...init?.headers,\n      },\n    }).then(async (response) => {\n      const data = await response.json().catch(() => response.text());\n      if (!response.ok) return { ok: false as const, response, data: data as E };\n      return { ok: true as const, response, data: data as T };\n    });\n  }\n\n  graphql<Data, Variables, Out>(document: OperationString<Data, Variables, Out>) {\n    const execute = async (\n      ...[variables]: IsEmptyObject<Variables> extends true\n        ? [variables?: undefined]\n        : [variables: DeepFlatten<Variables>]\n    ) => {\n      try {\n        const response = await fetch(\"https://api.github.com/graphql\", {\n          method: \"POST\",\n          headers: { Authorization: `Bearer ${this.options.token}` },\n          body: JSON.stringify({ query: document, variables: variables }),\n        });\n\n        if (!response.ok) {\n          throw new PublissueError(response);\n        }\n\n        const result = (await response.json()) as\n          | { data: Data }\n          | { errors: GithubGraphQLFormattedError[] }\n          | { data: Data; errors: GithubGraphQLFormattedError[] };\n\n        if (\"errors\" in result) {\n          throw new PublissueError(response, result.errors);\n        }\n\n        return document.map(result.data);\n      } catch (e) {\n        throw ensurePublissueError(e);\n      }\n    };\n\n    return { execute };\n  }\n\n  addComment = addComment.bind(this);\n  createLabel = createLabel.bind(this);\n  createPost = createPost.bind(this);\n  createRepository = createRepository.bind(this);\n  deleteLabel = deleteLabel.bind(this);\n  findPost = findPost.bind(this);\n  findPosts = findPosts.bind(this);\n  getComments = getComments.bind(this);\n  getLabels = getLabels.bind(this);\n  getPinnedPosts = getPinnedPosts.bind(this);\n  getPost = getPost.bind(this);\n  getRateLimit = getRateLimit.bind(this);\n  getMe = getMe.bind(this);\n  getRepository = getRepository.bind(this);\n}\n"]}