react-router-dom
Advanced tools
Comparing version 0.0.0-experimental-b1ff171f to 0.0.0-experimental-cf9637ce
{ | ||
"name": "react-router-dom", | ||
"version": "0.0.0-experimental-b1ff171f", | ||
"author": "React Training <hello@reacttraining.com>", | ||
"version": "0.0.0-experimental-cf9637ce", | ||
"description": "Declarative routing for React web applications", | ||
"repository": "ReactTraining/react-router", | ||
"license": "MIT", | ||
"main": "main.js", | ||
"module": "index.js", | ||
"types": "index.d.ts", | ||
"unpkg": "umd/react-router-dom.production.min.js", | ||
"dependencies": { | ||
"history": "5.0.0-beta.9", | ||
"prop-types": "^15.7.2" | ||
}, | ||
"peerDependencies": { | ||
"react": "0.0.0-experimental-33c3af284", | ||
"react-dom": "0.0.0-experimental-33c3af284", | ||
"react-router": "0.0.0-experimental-b1ff171f" | ||
}, | ||
"sideEffects": false, | ||
"keywords": [ | ||
@@ -29,3 +12,39 @@ "react", | ||
"link" | ||
] | ||
], | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/remix-run/react-router", | ||
"directory": "packages/react-router-dom" | ||
}, | ||
"license": "MIT", | ||
"author": "Remix Software <hello@remix.run>", | ||
"sideEffects": false, | ||
"main": "./dist/main.js", | ||
"unpkg": "./dist/umd/react-router-dom.production.min.js", | ||
"module": "./dist/index.js", | ||
"types": "./dist/index.d.ts", | ||
"dependencies": { | ||
"@remix-run/router": "0.0.0-experimental-cf9637ce", | ||
"react-router": "0.0.0-experimental-cf9637ce" | ||
}, | ||
"devDependencies": { | ||
"react": "^18.2.0", | ||
"react-dom": "^18.2.0" | ||
}, | ||
"peerDependencies": { | ||
"react": ">=16.8", | ||
"react-dom": ">=16.8" | ||
}, | ||
"files": [ | ||
"dist/", | ||
"CHANGELOG.md", | ||
"LICENSE.md", | ||
"README.md", | ||
"server.d.ts", | ||
"server.js", | ||
"server.mjs" | ||
], | ||
"engines": { | ||
"node": ">=14" | ||
} | ||
} |
# React Router DOM | ||
The `react-router-dom` package contains bindings for using [React | ||
Router](https://github.com/ReactTraining/react-router) in web applications. | ||
Please see [the main | ||
README](https://github.com/ReactTraining/react-router/README.md) for more | ||
information on how to get started with React Router. | ||
Router](https://github.com/remix-run/react-router) in web applications. | ||
Please see [the Getting Started guide](https://reactrouter.com/en/main/start/tutorial) for more information on how to get started with React Router. |
303
server.js
@@ -1,5 +0,298 @@ | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),PropTypes=require("prop-types"),history=require("history"),reactRouterDom=require("react-router-dom"); | ||
function StaticRouter({children:c,location:b="/"}){"string"===typeof b&&(b=history.parsePath(b));return React.createElement(reactRouterDom.Router,{children:c,action:history.Action.Pop,location:{pathname:b.pathname||"/",search:b.search||"",hash:b.hash||"",state:b.state||null,key:b.key||"default"},navigator:{createHref(a){return"string"===typeof a?a:history.createPath(a)},push(a){throw Error("You cannot use navigator.push() on the server because it is a stateless environment. This error was probably triggered when you did a "+ | ||
`\`navigate(${JSON.stringify(a)})\` somewhere in your app.`);},replace(a){throw Error("You cannot use navigator.replace() on the server because it is a stateless environment. This error was probably triggered when you did a "+`\`navigate(${JSON.stringify(a)}, { replace: true })\` somewhere `+"in your app.");},go(a){throw Error(`You cannot use navigator.go(${a}) on the server because it is a stateless`+"environment. This error was probably triggered when you did a "+`\`navigate(${a})\` somewhere in your app.`); | ||
},back(){throw Error("You cannot use navigator.back() on the server because it is a stateless environment.");},forward(){throw Error("You cannot use navigator.forward() on the server because it is a stateless environment.");},block(){throw Error("You cannot use navigator.block() on the server because it is a stateless environment.");}},static:!0})} | ||
"production"!==process.env.NODE_ENV&&(StaticRouter.displayName="StaticRouter",StaticRouter.propTypes={children:PropTypes.node,location:PropTypes.oneOfType([PropTypes.string,PropTypes.shape({pathname:PropTypes.string,search:PropTypes.string,hash:PropTypes.string,state:PropTypes.object,key:PropTypes.string})])});exports.StaticRouter=StaticRouter; | ||
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
var React = require('react'); | ||
var router = require('@remix-run/router'); | ||
var reactRouterDom = require('react-router-dom'); | ||
function _interopNamespace(e) { | ||
if (e && e.__esModule) return e; | ||
var n = Object.create(null); | ||
if (e) { | ||
Object.keys(e).forEach(function (k) { | ||
if (k !== 'default') { | ||
var d = Object.getOwnPropertyDescriptor(e, k); | ||
Object.defineProperty(n, k, d.get ? d : { | ||
enumerable: true, | ||
get: function () { return e[k]; } | ||
}); | ||
} | ||
}); | ||
} | ||
n["default"] = e; | ||
return Object.freeze(n); | ||
} | ||
var React__namespace = /*#__PURE__*/_interopNamespace(React); | ||
/** | ||
* A <Router> that may not navigate to any other location. This is useful | ||
* on the server where there is no stateful UI. | ||
*/ | ||
function StaticRouter({ | ||
basename, | ||
children, | ||
location: locationProp = "/" | ||
}) { | ||
if (typeof locationProp === "string") { | ||
locationProp = reactRouterDom.parsePath(locationProp); | ||
} | ||
let action = router.Action.Pop; | ||
let location = { | ||
pathname: locationProp.pathname || "/", | ||
search: locationProp.search || "", | ||
hash: locationProp.hash || "", | ||
state: locationProp.state || null, | ||
key: locationProp.key || "default" | ||
}; | ||
let staticNavigator = getStatelessNavigator(); | ||
return /*#__PURE__*/React__namespace.createElement(reactRouterDom.Router, { | ||
basename: basename, | ||
children: children, | ||
location: location, | ||
navigationType: action, | ||
navigator: staticNavigator, | ||
static: true | ||
}); | ||
} | ||
/** | ||
* A Data Router that may not navigate to any other location. This is useful | ||
* on the server where there is no stateful UI. | ||
*/ | ||
function StaticRouterProvider({ | ||
context, | ||
router: router$1, | ||
hydrate = true, | ||
nonce | ||
}) { | ||
!(router$1 && context) ? process.env.NODE_ENV !== "production" ? router.invariant(false, "You must provide `router` and `context` to <StaticRouterProvider>") : router.invariant(false) : void 0; | ||
let dataRouterContext = { | ||
router: router$1, | ||
navigator: getStatelessNavigator(), | ||
static: true, | ||
staticContext: context, | ||
basename: context.basename || "/" | ||
}; | ||
let hydrateScript = ""; | ||
if (hydrate !== false) { | ||
let data = { | ||
loaderData: context.loaderData, | ||
actionData: context.actionData, | ||
errors: serializeErrors(context.errors) | ||
}; // Use JSON.parse here instead of embedding a raw JS object here to speed | ||
// up parsing on the client. Dual-stringify is needed to ensure all quotes | ||
// are properly escaped in the resulting string. See: | ||
// https://v8.dev/blog/cost-of-javascript-2019#json | ||
let json = JSON.stringify(JSON.stringify(data)); | ||
hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`; | ||
} | ||
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_DataRouterContext.Provider, { | ||
value: dataRouterContext | ||
}, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_DataRouterStateContext.Provider, { | ||
value: dataRouterContext.router.state | ||
}, /*#__PURE__*/React__namespace.createElement(reactRouterDom.Router, { | ||
basename: dataRouterContext.basename, | ||
location: dataRouterContext.router.state.location, | ||
navigationType: dataRouterContext.router.state.historyAction, | ||
navigator: dataRouterContext.navigator | ||
}, /*#__PURE__*/React__namespace.createElement(reactRouterDom.Routes, null)))), hydrateScript ? /*#__PURE__*/React__namespace.createElement("script", { | ||
suppressHydrationWarning: true, | ||
nonce: nonce, | ||
dangerouslySetInnerHTML: { | ||
__html: hydrateScript | ||
} | ||
}) : null); | ||
} | ||
function serializeErrors(errors) { | ||
if (!errors) return null; | ||
let entries = Object.entries(errors); | ||
let serialized = {}; | ||
for (let [key, val] of entries) { | ||
// Hey you! If you change this, please change the corresponding logic in | ||
// deserializeErrors in react-router-dom/index.tsx :) | ||
if (router.isRouteErrorResponse(val)) { | ||
serialized[key] = { ...val, | ||
__type: "RouteErrorResponse" | ||
}; | ||
} else if (val instanceof Error) { | ||
// Do not serialize stack traces from SSR for security reasons | ||
serialized[key] = { | ||
message: val.message, | ||
__type: "Error" | ||
}; | ||
} else { | ||
serialized[key] = val; | ||
} | ||
} | ||
return serialized; | ||
} | ||
function getStatelessNavigator() { | ||
return { | ||
createHref, | ||
encodeLocation, | ||
push(to) { | ||
throw new Error(`You cannot use navigator.push() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\`navigate(${JSON.stringify(to)})\` somewhere in your app.`); | ||
}, | ||
replace(to) { | ||
throw new Error(`You cannot use navigator.replace() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\`navigate(${JSON.stringify(to)}, { replace: true })\` somewhere ` + `in your app.`); | ||
}, | ||
go(delta) { | ||
throw new Error(`You cannot use navigator.go() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\`navigate(${delta})\` somewhere in your app.`); | ||
}, | ||
back() { | ||
throw new Error(`You cannot use navigator.back() on the server because it is a stateless ` + `environment.`); | ||
}, | ||
forward() { | ||
throw new Error(`You cannot use navigator.forward() on the server because it is a stateless ` + `environment.`); | ||
} | ||
}; | ||
} // Temporary manifest generation - we should optimize this by combining the | ||
// tree-walks between convertRoutesToDataRoutes, enhanceManualRouteObjects, | ||
// and generateManifest. | ||
// Also look into getting rid of `route as AgnosticDataRouteObject` down below? | ||
function generateManifest(routes, manifest = new Map()) { | ||
routes.forEach(route => { | ||
manifest.set(route.id, route); | ||
if (route.children) { | ||
generateManifest(route.children, manifest); | ||
} | ||
}); | ||
return manifest; | ||
} | ||
function createStaticRouter(routes, context) { | ||
let dataRoutes = router.UNSAFE_convertRoutesToDataRoutes(reactRouterDom.UNSAFE_enhanceManualRouteObjects(routes)); | ||
let manifest = generateManifest(dataRoutes); // Because our context matches may be from a framework-agnostic set of | ||
// routes passed to createStaticHandler(), we update them here with our | ||
// newly created/enhanced data routes | ||
let matches = context.matches.map(match => { | ||
let route = manifest.get(match.route.id) || match.route; | ||
return { ...match, | ||
route: route | ||
}; | ||
}); | ||
let msg = method => `You cannot use router.${method}() on the server because it is a stateless environment`; | ||
return { | ||
get basename() { | ||
return context.basename; | ||
}, | ||
get state() { | ||
return { | ||
historyAction: router.Action.Pop, | ||
location: context.location, | ||
matches, | ||
loaderData: context.loaderData, | ||
actionData: context.actionData, | ||
errors: context.errors, | ||
initialized: true, | ||
navigation: router.IDLE_NAVIGATION, | ||
restoreScrollPosition: null, | ||
preventScrollReset: false, | ||
revalidation: "idle", | ||
fetchers: new Map(), | ||
blockers: new Map() | ||
}; | ||
}, | ||
get routes() { | ||
return dataRoutes; | ||
}, | ||
initialize() { | ||
throw msg("initialize"); | ||
}, | ||
subscribe() { | ||
throw msg("subscribe"); | ||
}, | ||
enableScrollRestoration() { | ||
throw msg("enableScrollRestoration"); | ||
}, | ||
navigate() { | ||
throw msg("navigate"); | ||
}, | ||
fetch() { | ||
throw msg("fetch"); | ||
}, | ||
revalidate() { | ||
throw msg("revalidate"); | ||
}, | ||
createHref, | ||
encodeLocation, | ||
getFetcher() { | ||
return router.IDLE_FETCHER; | ||
}, | ||
deleteFetcher() { | ||
throw msg("deleteFetcher"); | ||
}, | ||
dispose() { | ||
throw msg("dispose"); | ||
}, | ||
getBlocker() { | ||
return router.IDLE_BLOCKER; | ||
}, | ||
deleteBlocker() { | ||
throw msg("deleteBlocker"); | ||
}, | ||
_internalFetchControllers: new Map(), | ||
_internalActiveDeferreds: new Map(), | ||
_internalSetRoutes() { | ||
throw msg("_internalSetRoutes"); | ||
} | ||
}; | ||
} | ||
function createHref(to) { | ||
return typeof to === "string" ? to : reactRouterDom.createPath(to); | ||
} | ||
function encodeLocation(to) { | ||
// Locations should already be encoded on the server, so just return as-is | ||
let path = typeof to === "string" ? reactRouterDom.parsePath(to) : to; | ||
return { | ||
pathname: path.pathname || "", | ||
search: path.search || "", | ||
hash: path.hash || "" | ||
}; | ||
} | ||
exports.StaticRouter = StaticRouter; | ||
exports.StaticRouterProvider = StaticRouterProvider; | ||
exports.createStaticRouter = createStaticRouter; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 2 instances in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
564590
4
23
4428
3
2
6
22
1
+ Added@remix-run/router@0.0.0-experimental-cf9637ce(transitive)
+ Addedreact@18.3.1(transitive)
+ Addedreact-dom@18.3.1(transitive)
+ Addedreact-router@0.0.0-experimental-cf9637ce(transitive)
+ Addedscheduler@0.23.2(transitive)
- Removedhistory@5.0.0-beta.9
- Removedprop-types@^15.7.2
- Removed@babel/runtime@7.26.0(transitive)
- Removedhistory@5.0.0-beta.9(transitive)
- Removedobject-assign@4.1.1(transitive)
- Removedprop-types@15.8.1(transitive)
- Removedreact@0.0.0-experimental-33c3af284(transitive)
- Removedreact-dom@0.0.0-experimental-33c3af284(transitive)
- Removedreact-is@16.13.1(transitive)
- Removedreact-router@0.0.0-experimental-b1ff171f(transitive)
- Removedregenerator-runtime@0.14.1(transitive)
- Removedscheduler@0.0.0-experimental-33c3af284(transitive)