.
This commit is contained in:
+62
@@ -0,0 +1,62 @@
|
||||
"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;
|
||||
}
|
||||
get isEnabled() {
|
||||
return this._isEnabled;
|
||||
}
|
||||
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: '/'
|
||||
});
|
||||
this._isEnabled = true;
|
||||
}
|
||||
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)
|
||||
});
|
||||
this._isEnabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
//# sourceMappingURL=draft-mode-provider.js.map
|
||||
Reference in New Issue
Block a user