UNPKG

repoweaver

Version:

A GitHub App that skillfully weaves multiple templates together to create and update repositories with intelligent merge strategies

1 lines 22.8 kB
{"ast":null,"code":"\"use strict\";\n\nimport * as queryString from 'query-string';\nimport { getPatternParts } from \"./getPatternParts.js\";\nimport { validatePathConfig } from \"./validatePathConfig.js\";\nconst getActiveRoute = state => {\n const route = typeof state.index === 'number' ? state.routes[state.index] : state.routes[state.routes.length - 1];\n if (route.state) {\n return getActiveRoute(route.state);\n }\n return route;\n};\nconst cachedNormalizedConfigs = new WeakMap();\nconst getNormalizedConfigs = options => {\n if (!options?.screens) return {};\n const cached = cachedNormalizedConfigs.get(options?.screens);\n if (cached) return cached;\n const normalizedConfigs = createNormalizedConfigs(options.screens);\n cachedNormalizedConfigs.set(options.screens, normalizedConfigs);\n return normalizedConfigs;\n};\nexport function getPathFromState(state, options) {\n if (state == null) {\n throw Error(`Got '${String(state)}' for the navigation state. You must pass a valid state object.`);\n }\n if (options) {\n validatePathConfig(options);\n }\n const configs = getNormalizedConfigs(options);\n let path = '/';\n let current = state;\n const allParams = {};\n while (current) {\n let index = typeof current.index === 'number' ? current.index : 0;\n let route = current.routes[index];\n let parts;\n let focusedParams;\n let currentOptions = configs;\n const focusedRoute = getActiveRoute(state);\n const nestedRouteNames = [];\n let hasNext = true;\n while (route.name in currentOptions && hasNext) {\n parts = currentOptions[route.name].parts;\n nestedRouteNames.push(route.name);\n if (route.params) {\n const options = currentOptions[route.name];\n const currentParams = Object.fromEntries(Object.entries(route.params).map(([key, value]) => {\n if (value === undefined) {\n if (options) {\n const optional = options.parts?.find(part => part.param === key)?.optional;\n if (optional) {\n return null;\n }\n } else {\n return null;\n }\n }\n const stringify = options?.stringify?.[key] ?? String;\n return [key, stringify(value)];\n }).filter(entry => entry != null));\n if (parts?.length) {\n Object.assign(allParams, currentParams);\n }\n if (focusedRoute === route) {\n focusedParams = Object.assign({}, currentParams);\n parts?.forEach(({\n param\n }) => {\n if (param) {\n if (focusedParams) {\n delete focusedParams[param];\n }\n }\n });\n }\n }\n if (!currentOptions[route.name].screens || route.state === undefined) {\n hasNext = false;\n } else {\n index = typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;\n const nextRoute = route.state.routes[index];\n const nestedConfig = currentOptions[route.name].screens;\n if (nestedConfig && nextRoute.name in nestedConfig) {\n route = nextRoute;\n currentOptions = nestedConfig;\n } else {\n hasNext = false;\n }\n }\n }\n if (currentOptions[route.name] !== undefined) {\n path += parts?.map(({\n segment,\n param,\n optional\n }) => {\n if (segment === '*') {\n return route.name;\n }\n if (param) {\n const value = allParams[param];\n if (value === undefined && optional) {\n return '';\n }\n return String(value).replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g, char => encodeURIComponent(char));\n }\n return encodeURIComponent(segment);\n }).join('/');\n } else {\n path += encodeURIComponent(route.name);\n }\n if (!focusedParams && focusedRoute.params) {\n focusedParams = Object.fromEntries(Object.entries(focusedRoute.params).map(([key, value]) => [key, String(value)]));\n }\n if (route.state) {\n path += '/';\n } else if (focusedParams) {\n for (const param in focusedParams) {\n if (focusedParams[param] === 'undefined') {\n delete focusedParams[param];\n }\n }\n const query = queryString.stringify(focusedParams, {\n sort: false\n });\n if (query) {\n path += `?${query}`;\n }\n }\n current = route.state;\n }\n if (options?.path) {\n path = `${options.path}/${path}`;\n }\n path = path.replace(/\\/+/g, '/');\n path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n if (!path.startsWith('/')) {\n path = `/${path}`;\n }\n return path;\n}\nconst createConfigItem = (config, parentParts) => {\n if (typeof config === 'string') {\n const parts = getPatternParts(config);\n if (parentParts) {\n return {\n parts: [...parentParts, ...parts]\n };\n }\n return {\n parts\n };\n }\n if (config.exact && config.path === undefined) {\n throw new Error(\"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\");\n }\n const parts = config.exact !== true ? [...(parentParts || []), ...(config.path ? getPatternParts(config.path) : [])] : config.path ? getPatternParts(config.path) : undefined;\n const screens = config.screens ? createNormalizedConfigs(config.screens, parts) : undefined;\n return {\n parts,\n stringify: config.stringify,\n screens\n };\n};\nconst createNormalizedConfigs = (options, parts) => Object.fromEntries(Object.entries(options).map(([name, c]) => {\n const result = createConfigItem(c, parts);\n return [name, result];\n}));","map":{"version":3,"names":["queryString","getPatternParts","validatePathConfig","getActiveRoute","state","route","index","routes","length","cachedNormalizedConfigs","WeakMap","getNormalizedConfigs","options","screens","cached","get","normalizedConfigs","createNormalizedConfigs","set","getPathFromState","Error","String","configs","path","current","allParams","parts","focusedParams","currentOptions","focusedRoute","nestedRouteNames","hasNext","name","push","params","currentParams","Object","fromEntries","entries","map","key","value","undefined","optional","find","part","param","stringify","filter","entry","assign","forEach","nextRoute","nestedConfig","segment","replace","char","encodeURIComponent","join","query","sort","startsWith","createConfigItem","config","parentParts","exact","c","result"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/@react-navigation/core/src/getPathFromState.tsx"],"sourcesContent":["import type {\n NavigationState,\n PartialState,\n Route,\n} from '@react-navigation/routers';\nimport * as queryString from 'query-string';\n\nimport { getPatternParts, type PatternPart } from './getPatternParts';\nimport type { PathConfig, PathConfigMap } from './types';\nimport { validatePathConfig } from './validatePathConfig';\n\ntype Options<ParamList extends {}> = {\n path?: string;\n initialRouteName?: string;\n screens: PathConfigMap<ParamList>;\n};\n\ntype State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>;\n\ntype StringifyConfig = Record<string, (value: unknown) => string>;\n\ntype ConfigItem = {\n parts?: PatternPart[];\n stringify?: StringifyConfig;\n screens?: Record<string, ConfigItem>;\n};\n\nconst getActiveRoute = (state: State): { name: string; params?: object } => {\n const route =\n typeof state.index === 'number'\n ? state.routes[state.index]\n : state.routes[state.routes.length - 1];\n\n if (route.state) {\n return getActiveRoute(route.state);\n }\n\n return route;\n};\n\nconst cachedNormalizedConfigs = new WeakMap<\n PathConfigMap<{}>,\n Record<string, ConfigItem>\n>();\n\nconst getNormalizedConfigs = (options?: Options<{}>) => {\n if (!options?.screens) return {};\n\n const cached = cachedNormalizedConfigs.get(options?.screens);\n\n if (cached) return cached;\n\n const normalizedConfigs = createNormalizedConfigs(options.screens);\n\n cachedNormalizedConfigs.set(options.screens, normalizedConfigs);\n\n return normalizedConfigs;\n};\n\n/**\n * Utility to serialize a navigation state object to a path string.\n *\n * @example\n * ```js\n * getPathFromState(\n * {\n * routes: [\n * {\n * name: 'Chat',\n * params: { author: 'Jane', id: 42 },\n * },\n * ],\n * },\n * {\n * screens: {\n * Chat: {\n * path: 'chat/:author/:id',\n * stringify: { author: author => author.toLowerCase() }\n * }\n * }\n * }\n * )\n * ```\n *\n * @param state Navigation state to serialize.\n * @param options Extra options to fine-tune how to serialize the path.\n * @returns Path representing the state, e.g. /foo/bar?count=42.\n */\nexport function getPathFromState<ParamList extends {}>(\n state: State,\n options?: Options<ParamList>\n): string {\n if (state == null) {\n throw Error(\n `Got '${String(state)}' for the navigation state. You must pass a valid state object.`\n );\n }\n\n if (options) {\n validatePathConfig(options);\n }\n\n const configs = getNormalizedConfigs(options);\n\n let path = '/';\n let current: State | undefined = state;\n\n const allParams: Record<string, string> = {};\n\n while (current) {\n let index = typeof current.index === 'number' ? current.index : 0;\n let route = current.routes[index] as Route<string> & {\n state?: State;\n };\n\n let parts: PatternPart[] | undefined;\n\n let focusedParams: Record<string, string> | undefined;\n let currentOptions = configs;\n\n const focusedRoute = getActiveRoute(state);\n\n // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n const nestedRouteNames = [];\n\n let hasNext = true;\n\n while (route.name in currentOptions && hasNext) {\n parts = currentOptions[route.name].parts;\n\n nestedRouteNames.push(route.name);\n\n if (route.params) {\n const options = currentOptions[route.name];\n\n const currentParams = Object.fromEntries(\n Object.entries(route.params)\n .map(([key, value]): [string, string] | null => {\n if (value === undefined) {\n if (options) {\n const optional = options.parts?.find(\n (part) => part.param === key\n )?.optional;\n\n if (optional) {\n return null;\n }\n } else {\n return null;\n }\n }\n\n const stringify = options?.stringify?.[key] ?? String;\n\n return [key, stringify(value)];\n })\n .filter((entry) => entry != null)\n );\n\n if (parts?.length) {\n Object.assign(allParams, currentParams);\n }\n\n if (focusedRoute === route) {\n // If this is the focused route, keep the params for later use\n // We save it here since it's been stringified already\n focusedParams = { ...currentParams };\n\n parts\n // eslint-disable-next-line no-loop-func\n ?.forEach(({ param }) => {\n if (param) {\n // Remove the params present in the pattern since we'll only use the rest for query string\n if (focusedParams) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[param];\n }\n }\n });\n }\n }\n\n // If there is no `screens` property or no nested state, we return pattern\n if (!currentOptions[route.name].screens || route.state === undefined) {\n hasNext = false;\n } else {\n index =\n typeof route.state.index === 'number'\n ? route.state.index\n : route.state.routes.length - 1;\n\n const nextRoute = route.state.routes[index];\n const nestedConfig = currentOptions[route.name].screens;\n\n // if there is config for next route name, we go deeper\n if (nestedConfig && nextRoute.name in nestedConfig) {\n route = nextRoute as Route<string> & { state?: State };\n currentOptions = nestedConfig;\n } else {\n // If not, there is no sense in going deeper in config\n hasNext = false;\n }\n }\n }\n\n if (currentOptions[route.name] !== undefined) {\n path += parts\n ?.map(({ segment, param, optional }) => {\n // We don't know what to show for wildcard patterns\n // Showing the route name seems ok, though whatever we show here will be incorrect\n // Since the page doesn't actually exist\n if (segment === '*') {\n return route.name;\n }\n\n // If the path has a pattern for a param, put the param in the path\n if (param) {\n const value = allParams[param];\n\n if (value === undefined && optional) {\n // Optional params without value assigned in route.params should be ignored\n return '';\n }\n\n // Valid characters according to\n // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n return String(value).replace(\n /[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g,\n (char) => encodeURIComponent(char)\n );\n }\n\n return encodeURIComponent(segment);\n })\n .join('/');\n } else {\n path += encodeURIComponent(route.name);\n }\n\n if (!focusedParams && focusedRoute.params) {\n focusedParams = Object.fromEntries(\n Object.entries(focusedRoute.params).map(([key, value]) => [\n key,\n String(value),\n ])\n );\n }\n\n if (route.state) {\n path += '/';\n } else if (focusedParams) {\n for (const param in focusedParams) {\n if (focusedParams[param] === 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[param];\n }\n }\n\n const query = queryString.stringify(focusedParams, { sort: false });\n\n if (query) {\n path += `?${query}`;\n }\n }\n\n current = route.state;\n }\n\n // Include the root path if specified\n if (options?.path) {\n path = `${options.path}/${path}`;\n }\n\n // Remove multiple as well as trailing slashes\n path = path.replace(/\\/+/g, '/');\n path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n\n // If path doesn't start with a slash, add it\n // This makes sure that history.pushState will update the path correctly instead of appending\n if (!path.startsWith('/')) {\n path = `/${path}`;\n }\n\n return path;\n}\n\nconst createConfigItem = (\n config: PathConfig<object> | string,\n parentParts?: PatternPart[]\n): ConfigItem => {\n if (typeof config === 'string') {\n // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern\n const parts = getPatternParts(config);\n\n if (parentParts) {\n return { parts: [...parentParts, ...parts] };\n }\n\n return { parts };\n }\n\n if (config.exact && config.path === undefined) {\n throw new Error(\n \"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\"\n );\n }\n\n // If an object is specified as the value (e.g. Foo: { ... }),\n // It can have `path` property and `screens` prop which has nested configs\n const parts =\n config.exact !== true\n ? [\n ...(parentParts || []),\n ...(config.path ? getPatternParts(config.path) : []),\n ]\n : config.path\n ? getPatternParts(config.path)\n : undefined;\n\n const screens = config.screens\n ? createNormalizedConfigs(config.screens, parts)\n : undefined;\n\n return {\n parts,\n stringify: config.stringify,\n screens,\n };\n};\n\nconst createNormalizedConfigs = (\n options: PathConfigMap<object>,\n parts?: PatternPart[]\n): Record<string, ConfigItem> =>\n Object.fromEntries(\n Object.entries(options).map(([name, c]) => {\n const result = createConfigItem(c, parts);\n\n return [name, result];\n })\n );\n"],"mappings":"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","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}