UNPKG

next

Version:

The React Framework

57 lines (56 loc) 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "DraftModeProvider", { enumerable: true, get: function() { return DraftModeProvider; } }); const _apiutils = require("../api-utils"); class DraftModeProvider { constructor(previewProps, req, cookies, mutableCookies){ var _cookies_get; // The logic for draftMode() is very similar to tryGetPreviewData() // but Draft Mode does not have any data associated with it. const isOnDemandRevalidate = previewProps && (0, _apiutils.checkIsOnDemandRevalidate)(req, previewProps).isOnDemandRevalidate; const cookieValue = (_cookies_get = cookies.get(_apiutils.COOKIE_NAME_PRERENDER_BYPASS)) == null ? void 0 : _cookies_get.value; this.isEnabled = Boolean(!isOnDemandRevalidate && cookieValue && previewProps && (cookieValue === previewProps.previewModeId || // In dev mode, the cookie can be actual hash value preview id but the preview props can still be `development-id`. process.env.NODE_ENV !== 'production' && previewProps.previewModeId === 'development-id')); this._previewModeId = previewProps == null ? void 0 : previewProps.previewModeId; this._mutableCookies = mutableCookies; } enable() { if (!this._previewModeId) { throw Object.defineProperty(new Error('Invariant: previewProps missing previewModeId this should never happen'), "__NEXT_ERROR_CODE", { value: "E93", enumerable: false, configurable: true }); } this._mutableCookies.set({ name: _apiutils.COOKIE_NAME_PRERENDER_BYPASS, value: this._previewModeId, httpOnly: true, sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax', secure: process.env.NODE_ENV !== 'development', path: '/' }); } disable() { // To delete a cookie, set `expires` to a date in the past: // https://tools.ietf.org/html/rfc6265#section-4.1.1 // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted. this._mutableCookies.set({ name: _apiutils.COOKIE_NAME_PRERENDER_BYPASS, value: '', httpOnly: true, sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax', secure: process.env.NODE_ENV !== 'development', path: '/', expires: new Date(0) }); } } //# sourceMappingURL=draft-mode-provider.js.map