UNPKG

6.04 kBSource Map (JSON)View Raw
1{"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../../src/android/Manifest.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport { Builder, Parser } from 'xml2js';\n\nimport { EOL } from 'os';\nimport path from 'path';\n\nexport type Document = { [key: string]: any };\n\nexport type InputOptions = {\n manifestPath?: string | null;\n projectRoot?: string | null;\n manifest?: Document | null;\n};\n\nexport function logManifest(doc: Document) {\n const builder = new Builder();\n const xmlInput = builder.buildObject(doc);\n console.log(xmlInput);\n}\n\nconst stringTimesN = (n: number, char: string) => Array(n + 1).join(char);\n\nexport function format(manifest: any, { indentLevel = 2, newline = EOL } = {}): string {\n let xmlInput: string;\n if (typeof manifest === 'string') {\n xmlInput = manifest;\n } else if (manifest.toString) {\n const builder = new Builder({ headless: true });\n xmlInput = builder.buildObject(manifest);\n return xmlInput;\n } else {\n throw new Error(`@expo/android-manifest: invalid manifest value passed in: ${manifest}`);\n }\n const indentString = stringTimesN(indentLevel, ' ');\n\n let formatted = '';\n const regex = /(>)(<)(\\/*)/g;\n const xml = xmlInput.replace(regex, `$1${newline}$2$3`);\n let pad = 0;\n xml\n .split(/\\r?\\n/)\n .map((line: string) => line.trim())\n .forEach((line: string) => {\n let indent = 0;\n if (line.match(/.+<\\/\\w[^>]*>$/)) {\n indent = 0;\n } else if (line.match(/^<\\/\\w/)) {\n // Somehow istanbul doesn't see the else case as covered, although it is. Skip it.\n /* istanbul ignore else */\n if (pad !== 0) {\n pad -= 1;\n }\n } else if (line.match(/^<\\w([^>]*[^\\/])?>.*$/)) {\n indent = 1;\n } else {\n indent = 0;\n }\n\n const padding = stringTimesN(pad, indentString);\n formatted += padding + line + newline; // eslint-disable-line prefer-template\n pad += indent;\n });\n\n return formatted.trim();\n}\n\nexport async function writeAndroidManifestAsync(\n manifestPath: string,\n manifest: any\n): Promise<void> {\n const manifestXml = format(manifest);\n await fs.ensureDir(path.dirname(manifestPath));\n await fs.writeFile(manifestPath, manifestXml);\n}\n\nexport async function getProjectAndroidManifestPathAsync(\n projectDir: string\n): Promise<string | null> {\n try {\n const shellPath = path.join(projectDir, 'android');\n if ((await fs.stat(shellPath)).isDirectory()) {\n const manifestPath = path.join(shellPath, 'app/src/main/AndroidManifest.xml');\n if ((await fs.stat(manifestPath)).isFile()) {\n return manifestPath;\n }\n }\n } catch (error) {}\n\n return null;\n}\n\nexport async function readAndroidManifestAsync(manifestPath: string): Promise<Document> {\n const contents = await fs.readFile(manifestPath, { encoding: 'utf8', flag: 'r' });\n const parser = new Parser();\n const manifest = parser.parseStringPromise(contents);\n return manifest;\n}\n\nexport async function getPackageAsync(manifest: Document): Promise<string | null> {\n return manifest.manifest?.['$']?.package ?? null;\n}\n"]}
\No newline at end of file