repoweaver
Version:
A GitHub App that skillfully weaves multiple templates together to create and update repositories with intelligent merge strategies
1 lines • 56 kB
JSON
{"ast":null,"code":"\"use strict\";\n\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport escape from 'escape-string-regexp';\nimport * as queryString from 'query-string';\nimport { arrayStartsWith } from \"./arrayStartsWith.js\";\nimport { findFocusedRoute } from \"./findFocusedRoute.js\";\nimport { getPatternParts } from \"./getPatternParts.js\";\nimport { isArrayEqual } from \"./isArrayEqual.js\";\nimport { validatePathConfig } from \"./validatePathConfig.js\";\nexport function getStateFromPath(path, options) {\n var _options$path;\n var _getConfigResources = getConfigResources(options),\n initialRoutes = _getConfigResources.initialRoutes,\n configs = _getConfigResources.configs;\n var screens = options == null ? void 0 : options.screens;\n var remaining = path.replace(/\\/+/g, '/').replace(/^\\//, '').replace(/\\?.*$/, '');\n remaining = remaining.endsWith('/') ? remaining : `${remaining}/`;\n var prefix = options == null ? void 0 : (_options$path = options.path) == null ? void 0 : _options$path.replace(/^\\//, '');\n if (prefix) {\n var normalizedPrefix = prefix.endsWith('/') ? prefix : `${prefix}/`;\n if (!remaining.startsWith(normalizedPrefix)) {\n return undefined;\n }\n remaining = remaining.replace(normalizedPrefix, '');\n }\n if (screens === undefined) {\n var _routes = remaining.split('/').filter(Boolean).map(function (segment) {\n var name = decodeURIComponent(segment);\n return {\n name: name\n };\n });\n if (_routes.length) {\n return createNestedStateObject(path, _routes, initialRoutes);\n }\n return undefined;\n }\n if (remaining === '/') {\n var match = configs.find(function (config) {\n return config.segments.join('/') === '';\n });\n if (match) {\n return createNestedStateObject(path, match.routeNames.map(function (name) {\n return {\n name: name\n };\n }), initialRoutes, configs);\n }\n return undefined;\n }\n var result;\n var current;\n var _matchAgainstConfigs = matchAgainstConfigs(remaining, configs),\n routes = _matchAgainstConfigs.routes,\n remainingPath = _matchAgainstConfigs.remainingPath;\n if (routes !== undefined) {\n current = createNestedStateObject(path, routes, initialRoutes, configs);\n remaining = remainingPath;\n result = current;\n }\n if (current == null || result == null) {\n return undefined;\n }\n return result;\n}\nvar cachedConfigResources = new WeakMap();\nfunction getConfigResources(options) {\n if (!options) return prepareConfigResources();\n var cached = cachedConfigResources.get(options);\n if (cached) return cached;\n var resources = prepareConfigResources(options);\n cachedConfigResources.set(options, resources);\n return resources;\n}\nfunction prepareConfigResources(options) {\n if (options) {\n validatePathConfig(options);\n }\n var initialRoutes = getInitialRoutes(options);\n var configs = getSortedNormalizedConfigs(initialRoutes, options == null ? void 0 : options.screens);\n checkForDuplicatedConfigs(configs);\n var configWithRegexes = getConfigsWithRegexes(configs);\n return {\n initialRoutes: initialRoutes,\n configs: configs,\n configWithRegexes: configWithRegexes\n };\n}\nfunction getInitialRoutes(options) {\n var initialRoutes = [];\n if (options != null && options.initialRouteName) {\n initialRoutes.push({\n initialRouteName: options.initialRouteName,\n parentScreens: []\n });\n }\n return initialRoutes;\n}\nfunction getSortedNormalizedConfigs(initialRoutes) {\n var _ref;\n var screens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return (_ref = []).concat.apply(_ref, _toConsumableArray(Object.keys(screens).map(function (key) {\n return _createNormalizedConfigs(key, screens, initialRoutes, [], [], []);\n }))).sort(function (a, b) {\n if (isArrayEqual(a.segments, b.segments)) {\n return b.routeNames.join('>').localeCompare(a.routeNames.join('>'));\n }\n if (arrayStartsWith(a.segments, b.segments)) {\n return -1;\n }\n if (arrayStartsWith(b.segments, a.segments)) {\n return 1;\n }\n for (var i = 0; i < Math.max(a.segments.length, b.segments.length); i++) {\n if (a.segments[i] == null) {\n return 1;\n }\n if (b.segments[i] == null) {\n return -1;\n }\n var aWildCard = a.segments[i] === '*';\n var bWildCard = b.segments[i] === '*';\n var aParam = a.segments[i].startsWith(':');\n var bParam = b.segments[i].startsWith(':');\n var aRegex = aParam && a.segments[i].includes('(');\n var bRegex = bParam && b.segments[i].includes('(');\n if (aWildCard && bWildCard || aRegex && bRegex) {\n continue;\n }\n if (aWildCard && !bWildCard) {\n return 1;\n }\n if (bWildCard && !aWildCard) {\n return -1;\n }\n if (aParam && !bParam) {\n return 1;\n }\n if (bParam && !aParam) {\n return -1;\n }\n if (aRegex && !bRegex) {\n return -1;\n }\n if (bRegex && !aRegex) {\n return 1;\n }\n }\n return a.segments.length - b.segments.length;\n });\n}\nfunction checkForDuplicatedConfigs(configs) {\n configs.reduce(function (acc, config) {\n var pattern = config.segments.join('/');\n if (acc[pattern]) {\n var a = acc[pattern].routeNames;\n var b = config.routeNames;\n var intersects = a.length > b.length ? b.every(function (it, i) {\n return a[i] === it;\n }) : a.every(function (it, i) {\n return b[i] === it;\n });\n if (!intersects) {\n throw new Error(`Found conflicting screens with the same pattern. The pattern '${pattern}' resolves to both '${a.join(' > ')}' and '${b.join(' > ')}'. Patterns must be unique and cannot resolve to more than one screen.`);\n }\n }\n return Object.assign(acc, _defineProperty({}, pattern, config));\n }, {});\n}\nfunction getConfigsWithRegexes(configs) {\n return configs.map(function (c) {\n return _objectSpread(_objectSpread({}, c), {}, {\n regex: c.regex ? new RegExp(c.regex.source + '$') : undefined\n });\n });\n}\nvar matchAgainstConfigs = function matchAgainstConfigs(remaining, configs) {\n var routes;\n var remainingPath = remaining;\n var _loop = function _loop(config) {\n if (!config.regex) {\n return 0;\n }\n var match = remainingPath.match(config.regex);\n if (match) {\n routes = config.routeNames.map(function (routeName) {\n var routeConfig = configs.find(function (c) {\n return c.screen === routeName && arrayStartsWith(config.segments, c.segments);\n });\n var params = routeConfig && match.groups ? Object.fromEntries(Object.entries(match.groups).map(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n value = _ref3[1];\n var index = Number(key.replace('param_', ''));\n var param = routeConfig.params.find(function (it) {\n return it.index === index;\n });\n if ((param == null ? void 0 : param.screen) === routeName && param != null && param.name) {\n return [param.name, value];\n }\n return null;\n }).filter(function (it) {\n return it != null;\n }).map(function (_ref4) {\n var _routeConfig$parse;\n var _ref5 = _slicedToArray(_ref4, 2),\n key = _ref5[0],\n value = _ref5[1];\n if (value == null) {\n return [key, undefined];\n }\n var decoded = decodeURIComponent(value);\n var parsed = (_routeConfig$parse = routeConfig.parse) != null && _routeConfig$parse[key] ? routeConfig.parse[key](decoded) : decoded;\n return [key, parsed];\n })) : undefined;\n if (params && Object.keys(params).length) {\n return {\n name: routeName,\n params: params\n };\n }\n return {\n name: routeName\n };\n });\n remainingPath = remainingPath.replace(match[0], '');\n return 1;\n }\n },\n _ret;\n for (var config of configs) {\n _ret = _loop(config);\n if (_ret === 0) continue;\n if (_ret === 1) break;\n }\n return {\n routes: routes,\n remainingPath: remainingPath\n };\n};\nvar _createNormalizedConfigs = function createNormalizedConfigs(screen, routeConfig, initials, paths, parentScreens, routeNames) {\n var configs = [];\n routeNames.push(screen);\n parentScreens.push(screen);\n var config = routeConfig[screen];\n if (typeof config === 'string') {\n paths.push({\n screen: screen,\n path: config\n });\n configs.push(createConfigItem(screen, _toConsumableArray(routeNames), _toConsumableArray(paths)));\n } else if (typeof config === 'object') {\n var _config$alias;\n if (typeof config.path === 'string') {\n if (config.exact && config.path == null) {\n throw new Error(`Screen '${screen}' doesn't specify a 'path'. 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 var aliasConfigs = [];\n if (config.alias) {\n for (var alias of config.alias) {\n if (typeof alias === 'string') {\n aliasConfigs.push(createConfigItem(screen, _toConsumableArray(routeNames), [].concat(_toConsumableArray(paths), [{\n screen: screen,\n path: alias\n }]), config.parse));\n } else if (typeof alias === 'object') {\n aliasConfigs.push(createConfigItem(screen, _toConsumableArray(routeNames), alias.exact ? [{\n screen: screen,\n path: alias.path\n }] : [].concat(_toConsumableArray(paths), [{\n screen: screen,\n path: alias.path\n }]), alias.parse));\n }\n }\n }\n if (config.exact) {\n paths.length = 0;\n }\n paths.push({\n screen: screen,\n path: config.path\n });\n configs.push(createConfigItem(screen, _toConsumableArray(routeNames), _toConsumableArray(paths), config.parse));\n configs.push.apply(configs, aliasConfigs);\n }\n if (typeof config !== 'string' && typeof config.path !== 'string' && (_config$alias = config.alias) != null && _config$alias.length) {\n throw new Error(`Screen '${screen}' doesn't specify a 'path'. A 'path' needs to be specified in order to use 'alias'.`);\n }\n if (config.screens) {\n if (config.initialRouteName) {\n initials.push({\n initialRouteName: config.initialRouteName,\n parentScreens: parentScreens\n });\n }\n Object.keys(config.screens).forEach(function (nestedConfig) {\n var result = _createNormalizedConfigs(nestedConfig, config.screens, initials, _toConsumableArray(paths), _toConsumableArray(parentScreens), routeNames);\n configs.push.apply(configs, _toConsumableArray(result));\n });\n }\n }\n routeNames.pop();\n return configs;\n};\nvar createConfigItem = function createConfigItem(screen, routeNames, paths, parse) {\n var parts = [];\n var _loop2 = function _loop2(_screen) {\n parts.push.apply(parts, _toConsumableArray(getPatternParts(path).map(function (part) {\n return _objectSpread(_objectSpread({}, part), {}, {\n screen: _screen\n });\n })));\n };\n for (var _ref6 of paths) {\n var _screen = _ref6.screen;\n var path = _ref6.path;\n _loop2(_screen);\n }\n var regex = parts.length ? new RegExp(`^(${parts.map(function (it, i) {\n if (it.param) {\n var reg = it.regex || '[^/]+';\n return `(((?<param_${i}>${reg})\\\\/)${it.optional ? '?' : ''})`;\n }\n return `${it.segment === '*' ? '.*' : escape(it.segment)}\\\\/`;\n }).join('')})$`) : undefined;\n var segments = parts.map(function (it) {\n return it.segment;\n });\n var params = parts.map(function (it, i) {\n return it.param ? {\n index: i,\n screen: it.screen,\n name: it.param\n } : null;\n }).filter(function (it) {\n return it != null;\n });\n return {\n screen: screen,\n regex: regex,\n segments: segments,\n params: params,\n routeNames: routeNames,\n parse: parse\n };\n};\nvar findParseConfigForRoute = function findParseConfigForRoute(routeName, flatConfig) {\n for (var config of flatConfig) {\n if (routeName === config.routeNames[config.routeNames.length - 1]) {\n return config.parse;\n }\n }\n return undefined;\n};\nvar findInitialRoute = function findInitialRoute(routeName, parentScreens, initialRoutes) {\n for (var config of initialRoutes) {\n if (parentScreens.length === config.parentScreens.length) {\n var sameParents = true;\n for (var i = 0; i < parentScreens.length; i++) {\n if (parentScreens[i].localeCompare(config.parentScreens[i]) !== 0) {\n sameParents = false;\n break;\n }\n }\n if (sameParents) {\n return routeName !== config.initialRouteName ? config.initialRouteName : undefined;\n }\n }\n }\n return undefined;\n};\nvar createStateObject = function createStateObject(initialRoute, route, isEmpty) {\n if (isEmpty) {\n if (initialRoute) {\n return {\n index: 1,\n routes: [{\n name: initialRoute\n }, route]\n };\n } else {\n return {\n routes: [route]\n };\n }\n } else {\n if (initialRoute) {\n return {\n index: 1,\n routes: [{\n name: initialRoute\n }, _objectSpread(_objectSpread({}, route), {}, {\n state: {\n routes: []\n }\n })]\n };\n } else {\n return {\n routes: [_objectSpread(_objectSpread({}, route), {}, {\n state: {\n routes: []\n }\n })]\n };\n }\n }\n};\nvar createNestedStateObject = function createNestedStateObject(path, routes, initialRoutes, flatConfig) {\n var route = routes.shift();\n var parentScreens = [];\n var initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n parentScreens.push(route.name);\n var state = createStateObject(initialRoute, route, routes.length === 0);\n if (routes.length > 0) {\n var nestedState = state;\n while (route = routes.shift()) {\n initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n var nestedStateIndex = nestedState.index || nestedState.routes.length - 1;\n nestedState.routes[nestedStateIndex].state = createStateObject(initialRoute, route, routes.length === 0);\n if (routes.length > 0) {\n nestedState = nestedState.routes[nestedStateIndex].state;\n }\n parentScreens.push(route.name);\n }\n }\n route = findFocusedRoute(state);\n route.path = path.replace(/\\/$/, '');\n var params = parseQueryParams(path, flatConfig ? findParseConfigForRoute(route.name, flatConfig) : undefined);\n if (params) {\n route.params = _objectSpread(_objectSpread({}, route.params), params);\n }\n return state;\n};\nvar parseQueryParams = function parseQueryParams(path, parseConfig) {\n var query = path.split('?')[1];\n var params = queryString.parse(query);\n if (parseConfig) {\n Object.keys(params).forEach(function (name) {\n if (Object.hasOwnProperty.call(parseConfig, name) && typeof params[name] === 'string') {\n params[name] = parseConfig[name](params[name]);\n }\n });\n }\n return Object.keys(params).length ? params : undefined;\n};","map":{"version":3,"names":["escape","queryString","arrayStartsWith","findFocusedRoute","getPatternParts","isArrayEqual","validatePathConfig","getStateFromPath","path","options","_options$path","_getConfigResources","getConfigResources","initialRoutes","configs","screens","remaining","replace","endsWith","prefix","normalizedPrefix","startsWith","undefined","routes","split","filter","Boolean","map","segment","name","decodeURIComponent","length","createNestedStateObject","match","find","config","segments","join","routeNames","result","current","_matchAgainstConfigs","matchAgainstConfigs","remainingPath","cachedConfigResources","WeakMap","prepareConfigResources","cached","get","resources","set","getInitialRoutes","getSortedNormalizedConfigs","checkForDuplicatedConfigs","configWithRegexes","getConfigsWithRegexes","initialRouteName","push","parentScreens","_ref","arguments","concat","apply","_toConsumableArray","Object","keys","key","createNormalizedConfigs","sort","a","b","localeCompare","i","Math","max","aWildCard","bWildCard","aParam","bParam","aRegex","includes","bRegex","reduce","acc","pattern","intersects","every","it","Error","assign","_defineProperty","c","_objectSpread","regex","RegExp","source","_loop","routeName","routeConfig","screen","params","groups","fromEntries","entries","_ref2","_ref3","_slicedToArray","value","index","Number","param","_ref4","_routeConfig$parse","_ref5","decoded","parsed","parse","_ret","initials","paths","createConfigItem","_config$alias","exact","aliasConfigs","alias","forEach","nestedConfig","pop","parts","_loop2","_screen","part","_ref6","reg","optional","findParseConfigForRoute","flatConfig","findInitialRoute","sameParents","createStateObject","initialRoute","route","isEmpty","state","shift","nestedState","nestedStateIndex","parseQueryParams","parseConfig","query","hasOwnProperty","call"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/@react-navigation/core/src/getStateFromPath.tsx"],"sourcesContent":["import type {\n InitialState,\n NavigationState,\n ParamListBase,\n PartialState,\n} from '@react-navigation/routers';\nimport escape from 'escape-string-regexp';\nimport * as queryString from 'query-string';\n\nimport { arrayStartsWith } from './arrayStartsWith';\nimport { findFocusedRoute } from './findFocusedRoute';\nimport { getPatternParts, type PatternPart } from './getPatternParts';\nimport { isArrayEqual } from './isArrayEqual';\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 ParseConfig = Record<string, (value: string) => unknown>;\n\ntype RouteConfig = {\n screen: string;\n regex?: RegExp;\n segments: string[];\n params: { screen: string; name?: string; index: number }[];\n routeNames: string[];\n parse?: ParseConfig;\n};\n\ntype InitialRouteConfig = {\n initialRouteName: string;\n parentScreens: string[];\n};\n\ntype ResultState = PartialState<NavigationState> & {\n state?: ResultState;\n};\n\ntype ParsedRoute = {\n name: string;\n path?: string;\n params?: Record<string, unknown> | undefined;\n};\n\ntype ConfigResources = {\n initialRoutes: InitialRouteConfig[];\n configs: RouteConfig[];\n};\n\n/**\n * Utility to parse a path string to initial state object accepted by the container.\n * This is useful for deep linking when we need to handle the incoming URL.\n *\n * @example\n * ```js\n * getStateFromPath(\n * '/chat/jane/42',\n * {\n * screens: {\n * Chat: {\n * path: 'chat/:author/:id',\n * parse: { id: Number }\n * }\n * }\n * }\n * )\n * ```\n * @param path Path string to parse and convert, e.g. /foo/bar?count=42.\n * @param options Extra options to fine-tune how to parse the path.\n */\nexport function getStateFromPath<ParamList extends {}>(\n path: string,\n options?: Options<ParamList>\n): ResultState | undefined {\n const { initialRoutes, configs } = getConfigResources(options);\n\n const screens = options?.screens;\n\n let remaining = path\n .replace(/\\/+/g, '/') // Replace multiple slash (//) with single ones\n .replace(/^\\//, '') // Remove extra leading slash\n .replace(/\\?.*$/, ''); // Remove query params which we will handle later\n\n // Make sure there is a trailing slash\n remaining = remaining.endsWith('/') ? remaining : `${remaining}/`;\n\n const prefix = options?.path?.replace(/^\\//, ''); // Remove extra leading slash\n\n if (prefix) {\n // Make sure there is a trailing slash\n const normalizedPrefix = prefix.endsWith('/') ? prefix : `${prefix}/`;\n\n // If the path doesn't start with the prefix, it's not a match\n if (!remaining.startsWith(normalizedPrefix)) {\n return undefined;\n }\n\n // Remove the prefix from the path\n remaining = remaining.replace(normalizedPrefix, '');\n }\n\n if (screens === undefined) {\n // When no config is specified, use the path segments as route names\n const routes = remaining\n .split('/')\n .filter(Boolean)\n .map((segment) => {\n const name = decodeURIComponent(segment);\n return { name };\n });\n\n if (routes.length) {\n return createNestedStateObject(path, routes, initialRoutes);\n }\n\n return undefined;\n }\n\n if (remaining === '/') {\n // We need to add special handling of empty path so navigation to empty path also works\n // When handling empty path, we should only look at the root level config\n const match = configs.find((config) => config.segments.join('/') === '');\n\n if (match) {\n return createNestedStateObject(\n path,\n match.routeNames.map((name) => ({ name })),\n initialRoutes,\n configs\n );\n }\n\n return undefined;\n }\n\n let result: PartialState<NavigationState> | undefined;\n let current: PartialState<NavigationState> | undefined;\n\n // We match the whole path against the regex instead of segments\n // This makes sure matches such as wildcard will catch any unmatched routes, even if nested\n const { routes, remainingPath } = matchAgainstConfigs(remaining, configs);\n\n if (routes !== undefined) {\n // This will always be empty if full path matched\n current = createNestedStateObject(path, routes, initialRoutes, configs);\n remaining = remainingPath;\n result = current;\n }\n\n if (current == null || result == null) {\n return undefined;\n }\n\n return result;\n}\n\n/**\n * Reference to the last used config resources. This is used to avoid recomputing the config resources when the options are the same.\n */\nconst cachedConfigResources = new WeakMap<Options<{}>, ConfigResources>();\n\nfunction getConfigResources<ParamList extends {}>(\n options: Options<ParamList> | undefined\n) {\n if (!options) return prepareConfigResources();\n\n const cached = cachedConfigResources.get(options);\n\n if (cached) return cached;\n\n const resources = prepareConfigResources(options);\n\n cachedConfigResources.set(options, resources);\n\n return resources;\n}\n\nfunction prepareConfigResources(options?: Options<{}>) {\n if (options) {\n validatePathConfig(options);\n }\n\n const initialRoutes = getInitialRoutes(options);\n const configs = getSortedNormalizedConfigs(initialRoutes, options?.screens);\n\n checkForDuplicatedConfigs(configs);\n\n const configWithRegexes = getConfigsWithRegexes(configs);\n\n return {\n initialRoutes,\n configs,\n configWithRegexes,\n };\n}\n\nfunction getInitialRoutes(options?: Options<{}>) {\n const initialRoutes: InitialRouteConfig[] = [];\n\n if (options?.initialRouteName) {\n initialRoutes.push({\n initialRouteName: options.initialRouteName,\n parentScreens: [],\n });\n }\n\n return initialRoutes;\n}\n\nfunction getSortedNormalizedConfigs(\n initialRoutes: InitialRouteConfig[],\n screens: Record<string, string | PathConfig<ParamListBase>> = {}\n) {\n // Create a normalized configs array which will be easier to use\n return ([] as RouteConfig[])\n .concat(\n ...Object.keys(screens).map((key) =>\n createNormalizedConfigs(key, screens, initialRoutes, [], [], [])\n )\n )\n .sort((a, b) => {\n // Sort config from most specific to least specific:\n // - more segments\n // - static segments\n // - params with regex\n // - regular params\n // - wildcard\n\n // If 2 patterns are same, move the one with less route names up\n // This is an error state, so it's only useful for consistent error messages\n if (isArrayEqual(a.segments, b.segments)) {\n return b.routeNames.join('>').localeCompare(a.routeNames.join('>'));\n }\n\n // If one of the patterns starts with the other, it's more exhaustive\n // So move it up\n if (arrayStartsWith(a.segments, b.segments)) {\n return -1;\n }\n\n if (arrayStartsWith(b.segments, a.segments)) {\n return 1;\n }\n\n for (let i = 0; i < Math.max(a.segments.length, b.segments.length); i++) {\n // if b is longer, b gets higher priority\n if (a.segments[i] == null) {\n return 1;\n }\n\n // if a is longer, a gets higher priority\n if (b.segments[i] == null) {\n return -1;\n }\n\n const aWildCard = a.segments[i] === '*';\n const bWildCard = b.segments[i] === '*';\n const aParam = a.segments[i].startsWith(':');\n const bParam = b.segments[i].startsWith(':');\n const aRegex = aParam && a.segments[i].includes('(');\n const bRegex = bParam && b.segments[i].includes('(');\n\n // if both are wildcard or regex, we compare next component\n if ((aWildCard && bWildCard) || (aRegex && bRegex)) {\n continue;\n }\n\n // if only a is wildcard, b gets higher priority\n if (aWildCard && !bWildCard) {\n return 1;\n }\n\n // if only b is wildcard, a gets higher priority\n if (bWildCard && !aWildCard) {\n return -1;\n }\n\n // If only a has a param, b gets higher priority\n if (aParam && !bParam) {\n return 1;\n }\n\n // If only b has a param, a gets higher priority\n if (bParam && !aParam) {\n return -1;\n }\n\n // if only a has regex, a gets higher priority\n if (aRegex && !bRegex) {\n return -1;\n }\n\n // if only b has regex, b gets higher priority\n if (bRegex && !aRegex) {\n return 1;\n }\n }\n\n return a.segments.length - b.segments.length;\n });\n}\n\nfunction checkForDuplicatedConfigs(configs: RouteConfig[]) {\n // Check for duplicate patterns in the config\n configs.reduce<Record<string, RouteConfig>>((acc, config) => {\n const pattern = config.segments.join('/');\n\n if (acc[pattern]) {\n const a = acc[pattern].routeNames;\n const b = config.routeNames;\n\n // It's not a problem if the path string omitted from a inner most screen\n // For example, it's ok if a path resolves to `A > B > C` or `A > B`\n const intersects =\n a.length > b.length\n ? b.every((it, i) => a[i] === it)\n : a.every((it, i) => b[i] === it);\n\n if (!intersects) {\n throw new Error(\n `Found conflicting screens with the same pattern. The pattern '${\n pattern\n }' resolves to both '${a.join(' > ')}' and '${b.join(\n ' > '\n )}'. Patterns must be unique and cannot resolve to more than one screen.`\n );\n }\n }\n\n return Object.assign(acc, {\n [pattern]: config,\n });\n }, {});\n}\n\nfunction getConfigsWithRegexes(configs: RouteConfig[]) {\n return configs.map((c) => ({\n ...c,\n // Add `$` to the regex to make sure it matches till end of the path and not just beginning\n regex: c.regex ? new RegExp(c.regex.source + '$') : undefined,\n }));\n}\n\nconst matchAgainstConfigs = (remaining: string, configs: RouteConfig[]) => {\n let routes: ParsedRoute[] | undefined;\n let remainingPath = remaining;\n\n // Go through all configs, and see if the next path segment matches our regex\n for (const config of configs) {\n if (!config.regex) {\n continue;\n }\n\n const match = remainingPath.match(config.regex);\n\n // If our regex matches, we need to extract params from the path\n if (match) {\n routes = config.routeNames.map((routeName) => {\n const routeConfig = configs.find((c) => {\n // Check matching name AND pattern in case same screen is used at different levels in config\n return (\n c.screen === routeName &&\n arrayStartsWith(config.segments, c.segments)\n );\n });\n\n const params =\n routeConfig && match.groups\n ? Object.fromEntries(\n Object.entries(match.groups)\n .map(([key, value]) => {\n const index = Number(key.replace('param_', ''));\n const param = routeConfig.params.find(\n (it) => it.index === index\n );\n\n if (param?.screen === routeName && param?.name) {\n return [param.name, value];\n }\n\n return null;\n })\n .filter((it) => it != null)\n .map(([key, value]) => {\n if (value == null) {\n return [key, undefined];\n }\n\n const decoded = decodeURIComponent(value);\n const parsed = routeConfig.parse?.[key]\n ? routeConfig.parse[key](decoded)\n : decoded;\n\n return [key, parsed];\n })\n )\n : undefined;\n\n if (params && Object.keys(params).length) {\n return { name: routeName, params };\n }\n\n return { name: routeName };\n });\n\n remainingPath = remainingPath.replace(match[0], '');\n\n break;\n }\n }\n\n return { routes, remainingPath };\n};\n\nconst createNormalizedConfigs = (\n screen: string,\n routeConfig: Record<string, string | PathConfig<ParamListBase>>,\n initials: InitialRouteConfig[],\n paths: { screen: string; path: string }[],\n parentScreens: string[],\n routeNames: string[]\n): RouteConfig[] => {\n const configs: RouteConfig[] = [];\n\n routeNames.push(screen);\n\n parentScreens.push(screen);\n\n const config = routeConfig[screen];\n\n if (typeof config === 'string') {\n paths.push({ screen, path: config });\n configs.push(createConfigItem(screen, [...routeNames], [...paths]));\n } else if (typeof config === 'object') {\n // if an object is specified as the value (e.g. Foo: { ... }),\n // it can have `path` property and\n // it could have `screens` prop which has nested configs\n if (typeof config.path === 'string') {\n if (config.exact && config.path == null) {\n throw new Error(\n `Screen '${screen}' doesn't specify a 'path'. 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 // We should add alias configs after the main config\n // So unless they are more specific, main config will be matched first\n const aliasConfigs = [];\n\n if (config.alias) {\n for (const alias of config.alias) {\n if (typeof alias === 'string') {\n aliasConfigs.push(\n createConfigItem(\n screen,\n [...routeNames],\n [...paths, { screen, path: alias }],\n config.parse\n )\n );\n } else if (typeof alias === 'object') {\n aliasConfigs.push(\n createConfigItem(\n screen,\n [...routeNames],\n alias.exact\n ? [{ screen, path: alias.path }]\n : [...paths, { screen, path: alias.path }],\n alias.parse\n )\n );\n }\n }\n }\n\n if (config.exact) {\n // If it's an exact path, we don't need to keep track of the parent screens\n // So we can clear it\n paths.length = 0;\n }\n\n paths.push({ screen, path: config.path });\n configs.push(\n createConfigItem(screen, [...routeNames], [...paths], config.parse)\n );\n\n configs.push(...aliasConfigs);\n }\n\n if (\n typeof config !== 'string' &&\n typeof config.path !== 'string' &&\n config.alias?.length\n ) {\n throw new Error(\n `Screen '${screen}' doesn't specify a 'path'. A 'path' needs to be specified in order to use 'alias'.`\n );\n }\n\n if (config.screens) {\n // property `initialRouteName` without `screens` has no purpose\n if (config.initialRouteName) {\n initials.push({\n initialRouteName: config.initialRouteName,\n parentScreens,\n });\n }\n\n Object.keys(config.screens).forEach((nestedConfig) => {\n const result = createNormalizedConfigs(\n nestedConfig,\n config.screens as Record<string, string | PathConfig<ParamListBase>>,\n initials,\n [...paths],\n [...parentScreens],\n routeNames\n );\n\n configs.push(...result);\n });\n }\n }\n\n routeNames.pop();\n\n return configs;\n};\n\nconst createConfigItem = (\n screen: string,\n routeNames: string[],\n paths: { screen: string; path: string }[],\n parse?: ParseConfig\n): RouteConfig => {\n const parts: (PatternPart & { screen: string })[] = [];\n\n // Parse the path string into parts for easier matching\n for (const { screen, path } of paths) {\n parts.push(...getPatternParts(path).map((part) => ({ ...part, screen })));\n }\n\n const regex = parts.length\n ? new RegExp(\n `^(${parts\n .map((it, i) => {\n if (it.param) {\n const reg = it.regex || '[^/]+';\n\n return `(((?<param_${i}>${reg})\\\\/)${it.optional ? '?' : ''})`;\n }\n\n return `${it.segment === '*' ? '.*' : escape(it.segment)}\\\\/`;\n })\n .join('')})$`\n )\n : undefined;\n\n const segments = parts.map((it) => it.segment);\n const params = parts\n .map((it, i) =>\n it.param\n ? {\n index: i,\n screen: it.screen,\n name: it.param,\n }\n : null\n )\n .filter((it) => it != null);\n\n return {\n screen,\n regex,\n segments,\n params,\n routeNames,\n parse,\n };\n};\n\nconst findParseConfigForRoute = (\n routeName: string,\n flatConfig: RouteConfig[]\n): ParseConfig | undefined => {\n for (const config of flatConfig) {\n if (routeName === config.routeNames[config.routeNames.length - 1]) {\n return config.parse;\n }\n }\n\n return undefined;\n};\n\n// Try to find an initial route connected with the one passed\nconst findInitialRoute = (\n routeName: string,\n parentScreens: string[],\n initialRoutes: InitialRouteConfig[]\n): string | undefined => {\n for (const config of initialRoutes) {\n if (parentScreens.length === config.parentScreens.length) {\n let sameParents = true;\n for (let i = 0; i < parentScreens.length; i++) {\n if (parentScreens[i].localeCompare(config.parentScreens[i]) !== 0) {\n sameParents = false;\n break;\n }\n }\n if (sameParents) {\n return routeName !== config.initialRouteName\n ? config.initialRouteName\n : undefined;\n }\n }\n }\n return undefined;\n};\n\n// returns state object with values depending on whether\n// it is the end of state and if there is initialRoute for this level\nconst createStateObject = (\n initialRoute: string | undefined,\n route: ParsedRoute,\n isEmpty: boolean\n): InitialState => {\n if (isEmpty) {\n if (initialRoute) {\n return {\n index: 1,\n routes: [{ name: initialRoute }, route],\n };\n } else {\n return {\n routes: [route],\n };\n }\n } else {\n if (initialRoute) {\n return {\n index: 1,\n routes: [{ name: initialRoute }, { ...route, state: { routes: [] } }],\n };\n } else {\n return {\n routes: [{ ...route, state: { routes: [] } }],\n };\n }\n }\n};\n\nconst createNestedStateObject = (\n path: string,\n routes: ParsedRoute[],\n initialRoutes: InitialRouteConfig[],\n flatConfig?: RouteConfig[]\n) => {\n let route = routes.shift() as ParsedRoute;\n const parentScreens: string[] = [];\n\n let initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n\n parentScreens.push(route.name);\n\n const state: InitialState = createStateObject(\n initialRoute,\n route,\n routes.length === 0\n );\n\n if (routes.length > 0) {\n let nestedState = state;\n\n while ((route = routes.shift() as ParsedRoute)) {\n initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n\n const nestedStateIndex =\n nestedState.index || nestedState.routes.length - 1;\n\n nestedState.routes[nestedStateIndex].state = createStateObject(\n initialRoute,\n route,\n routes.length === 0\n );\n\n if (routes.length > 0) {\n nestedState = nestedState.routes[nestedStateIndex]\n .state as InitialState;\n }\n\n parentScreens.push(route.name);\n }\n }\n\n route = findFocusedRoute(state) as ParsedRoute;\n route.path = path.replace(/\\/$/, '');\n\n const params = parseQueryParams(\n path,\n flatConfig ? findParseConfigForRoute(route.name, flatConfig) : undefined\n );\n\n if (params) {\n route.params = { ...route.params, ...params };\n }\n\n return state;\n};\n\nconst parseQueryParams = (\n path: string,\n parseConfig?: Record<string, (value: string) => unknown>\n) => {\n const query = path.split('?')[1];\n const params: Record<string, unknown> = queryString.parse(query);\n\n if (parseConfig) {\n Object.keys(params).forEach((name) => {\n if (\n Object.hasOwnProperty.call(parseConfig, name) &&\n typeof params[name] === 'string'\n ) {\n params[name] = parseConfig[name](params[name]);\n }\n });\n }\n\n return Object.keys(params).length ? params : undefined;\n};\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}