@authsignal/nextjs-helpers
Version:
## Installation
49 lines (38 loc) • 1.69 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var dynamic = require('next/dynamic.js');
var React = require('react');
var browser = require('@authsignal/browser');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var dynamic__default = /*#__PURE__*/_interopDefaultLegacy(dynamic);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
const AuthsignalContext = React__default["default"].createContext(undefined);
const useAuthsignal = () => {
const context = React.useContext(AuthsignalContext);
if (context === undefined) {
throw new Error("useAuthsignal must be used inside AuthsignalProvider");
}
return context;
};
const AuthsignalProvider$1 = dynamic__default["default"](() => Promise.resolve().then(function () { return provider; }).then((mod) => mod.AuthsignalProvider), { ssr: false });
function AuthsignalProvider({ children }) {
const client = getClient();
return React__default["default"].createElement(AuthsignalContext.Provider, { value: client }, children);
}
let _client = null;
function getClient() {
if (_client === null) {
const publishableKey = process.env.NEXT_PUBLIC_AUTHSIGNAL_PUBLISHABLE_KEY;
if (!publishableKey) {
throw new Error("NEXT_PUBLIC_AUTHSIGNAL_PUBLISHABLE_KEY is not set");
}
_client = new browser.Authsignal({ publishableKey });
}
return _client;
}
var provider = /*#__PURE__*/Object.freeze({
__proto__: null,
AuthsignalProvider: AuthsignalProvider
});
exports.AuthsignalProvider = AuthsignalProvider$1;
exports.useAuthsignal = useAuthsignal;