{"version":3,"file":"validatePathConfig.js","names":[],"sources":["esm/fork/validatePathConfig.js"],"sourcesContent":["const formatToList = (items) => Object.entries(items).map(([key, value]) => `- ${key} (${value})`).join(\"\\n\");\nfunction validatePathConfig(config, root = true) {\n  const validation = {\n    path: \"string\",\n    initialRouteName: \"string\",\n    screens: \"object\",\n    // @modified - start\n    preserveDynamicRoutes: \"boolean\",\n    preserveGroups: \"boolean\",\n    // @modified - end\n    ...root ? null : {\n      alias: \"array\",\n      exact: \"boolean\",\n      stringify: \"object\",\n      parse: \"object\"\n    }\n  };\n  if (typeof config !== \"object\" || config === null) {\n    throw new Error(\n      `Expected the configuration to be an object, but got ${JSON.stringify(config)}.`\n    );\n  }\n  const validationErrors = Object.fromEntries(\n    Object.keys(config).map((key) => {\n      if (key in validation) {\n        const type = validation[key];\n        const value = config[key];\n        if (value !== void 0) {\n          if (type === \"array\") {\n            if (!Array.isArray(value)) {\n              return [key, `expected 'Array', got '${typeof value}'`];\n            }\n          } else if (typeof value !== type) {\n            return [key, `expected '${type}', got '${typeof value}'`];\n          }\n        }\n      } else {\n        return [key, \"extraneous\"];\n      }\n      return null;\n    }).filter(Boolean)\n  );\n  if (Object.keys(validationErrors).length) {\n    throw new Error(\n      `Found invalid properties in the configuration:\n${formatToList(\n        validationErrors\n      )}\n\nYou can only specify the following properties:\n${formatToList(\n        validation\n      )}\n\nIf you want to specify configuration for screens, you need to specify them under a 'screens' property.\n\nSee https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.`\n    );\n  }\n  if (root && \"path\" in config && typeof config.path === \"string\" && config.path.includes(\":\")) {\n    throw new Error(\n      `Found invalid path '${config.path}'. The 'path' in the top-level configuration cannot contain patterns for params.`\n    );\n  }\n  if (\"screens\" in config && config.screens) {\n    Object.entries(config.screens).forEach(([_, value]) => {\n      if (typeof value !== \"string\") {\n        validatePathConfig(value, false);\n      }\n    });\n  }\n}\nexport {\n  validatePathConfig\n};\n//# sourceMappingURL=validatePathConfig.js.map\n"],"mappings":";AAAA,MAAM,gBAAgB,UAAU,OAAO,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,KAAK,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI;AAC5G,SAAS,mBAAmB,QAAQ,OAAO,MAAM;CAC/C,MAAM,aAAa;EACjB,MAAM;EACN,kBAAkB;EAClB,SAAS;EAET,uBAAuB;EACvB,gBAAgB;EAEhB,GAAG,OAAO,OAAO;GACf,OAAO;GACP,OAAO;GACP,WAAW;GACX,OAAO;EACT;CACF;CACA,IAAI,OAAO,WAAW,YAAY,WAAW,MAAM;EACjD,MAAM,IAAI,MACR,uDAAuD,KAAK,UAAU,MAAM,EAAE,EAChF;CACF;CACA,MAAM,mBAAmB,OAAO,YAC9B,OAAO,KAAK,MAAM,CAAC,CAAC,KAAK,QAAQ;EAC/B,IAAI,OAAO,YAAY;GACrB,MAAM,OAAO,WAAW;GACxB,MAAM,QAAQ,OAAO;GACrB,IAAI,UAAU,KAAK,GAAG;IACpB,IAAI,SAAS,SAAS;KACpB,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;MACzB,OAAO,CAAC,KAAK,0BAA0B,OAAO,MAAM,EAAE;KACxD;IACF,OAAO,IAAI,OAAO,UAAU,MAAM;KAChC,OAAO,CAAC,KAAK,aAAa,KAAK,UAAU,OAAO,MAAM,EAAE;IAC1D;GACF;EACF,OAAO;GACL,OAAO,CAAC,KAAK,YAAY;EAC3B;EACA,OAAO;CACT,CAAC,CAAC,CAAC,OAAO,OAAO,CACnB;CACA,IAAI,OAAO,KAAK,gBAAgB,CAAC,CAAC,QAAQ;EACxC,MAAM,IAAI,MACR;EACJ,aACM,gBACF,EAAE;;;EAGN,aACM,UACF,EAAE;;;;mHAKJ;CACF;CACA,IAAI,QAAQ,UAAU,UAAU,OAAO,OAAO,SAAS,YAAY,OAAO,KAAK,SAAS,GAAG,GAAG;EAC5F,MAAM,IAAI,MACR,uBAAuB,OAAO,KAAK,iFACrC;CACF;CACA,IAAI,aAAa,UAAU,OAAO,SAAS;EACzC,OAAO,QAAQ,OAAO,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,WAAW;GACrD,IAAI,OAAO,UAAU,UAAU;IAC7B,mBAAmB,OAAO,KAAK;GACjC;EACF,CAAC;CACH;AACF"}