.
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
import { ACTION_HEADER } from '../../client/components/app-router-headers';
|
||||
export function getServerActionRequestMetadata(req) {
|
||||
let actionId;
|
||||
let contentType;
|
||||
if (req.headers instanceof Headers) {
|
||||
actionId = req.headers.get(ACTION_HEADER) ?? null;
|
||||
contentType = req.headers.get('content-type');
|
||||
} else {
|
||||
actionId = req.headers[ACTION_HEADER] ?? null;
|
||||
contentType = req.headers['content-type'] ?? null;
|
||||
}
|
||||
// We don't actually support URL encoded actions, and the action handler will bail out if it sees one.
|
||||
// But we still want it to flow through to the action handler, to prevent changes in behavior when a regular
|
||||
// page component tries to handle a POST.
|
||||
const isURLEncodedAction = Boolean(req.method === 'POST' && contentType === 'application/x-www-form-urlencoded');
|
||||
const isMultipartAction = Boolean(req.method === 'POST' && (contentType == null ? void 0 : contentType.startsWith('multipart/form-data')));
|
||||
const isFetchAction = Boolean(actionId !== undefined && typeof actionId === 'string' && req.method === 'POST');
|
||||
const isPossibleServerAction = Boolean(isFetchAction || isURLEncodedAction || isMultipartAction);
|
||||
return {
|
||||
actionId,
|
||||
isURLEncodedAction,
|
||||
isMultipartAction,
|
||||
isFetchAction,
|
||||
isPossibleServerAction
|
||||
};
|
||||
}
|
||||
export function getIsPossibleServerAction(req) {
|
||||
return getServerActionRequestMetadata(req).isPossibleServerAction;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=server-action-request-meta.js.map
|
||||
Reference in New Issue
Block a user