@logsnag/next
Version:
LogSnag client for Next applications
1 lines • 3.7 kB
Source Map (JSON)
{"version":3,"sources":["../src/client/provider.tsx","../../../utilities/constants/src/cdn.ts","../../../utilities/hooks/src/funcs.ts","../../../utilities/hooks/src/hooks.ts","../src/components/index.tsx"],"names":["Script","React"],"mappings":";AAAA,OAAO,WAAkC;;;ACAlC,IAAM,UAAU;;;ADEvB,OAAO,YAAY;AAYZ,IAAM,kBAET,CAAC,EAAE,SAAS,OAAO,SAAS,MAAM;AACpC,SACE,0DACE,oCAAC,UAAO,IAAG,kBAAiB,OAAK,MAAC,OAAK,MAAC,KAAK,SAAS,GACtD;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,yBAAyB;AAAA,QACvB,QAAQ;AAAA;AAAA;AAAA,sCAGoB,KAAK,OAAO,OAAO;AAAA;AAAA,MAEjD;AAAA;AAAA,EACF,GACC,QACH;AAEJ;;;AEvBO,IAAM,YAAY,CAAC,WAA0B;AAClD,SAAO,GAAG,aAAa,MAAM;AAC/B;AAKO,IAAM,cAAc,MAAM;AAC/B,SAAO,GAAG,aAAa;AACzB;AAKO,IAAM,WAAW,CAAC,OAAgB,SAAS;AAChD,SAAO,GAAG,YAAY,IAAI;AAC5B;AAKO,IAAM,QAAQ,CAAC,YAA0B;AAC9C,SAAO,GAAG,SAAS,OAAO;AAC5B;AAKO,IAAM,WAAW,CAAC,YAAmD;AAC1E,SAAO,GAAG,YAAY,OAAO;AAC/B;;;AClCO,IAAM,aAAa,MAAM;AAC9B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACdA,OAAOA,aAAY;AACnB,OAAOC,YAAW;AAMX,IAAM,2BAAsD,CAAC;AAAA,EAClE;AACF,MAAM;AACJ,SACE,gBAAAA,OAAA,cAACD,SAAA,EAAO,MAAK,mBAAkB,UAAS,sBACrC,0BAA0B,SAAS,IAAI,MAAM,MAAM,IAAI,IAC1D;AAEJ","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { CDN_URL } from '@logsnag/constants/src/cdn';\nimport Script from 'next/script';\n\ninterface ILogSnagProviderProps {\n project: string;\n token: string;\n}\n\n/**\n * Set up the LogSnag provider\n * @param props: ILogSnagProviderProps\n * @constructor\n */\nexport const LogSnagProvider: React.FC<\n PropsWithChildren<ILogSnagProviderProps>\n> = ({ project, token, children }) => {\n return (\n <>\n <Script id=\"logsnag-script\" async defer src={CDN_URL} />\n <Script\n id=\"logsnag-init\"\n dangerouslySetInnerHTML={{\n __html: `\n window.lsq = window.lsq || [];\n window.ls = window.ls || ((...args) => window.lsq.push(args));\n window.ls('setConfig', '${token}', '${project}');\n `\n }}\n />\n {children}\n </>\n );\n};\n","export const CDN_URL = 'https://cdn.logsnag.com/web/ls.js';\n","import '@logsnag/web/types/gloabl';\nimport { TrackOptions } from '@logsnag/core';\nimport { IdentifyOptions } from '@logsnag/core';\nimport { PartialBy } from '@logsnag/web/types/tracker';\n\n/**\n * Set the user id for the current user\n * if the user is not logged in, pass null\n * @description\n */\nexport const setUserId = (userId: string | null) => {\n window.ls('setUserId', userId);\n};\n\n/**\n * Clear the user id for the current user\n */\nexport const clearUserId = () => {\n window.ls('clearUserId');\n};\n\n/**\n * Set debug mode for logging\n */\nexport const setDebug = (flag: boolean = true) => {\n window.ls('setDebug', flag);\n};\n\n/**\n * Track custom events\n */\nexport const track = (options: TrackOptions) => {\n window.ls('track', options);\n};\n\n/**\n * Identify user traits\n */\nexport const identify = (options: PartialBy<IdentifyOptions, 'user_id'>) => {\n window.ls('identify', options);\n};\n","import { clearUserId, identify, setDebug, setUserId, track } from './funcs';\n\n/**\n * LogSnag Hook\n * @description\n */\nexport const useLogSnag = () => {\n return {\n setDebug,\n setUserId,\n clearUserId,\n track,\n identify\n };\n};\n","import Script from 'next/script';\nimport React from 'react';\n\ninterface ISetUserIdProps {\n userId: string | null;\n}\n\nexport const SetUserIdServerComponent: React.FC<ISetUserIdProps> = ({\n userId\n}) => {\n return (\n <Script type=\"text/javascript\" strategy=\"afterInteractive\">\n {`window.ls('setUserId', ${userId ? `'${userId}'` : null});`}\n </Script>\n );\n};\n"]}