1{"version":3,"file":"Name.js","names":["sanitizeNameForGradle","name","replace","withName","createStringsXmlPlugin","applyNameFromConfig","withNameSettingsGradle","config","withSettingsGradle","modResults","language","contents","applyNameSettingsGradle","addWarningAndroid","getName","stringsJSON","setStringItem","buildResourceItem","value","removeStringItem","settingsGradle"],"sources":["../../src/android/Name.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { createStringsXmlPlugin, withSettingsGradle } from '../plugins/android-plugins';\nimport { addWarningAndroid } from '../utils/warnings';\nimport { buildResourceItem, ResourceXML } from './Resources';\nimport { removeStringItem, setStringItem } from './Strings';\n\n/**\n * Sanitize a name, this should be used for files and gradle names.\n * - `[/, \\, :, <, >, \", ?, *, |]` are not allowed\n * https://docs.gradle.org/4.2/release-notes.html#path-separator-characters-in-names-are-deprecated\n *\n * @param name\n */\nexport function sanitizeNameForGradle(name: string): string {\n // Remove escape characters which are valid in XML names but not in gradle.\n name = name.replace(/[\\n\\r\\t]/g, '');\n\n // Gradle disallows these:\n // The project name 'My-Special Co/ol_Project' must not contain any of the following characters: [/, \\, :, <, >, \", ?, *, |]. Set the 'rootProject.name' or adjust the 'include' statement (see https://docs.gradle.org/6.2/dsl/org.gradle.api.initialization.Settings.html#org.gradle.api.initialization.Settings:include(java.lang.String[]) for more details).\n return name.replace(/(\\/|\\\\|:|<|>|\"|\\?|\\*|\\|)/g, '');\n}\n\nexport const withName = createStringsXmlPlugin(applyNameFromConfig, 'withName');\n\nexport const withNameSettingsGradle: ConfigPlugin = (config) => {\n return withSettingsGradle(config, (config) => {\n if (config.modResults.language === 'groovy') {\n config.modResults.contents = applyNameSettingsGradle(config, config.modResults.contents);\n } else {\n addWarningAndroid(\n 'name',\n `Cannot automatically configure settings.gradle if it's not groovy`\n );\n }\n return config;\n });\n};\n\nexport function getName(config: Pick<ExpoConfig, 'name'>) {\n return typeof config.name === 'string' ? config.name : null;\n}\n\nfunction applyNameFromConfig(\n config: Pick<ExpoConfig, 'name'>,\n stringsJSON: ResourceXML\n): ResourceXML {\n const name = getName(config);\n if (name) {\n return setStringItem([buildResourceItem({ name: 'app_name', value: name })], stringsJSON);\n }\n return removeStringItem('app_name', stringsJSON);\n}\n\n/**\n * Regex a name change -- fragile.\n *\n * @param config\n * @param settingsGradle\n */\nexport function applyNameSettingsGradle(config: Pick<ExpoConfig, 'name'>, settingsGradle: string) {\n const name = sanitizeNameForGradle(getName(config) ?? '');\n\n // Select rootProject.name = '***' and replace the contents between the quotes.\n return settingsGradle.replace(\n /rootProject.name\\s?=\\s?([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g,\n `rootProject.name = '${name.replace(/'/g, \"\\\\'\")}'`\n );\n}\n"],"mappings":";;;;;;;;;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,qBAAT,CAA+BC,IAA/B,EAAqD;EAC1D;EACAA,IAAI,GAAGA,IAAI,CAACC,OAAL,CAAa,WAAb,EAA0B,EAA1B,CAAP,CAF0D,CAI1D;EACA;;EACA,OAAOD,IAAI,CAACC,OAAL,CAAa,2BAAb,EAA0C,EAA1C,CAAP;AACD;;AAEM,MAAMC,QAAQ,GAAG,IAAAC,wCAAA,EAAuBC,mBAAvB,EAA4C,UAA5C,CAAjB;;;AAEA,MAAMC,sBAAoC,GAAIC,MAAD,IAAY;EAC9D,OAAO,IAAAC,oCAAA,EAAmBD,MAAnB,EAA4BA,MAAD,IAAY;IAC5C,IAAIA,MAAM,CAACE,UAAP,CAAkBC,QAAlB,KAA+B,QAAnC,EAA6C;MAC3CH,MAAM,CAACE,UAAP,CAAkBE,QAAlB,GAA6BC,uBAAuB,CAACL,MAAD,EAASA,MAAM,CAACE,UAAP,CAAkBE,QAA3B,CAApD;IACD,CAFD,MAEO;MACL,IAAAE,6BAAA,EACE,MADF,EAEG,mEAFH;IAID;;IACD,OAAON,MAAP;EACD,CAVM,CAAP;AAWD,CAZM;;;;AAcA,SAASO,OAAT,CAAiBP,MAAjB,EAAmD;EACxD,OAAO,OAAOA,MAAM,CAACN,IAAd,KAAuB,QAAvB,GAAkCM,MAAM,CAACN,IAAzC,GAAgD,IAAvD;AACD;;AAED,SAASI,mBAAT,CACEE,MADF,EAEEQ,WAFF,EAGe;EACb,MAAMd,IAAI,GAAGa,OAAO,CAACP,MAAD,CAApB;;EACA,IAAIN,IAAJ,EAAU;IACR,OAAO,IAAAe,wBAAA,EAAc,CAAC,IAAAC,8BAAA,EAAkB;MAAEhB,IAAI,EAAE,UAAR;MAAoBiB,KAAK,EAAEjB;IAA3B,CAAlB,CAAD,CAAd,EAAsEc,WAAtE,CAAP;EACD;;EACD,OAAO,IAAAI,2BAAA,EAAiB,UAAjB,EAA6BJ,WAA7B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASH,uBAAT,CAAiCL,MAAjC,EAAmEa,cAAnE,EAA2F;EAAA;;EAChG,MAAMnB,IAAI,GAAGD,qBAAqB,aAACc,OAAO,CAACP,MAAD,CAAR,+CAAoB,EAApB,CAAlC,CADgG,CAGhG;;EACA,OAAOa,cAAc,CAAClB,OAAf,CACL,oDADK,EAEJ,uBAAsBD,IAAI,CAACC,OAAL,CAAa,IAAb,EAAmB,KAAnB,CAA0B,GAF5C,CAAP;AAID"}