{"version":3,"sources":["../src/index.ts","../src/hooks/use-article.ts","../src/hooks/use-articles.ts","../src/hooks/use-pagination.ts","../src/server/index.ts","../src/core/pantheon-api.ts","../src/core/pantheon-context.tsx","../src/utils/markdownConverter.ts"],"names":["index_exports","__export","GQL","PCCConvenienceFunctions","NextPantheonAPI","PantheonClient","PantheonProvider","findTab","flattenDocumentTabs","getAllTags","getArticle","getArticleBySlugOrId","getArticlePathComponentsFromContentStructure","getArticleURLFromSite","getArticleURLFromSiteWithOptions","getArticles","getPaginatedArticles","getRecommendedArticles","getSite","markdownToText","updateConfig","useArticle","useArticles","useMutation","usePagination","usePantheonClient","useQuery","useSubscription","id","args","apolloQueryOptions","related","_b","publishingLevel","contentType","buildContentType","versionId","memoizedArgs","useMemo","__spreadValues","queryDocument","generateArticleQuery","subscriptionDocument","generateArticleUpdateSubscription","variables","_a","__spreadProps","subscribeToMore","queryResult","__objRest","useEffect","unsubscribe","prev","subscriptionData","searchParams","queryData","LIST_ARTICLES_QUERY","convertSearchParamsToGQL","cursor","initialArticles","pageSize","currentCursor","setCurrentCursor","useState","articlePages","setArticlePages","fetching","setFetching","currentPage","setCurrentPage","__async","data","newCursor","result","server_exports","__reExport","types_star","options","api","PantheonAPI","req","res","isPagesRouterResponse","nextReq","nextRes","level","coreStatus","platform","buildPlatformDiagnostics","payload","context","params","responseHeaders","value","key","cookiesToObj","status","path","cookies","acc","cookie","_level","routingMode","runtime","PantheonContext","React","client","children","jsx","ApolloProvider","headerIdRegex","markdownHeaderSymbolRegex","parserConfig","markdown","markdownToTxt"],"mappings":"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","file":"index.mjs","sourcesContent":["// Would be nice to have this as a separate entry point but\n// context is defined at module scope so can't be shared between\n// entry points.\n\n// https://github.com/facebook/react/issues/19541\nexport * from \"./hooks\";\n\nexport * from \"./server\";\nexport * from \"./core/pantheon-context\";\nexport * from \"./utils/markdownConverter\";\n","import { type QueryHookOptions } from \"@apollo/client\";\nimport { useQuery } from \"@apollo/client/react/hooks/useQuery.js\";\nimport {\n  ArticleQueryArgs,\n  buildContentType,\n  generateArticleQuery,\n  generateArticleUpdateSubscription,\n} from \"@pantheon-systems/pcc-sdk-core\";\nimport { Article } from \"@pantheon-systems/pcc-sdk-core/types\";\nimport { useEffect, useMemo } from \"react\";\n\ntype Return = ReturnType<typeof useQuery<{ article: Article }>> & {\n  article: Article | undefined;\n};\n\ntype ApolloQueryOptions = Omit<\n  QueryHookOptions<{ article: Article }>,\n  \"variables\"\n>;\n\nexport const useArticle = (\n  id: string,\n  args?: ArticleQueryArgs,\n  apolloQueryOptions?: ApolloQueryOptions,\n  related?: {\n    site?: boolean;\n  },\n): Return => {\n  const publishingLevel = args?.publishingLevel;\n  const contentType = buildContentType(args?.contentType);\n  const versionId = args?.versionId;\n\n  const memoizedArgs = useMemo(() => {\n    return {\n      ...(publishingLevel && { publishingLevel }),\n      ...(contentType && { contentType }),\n      ...(versionId && { versionId }),\n    };\n  }, [publishingLevel, contentType, versionId]);\n\n  const queryDocument = useMemo(\n    () => generateArticleQuery({ withSite: related?.site }),\n    [related?.site],\n  );\n\n  const subscriptionDocument = useMemo(\n    () => generateArticleUpdateSubscription({ withSite: related?.site }),\n    [related?.site],\n  );\n\n  const variables = useMemo(\n    () => ({ id, ...memoizedArgs }),\n    [id, memoizedArgs],\n  );\n\n  const { subscribeToMore, ...queryResult } = useQuery<{ article: Article }>(\n    queryDocument,\n    {\n      ...apolloQueryOptions,\n      variables,\n    },\n  );\n\n  useEffect(() => {\n    if (apolloQueryOptions?.skip) return;\n\n    const unsubscribe = subscribeToMore({\n      document: subscriptionDocument,\n      variables,\n      updateQuery: (prev, { subscriptionData }) => {\n        if (!subscriptionData.data) return prev;\n        const incoming = subscriptionData.data.article as Article;\n        return { article: incoming };\n      },\n    });\n\n    return () => unsubscribe();\n  }, [\n    subscribeToMore,\n    subscriptionDocument,\n    variables,\n    apolloQueryOptions?.skip,\n  ]);\n\n  return {\n    ...queryResult,\n    subscribeToMore,\n    article: queryResult.data?.article,\n  };\n};\n","import { type QueryHookOptions } from \"@apollo/client\";\nimport { useQuery } from \"@apollo/client/react/hooks/useQuery.js\";\nimport {\n  ArticleQueryArgs,\n  ArticleSearchArgs,\n  buildContentType,\n  convertSearchParamsToGQL,\n  LIST_ARTICLES_QUERY,\n} from \"@pantheon-systems/pcc-sdk-core\";\nimport { ArticleWithoutContent } from \"@pantheon-systems/pcc-sdk-core/types\";\n\ntype ListArticlesResponse = {\n  articles: ArticleWithoutContent[];\n};\n\ntype Return = ReturnType<typeof useQuery<ListArticlesResponse>> & {\n  articles: ArticleWithoutContent[] | undefined;\n};\n\ntype ApolloQueryOptions = Omit<\n  QueryHookOptions<ListArticlesResponse>,\n  \"variables\"\n>;\n\nexport const useArticles = (\n  args?: ArticleQueryArgs,\n  searchParams?: ArticleSearchArgs,\n  apolloQueryOptions?: ApolloQueryOptions,\n): Return => {\n  const contentType = buildContentType(args?.contentType);\n  const queryData = useQuery<ListArticlesResponse>(LIST_ARTICLES_QUERY, {\n    ...apolloQueryOptions,\n    variables: {\n      ...args,\n      ...convertSearchParamsToGQL(searchParams),\n      contentType,\n    },\n  });\n\n  return {\n    ...queryData,\n    articles: queryData.data?.articles,\n  };\n};\n","import { PCCConvenienceFunctions } from \"@pantheon-systems/pcc-sdk-core\";\nimport {\n  ArticleWithoutContent,\n  PaginatedArticle,\n} from \"@pantheon-systems/pcc-sdk-core/types\";\nimport { useEffect, useState } from \"react\";\n\ninterface Props {\n  cursor?: string;\n  pageSize: number;\n  initialArticles?: PaginatedArticle[] | ArticleWithoutContent[];\n}\n\nexport function usePagination({ cursor, initialArticles, pageSize }: Props) {\n  const [currentCursor, setCurrentCursor] = useState(cursor);\n  const [articlePages, setArticlePages] = useState(\n    initialArticles ? [initialArticles] : [],\n  );\n  const [fetching, setFetching] = useState(false);\n  const [currentPage, setCurrentPage] = useState(0);\n\n  useEffect(() => {\n    (async () => {\n      if (articlePages[currentPage]) return;\n\n      setFetching(true);\n      const { data, cursor: newCursor } =\n        await PCCConvenienceFunctions.getPaginatedArticles({\n          pageSize,\n          ...(currentCursor && { cursor: currentCursor }),\n        });\n      setFetching(false);\n      setArticlePages((prev) => {\n        const result = [...prev];\n        result[currentPage] = data;\n        return result;\n      });\n      setCurrentCursor(newCursor);\n    })();\n  }, [currentPage]);\n\n  return {\n    // Return last page if current page doesn't exist\n    data: articlePages[currentPage] || articlePages[articlePages.length - 1],\n    fetching,\n    onPageChange: setCurrentPage,\n    currentPage,\n  };\n}\n","export type {\n  PantheonClientConfig,\n  PantheonAPIOptions,\n} from \"@pantheon-systems/pcc-sdk-core\";\nexport { PantheonClient } from \"@pantheon-systems/pcc-sdk-core\";\n\nexport {\n  getArticles,\n  getPaginatedArticles,\n  getRecommendedArticles,\n  getArticle,\n  getAllTags,\n  getArticleBySlugOrId,\n  PCCConvenienceFunctions,\n  getArticlePathComponentsFromContentStructure,\n  getArticleURLFromSite,\n  getArticleURLFromSiteWithOptions,\n  updateConfig,\n  GQL,\n  getSite,\n  findTab,\n  flattenDocumentTabs,\n} from \"@pantheon-systems/pcc-sdk-core\";\nexport * from \"@pantheon-systems/pcc-sdk-core/types\";\n\nexport { NextPantheonAPI as PantheonAPI } from \"../core/pantheon-api\";\n","import {\n  PantheonAPI,\n  PantheonAPIOptions,\n} from \"@pantheon-systems/pcc-sdk-core\";\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport type { NextRequest } from \"next/server\";\n\nexport interface AppRouterContext {\n  params: Promise<\n    { command?: string | string[] } & {\n      [key: string]: string | string[] | undefined;\n    }\n  >;\n}\n\ntype Handler = {\n  // In Pages routing, req and res are NextApiRequest and NextApiResponse\n  (req: NextApiRequest, res: NextApiResponse): Promise<unknown>;\n  // App Router has a slightly different approach.\n  (\n    request: NextRequest,\n    context: AppRouterContext,\n  ): void | Response | Promise<void | Response>;\n};\n\nexport function NextPantheonAPI(options?: PantheonAPIOptions) {\n  const api = PantheonAPI(options);\n\n  const handler: Handler = async (req, res) => {\n    if (isPagesRouterResponse(res)) {\n      // Pages router\n      const nextReq = req as NextApiRequest;\n      const nextRes = res as NextApiResponse;\n      const command = nextReq.query.command?.toString();\n\n      // Handle status requests here\n      if (command === \"status\" && typeof api.buildStatus === \"function\") {\n        const level =\n          nextReq.query.level?.toString() === \"debug\" ? \"debug\" : \"basic\";\n        const coreStatus = api.buildStatus(level);\n        const platform = buildPlatformDiagnostics(level, \"pages\");\n        const payload = { ...coreStatus, platform };\n        return void nextRes.json(payload);\n      }\n\n      // Non-status flows: pass through to core\n      return void (await api.handler(\n        nextReq as NextApiRequest,\n        nextRes as NextApiResponse,\n      ));\n    }\n\n    // App router\n    const context = res as { params: Promise<{ command: string | string[] }> };\n    const nextReq = req as NextRequest;\n    const params = await context.params;\n    const command =\n      params.command != null && Array.isArray(params.command)\n        ? params.command[0]\n        : params.command ||\n          nextReq.nextUrl.searchParams.get(\"command\") ||\n          undefined;\n\n    // Handle status requests here\n    if (command === \"status\" && typeof api.buildStatus === \"function\") {\n      const levelParam = nextReq.nextUrl.searchParams.get(\"level\");\n      const level = levelParam === \"debug\" ? \"debug\" : \"basic\";\n      const coreStatus = api.buildStatus(level);\n      const platform = buildPlatformDiagnostics(level, \"app\");\n      const payload = { ...coreStatus, platform };\n      return Response.json(payload);\n    }\n\n    // Non-status flows: pass through to core\n    const responseHeaders = new Headers();\n    nextReq.headers.forEach((value, key) => {\n      responseHeaders.set(key, value);\n    });\n\n    return (await api.handler(\n      {\n        query: {\n          ...Object.fromEntries(nextReq.nextUrl.searchParams),\n          ...params,\n        },\n        cookies: cookiesToObj(nextReq.cookies),\n      },\n      {\n        getHeader: (key) => responseHeaders.get(key) || \"\",\n        setHeader: (key, value) => responseHeaders.set(key, value.toString()),\n        redirect: (status, path) => {\n          responseHeaders.set(\"Location\", path);\n          return new Response(null, {\n            status,\n            headers: responseHeaders,\n          });\n        },\n        json: (data) => {\n          return Response.json(data, {\n            headers: responseHeaders,\n          });\n        },\n      },\n    )) as void | Response;\n  };\n\n  return handler;\n}\n\nfunction isPagesRouterResponse(\n  res: { params: Promise<{ command?: string | string[] }> } | NextApiResponse,\n): res is NextApiResponse {\n  // We can differentiate between app router vs pages api\n  // by checking for params\n  // reference: (https://github.com/nextauthjs/next-auth/blob/v4/packages/next-auth/src/next/index.ts)\n  return res != null && typeof res === \"object\" && !(\"params\" in res);\n}\n\nfunction cookiesToObj(cookies: NextRequest[\"cookies\"]) {\n  // Convert to name value pairs\n  return cookies.getAll().reduce(\n    (acc, cookie) => {\n      acc[cookie.name] = cookie.value;\n      return acc;\n    },\n    {} as Record<string, string>,\n  );\n}\n\nfunction buildPlatformDiagnostics(\n  _level: \"basic\" | \"debug\",\n  routingMode: \"app\" | \"pages\",\n) {\n  const runtime =\n    typeof (globalThis as unknown as { EdgeRuntime?: unknown }).EdgeRuntime !==\n    \"undefined\"\n      ? \"edge\"\n      : \"node\";\n\n  const base = {\n    name: \"next\",\n    routing: { mode: routingMode },\n    runtime,\n  };\n\n  return base;\n}\n","import { ApolloClient } from \"@apollo/client/core/ApolloClient.js\";\nimport { ApolloProvider } from \"@apollo/client/react/context/ApolloProvider.js\";\nimport { PantheonClient } from \"@pantheon-systems/pcc-sdk-core\";\nimport React, { PropsWithChildren } from \"react\";\n\ninterface PantheonProviderProps extends PropsWithChildren<object> {\n  client: PantheonClient;\n}\n\nconst PantheonContext = React.createContext<PantheonClient | null>(null);\n\nexport const PantheonProvider = ({\n  client,\n  children,\n}: PantheonProviderProps) => (\n  <PantheonContext.Provider value={client}>\n    <ApolloProvider\n      client={client.apolloClient as unknown as ApolloClient<unknown>}\n    >\n      {children}\n    </ApolloProvider>\n  </PantheonContext.Provider>\n);\n\nexport const usePantheonClient = () => {\n  const client = React.useContext(PantheonContext);\n\n  if (!client) {\n    throw new Error(\"Cannot use outside of a PantheonProvider\");\n  }\n\n  return client;\n};\n","import { markdownToTxt } from \"markdown-to-txt\";\n\nconst headerIdRegex = /\\s*\\{#h\\.[^}]*\\}/g;\nconst markdownHeaderSymbolRegex = /^#+\\s*/gm;\nconst parserConfig = { gfm: true, mangle: false };\n\nexport const markdownToText = function (markdown: string) {\n  return markdownToTxt(\n    markdown.replace(headerIdRegex, \"\"),\n    parserConfig,\n  ).replace(markdownHeaderSymbolRegex, \"\");\n};\n"]}