@burdenoff/microfe-devportal 2026.801.1 → 2026.802.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devportal/AdminDevportalRoutes.js +14 -14
- package/dist/devportal/DevportalRoutes.js +115 -115
- package/dist/devportal/DevportalRoutes.js.map +1 -1
- package/dist/devportal/components/SectionNav.js +1 -0
- package/dist/devportal/components/SectionNav.js.map +1 -1
- package/dist/devportal/components/TelemetryErrorBoundary.js +7 -7
- package/dist/devportal/pages/AnalyticsDashboardPage.js +41 -41
- package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
- package/dist/devportal/pages/AppLogsPage.js +27 -27
- package/dist/devportal/pages/ApplicationDetailPage.js +929 -929
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.js +39 -39
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js +55 -55
- package/dist/devportal/pages/EditApplicationPage.js +36 -36
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/EditPhysicalItemPage.js +40 -40
- package/dist/devportal/pages/InvitationDecisionPage.js +25 -25
- package/dist/devportal/pages/ListingPreviewPage.js +36 -36
- package/dist/devportal/pages/OAuthCallbackPage.js +10 -10
- package/dist/devportal/pages/OAuthClientDetailPage.js +27 -27
- package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationDetailPage.js +329 -329
- package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationMembersPage.js +181 -181
- package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
- package/dist/devportal/pages/PublishPage.js +43 -43
- package/dist/devportal/pages/PublishPage.js.map +1 -1
- package/dist/devportal/pages/RevenueDashboardPage.js +65 -65
- package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
- package/dist/devportal/pages/StoreSubmissionPage.js +126 -126
- package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
- package/dist/devportal/pages/WebhookDetailPage.js +28 -28
- package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
- package/dist/devportal/pages/WebhooksPage.js +47 -47
- package/dist/devportal/pages/WebhooksPage.js.map +1 -1
- package/dist/devportal/providers/DevportalProvider.js +12 -12
- package/package.json +1 -1
- package/dist/node_modules/react-router/dist/production/lib/components.js +0 -124
- package/dist/node_modules/react-router/dist/production/lib/components.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/context.js +0 -32
- package/dist/node_modules/react-router/dist/production/lib/context.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/dom.js +0 -83
- package/dist/node_modules/react-router/dist/production/lib/dom/dom.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/lib.js +0 -358
- package/dist/node_modules/react-router/dist/production/lib/dom/lib.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/components.js +0 -188
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/components.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/invariant.js +0 -8
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/invariant.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/links.js +0 -75
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/links.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/markup.js +0 -15
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/markup.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/routeModules.js +0 -18
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/routeModules.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/single-fetch.js +0 -10
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/single-fetch.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/errors.js +0 -19
- package/dist/node_modules/react-router/dist/production/lib/errors.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/hooks.js +0 -296
- package/dist/node_modules/react-router/dist/production/lib/hooks.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/router/history.js +0 -166
- package/dist/node_modules/react-router/dist/production/lib/router/history.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/router/router.js +0 -33
- package/dist/node_modules/react-router/dist/production/lib/router/router.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/router/url.js +0 -9
- package/dist/node_modules/react-router/dist/production/lib/router/url.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/router/utils.js +0 -236
- package/dist/node_modules/react-router/dist/production/lib/router/utils.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":[],"sources":["../../../../../../../node_modules/react-router/dist/production/lib/router/utils.js"],"sourcesContent":["/**\n * react-router v8.3.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { ABSOLUTE_URL_REGEX, PROTOCOL_RELATIVE_URL_REGEX, normalizeProtocolRelativeUrl } from \"./url.js\";\nimport { invariant, parsePath, warning } from \"./history.js\";\nimport * as React$1 from \"react\";\n//#region lib/router/utils.ts\n/**\n* Creates a type-safe {@link RouterContext} object that can be used to\n* store and retrieve arbitrary values in [`action`](../../start/framework/route-module#action)s,\n* [`loader`](../../start/framework/route-module#loader)s, and [middleware](../../how-to/middleware).\n* Similar to React's [`createContext`](https://react.dev/reference/react/createContext),\n* but specifically designed for React Router's request/response lifecycle.\n*\n* If a `defaultValue` is provided, it will be returned from `context.get()`\n* when no value has been set for the context. Otherwise, reading this context\n* when no value has been set will throw an error.\n*\n* ```tsx filename=app/context.ts\n* import { createContext } from \"react-router\";\n*\n* // Create a context for user data\n* export const userContext =\n* createContext<User | null>(null);\n* ```\n*\n* ```tsx filename=app/middleware/auth.ts\n* import { getUserFromSession } from \"~/auth.server\";\n* import { userContext } from \"~/context\";\n*\n* export const authMiddleware = async ({\n* context,\n* request,\n* }) => {\n* const user = await getUserFromSession(request);\n* context.set(userContext, user);\n* };\n* ```\n*\n* ```tsx filename=app/routes/profile.tsx\n* import { userContext } from \"~/context\";\n*\n* export async function loader({\n* context,\n* }: Route.LoaderArgs) {\n* const user = context.get(userContext);\n*\n* if (!user) {\n* throw new Response(\"Unauthorized\", { status: 401 });\n* }\n*\n* return { user };\n* }\n* ```\n*\n* @public\n* @category Utils\n* @mode framework\n* @mode data\n* @param defaultValue An optional default value for the context. This value\n* will be returned if no value has been set for this context.\n* @returns A {@link RouterContext} object that can be used with\n* `context.get()` and `context.set()` in [`action`](../../start/framework/route-module#action)s,\n* [`loader`](../../start/framework/route-module#loader)s, and [middleware](../../how-to/middleware).\n*/\nfunction createContext(defaultValue) {\n\treturn { defaultValue };\n}\n/**\n* Provides methods for writing/reading values in application context in a\n* type-safe way. Primarily for usage with [middleware](../../how-to/middleware).\n*\n* @example\n* import {\n* createContext,\n* RouterContextProvider\n* } from \"react-router\";\n*\n* const userContext = createContext<User | null>(null);\n* const contextProvider = new RouterContextProvider();\n* contextProvider.set(userContext, getUser());\n* // ^ Type-safe\n* const user = contextProvider.get(userContext);\n* // ^ User\n*\n* @public\n* @category Utils\n* @mode framework\n* @mode data\n*/\nvar RouterContextProvider = class {\n\t#map = /* @__PURE__ */ new Map();\n\t/**\n\t* Create a new `RouterContextProvider` instance\n\t* @param init An optional initial context map to populate the provider with\n\t*/\n\tconstructor(init) {\n\t\tif (init) for (let [context, value] of init) this.set(context, value);\n\t}\n\t/**\n\t* Access a value from the context. If no value has been set for the context,\n\t* it will return the context's `defaultValue` if provided, or throw an error\n\t* if no `defaultValue` was set.\n\t* @param context The context to get the value for\n\t* @returns The value for the context, or the context's `defaultValue` if no\n\t* value was set\n\t*/\n\tget(context) {\n\t\tif (this.#map.has(context)) return this.#map.get(context);\n\t\tif (context.defaultValue !== void 0) return context.defaultValue;\n\t\tthrow new Error(\"No value found for context\");\n\t}\n\t/**\n\t* Set a value for the context. If the context already has a value set, this\n\t* will overwrite it.\n\t*\n\t* @param context The context to set the value for\n\t* @param value The value to set for the context\n\t* @returns {void}\n\t*/\n\tset(context, value) {\n\t\tthis.#map.set(context, value);\n\t}\n};\nconst unsupportedLazyRouteObjectKeys = new Set([\n\t\"lazy\",\n\t\"caseSensitive\",\n\t\"path\",\n\t\"id\",\n\t\"index\",\n\t\"children\"\n]);\nfunction isUnsupportedLazyRouteObjectKey(key) {\n\treturn unsupportedLazyRouteObjectKeys.has(key);\n}\nconst unsupportedLazyRouteFunctionKeys = new Set([\n\t\"lazy\",\n\t\"caseSensitive\",\n\t\"path\",\n\t\"id\",\n\t\"index\",\n\t\"middleware\",\n\t\"children\"\n]);\nfunction isUnsupportedLazyRouteFunctionKey(key) {\n\treturn unsupportedLazyRouteFunctionKeys.has(key);\n}\nfunction isIndexRoute(route) {\n\treturn route.index === true;\n}\nfunction defaultMapRouteProperties(route) {\n\tlet updates = {};\n\tif (route.Component) Object.assign(updates, {\n\t\telement: React$1.createElement(route.Component),\n\t\tComponent: void 0\n\t});\n\tif (route.HydrateFallback) Object.assign(updates, {\n\t\thydrateFallbackElement: React$1.createElement(route.HydrateFallback),\n\t\tHydrateFallback: void 0\n\t});\n\tif (route.ErrorBoundary) Object.assign(updates, {\n\t\terrorElement: React$1.createElement(route.ErrorBoundary),\n\t\tErrorBoundary: void 0\n\t});\n\treturn updates;\n}\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties = defaultMapRouteProperties, parentPath = [], manifest = {}, allowInPlaceMutations = false) {\n\treturn routes.map((route, index) => {\n\t\tlet treePath = [...parentPath, String(index)];\n\t\tlet id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n\t\tinvariant(route.index !== true || !route.children, `Cannot specify children on an index route`);\n\t\tinvariant(allowInPlaceMutations || !manifest[id], `Found a route id collision on id \"${id}\". Route id's must be globally unique within Data Router usages`);\n\t\tif (isIndexRoute(route)) {\n\t\t\tlet indexRoute = {\n\t\t\t\t...route,\n\t\t\t\tid\n\t\t\t};\n\t\t\tmanifest[id] = mergeRouteUpdates(indexRoute, mapRouteProperties(indexRoute));\n\t\t\treturn indexRoute;\n\t\t} else {\n\t\t\tlet pathOrLayoutRoute = {\n\t\t\t\t...route,\n\t\t\t\tid,\n\t\t\t\tchildren: void 0\n\t\t\t};\n\t\t\tmanifest[id] = mergeRouteUpdates(pathOrLayoutRoute, mapRouteProperties(pathOrLayoutRoute));\n\t\t\tif (route.children) pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest, allowInPlaceMutations);\n\t\t\treturn pathOrLayoutRoute;\n\t\t}\n\t});\n}\nfunction mergeRouteUpdates(route, updates) {\n\treturn Object.assign(route, {\n\t\t...updates,\n\t\t...typeof updates.lazy === \"object\" && updates.lazy != null ? { lazy: {\n\t\t\t...route.lazy,\n\t\t\t...updates.lazy\n\t\t} } : {}\n\t});\n}\n/**\n* Matches the given routes to a location and returns the match data.\n*\n* @example\n* import { matchRoutes } from \"react-router\";\n*\n* let routes = [{\n* path: \"/\",\n* Component: Root,\n* children: [{\n* path: \"dashboard\",\n* Component: Dashboard,\n* }]\n* }];\n*\n* matchRoutes(routes, \"/dashboard\"); // [rootMatch, dashboardMatch]\n*\n* @public\n* @category Utils\n* @param routes The array of route objects to match against.\n* @param locationArg The location to match against, either a string path or a\n* partial {@link Location} object\n* @param basename Optional base path to strip from the location before matching.\n* Defaults to `/`.\n* @returns An array of matched routes, or `null` if no matches were found.\n*/\nfunction matchRoutes(routes, locationArg, basename = \"/\") {\n\treturn matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial, precomputedBranches) {\n\tlet pathname = stripBasename((typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg).pathname || \"/\", basename);\n\tif (pathname == null) return null;\n\tlet branches = precomputedBranches ?? flattenAndRankRoutes(routes);\n\tlet matches = null;\n\tlet decoded = decodePath(pathname);\n\tfor (let i = 0; matches == null && i < branches.length; ++i) matches = matchRouteBranch(branches[i], decoded, allowPartial);\n\treturn matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n\tlet { route, pathname, params } = match;\n\treturn {\n\t\tid: route.id,\n\t\tpathname,\n\t\tparams,\n\t\tloaderData: loaderData[route.id],\n\t\thandle: route.handle\n\t};\n}\nfunction flattenAndRankRoutes(routes) {\n\tlet branches = flattenRoutes(routes);\n\trankRouteBranches(branches);\n\treturn branches;\n}\nfunction flattenRoutes(routes, branches = [], parentsMeta = [], parentPath = \"\", _hasParentOptionalSegments = false) {\n\tlet flattenRoute = (route, index, hasParentOptionalSegments = _hasParentOptionalSegments, relativePath) => {\n\t\tlet meta = {\n\t\t\trelativePath: relativePath === void 0 ? route.path || \"\" : relativePath,\n\t\t\tcaseSensitive: route.caseSensitive === true,\n\t\t\tchildrenIndex: index,\n\t\t\troute\n\t\t};\n\t\tif (meta.relativePath.startsWith(\"/\")) {\n\t\t\tif (!meta.relativePath.startsWith(parentPath) && hasParentOptionalSegments) return;\n\t\t\tinvariant(meta.relativePath.startsWith(parentPath), `Absolute route path \"${meta.relativePath}\" nested under path \"${parentPath}\" is not valid. An absolute child route path must start with the combined path of all its parent routes.`);\n\t\t\tmeta.relativePath = meta.relativePath.slice(parentPath.length);\n\t\t}\n\t\tlet path = joinPaths([parentPath, meta.relativePath]);\n\t\tlet routesMeta = parentsMeta.concat(meta);\n\t\tif (route.children && route.children.length > 0) {\n\t\t\tinvariant(route.index !== true, `Index routes must not have child routes. Please remove all child routes from route path \"${path}\".`);\n\t\t\tflattenRoutes(route.children, branches, routesMeta, path, hasParentOptionalSegments);\n\t\t}\n\t\tif (route.path == null && !route.index) return;\n\t\tbranches.push({\n\t\t\tpath,\n\t\t\tscore: computeScore(path, route.index),\n\t\t\troutesMeta: routesMeta.map((meta, i) => {\n\t\t\t\tlet [matcher, params] = compilePath(meta.relativePath, meta.caseSensitive, i === routesMeta.length - 1);\n\t\t\t\treturn {\n\t\t\t\t\t...meta,\n\t\t\t\t\tmatcher,\n\t\t\t\t\tcompiledParams: params\n\t\t\t\t};\n\t\t\t})\n\t\t});\n\t};\n\troutes.forEach((route, index) => {\n\t\tif (route.path === \"\" || !route.path?.includes(\"?\")) flattenRoute(route, index);\n\t\telse for (let exploded of explodeOptionalSegments(route.path)) flattenRoute(route, index, true, exploded);\n\t});\n\treturn branches;\n}\nfunction explodeOptionalSegments(path) {\n\tlet segments = path.split(\"/\");\n\tif (segments.length === 0) return [];\n\tlet [first, ...rest] = segments;\n\tlet isOptional = first.endsWith(\"?\");\n\tlet required = first.replace(/\\?$/, \"\");\n\tif (rest.length === 0) return isOptional ? [required, \"\"] : [required];\n\tlet restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\tlet result = [];\n\tresult.push(...restExploded.map((subpath) => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n\tif (isOptional) result.push(...restExploded);\n\treturn result.map((exploded) => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n\tbranches.sort((a, b) => a.score !== b.score ? b.score - a.score : compareIndexes(a.routesMeta.map((meta) => meta.childrenIndex), b.routesMeta.map((meta) => meta.childrenIndex)));\n}\nconst paramRe = /^:[\\w-]+$/;\nconst partialParamRe = /^:[\\w-]+/;\nconst partialDynamicSegmentValue = 3.5;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s) => s === \"*\";\nfunction computeScore(path, index) {\n\tlet segments = path.split(\"/\");\n\tlet initialScore = segments.length;\n\tif (segments.some(isSplat)) initialScore += splatPenalty;\n\tif (index) initialScore += indexRouteValue;\n\treturn segments.filter((s) => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : partialParamRe.test(segment) ? partialDynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n\treturn a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]) ? a[a.length - 1] - b[b.length - 1] : 0;\n}\nfunction matchRouteBranch(branch, pathname, allowPartial = false) {\n\tlet { routesMeta } = branch;\n\tlet matchedParams = {};\n\tlet matchedPathname = \"/\";\n\tlet matches = [];\n\tfor (let i = 0; i < routesMeta.length; ++i) {\n\t\tlet meta = routesMeta[i];\n\t\tlet end = i === routesMeta.length - 1;\n\t\tlet remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n\t\tlet pattern = {\n\t\t\tpath: meta.relativePath,\n\t\t\tcaseSensitive: meta.caseSensitive,\n\t\t\tend\n\t\t};\n\t\tlet match = meta.matcher && meta.compiledParams ? matchPathImpl(pattern, remainingPathname, meta.matcher, meta.compiledParams) : matchPath(pattern, remainingPathname);\n\t\tlet route = meta.route;\n\t\tif (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) match = matchPath({\n\t\t\tpath: meta.relativePath,\n\t\t\tcaseSensitive: meta.caseSensitive,\n\t\t\tend: false\n\t\t}, remainingPathname);\n\t\tif (!match) return null;\n\t\tObject.assign(matchedParams, match.params);\n\t\tmatches.push({\n\t\t\tparams: matchedParams,\n\t\t\tpathname: joinPaths([matchedPathname, match.pathname]),\n\t\t\tpathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n\t\t\troute\n\t\t});\n\t\tif (match.pathnameBase !== \"/\") matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n\t}\n\treturn matches;\n}\n/**\n* Characters that `encodeURIComponent` escapes but that are valid literally in\n* a URL path segment. Per RFC 3986 §3.3, a path segment is made of `pchar`:\n*\n* ```\n* pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n* sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\" / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n* ```\n*\n* `encodeURIComponent` targets query-string values, where `$ & + , ; = : @`\n* are delimiters and must be escaped — but in a path segment they carry no\n* special meaning, and browsers keep them literal in `location.pathname`.\n* (`! ' ( ) *` and the unreserved set are already left alone by\n* `encodeURIComponent`, so they need no restoring.)\n*/\nconst PATH_PARAM_OVERESCAPED = {\n\t\"%24\": \"$\",\n\t\"%26\": \"&\",\n\t\"%2B\": \"+\",\n\t\"%2C\": \",\",\n\t\"%3A\": \":\",\n\t\"%3B\": \";\",\n\t\"%3D\": \"=\",\n\t\"%40\": \"@\"\n};\n/**\n* Encodes a param value for interpolation into a single URL path segment.\n*\n* Escapes characters that would break the path (`/ ? # %`, whitespace,\n* non-ASCII, …) while leaving characters that RFC 3986 permits literally in a\n* path segment untouched. Escaping those would needlessly rewrite URLs — e.g.\n* a semver build param `1.0.0+1` would become `1.0.0%2B1` even though browsers\n* display and match the `+` literally in `location.pathname`.\n*\n* See [RFC 3986 §3.3](https://datatracker.ietf.org/doc/html/rfc3986#section-3.3))\n*\n* @param value The param value to encode.\n* @returns The encoded value, safe for use as a single path segment.\n*/\nfunction encodePathParam(value) {\n\treturn encodeURIComponent(value).replace(/%(?:24|26|2B|2C|3A|3B|3D|40)/g, (match) => PATH_PARAM_OVERESCAPED[match]);\n}\n/**\n* Returns a path with params interpolated.\n*\n* Param values are percent-encoded for use in a path segment: characters that\n* would change the URL structure (`/`, `?`, `#`, `%`, whitespace, non-ASCII)\n* are escaped, while characters that RFC 3986 allows literally in a path\n* segment (`$ & + , ; = : @`) are kept as-is. Note this differs from query-string\n* encoding (`encodeURIComponent`/`URLSearchParams`), where those characters are\n* delimiters and must be escaped. Splat (`*`) values are encoded per segment,\n* preserving `/` separators.\n*\n* See [RFC 3986 §3.3](https://datatracker.ietf.org/doc/html/rfc3986#section-3.3)\n*\n* @example\n* import { generatePath } from \"react-router\";\n*\n* generatePath(\"/users/:id\", { id: \"123\" }); // \"/users/123\"\n* generatePath(\"/files/:name\", { name: \"a b\" }); // \"/files/a%20b\"\n* generatePath(\"/releases/:v\", { v: \"1.0.0+1\" }); // \"/releases/1.0.0+1\"\n*\n* @public\n* @category Utils\n* @param originalPath The original path to generate.\n* @param params The parameters to interpolate into the path.\n* @returns The generated path with parameters interpolated.\n*/\nfunction generatePath(originalPath, params = {}) {\n\tlet path = originalPath;\n\tif (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n\t\twarning(false, `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`);\n\t\tpath = path.replace(/\\*$/, \"/*\");\n\t}\n\tconst prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\tconst stringify = (p) => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\treturn prefix + path.split(/\\/+/).map((segment, index, array) => {\n\t\tif (index === array.length - 1 && segment === \"*\") return stringify(params[\"*\"]);\n\t\tconst keyMatch = segment.match(/^:([\\w-]+)(\\??)(.*)/);\n\t\tif (keyMatch) {\n\t\t\tconst [, key, optional, suffix] = keyMatch;\n\t\t\tlet param = params[key];\n\t\t\tinvariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n\t\t\treturn encodePathParam(stringify(param)) + suffix;\n\t\t}\n\t\treturn segment.replace(/\\?$/g, \"\");\n\t}).filter((segment) => !!segment).join(\"/\");\n}\n/**\n* Performs pattern matching on a URL pathname and returns information about\n* the match.\n*\n* @public\n* @category Utils\n* @param pattern The pattern to match against the URL pathname. This can be a\n* string or a {@link PathPattern} object. If a string is provided, it will be\n* treated as a pattern with `caseSensitive` set to `false` and `end` set to\n* `true`.\n* @param pathname The URL pathname to match against the pattern.\n* @returns A path match object if the pattern matches the pathname,\n* or `null` if it does not match.\n*/\nfunction matchPath(pattern, pathname) {\n\tif (typeof pattern === \"string\") pattern = {\n\t\tpath: pattern,\n\t\tcaseSensitive: false,\n\t\tend: true\n\t};\n\tlet [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n\treturn matchPathImpl(pattern, pathname, matcher, compiledParams);\n}\nfunction matchPathImpl(pattern, pathname, matcher, compiledParams) {\n\tlet match = pathname.match(matcher);\n\tif (!match) return null;\n\tlet matchedPathname = match[0];\n\tlet pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n\tlet captureGroups = match.slice(1);\n\treturn {\n\t\tparams: compiledParams.reduce((memo, { paramName, isOptional }, index) => {\n\t\t\tif (paramName === \"*\") {\n\t\t\t\tlet splatValue = captureGroups[index] || \"\";\n\t\t\t\tpathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n\t\t\t}\n\t\t\tconst value = captureGroups[index];\n\t\t\tif (isOptional && !value) memo[paramName] = void 0;\n\t\t\telse memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n\t\t\treturn memo;\n\t\t}, {}),\n\t\tpathname: matchedPathname,\n\t\tpathnameBase,\n\t\tpattern\n\t};\n}\nfunction compilePath(path, caseSensitive = false, end = true) {\n\twarning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`);\n\tlet params = [];\n\tlet regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\").replace(/^\\/*/, \"/\").replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\").replace(/\\/:([\\w-]+)(\\?)?/g, (match, paramName, isOptional, index, str) => {\n\t\tparams.push({\n\t\t\tparamName,\n\t\t\tisOptional: isOptional != null\n\t\t});\n\t\tif (isOptional) {\n\t\t\tlet nextChar = str.charAt(index + match.length);\n\t\t\tif (nextChar && nextChar !== \"/\") return \"/([^\\\\/]*)\";\n\t\t\treturn \"(?:/([^\\\\/]*))?\";\n\t\t}\n\t\treturn \"/([^\\\\/]+)\";\n\t}).replace(/\\/([\\w-]+)\\?(?=\\/|$|\\()/g, \"(?:/$1)?\");\n\tif (path.endsWith(\"*\")) {\n\t\tparams.push({ paramName: \"*\" });\n\t\tregexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" : \"(?:\\\\/(.+)|\\\\/*)$\";\n\t} else if (end) regexpSource += \"\\\\/*$\";\n\telse if (path !== \"\" && path !== \"/\") regexpSource += \"(?:(?=\\\\/|$))\";\n\treturn [new RegExp(regexpSource, caseSensitive ? void 0 : \"i\"), params];\n}\nfunction decodePath(value) {\n\ttry {\n\t\treturn value.split(\"/\").map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n\t} catch (error) {\n\t\twarning(false, `The URL path \"${value}\" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${error}).`);\n\t\treturn value;\n\t}\n}\nfunction stripBasename(pathname, basename) {\n\tif (basename === \"/\") return pathname;\n\tif (!pathname.toLowerCase().startsWith(basename.toLowerCase())) return null;\n\tlet startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n\tlet nextChar = pathname.charAt(startIndex);\n\tif (nextChar && nextChar !== \"/\") return null;\n\treturn pathname.slice(startIndex) || \"/\";\n}\nfunction prependBasename({ basename, pathname }) {\n\treturn pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n}\nconst isAbsoluteUrl = (url) => ABSOLUTE_URL_REGEX.test(url);\n/**\n* Returns a resolved {@link Path} object relative to the given pathname.\n*\n* @public\n* @category Utils\n* @param to The path to resolve, either a string or a partial {@link Path}\n* object.\n* @param fromPathname The pathname to resolve the path from. Defaults to `/`.\n* @returns A {@link Path} object with the resolved pathname, search, and hash.\n*/\nfunction resolvePath(to, fromPathname = \"/\") {\n\tlet { pathname: toPathname, search = \"\", hash = \"\" } = typeof to === \"string\" ? parsePath(to) : to;\n\tlet pathname;\n\tif (toPathname) {\n\t\ttoPathname = removeDoubleSlashes(toPathname);\n\t\tif (toPathname.startsWith(\"/\")) pathname = resolvePathname(toPathname.substring(1), \"/\");\n\t\telse pathname = resolvePathname(toPathname, fromPathname);\n\t} else pathname = fromPathname;\n\treturn {\n\t\tpathname,\n\t\tsearch: normalizeSearch(search),\n\t\thash: normalizeHash(hash)\n\t};\n}\nfunction resolvePathname(relativePath, fromPathname) {\n\tlet segments = removeTrailingSlash(fromPathname).split(\"/\");\n\trelativePath.split(\"/\").forEach((segment) => {\n\t\tif (segment === \"..\") {\n\t\t\tif (segments.length > 1) segments.pop();\n\t\t} else if (segment !== \".\") segments.push(segment);\n\t});\n\treturn segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n\treturn `Cannot include a '${char}' character in a manually specified \\`to.${field}\\` field [${JSON.stringify(path)}]. Please separate it out to the \\`to.${dest}\\` field. Alternatively you may provide the full path as a string in <Link to=\"...\"> and the router will parse it for you.`;\n}\nfunction getPathContributingMatches(matches) {\n\treturn matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\nfunction getResolveToMatches(matches) {\n\tlet pathMatches = getPathContributingMatches(matches);\n\treturn pathMatches.map((match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase);\n}\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative = false) {\n\tlet to;\n\tif (typeof toArg === \"string\") to = parsePath(toArg);\n\telse {\n\t\tto = { ...toArg };\n\t\tinvariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n\t\tinvariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n\t\tinvariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n\t}\n\tlet isEmptyPath = toArg === \"\" || to.pathname === \"\";\n\tlet toPathname = isEmptyPath ? \"/\" : to.pathname;\n\tlet from;\n\tif (toPathname == null) from = locationPathname;\n\telse {\n\t\tlet routePathnameIndex = routePathnames.length - 1;\n\t\tif (!isPathRelative && toPathname.startsWith(\"..\")) {\n\t\t\tlet toSegments = toPathname.split(\"/\");\n\t\t\twhile (toSegments[0] === \"..\") {\n\t\t\t\ttoSegments.shift();\n\t\t\t\troutePathnameIndex -= 1;\n\t\t\t}\n\t\t\tto.pathname = toSegments.join(\"/\");\n\t\t}\n\t\tfrom = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n\t}\n\tlet path = resolvePath(to, from);\n\tlet hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n\tlet hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n\tif (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) path.pathname += \"/\";\n\treturn path;\n}\nconst removeDoubleSlashes = (path) => path.replace(/[\\\\/]{2,}/g, \"/\");\nconst joinPaths = (paths) => removeDoubleSlashes(paths.join(\"/\"));\nconst removeTrailingSlash = (path) => path.replace(/\\/+$/, \"\");\nconst normalizePathname = (pathname) => removeTrailingSlash(pathname).replace(/^\\/*/, \"/\");\nconst normalizeSearch = (search) => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\nconst normalizeHash = (hash) => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\nvar DataWithResponseInit = class {\n\ttype = \"DataWithResponseInit\";\n\tdata;\n\tinit;\n\tconstructor(data, init) {\n\t\tthis.data = data;\n\t\tthis.init = init || null;\n\t}\n};\n/**\n* Create \"responses\" that contain `headers`/`status` without forcing\n* serialization into an actual [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n*\n* @example\n* import { data } from \"react-router\";\n*\n* export async function action({ request }: Route.ActionArgs) {\n* let formData = await request.formData();\n* let item = await createItem(formData);\n* return data(item, {\n* headers: { \"X-Custom-Header\": \"value\" }\n* status: 201,\n* });\n* }\n*\n* @public\n* @category Utils\n* @mode framework\n* @mode data\n* @param data The data to be included in the response.\n* @param init The status code or a `ResponseInit` object to be included in the\n* response.\n* @returns A {@link DataWithResponseInit} instance containing the data and\n* response init.\n*/\nfunction data(data, init) {\n\treturn new DataWithResponseInit(data, typeof init === \"number\" ? { status: init } : init);\n}\n/**\n* A redirect [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response).\n* Sets the status code and the [`Location`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)\n* header. Defaults to [`302 Found`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302).\n*\n* This utility accepts absolute URLs and can navigate to external domains, so\n* the application should validate any user-supplied inputs to redirects.\n*\n* @example\n* import { redirect } from \"react-router\";\n*\n* export async function loader({ request }: Route.LoaderArgs) {\n* if (!isLoggedIn(request))\n* throw redirect(\"/login\");\n* }\n*\n* // ...\n* }\n*\n* @public\n* @category Utils\n* @mode framework\n* @mode data\n* @param url The URL to redirect to.\n* @param init The status code or a `ResponseInit` object to be included in the\n* response.\n* @returns A [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n* object with the redirect status and [`Location`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)\n* header.\n*/\nconst redirect = (url, init = 302) => {\n\tlet responseInit = init;\n\tif (typeof responseInit === \"number\") responseInit = { status: responseInit };\n\telse if (typeof responseInit.status === \"undefined\") responseInit.status = 302;\n\tlet headers = new Headers(responseInit.headers);\n\theaders.set(\"Location\", url);\n\treturn new Response(null, {\n\t\t...responseInit,\n\t\theaders\n\t});\n};\n/**\n* A redirect [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n* that will force a document reload to the new location. Sets the status code\n* and the [`Location`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)\n* header. Defaults to [`302 Found`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302).\n*\n* This utility accepts absolute URLs and can navigate to external domains, so\n* the application should validate any user-supplied inputs to redirects.\n*\n* ```tsx filename=routes/logout.tsx\n* import { redirectDocument } from \"react-router\";\n*\n* import { destroySession } from \"../sessions.server\";\n*\n* export async function action({ request }: Route.ActionArgs) {\n* let session = await getSession(request.headers.get(\"Cookie\"));\n* return redirectDocument(\"/\", {\n* headers: { \"Set-Cookie\": await destroySession(session) }\n* });\n* }\n* ```\n*\n* @public\n* @category Utils\n* @mode framework\n* @mode data\n* @param url The URL to redirect to.\n* @param init The status code or a `ResponseInit` object to be included in the\n* response.\n* @returns A [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n* object with the redirect status and [`Location`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)\n* header.\n*/\nconst redirectDocument = (url, init) => {\n\tlet response = redirect(url, init);\n\tresponse.headers.set(\"X-Remix-Reload-Document\", \"true\");\n\treturn response;\n};\n/**\n* A redirect [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n* that will perform a [`history.replaceState`](https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState)\n* instead of a [`history.pushState`](https://developer.mozilla.org/en-US/docs/Web/API/History/pushState)\n* for client-side navigation redirects. Sets the status code and the [`Location`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)\n* header. Defaults to [`302 Found`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302).\n*\n* @example\n* import { replace } from \"react-router\";\n*\n* export async function loader() {\n* return replace(\"/new-location\");\n* }\n*\n* @public\n* @category Utils\n* @mode framework\n* @mode data\n* @param url The URL to redirect to.\n* @param init The status code or a `ResponseInit` object to be included in the\n* response.\n* @returns A [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n* object with the redirect status and [`Location`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)\n* header.\n*/\nconst replace = (url, init) => {\n\tlet response = redirect(url, init);\n\tresponse.headers.set(\"X-Remix-Replace\", \"true\");\n\treturn response;\n};\nconst SUPPORTED_ERROR_TYPES = [\n\t\"EvalError\",\n\t\"RangeError\",\n\t\"ReferenceError\",\n\t\"SyntaxError\",\n\t\"TypeError\",\n\t\"URIError\"\n];\nvar ErrorResponseImpl = class {\n\tstatus;\n\tstatusText;\n\tdata;\n\terror;\n\tinternal;\n\tconstructor(status, statusText, data, internal = false) {\n\t\tthis.status = status;\n\t\tthis.statusText = statusText || \"\";\n\t\tthis.internal = internal;\n\t\tif (data instanceof Error) {\n\t\t\tthis.data = data.toString();\n\t\t\tthis.error = data;\n\t\t} else this.data = data;\n\t}\n};\n/**\n* Check if the given error is an {@link ErrorResponse} generated from a 4xx/5xx\n* [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n* thrown from an [`action`](../../start/framework/route-module#action) or\n* [`loader`](../../start/framework/route-module#loader) function.\n*\n* @example\n* import { isRouteErrorResponse } from \"react-router\";\n*\n* export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {\n* if (isRouteErrorResponse(error)) {\n* return (\n* <>\n* <p>Error: `${error.status}: ${error.statusText}`</p>\n* <p>{error.data}</p>\n* </>\n* );\n* }\n*\n* return (\n* <p>Error: {error instanceof Error ? error.message : \"Unknown Error\"}</p>\n* );\n* }\n*\n* @public\n* @category Utils\n* @mode framework\n* @mode data\n* @param error The error to check.\n* @returns `true` if the error is an {@link ErrorResponse}, `false` otherwise.\n*/\nfunction isRouteErrorResponse(error) {\n\treturn error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\nfunction getRoutePattern(matches) {\n\treturn joinPaths(matches.map((m) => m.route.path).filter(Boolean)) || \"/\";\n}\nfunction createDataFunctionUrl(request, path) {\n\tlet url = new URL(typeof request === \"string\" || request instanceof URL ? request : request.url);\n\tlet parsed = typeof path === \"string\" ? parsePath(path) : path;\n\turl.pathname = parsed.pathname || \"/\";\n\tif (parsed.search) {\n\t\tlet searchParams = new URLSearchParams(parsed.search);\n\t\tlet indexValues = searchParams.getAll(\"index\");\n\t\tsearchParams.delete(\"index\");\n\t\tfor (let value of indexValues.filter(Boolean)) searchParams.append(\"index\", value);\n\t\tlet search = searchParams.toString();\n\t\turl.search = search ? `?${search}` : \"\";\n\t} else url.search = \"\";\n\turl.hash = parsed.hash || \"\";\n\treturn url;\n}\nconst isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nfunction parseToInfo(_to, basename) {\n\tlet to = _to;\n\tif (typeof to !== \"string\" || !ABSOLUTE_URL_REGEX.test(to)) return {\n\t\tabsoluteURL: void 0,\n\t\tisExternal: false,\n\t\tto\n\t};\n\tlet absoluteURL = to;\n\tlet isExternal = false;\n\tif (isBrowser) try {\n\t\tlet currentUrl = new URL(window.location.href);\n\t\tlet targetUrl = PROTOCOL_RELATIVE_URL_REGEX.test(to) ? new URL(normalizeProtocolRelativeUrl(to, currentUrl.protocol)) : new URL(to);\n\t\tlet path = stripBasename(targetUrl.pathname, basename);\n\t\tif (targetUrl.origin === currentUrl.origin && path != null) to = path + targetUrl.search + targetUrl.hash;\n\t\telse isExternal = true;\n\t} catch (e) {\n\t\twarning(false, `<Link to=\"${to}\"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`);\n\t}\n\treturn {\n\t\tabsoluteURL,\n\t\tisExternal,\n\t\tto\n\t};\n}\n//#endregion\nexport { ErrorResponseImpl, RouterContextProvider, SUPPORTED_ERROR_TYPES, compilePath, convertRouteMatchToUiMatch, convertRoutesToDataRoutes, createContext, createDataFunctionUrl, data, decodePath, defaultMapRouteProperties, encodePathParam, flattenAndRankRoutes, generatePath, getPathContributingMatches, getResolveToMatches, getRoutePattern, isAbsoluteUrl, isBrowser, isRouteErrorResponse, isUnsupportedLazyRouteFunctionKey, isUnsupportedLazyRouteObjectKey, joinPaths, matchPath, matchRoutes, matchRoutesImpl, parseToInfo, prependBasename, redirect, redirectDocument, removeDoubleSlashes, removeTrailingSlash, replace, resolvePath, resolveTo, stripBasename };\n"],"x_google_ignoreList":[0],"mappings":"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"}
|