"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { DISALLOWED_FORM_PROPS: null, checkFormActionUrl: null, createFormSubmitDestinationUrl: null, hasReactClientActionAttributes: null, hasUnsupportedSubmitterAttributes: null, isSupportedFormEncType: null, isSupportedFormMethod: null, isSupportedFormTarget: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { DISALLOWED_FORM_PROPS: function() { return DISALLOWED_FORM_PROPS; }, checkFormActionUrl: function() { return checkFormActionUrl; }, createFormSubmitDestinationUrl: function() { return createFormSubmitDestinationUrl; }, hasReactClientActionAttributes: function() { return hasReactClientActionAttributes; }, hasUnsupportedSubmitterAttributes: function() { return hasUnsupportedSubmitterAttributes; }, isSupportedFormEncType: function() { return isSupportedFormEncType; }, isSupportedFormMethod: function() { return isSupportedFormMethod; }, isSupportedFormTarget: function() { return isSupportedFormTarget; } }); const DISALLOWED_FORM_PROPS = [ 'method', 'encType', 'target' ]; function createFormSubmitDestinationUrl(action, formElement) { let targetUrl; try { // NOTE: It might be more correct to resolve URLs relative to `document.baseURI`, // but we already do it relative to `location.href` elsewhere: // (see e.g. https://github.com/vercel/next.js/blob/bb0e6722f87ceb2d43015f5b8a413d0072f2badf/packages/next/src/client/components/app-router.tsx#L146) // so it's better to stay consistent. const base = window.location.href; targetUrl = new URL(action, base); } catch (err) { throw Object.defineProperty(new Error('Cannot parse form action "' + action + '" as a URL', { cause: err }), "__NEXT_ERROR_CODE", { value: "E152", enumerable: false, configurable: true }); } if (targetUrl.searchParams.size) { // url-encoded HTML forms *overwrite* any search params in the `action` url: // // "Let `query` be the result of running the application/x-www-form-urlencoded serializer [...]" // "Set parsed action's query component to `query`." // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#submit-mutate-action // // We need to match that. // (note that all other parts of the URL, like `hash`, are preserved) targetUrl.search = ''; } const formData = new FormData(formElement); for (let [name, value] of formData){ if (typeof value !== 'string') { // For file inputs, the native browser behavior is to use the filename as the value instead: // // "If entry's value is a File object, then let value be entry's value's name. Otherwise, let value be entry's value." // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs // if (process.env.NODE_ENV === 'development') { console.warn("