@expo/config-plugins 5.0.4 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/Plugin.types.d.ts +7 -7
- package/build/Plugin.types.js +0 -9
- package/build/Plugin.types.js.map +1 -1
- package/build/android/AllowBackup.js +0 -15
- package/build/android/AllowBackup.js.map +1 -1
- package/build/android/BuildProperties.js +2 -16
- package/build/android/BuildProperties.js.map +1 -1
- package/build/android/Colors.js +3 -25
- package/build/android/Colors.js.map +1 -1
- package/build/android/EasBuild.js +2 -22
- package/build/android/EasBuild.js.map +1 -1
- package/build/android/EasBuildGradleScript.js.map +1 -1
- package/build/android/GoogleMapsApiKey.js +0 -12
- package/build/android/GoogleMapsApiKey.js.map +1 -1
- package/build/android/GoogleServices.js +10 -48
- package/build/android/GoogleServices.js.map +1 -1
- package/build/android/IntentFilters.d.ts +1 -1
- package/build/android/IntentFilters.js +8 -24
- package/build/android/IntentFilters.js.map +1 -1
- package/build/android/Manifest.d.ts +19 -19
- package/build/android/Manifest.js +7 -66
- package/build/android/Manifest.js.map +1 -1
- package/build/android/Name.js +6 -27
- package/build/android/Name.js.map +1 -1
- package/build/android/Orientation.js +2 -12
- package/build/android/Orientation.js.map +1 -1
- package/build/android/Package.js +26 -111
- package/build/android/Package.js.map +1 -1
- package/build/android/Paths.d.ts +2 -2
- package/build/android/Paths.js +0 -47
- package/build/android/Paths.js.map +1 -1
- package/build/android/Permissions.js +8 -52
- package/build/android/Permissions.js.map +1 -1
- package/build/android/PrimaryColor.js +0 -18
- package/build/android/PrimaryColor.js.map +1 -1
- package/build/android/Properties.d.ts +1 -1
- package/build/android/Properties.js +0 -9
- package/build/android/Properties.js.map +1 -1
- package/build/android/Resources.d.ts +4 -4
- package/build/android/Resources.js +9 -29
- package/build/android/Resources.js.map +1 -1
- package/build/android/Scheme.d.ts +1 -1
- package/build/android/Scheme.js +13 -66
- package/build/android/Scheme.js.map +1 -1
- package/build/android/StatusBar.js +5 -33
- package/build/android/StatusBar.js.map +1 -1
- package/build/android/Strings.js +0 -14
- package/build/android/Strings.js.map +1 -1
- package/build/android/Styles.js +7 -34
- package/build/android/Styles.js.map +1 -1
- package/build/android/Updates.d.ts +2 -0
- package/build/android/Updates.js +50 -47
- package/build/android/Updates.js.map +1 -1
- package/build/android/Version.js +3 -29
- package/build/android/Version.js.map +1 -1
- package/build/android/WindowSoftInputMode.js +0 -14
- package/build/android/WindowSoftInputMode.js.map +1 -1
- package/build/android/codeMod.js +6 -22
- package/build/android/codeMod.js.map +1 -1
- package/build/android/index.js +0 -94
- package/build/android/index.js.map +1 -1
- package/build/index.js +2 -65
- package/build/index.js.map +1 -1
- package/build/ios/Bitcode.d.ts +1 -1
- package/build/ios/Bitcode.js +8 -28
- package/build/ios/Bitcode.js.map +1 -1
- package/build/ios/BuildProperties.js +2 -14
- package/build/ios/BuildProperties.js.map +1 -1
- package/build/ios/BuildScheme.js +2 -34
- package/build/ios/BuildScheme.js.map +1 -1
- package/build/ios/BundleIdentifier.js +13 -72
- package/build/ios/BundleIdentifier.js.map +1 -1
- package/build/ios/DeviceFamily.js +6 -24
- package/build/ios/DeviceFamily.js.map +1 -1
- package/build/ios/Entitlements.js +4 -45
- package/build/ios/Entitlements.js.map +1 -1
- package/build/ios/Google.d.ts +2 -2
- package/build/ios/Google.js +11 -66
- package/build/ios/Google.js.map +1 -1
- package/build/ios/IosConfig.types.d.ts +6 -11
- package/build/ios/IosConfig.types.js.map +1 -1
- package/build/ios/Locales.d.ts +3 -3
- package/build/ios/Locales.js +12 -43
- package/build/ios/Locales.js.map +1 -1
- package/build/ios/Maps.js +15 -53
- package/build/ios/Maps.js.map +1 -1
- package/build/ios/Name.js +7 -31
- package/build/ios/Name.js.map +1 -1
- package/build/ios/Orientation.js +2 -10
- package/build/ios/Orientation.js.map +1 -1
- package/build/ios/Paths.d.ts +2 -2
- package/build/ios/Paths.js +8 -73
- package/build/ios/Paths.js.map +1 -1
- package/build/ios/Permissions.js +1 -16
- package/build/ios/Permissions.js.map +1 -1
- package/build/ios/ProvisioningProfile.d.ts +1 -1
- package/build/ios/ProvisioningProfile.js +0 -18
- package/build/ios/ProvisioningProfile.js.map +1 -1
- package/build/ios/RequiresFullScreen.js +19 -31
- package/build/ios/RequiresFullScreen.js.map +1 -1
- package/build/ios/Scheme.js +10 -32
- package/build/ios/Scheme.js.map +1 -1
- package/build/ios/Swift.js +16 -50
- package/build/ios/Swift.js.map +1 -1
- package/build/ios/Target.js +0 -30
- package/build/ios/Target.js.map +1 -1
- package/build/ios/Updates.js +10 -49
- package/build/ios/Updates.js.map +1 -1
- package/build/ios/UsesNonExemptEncryption.js +4 -10
- package/build/ios/UsesNonExemptEncryption.js.map +1 -1
- package/build/ios/Version.js +4 -11
- package/build/ios/Version.js.map +1 -1
- package/build/ios/XcodeProjectFile.js +5 -23
- package/build/ios/XcodeProjectFile.js.map +1 -1
- package/build/ios/codeMod.js +19 -60
- package/build/ios/codeMod.js.map +1 -1
- package/build/ios/index.js +0 -97
- package/build/ios/index.js.map +1 -1
- package/build/ios/utils/Xcodeproj.d.ts +6 -6
- package/build/ios/utils/Xcodeproj.js +15 -101
- package/build/ios/utils/Xcodeproj.js.map +1 -1
- package/build/ios/utils/getInfoPlistPath.js +2 -15
- package/build/ios/utils/getInfoPlistPath.js.map +1 -1
- package/build/ios/utils/string.js +0 -1
- package/build/ios/utils/string.js.map +1 -1
- package/build/plugins/android-plugins.d.ts +2 -2
- package/build/plugins/android-plugins.js +11 -42
- package/build/plugins/android-plugins.js.map +1 -1
- package/build/plugins/createBaseMod.d.ts +3 -3
- package/build/plugins/createBaseMod.js +8 -25
- package/build/plugins/createBaseMod.js.map +1 -1
- package/build/plugins/ios-plugins.d.ts +2 -2
- package/build/plugins/ios-plugins.js +8 -48
- package/build/plugins/ios-plugins.js.map +1 -1
- package/build/plugins/mod-compiler.js +21 -72
- package/build/plugins/mod-compiler.js.map +1 -1
- package/build/plugins/withAndroidBaseMods.d.ts +1 -1
- package/build/plugins/withAndroidBaseMods.js +4 -89
- package/build/plugins/withAndroidBaseMods.js.map +1 -1
- package/build/plugins/withDangerousMod.js +0 -5
- package/build/plugins/withDangerousMod.js.map +1 -1
- package/build/plugins/withIosBaseMods.d.ts +1 -1
- package/build/plugins/withIosBaseMods.js +26 -118
- package/build/plugins/withIosBaseMods.js.map +1 -1
- package/build/plugins/withMod.d.ts +1 -1
- package/build/plugins/withMod.js +24 -59
- package/build/plugins/withMod.js.map +1 -1
- package/build/plugins/withPlugins.js +0 -9
- package/build/plugins/withPlugins.js.map +1 -1
- package/build/plugins/withRunOnce.js +3 -9
- package/build/plugins/withRunOnce.js.map +1 -1
- package/build/plugins/withStaticPlugin.js +21 -43
- package/build/plugins/withStaticPlugin.js.map +1 -1
- package/build/utils/BuildProperties.types.d.ts +2 -2
- package/build/utils/BuildProperties.types.js.map +1 -1
- package/build/utils/Updates.d.ts +3 -1
- package/build/utils/Updates.js +18 -77
- package/build/utils/Updates.js.map +1 -1
- package/build/utils/XML.d.ts +1 -1
- package/build/utils/XML.js +7 -44
- package/build/utils/XML.js.map +1 -1
- package/build/utils/commonCodeMod.js +2 -10
- package/build/utils/commonCodeMod.js.map +1 -1
- package/build/utils/errors.d.ts +1 -1
- package/build/utils/errors.js +3 -11
- package/build/utils/errors.js.map +1 -1
- package/build/utils/fs.js +1 -12
- package/build/utils/fs.js.map +1 -1
- package/build/utils/generateCode.d.ts +1 -1
- package/build/utils/generateCode.js +8 -25
- package/build/utils/generateCode.js.map +1 -1
- package/build/utils/history.d.ts +1 -1
- package/build/utils/history.js +0 -6
- package/build/utils/history.js.map +1 -1
- package/build/utils/matchBrackets.d.ts +3 -3
- package/build/utils/matchBrackets.js +2 -17
- package/build/utils/matchBrackets.js.map +1 -1
- package/build/utils/modules.js +0 -10
- package/build/utils/modules.js.map +1 -1
- package/build/utils/obj.js +0 -4
- package/build/utils/obj.js.map +1 -1
- package/build/utils/plugin-resolver.js +25 -69
- package/build/utils/plugin-resolver.js.map +1 -1
- package/build/utils/sortObject.js +4 -10
- package/build/utils/sortObject.js.map +1 -1
- package/build/utils/versions.js +0 -10
- package/build/utils/versions.js.map +1 -1
- package/build/utils/warnings.js +1 -9
- package/build/utils/warnings.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Paths.js","names":["getProjectFilePath","projectRoot","name","filePath","globSync","path","join","assert","getLanguage","extension","extname","UnexpectedError","getFileInfo","normalize","contents","fs","readFileSync","language","getMainApplicationAsync","getMainActivityAsync","getGradleFilePath","gradleName","groovyPath","resolve","ktPath","isGroovy","existsSync","isKotlin","Error","getProjectBuildGradleFilePath","getProjectBuildGradleAsync","getSettingsGradleFilePath","getSettingsGradleAsync","getAppBuildGradleFilePath","getAppBuildGradleAsync","getProjectPathOrThrowAsync","projectPath","directoryExistsAsync","getAndroidManifestAsync","getResourceFolderAsync","getResourceXMLPathAsync","kind","resourcePath"],"sources":["../../src/android/Paths.ts"],"sourcesContent":["import assert from 'assert';\nimport fs from 'fs';\nimport { sync as globSync } from 'glob';\nimport * as path from 'path';\n\nimport { UnexpectedError } from '../utils/errors';\nimport { directoryExistsAsync } from '../utils/modules';\nimport { ResourceKind } from './Resources';\n\nexport interface ProjectFile<L extends string = string> {\n path: string;\n language: L;\n contents: string;\n}\n\nexport type ApplicationProjectFile = ProjectFile<'java' | 'kt'>;\nexport type GradleProjectFile = ProjectFile<'groovy' | 'kt'>;\n\nexport function getProjectFilePath(projectRoot: string, name: string): string {\n const filePath = globSync(\n path.join(projectRoot, `android/app/src/main/java/**/${name}.@(java|kt)`)\n )[0];\n assert(\n filePath,\n `Project file \"${name}\" does not exist in android project for root \"${projectRoot}\"`\n );\n\n return filePath;\n}\n\nfunction getLanguage(filePath: string): 'java' | 'groovy' | 'kt' {\n const extension = path.extname(filePath);\n switch (extension) {\n case '.java':\n return 'java';\n case '.kts':\n case '.kt':\n return 'kt';\n case '.groovy':\n case '.gradle':\n return 'groovy';\n default:\n throw new UnexpectedError(`Unexpected Android file extension: ${extension}`);\n }\n}\n\nexport function getFileInfo(filePath: string) {\n return {\n path: path.normalize(filePath),\n contents: fs.readFileSync(filePath, 'utf8'),\n language: getLanguage(filePath) as any,\n };\n}\n\nexport async function getMainApplicationAsync(\n projectRoot: string\n): Promise<ApplicationProjectFile> {\n const filePath = getProjectFilePath(projectRoot, 'MainApplication');\n return getFileInfo(filePath);\n}\n\nexport async function getMainActivityAsync(projectRoot: string): Promise<ApplicationProjectFile> {\n const filePath = getProjectFilePath(projectRoot, 'MainActivity');\n return getFileInfo(filePath);\n}\n\nexport function getGradleFilePath(projectRoot: string, gradleName: string): string {\n const groovyPath = path.resolve(projectRoot, `${gradleName}.gradle`);\n const ktPath = path.resolve(projectRoot, `${gradleName}.gradle.kts`);\n\n const isGroovy = fs.existsSync(groovyPath);\n const isKotlin = !isGroovy && fs.existsSync(ktPath);\n\n if (!isGroovy && !isKotlin) {\n throw new Error(`Failed to find '${gradleName}.gradle' file for project: ${projectRoot}.`);\n }\n const filePath = isGroovy ? groovyPath : ktPath;\n return filePath;\n}\n\nexport function getProjectBuildGradleFilePath(projectRoot: string): string {\n return getGradleFilePath(path.join(projectRoot, 'android'), 'build');\n}\n\nexport async function getProjectBuildGradleAsync(projectRoot: string): Promise<GradleProjectFile> {\n return getFileInfo(getProjectBuildGradleFilePath(projectRoot));\n}\n\nexport function getSettingsGradleFilePath(projectRoot: string): string {\n return getGradleFilePath(path.join(projectRoot, 'android'), 'settings');\n}\n\nexport async function getSettingsGradleAsync(projectRoot: string): Promise<GradleProjectFile> {\n return getFileInfo(getSettingsGradleFilePath(projectRoot));\n}\n\nexport function getAppBuildGradleFilePath(projectRoot: string): string {\n return getGradleFilePath(path.join(projectRoot, 'android', 'app'), 'build');\n}\n\nexport async function getAppBuildGradleAsync(projectRoot: string): Promise<GradleProjectFile> {\n return getFileInfo(getAppBuildGradleFilePath(projectRoot));\n}\n\nexport async function getProjectPathOrThrowAsync(projectRoot: string): Promise<string> {\n const projectPath = path.join(projectRoot, 'android');\n if (await directoryExistsAsync(projectPath)) {\n return projectPath;\n }\n throw new Error(`Android project folder is missing in project: ${projectRoot}`);\n}\n\nexport async function getAndroidManifestAsync(projectRoot: string): Promise<string> {\n const projectPath = await getProjectPathOrThrowAsync(projectRoot);\n const filePath = path.join(projectPath, 'app/src/main/AndroidManifest.xml');\n return filePath;\n}\n\nexport async function getResourceFolderAsync(projectRoot: string): Promise<string> {\n const projectPath = await getProjectPathOrThrowAsync(projectRoot);\n return path.join(projectPath, `app/src/main/res`);\n}\n\nexport async function getResourceXMLPathAsync(\n projectRoot: string,\n { kind = 'values', name }: { kind?: ResourceKind; name: 'colors' | 'strings' | 'styles' | string }\n): Promise<string> {\n const resourcePath = await getResourceFolderAsync(projectRoot);\n\n const filePath = path.join(resourcePath, `${kind}/${name}.xml`);\n return filePath;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Paths.js","names":["getProjectFilePath","projectRoot","name","filePath","globSync","path","join","assert","getLanguage","extension","extname","UnexpectedError","getFileInfo","normalize","contents","fs","readFileSync","language","getMainApplicationAsync","getMainActivityAsync","getGradleFilePath","gradleName","groovyPath","resolve","ktPath","isGroovy","existsSync","isKotlin","Error","getProjectBuildGradleFilePath","getProjectBuildGradleAsync","getSettingsGradleFilePath","getSettingsGradleAsync","getAppBuildGradleFilePath","getAppBuildGradleAsync","getProjectPathOrThrowAsync","projectPath","directoryExistsAsync","getAndroidManifestAsync","getResourceFolderAsync","getResourceXMLPathAsync","kind","resourcePath"],"sources":["../../src/android/Paths.ts"],"sourcesContent":["import assert from 'assert';\nimport fs from 'fs';\nimport { sync as globSync } from 'glob';\nimport * as path from 'path';\n\nimport { UnexpectedError } from '../utils/errors';\nimport { directoryExistsAsync } from '../utils/modules';\nimport { ResourceKind } from './Resources';\n\nexport interface ProjectFile<L extends string = string> {\n path: string;\n language: L;\n contents: string;\n}\n\nexport type ApplicationProjectFile = ProjectFile<'java' | 'kt'>;\nexport type GradleProjectFile = ProjectFile<'groovy' | 'kt'>;\n\nexport function getProjectFilePath(projectRoot: string, name: string): string {\n const filePath = globSync(\n path.join(projectRoot, `android/app/src/main/java/**/${name}.@(java|kt)`)\n )[0];\n assert(\n filePath,\n `Project file \"${name}\" does not exist in android project for root \"${projectRoot}\"`\n );\n\n return filePath;\n}\n\nfunction getLanguage(filePath: string): 'java' | 'groovy' | 'kt' {\n const extension = path.extname(filePath);\n switch (extension) {\n case '.java':\n return 'java';\n case '.kts':\n case '.kt':\n return 'kt';\n case '.groovy':\n case '.gradle':\n return 'groovy';\n default:\n throw new UnexpectedError(`Unexpected Android file extension: ${extension}`);\n }\n}\n\nexport function getFileInfo(filePath: string) {\n return {\n path: path.normalize(filePath),\n contents: fs.readFileSync(filePath, 'utf8'),\n language: getLanguage(filePath) as any,\n };\n}\n\nexport async function getMainApplicationAsync(\n projectRoot: string\n): Promise<ApplicationProjectFile> {\n const filePath = getProjectFilePath(projectRoot, 'MainApplication');\n return getFileInfo(filePath);\n}\n\nexport async function getMainActivityAsync(projectRoot: string): Promise<ApplicationProjectFile> {\n const filePath = getProjectFilePath(projectRoot, 'MainActivity');\n return getFileInfo(filePath);\n}\n\nexport function getGradleFilePath(projectRoot: string, gradleName: string): string {\n const groovyPath = path.resolve(projectRoot, `${gradleName}.gradle`);\n const ktPath = path.resolve(projectRoot, `${gradleName}.gradle.kts`);\n\n const isGroovy = fs.existsSync(groovyPath);\n const isKotlin = !isGroovy && fs.existsSync(ktPath);\n\n if (!isGroovy && !isKotlin) {\n throw new Error(`Failed to find '${gradleName}.gradle' file for project: ${projectRoot}.`);\n }\n const filePath = isGroovy ? groovyPath : ktPath;\n return filePath;\n}\n\nexport function getProjectBuildGradleFilePath(projectRoot: string): string {\n return getGradleFilePath(path.join(projectRoot, 'android'), 'build');\n}\n\nexport async function getProjectBuildGradleAsync(projectRoot: string): Promise<GradleProjectFile> {\n return getFileInfo(getProjectBuildGradleFilePath(projectRoot));\n}\n\nexport function getSettingsGradleFilePath(projectRoot: string): string {\n return getGradleFilePath(path.join(projectRoot, 'android'), 'settings');\n}\n\nexport async function getSettingsGradleAsync(projectRoot: string): Promise<GradleProjectFile> {\n return getFileInfo(getSettingsGradleFilePath(projectRoot));\n}\n\nexport function getAppBuildGradleFilePath(projectRoot: string): string {\n return getGradleFilePath(path.join(projectRoot, 'android', 'app'), 'build');\n}\n\nexport async function getAppBuildGradleAsync(projectRoot: string): Promise<GradleProjectFile> {\n return getFileInfo(getAppBuildGradleFilePath(projectRoot));\n}\n\nexport async function getProjectPathOrThrowAsync(projectRoot: string): Promise<string> {\n const projectPath = path.join(projectRoot, 'android');\n if (await directoryExistsAsync(projectPath)) {\n return projectPath;\n }\n throw new Error(`Android project folder is missing in project: ${projectRoot}`);\n}\n\nexport async function getAndroidManifestAsync(projectRoot: string): Promise<string> {\n const projectPath = await getProjectPathOrThrowAsync(projectRoot);\n const filePath = path.join(projectPath, 'app/src/main/AndroidManifest.xml');\n return filePath;\n}\n\nexport async function getResourceFolderAsync(projectRoot: string): Promise<string> {\n const projectPath = await getProjectPathOrThrowAsync(projectRoot);\n return path.join(projectPath, `app/src/main/res`);\n}\n\nexport async function getResourceXMLPathAsync(\n projectRoot: string,\n { kind = 'values', name }: { kind?: ResourceKind; name: 'colors' | 'strings' | 'styles' | string }\n): Promise<string> {\n const resourcePath = await getResourceFolderAsync(projectRoot);\n\n const filePath = path.join(resourcePath, `${kind}/${name}.xml`);\n return filePath;\n}\n"],"mappings":"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"}
|
|
@@ -15,92 +15,72 @@ exports.isPermissionAlreadyRequested = isPermissionAlreadyRequested;
|
|
|
15
15
|
exports.removePermissions = removePermissions;
|
|
16
16
|
exports.setAndroidPermissions = setAndroidPermissions;
|
|
17
17
|
exports.withPermissions = exports.withInternalBlockedPermissions = exports.withBlockedPermissions = void 0;
|
|
18
|
-
|
|
19
18
|
function _androidPlugins() {
|
|
20
19
|
const data = require("../plugins/android-plugins");
|
|
21
|
-
|
|
22
20
|
_androidPlugins = function () {
|
|
23
21
|
return data;
|
|
24
22
|
};
|
|
25
|
-
|
|
26
23
|
return data;
|
|
27
24
|
}
|
|
28
|
-
|
|
29
25
|
function _Manifest() {
|
|
30
26
|
const data = require("./Manifest");
|
|
31
|
-
|
|
32
27
|
_Manifest = function () {
|
|
33
28
|
return data;
|
|
34
29
|
};
|
|
35
|
-
|
|
36
30
|
return data;
|
|
37
31
|
}
|
|
38
|
-
|
|
39
32
|
const USES_PERMISSION = 'uses-permission';
|
|
40
|
-
|
|
41
33
|
const withPermissions = (config, permissions) => {
|
|
42
34
|
if (Array.isArray(permissions)) {
|
|
43
35
|
permissions = permissions.filter(Boolean);
|
|
44
36
|
if (!config.android) config.android = {};
|
|
45
37
|
if (!config.android.permissions) config.android.permissions = [];
|
|
46
|
-
config.android.permissions = [
|
|
38
|
+
config.android.permissions = [
|
|
39
|
+
// @ts-ignore
|
|
47
40
|
...new Set(config.android.permissions.concat(permissions))];
|
|
48
41
|
}
|
|
49
|
-
|
|
50
42
|
return (0, _androidPlugins().withAndroidManifest)(config, async config => {
|
|
51
43
|
config.modResults = await setAndroidPermissions(config, config.modResults);
|
|
52
44
|
return config;
|
|
53
45
|
});
|
|
54
46
|
};
|
|
55
|
-
/** Given a permission or list of permissions, block permissions in the final `AndroidManifest.xml` to ensure no installed library or plugin can add them. */
|
|
56
|
-
|
|
57
47
|
|
|
48
|
+
/** Given a permission or list of permissions, block permissions in the final `AndroidManifest.xml` to ensure no installed library or plugin can add them. */
|
|
58
49
|
exports.withPermissions = withPermissions;
|
|
59
|
-
|
|
60
50
|
const withBlockedPermissions = (config, permissions) => {
|
|
61
51
|
var _config$android;
|
|
62
|
-
|
|
63
52
|
const resolvedPermissions = prefixAndroidPermissionsIfNecessary((Array.isArray(permissions) ? permissions : [permissions]).filter(Boolean));
|
|
64
|
-
|
|
65
53
|
if (config !== null && config !== void 0 && (_config$android = config.android) !== null && _config$android !== void 0 && _config$android.permissions && Array.isArray(config.android.permissions)) {
|
|
66
54
|
// Remove any static config permissions
|
|
67
55
|
config.android.permissions = prefixAndroidPermissionsIfNecessary(config.android.permissions).filter(permission => !resolvedPermissions.includes(permission));
|
|
68
56
|
}
|
|
69
|
-
|
|
70
57
|
return (0, _androidPlugins().withAndroidManifest)(config, async config => {
|
|
71
58
|
config.modResults = (0, _Manifest().ensureToolsAvailable)(config.modResults);
|
|
72
59
|
config.modResults = addBlockedPermissions(config.modResults, resolvedPermissions);
|
|
73
60
|
return config;
|
|
74
61
|
});
|
|
75
62
|
};
|
|
76
|
-
|
|
77
63
|
exports.withBlockedPermissions = withBlockedPermissions;
|
|
78
|
-
|
|
79
64
|
const withInternalBlockedPermissions = config => {
|
|
80
65
|
var _config$android2, _config$android2$bloc;
|
|
81
|
-
|
|
82
66
|
// Only add permissions if the user defined the property and added some values
|
|
83
67
|
// this ensures we don't add the `tools:*` namespace extraneously.
|
|
84
68
|
if ((_config$android2 = config.android) !== null && _config$android2 !== void 0 && (_config$android2$bloc = _config$android2.blockedPermissions) !== null && _config$android2$bloc !== void 0 && _config$android2$bloc.length) {
|
|
85
69
|
return withBlockedPermissions(config, config.android.blockedPermissions);
|
|
86
70
|
}
|
|
87
|
-
|
|
88
71
|
return config;
|
|
89
72
|
};
|
|
90
|
-
|
|
91
73
|
exports.withInternalBlockedPermissions = withInternalBlockedPermissions;
|
|
92
|
-
|
|
93
74
|
function addBlockedPermissions(androidManifest, permissions) {
|
|
94
75
|
if (!Array.isArray(androidManifest.manifest['uses-permission'])) {
|
|
95
76
|
androidManifest.manifest['uses-permission'] = [];
|
|
96
77
|
}
|
|
97
|
-
|
|
98
78
|
for (const permission of prefixAndroidPermissionsIfNecessary(permissions)) {
|
|
99
79
|
androidManifest.manifest['uses-permission'] = ensureBlockedPermission(androidManifest.manifest['uses-permission'], permission);
|
|
100
80
|
}
|
|
101
|
-
|
|
102
81
|
return androidManifest;
|
|
103
82
|
}
|
|
83
|
+
|
|
104
84
|
/**
|
|
105
85
|
* Filter any existing permissions matching the provided permission name, then add a
|
|
106
86
|
* restricted permission to overwrite any extra permissions that may be added in a
|
|
@@ -110,12 +90,11 @@ function addBlockedPermissions(androidManifest, permissions) {
|
|
|
110
90
|
* @param permission `android:name` of the permission to restrict
|
|
111
91
|
* @returns
|
|
112
92
|
*/
|
|
113
|
-
|
|
114
|
-
|
|
115
93
|
function ensureBlockedPermission(manifestPermissions, permission) {
|
|
116
94
|
// Remove permission if it currently exists
|
|
117
|
-
manifestPermissions = manifestPermissions.filter(e => e.$['android:name'] !== permission);
|
|
95
|
+
manifestPermissions = manifestPermissions.filter(e => e.$['android:name'] !== permission);
|
|
118
96
|
|
|
97
|
+
// Add a permission with tools:node to overwrite any existing permission and ensure it's removed upon building.
|
|
119
98
|
manifestPermissions.push({
|
|
120
99
|
$: {
|
|
121
100
|
'android:name': permission,
|
|
@@ -124,34 +103,27 @@ function ensureBlockedPermission(manifestPermissions, permission) {
|
|
|
124
103
|
});
|
|
125
104
|
return manifestPermissions;
|
|
126
105
|
}
|
|
127
|
-
|
|
128
106
|
function prefixAndroidPermissionsIfNecessary(permissions) {
|
|
129
107
|
return permissions.map(permission => {
|
|
130
108
|
if (!permission.includes('.')) {
|
|
131
109
|
return `android.permission.${permission}`;
|
|
132
110
|
}
|
|
133
|
-
|
|
134
111
|
return permission;
|
|
135
112
|
});
|
|
136
113
|
}
|
|
137
|
-
|
|
138
114
|
function getAndroidPermissions(config) {
|
|
139
115
|
var _config$android$permi, _config$android3;
|
|
140
|
-
|
|
141
116
|
return (_config$android$permi = (_config$android3 = config.android) === null || _config$android3 === void 0 ? void 0 : _config$android3.permissions) !== null && _config$android$permi !== void 0 ? _config$android$permi : [];
|
|
142
117
|
}
|
|
143
|
-
|
|
144
118
|
function setAndroidPermissions(config, androidManifest) {
|
|
145
119
|
var _androidManifest$mani;
|
|
146
|
-
|
|
147
120
|
const permissions = getAndroidPermissions(config);
|
|
148
121
|
const providedPermissions = prefixAndroidPermissionsIfNecessary(permissions);
|
|
149
122
|
const permissionsToAdd = [...providedPermissions];
|
|
150
|
-
|
|
151
123
|
if (!androidManifest.manifest.hasOwnProperty('uses-permission')) {
|
|
152
124
|
androidManifest.manifest['uses-permission'] = [];
|
|
153
|
-
}
|
|
154
|
-
|
|
125
|
+
}
|
|
126
|
+
// manifest.manifest['uses-permission'] = [];
|
|
155
127
|
|
|
156
128
|
const manifestPermissions = (_androidManifest$mani = androidManifest.manifest['uses-permission']) !== null && _androidManifest$mani !== void 0 ? _androidManifest$mani : [];
|
|
157
129
|
permissionsToAdd.forEach(permission => {
|
|
@@ -161,11 +133,9 @@ function setAndroidPermissions(config, androidManifest) {
|
|
|
161
133
|
});
|
|
162
134
|
return androidManifest;
|
|
163
135
|
}
|
|
164
|
-
|
|
165
136
|
function isPermissionAlreadyRequested(permission, manifestPermissions) {
|
|
166
137
|
return manifestPermissions.some(e => e.$['android:name'] === permission);
|
|
167
138
|
}
|
|
168
|
-
|
|
169
139
|
function addPermissionToManifest(permission, manifestPermissions) {
|
|
170
140
|
manifestPermissions.push({
|
|
171
141
|
$: {
|
|
@@ -174,26 +144,21 @@ function addPermissionToManifest(permission, manifestPermissions) {
|
|
|
174
144
|
});
|
|
175
145
|
return manifestPermissions;
|
|
176
146
|
}
|
|
177
|
-
|
|
178
147
|
function removePermissions(androidManifest, permissionNames) {
|
|
179
148
|
const targetNames = permissionNames ? permissionNames.map(ensurePermissionNameFormat) : null;
|
|
180
149
|
const permissions = androidManifest.manifest[USES_PERMISSION] || [];
|
|
181
150
|
const nextPermissions = [];
|
|
182
|
-
|
|
183
151
|
for (const attribute of permissions) {
|
|
184
152
|
if (targetNames) {
|
|
185
153
|
// @ts-ignore: name isn't part of the type
|
|
186
154
|
const value = attribute.$['android:name'] || attribute.$.name;
|
|
187
|
-
|
|
188
155
|
if (!targetNames.includes(value)) {
|
|
189
156
|
nextPermissions.push(attribute);
|
|
190
157
|
}
|
|
191
158
|
}
|
|
192
159
|
}
|
|
193
|
-
|
|
194
160
|
androidManifest.manifest[USES_PERMISSION] = nextPermissions;
|
|
195
161
|
}
|
|
196
|
-
|
|
197
162
|
function addPermission(androidManifest, permissionName) {
|
|
198
163
|
const usesPermissions = androidManifest.manifest[USES_PERMISSION] || [];
|
|
199
164
|
usesPermissions.push({
|
|
@@ -203,14 +168,11 @@ function addPermission(androidManifest, permissionName) {
|
|
|
203
168
|
});
|
|
204
169
|
androidManifest.manifest[USES_PERMISSION] = usesPermissions;
|
|
205
170
|
}
|
|
206
|
-
|
|
207
171
|
function ensurePermissions(androidManifest, permissionNames) {
|
|
208
172
|
const permissions = getPermissions(androidManifest);
|
|
209
173
|
const results = {};
|
|
210
|
-
|
|
211
174
|
for (const permissionName of permissionNames) {
|
|
212
175
|
const targetName = ensurePermissionNameFormat(permissionName);
|
|
213
|
-
|
|
214
176
|
if (!permissions.includes(targetName)) {
|
|
215
177
|
addPermission(androidManifest, targetName);
|
|
216
178
|
results[permissionName] = true;
|
|
@@ -218,22 +180,17 @@ function ensurePermissions(androidManifest, permissionNames) {
|
|
|
218
180
|
results[permissionName] = false;
|
|
219
181
|
}
|
|
220
182
|
}
|
|
221
|
-
|
|
222
183
|
return results;
|
|
223
184
|
}
|
|
224
|
-
|
|
225
185
|
function ensurePermission(androidManifest, permissionName) {
|
|
226
186
|
const permissions = getPermissions(androidManifest);
|
|
227
187
|
const targetName = ensurePermissionNameFormat(permissionName);
|
|
228
|
-
|
|
229
188
|
if (!permissions.includes(targetName)) {
|
|
230
189
|
addPermission(androidManifest, targetName);
|
|
231
190
|
return true;
|
|
232
191
|
}
|
|
233
|
-
|
|
234
192
|
return false;
|
|
235
193
|
}
|
|
236
|
-
|
|
237
194
|
function ensurePermissionNameFormat(permissionName) {
|
|
238
195
|
if (permissionName.includes('.')) {
|
|
239
196
|
const com = permissionName.split('.');
|
|
@@ -244,7 +201,6 @@ function ensurePermissionNameFormat(permissionName) {
|
|
|
244
201
|
return ensurePermissionNameFormat(`android.permission.${permissionName}`);
|
|
245
202
|
}
|
|
246
203
|
}
|
|
247
|
-
|
|
248
204
|
function getPermissions(androidManifest) {
|
|
249
205
|
const usesPermissions = androidManifest.manifest[USES_PERMISSION] || [];
|
|
250
206
|
const permissions = usesPermissions.map(permissionObject => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permissions.js","names":["USES_PERMISSION","withPermissions","config","permissions","Array","isArray","filter","Boolean","android","Set","concat","withAndroidManifest","modResults","setAndroidPermissions","withBlockedPermissions","resolvedPermissions","prefixAndroidPermissionsIfNecessary","permission","includes","ensureToolsAvailable","addBlockedPermissions","withInternalBlockedPermissions","blockedPermissions","length","androidManifest","manifest","ensureBlockedPermission","manifestPermissions","e","$","push","map","getAndroidPermissions","providedPermissions","permissionsToAdd","hasOwnProperty","forEach","isPermissionAlreadyRequested","addPermissionToManifest","some","removePermissions","permissionNames","targetNames","ensurePermissionNameFormat","nextPermissions","attribute","value","name","addPermission","permissionName","usesPermissions","ensurePermissions","getPermissions","results","targetName","ensurePermission","com","split","pop","toUpperCase","join","permissionObject"],"sources":["../../src/android/Permissions.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidManifest } from '../plugins/android-plugins';\nimport { AndroidManifest, ensureToolsAvailable, ManifestUsesPermission } from './Manifest';\n\nconst USES_PERMISSION = 'uses-permission';\n\nexport const withPermissions: ConfigPlugin<string[] | void> = (config, permissions) => {\n if (Array.isArray(permissions)) {\n permissions = permissions.filter(Boolean);\n if (!config.android) config.android = {};\n if (!config.android.permissions) config.android.permissions = [];\n config.android.permissions = [\n // @ts-ignore\n ...new Set(config.android.permissions.concat(permissions)),\n ];\n }\n return withAndroidManifest(config, async (config) => {\n config.modResults = await setAndroidPermissions(config, config.modResults);\n return config;\n });\n};\n\n/** Given a permission or list of permissions, block permissions in the final `AndroidManifest.xml` to ensure no installed library or plugin can add them. */\nexport const withBlockedPermissions: ConfigPlugin<string[] | string> = (config, permissions) => {\n const resolvedPermissions = prefixAndroidPermissionsIfNecessary(\n (Array.isArray(permissions) ? permissions : [permissions]).filter(Boolean)\n );\n\n if (config?.android?.permissions && Array.isArray(config.android.permissions)) {\n // Remove any static config permissions\n config.android.permissions = prefixAndroidPermissionsIfNecessary(\n config.android.permissions\n ).filter((permission) => !resolvedPermissions.includes(permission));\n }\n\n return withAndroidManifest(config, async (config) => {\n config.modResults = ensureToolsAvailable(config.modResults);\n config.modResults = addBlockedPermissions(config.modResults, resolvedPermissions);\n return config;\n });\n};\n\nexport const withInternalBlockedPermissions: ConfigPlugin = (config) => {\n // Only add permissions if the user defined the property and added some values\n // this ensures we don't add the `tools:*` namespace extraneously.\n if (config.android?.blockedPermissions?.length) {\n return withBlockedPermissions(config, config.android.blockedPermissions);\n }\n\n return config;\n};\n\nexport function addBlockedPermissions(androidManifest: AndroidManifest, permissions: string[]) {\n if (!Array.isArray(androidManifest.manifest['uses-permission'])) {\n androidManifest.manifest['uses-permission'] = [];\n }\n\n for (const permission of prefixAndroidPermissionsIfNecessary(permissions)) {\n androidManifest.manifest['uses-permission'] = ensureBlockedPermission(\n androidManifest.manifest['uses-permission'],\n permission\n );\n }\n\n return androidManifest;\n}\n\n/**\n * Filter any existing permissions matching the provided permission name, then add a\n * restricted permission to overwrite any extra permissions that may be added in a\n * third-party package's AndroidManifest.xml.\n *\n * @param manifestPermissions manifest `uses-permissions` array.\n * @param permission `android:name` of the permission to restrict\n * @returns\n */\nfunction ensureBlockedPermission(\n manifestPermissions: ManifestUsesPermission[],\n permission: string\n) {\n // Remove permission if it currently exists\n manifestPermissions = manifestPermissions.filter((e) => e.$['android:name'] !== permission);\n\n // Add a permission with tools:node to overwrite any existing permission and ensure it's removed upon building.\n manifestPermissions.push({\n $: { 'android:name': permission, 'tools:node': 'remove' },\n });\n return manifestPermissions;\n}\n\nfunction prefixAndroidPermissionsIfNecessary(permissions: string[]): string[] {\n return permissions.map((permission) => {\n if (!permission.includes('.')) {\n return `android.permission.${permission}`;\n }\n return permission;\n });\n}\n\nexport function getAndroidPermissions(config: Pick<ExpoConfig, 'android'>): string[] {\n return config.android?.permissions ?? [];\n}\n\nexport function setAndroidPermissions(\n config: Pick<ExpoConfig, 'android'>,\n androidManifest: AndroidManifest\n) {\n const permissions = getAndroidPermissions(config);\n const providedPermissions = prefixAndroidPermissionsIfNecessary(permissions);\n const permissionsToAdd = [...providedPermissions];\n\n if (!androidManifest.manifest.hasOwnProperty('uses-permission')) {\n androidManifest.manifest['uses-permission'] = [];\n }\n // manifest.manifest['uses-permission'] = [];\n\n const manifestPermissions = androidManifest.manifest['uses-permission'] ?? [];\n\n permissionsToAdd.forEach((permission) => {\n if (!isPermissionAlreadyRequested(permission, manifestPermissions)) {\n addPermissionToManifest(permission, manifestPermissions);\n }\n });\n\n return androidManifest;\n}\n\nexport function isPermissionAlreadyRequested(\n permission: string,\n manifestPermissions: ManifestUsesPermission[]\n): boolean {\n return manifestPermissions.some((e) => e.$['android:name'] === permission);\n}\n\nexport function addPermissionToManifest(\n permission: string,\n manifestPermissions: ManifestUsesPermission[]\n) {\n manifestPermissions.push({ $: { 'android:name': permission } });\n return manifestPermissions;\n}\n\nexport function removePermissions(androidManifest: AndroidManifest, permissionNames?: string[]) {\n const targetNames = permissionNames ? permissionNames.map(ensurePermissionNameFormat) : null;\n const permissions = androidManifest.manifest[USES_PERMISSION] || [];\n const nextPermissions = [];\n for (const attribute of permissions) {\n if (targetNames) {\n // @ts-ignore: name isn't part of the type\n const value = attribute.$['android:name'] || attribute.$.name;\n if (!targetNames.includes(value)) {\n nextPermissions.push(attribute);\n }\n }\n }\n\n androidManifest.manifest[USES_PERMISSION] = nextPermissions;\n}\n\nexport function addPermission(androidManifest: AndroidManifest, permissionName: string): void {\n const usesPermissions: ManifestUsesPermission[] = androidManifest.manifest[USES_PERMISSION] || [];\n usesPermissions.push({\n $: { 'android:name': permissionName },\n });\n androidManifest.manifest[USES_PERMISSION] = usesPermissions;\n}\n\nexport function ensurePermissions(\n androidManifest: AndroidManifest,\n permissionNames: string[]\n): { [permission: string]: boolean } {\n const permissions = getPermissions(androidManifest);\n\n const results: { [permission: string]: boolean } = {};\n for (const permissionName of permissionNames) {\n const targetName = ensurePermissionNameFormat(permissionName);\n if (!permissions.includes(targetName)) {\n addPermission(androidManifest, targetName);\n results[permissionName] = true;\n } else {\n results[permissionName] = false;\n }\n }\n return results;\n}\n\nexport function ensurePermission(\n androidManifest: AndroidManifest,\n permissionName: string\n): boolean {\n const permissions = getPermissions(androidManifest);\n const targetName = ensurePermissionNameFormat(permissionName);\n\n if (!permissions.includes(targetName)) {\n addPermission(androidManifest, targetName);\n return true;\n }\n return false;\n}\n\nexport function ensurePermissionNameFormat(permissionName: string): string {\n if (permissionName.includes('.')) {\n const com = permissionName.split('.');\n const name = com.pop() as string;\n return [...com, name.toUpperCase()].join('.');\n } else {\n // If shorthand form like `WRITE_CONTACTS` is provided, expand it to `android.permission.WRITE_CONTACTS`.\n return ensurePermissionNameFormat(`android.permission.${permissionName}`);\n }\n}\n\nexport function getPermissions(androidManifest: AndroidManifest): string[] {\n const usesPermissions: { [key: string]: any }[] = androidManifest.manifest[USES_PERMISSION] || [];\n const permissions = usesPermissions.map((permissionObject) => {\n return permissionObject.$['android:name'] || permissionObject.$.name;\n });\n return permissions;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Permissions.js","names":["USES_PERMISSION","withPermissions","config","permissions","Array","isArray","filter","Boolean","android","Set","concat","withAndroidManifest","modResults","setAndroidPermissions","withBlockedPermissions","resolvedPermissions","prefixAndroidPermissionsIfNecessary","permission","includes","ensureToolsAvailable","addBlockedPermissions","withInternalBlockedPermissions","blockedPermissions","length","androidManifest","manifest","ensureBlockedPermission","manifestPermissions","e","$","push","map","getAndroidPermissions","providedPermissions","permissionsToAdd","hasOwnProperty","forEach","isPermissionAlreadyRequested","addPermissionToManifest","some","removePermissions","permissionNames","targetNames","ensurePermissionNameFormat","nextPermissions","attribute","value","name","addPermission","permissionName","usesPermissions","ensurePermissions","getPermissions","results","targetName","ensurePermission","com","split","pop","toUpperCase","join","permissionObject"],"sources":["../../src/android/Permissions.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidManifest } from '../plugins/android-plugins';\nimport { AndroidManifest, ensureToolsAvailable, ManifestUsesPermission } from './Manifest';\n\nconst USES_PERMISSION = 'uses-permission';\n\nexport const withPermissions: ConfigPlugin<string[] | void> = (config, permissions) => {\n if (Array.isArray(permissions)) {\n permissions = permissions.filter(Boolean);\n if (!config.android) config.android = {};\n if (!config.android.permissions) config.android.permissions = [];\n config.android.permissions = [\n // @ts-ignore\n ...new Set(config.android.permissions.concat(permissions)),\n ];\n }\n return withAndroidManifest(config, async (config) => {\n config.modResults = await setAndroidPermissions(config, config.modResults);\n return config;\n });\n};\n\n/** Given a permission or list of permissions, block permissions in the final `AndroidManifest.xml` to ensure no installed library or plugin can add them. */\nexport const withBlockedPermissions: ConfigPlugin<string[] | string> = (config, permissions) => {\n const resolvedPermissions = prefixAndroidPermissionsIfNecessary(\n (Array.isArray(permissions) ? permissions : [permissions]).filter(Boolean)\n );\n\n if (config?.android?.permissions && Array.isArray(config.android.permissions)) {\n // Remove any static config permissions\n config.android.permissions = prefixAndroidPermissionsIfNecessary(\n config.android.permissions\n ).filter((permission) => !resolvedPermissions.includes(permission));\n }\n\n return withAndroidManifest(config, async (config) => {\n config.modResults = ensureToolsAvailable(config.modResults);\n config.modResults = addBlockedPermissions(config.modResults, resolvedPermissions);\n return config;\n });\n};\n\nexport const withInternalBlockedPermissions: ConfigPlugin = (config) => {\n // Only add permissions if the user defined the property and added some values\n // this ensures we don't add the `tools:*` namespace extraneously.\n if (config.android?.blockedPermissions?.length) {\n return withBlockedPermissions(config, config.android.blockedPermissions);\n }\n\n return config;\n};\n\nexport function addBlockedPermissions(androidManifest: AndroidManifest, permissions: string[]) {\n if (!Array.isArray(androidManifest.manifest['uses-permission'])) {\n androidManifest.manifest['uses-permission'] = [];\n }\n\n for (const permission of prefixAndroidPermissionsIfNecessary(permissions)) {\n androidManifest.manifest['uses-permission'] = ensureBlockedPermission(\n androidManifest.manifest['uses-permission'],\n permission\n );\n }\n\n return androidManifest;\n}\n\n/**\n * Filter any existing permissions matching the provided permission name, then add a\n * restricted permission to overwrite any extra permissions that may be added in a\n * third-party package's AndroidManifest.xml.\n *\n * @param manifestPermissions manifest `uses-permissions` array.\n * @param permission `android:name` of the permission to restrict\n * @returns\n */\nfunction ensureBlockedPermission(\n manifestPermissions: ManifestUsesPermission[],\n permission: string\n) {\n // Remove permission if it currently exists\n manifestPermissions = manifestPermissions.filter((e) => e.$['android:name'] !== permission);\n\n // Add a permission with tools:node to overwrite any existing permission and ensure it's removed upon building.\n manifestPermissions.push({\n $: { 'android:name': permission, 'tools:node': 'remove' },\n });\n return manifestPermissions;\n}\n\nfunction prefixAndroidPermissionsIfNecessary(permissions: string[]): string[] {\n return permissions.map((permission) => {\n if (!permission.includes('.')) {\n return `android.permission.${permission}`;\n }\n return permission;\n });\n}\n\nexport function getAndroidPermissions(config: Pick<ExpoConfig, 'android'>): string[] {\n return config.android?.permissions ?? [];\n}\n\nexport function setAndroidPermissions(\n config: Pick<ExpoConfig, 'android'>,\n androidManifest: AndroidManifest\n) {\n const permissions = getAndroidPermissions(config);\n const providedPermissions = prefixAndroidPermissionsIfNecessary(permissions);\n const permissionsToAdd = [...providedPermissions];\n\n if (!androidManifest.manifest.hasOwnProperty('uses-permission')) {\n androidManifest.manifest['uses-permission'] = [];\n }\n // manifest.manifest['uses-permission'] = [];\n\n const manifestPermissions = androidManifest.manifest['uses-permission'] ?? [];\n\n permissionsToAdd.forEach((permission) => {\n if (!isPermissionAlreadyRequested(permission, manifestPermissions)) {\n addPermissionToManifest(permission, manifestPermissions);\n }\n });\n\n return androidManifest;\n}\n\nexport function isPermissionAlreadyRequested(\n permission: string,\n manifestPermissions: ManifestUsesPermission[]\n): boolean {\n return manifestPermissions.some((e) => e.$['android:name'] === permission);\n}\n\nexport function addPermissionToManifest(\n permission: string,\n manifestPermissions: ManifestUsesPermission[]\n) {\n manifestPermissions.push({ $: { 'android:name': permission } });\n return manifestPermissions;\n}\n\nexport function removePermissions(androidManifest: AndroidManifest, permissionNames?: string[]) {\n const targetNames = permissionNames ? permissionNames.map(ensurePermissionNameFormat) : null;\n const permissions = androidManifest.manifest[USES_PERMISSION] || [];\n const nextPermissions = [];\n for (const attribute of permissions) {\n if (targetNames) {\n // @ts-ignore: name isn't part of the type\n const value = attribute.$['android:name'] || attribute.$.name;\n if (!targetNames.includes(value)) {\n nextPermissions.push(attribute);\n }\n }\n }\n\n androidManifest.manifest[USES_PERMISSION] = nextPermissions;\n}\n\nexport function addPermission(androidManifest: AndroidManifest, permissionName: string): void {\n const usesPermissions: ManifestUsesPermission[] = androidManifest.manifest[USES_PERMISSION] || [];\n usesPermissions.push({\n $: { 'android:name': permissionName },\n });\n androidManifest.manifest[USES_PERMISSION] = usesPermissions;\n}\n\nexport function ensurePermissions(\n androidManifest: AndroidManifest,\n permissionNames: string[]\n): { [permission: string]: boolean } {\n const permissions = getPermissions(androidManifest);\n\n const results: { [permission: string]: boolean } = {};\n for (const permissionName of permissionNames) {\n const targetName = ensurePermissionNameFormat(permissionName);\n if (!permissions.includes(targetName)) {\n addPermission(androidManifest, targetName);\n results[permissionName] = true;\n } else {\n results[permissionName] = false;\n }\n }\n return results;\n}\n\nexport function ensurePermission(\n androidManifest: AndroidManifest,\n permissionName: string\n): boolean {\n const permissions = getPermissions(androidManifest);\n const targetName = ensurePermissionNameFormat(permissionName);\n\n if (!permissions.includes(targetName)) {\n addPermission(androidManifest, targetName);\n return true;\n }\n return false;\n}\n\nexport function ensurePermissionNameFormat(permissionName: string): string {\n if (permissionName.includes('.')) {\n const com = permissionName.split('.');\n const name = com.pop() as string;\n return [...com, name.toUpperCase()].join('.');\n } else {\n // If shorthand form like `WRITE_CONTACTS` is provided, expand it to `android.permission.WRITE_CONTACTS`.\n return ensurePermissionNameFormat(`android.permission.${permissionName}`);\n }\n}\n\nexport function getPermissions(androidManifest: AndroidManifest): string[] {\n const usesPermissions: { [key: string]: any }[] = androidManifest.manifest[USES_PERMISSION] || [];\n const permissions = usesPermissions.map((permissionObject) => {\n return permissionObject.$['android:name'] || permissionObject.$.name;\n });\n return permissions;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA,MAAMA,eAAe,GAAG,iBAAiB;AAElC,MAAMC,eAA8C,GAAG,CAACC,MAAM,EAAEC,WAAW,KAAK;EACrF,IAAIC,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,EAAE;IAC9BA,WAAW,GAAGA,WAAW,CAACG,MAAM,CAACC,OAAO,CAAC;IACzC,IAAI,CAACL,MAAM,CAACM,OAAO,EAAEN,MAAM,CAACM,OAAO,GAAG,CAAC,CAAC;IACxC,IAAI,CAACN,MAAM,CAACM,OAAO,CAACL,WAAW,EAAED,MAAM,CAACM,OAAO,CAACL,WAAW,GAAG,EAAE;IAChED,MAAM,CAACM,OAAO,CAACL,WAAW,GAAG;IAC3B;IACA,GAAG,IAAIM,GAAG,CAACP,MAAM,CAACM,OAAO,CAACL,WAAW,CAACO,MAAM,CAACP,WAAW,CAAC,CAAC,CAC3D;EACH;EACA,OAAO,IAAAQ,qCAAmB,EAACT,MAAM,EAAE,MAAOA,MAAM,IAAK;IACnDA,MAAM,CAACU,UAAU,GAAG,MAAMC,qBAAqB,CAACX,MAAM,EAAEA,MAAM,CAACU,UAAU,CAAC;IAC1E,OAAOV,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;;AAED;AAAA;AACO,MAAMY,sBAAuD,GAAG,CAACZ,MAAM,EAAEC,WAAW,KAAK;EAAA;EAC9F,MAAMY,mBAAmB,GAAGC,mCAAmC,CAC7D,CAACZ,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,GAAGA,WAAW,GAAG,CAACA,WAAW,CAAC,EAAEG,MAAM,CAACC,OAAO,CAAC,CAC3E;EAED,IAAIL,MAAM,aAANA,MAAM,kCAANA,MAAM,CAAEM,OAAO,4CAAf,gBAAiBL,WAAW,IAAIC,KAAK,CAACC,OAAO,CAACH,MAAM,CAACM,OAAO,CAACL,WAAW,CAAC,EAAE;IAC7E;IACAD,MAAM,CAACM,OAAO,CAACL,WAAW,GAAGa,mCAAmC,CAC9Dd,MAAM,CAACM,OAAO,CAACL,WAAW,CAC3B,CAACG,MAAM,CAAEW,UAAU,IAAK,CAACF,mBAAmB,CAACG,QAAQ,CAACD,UAAU,CAAC,CAAC;EACrE;EAEA,OAAO,IAAAN,qCAAmB,EAACT,MAAM,EAAE,MAAOA,MAAM,IAAK;IACnDA,MAAM,CAACU,UAAU,GAAG,IAAAO,gCAAoB,EAACjB,MAAM,CAACU,UAAU,CAAC;IAC3DV,MAAM,CAACU,UAAU,GAAGQ,qBAAqB,CAAClB,MAAM,CAACU,UAAU,EAAEG,mBAAmB,CAAC;IACjF,OAAOb,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC;AAEK,MAAMmB,8BAA4C,GAAInB,MAAM,IAAK;EAAA;EACtE;EACA;EACA,wBAAIA,MAAM,CAACM,OAAO,sEAAd,iBAAgBc,kBAAkB,kDAAlC,sBAAoCC,MAAM,EAAE;IAC9C,OAAOT,sBAAsB,CAACZ,MAAM,EAAEA,MAAM,CAACM,OAAO,CAACc,kBAAkB,CAAC;EAC1E;EAEA,OAAOpB,MAAM;AACf,CAAC;AAAC;AAEK,SAASkB,qBAAqB,CAACI,eAAgC,EAAErB,WAAqB,EAAE;EAC7F,IAAI,CAACC,KAAK,CAACC,OAAO,CAACmB,eAAe,CAACC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE;IAC/DD,eAAe,CAACC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE;EAClD;EAEA,KAAK,MAAMR,UAAU,IAAID,mCAAmC,CAACb,WAAW,CAAC,EAAE;IACzEqB,eAAe,CAACC,QAAQ,CAAC,iBAAiB,CAAC,GAAGC,uBAAuB,CACnEF,eAAe,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAC3CR,UAAU,CACX;EACH;EAEA,OAAOO,eAAe;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,uBAAuB,CAC9BC,mBAA6C,EAC7CV,UAAkB,EAClB;EACA;EACAU,mBAAmB,GAAGA,mBAAmB,CAACrB,MAAM,CAAEsB,CAAC,IAAKA,CAAC,CAACC,CAAC,CAAC,cAAc,CAAC,KAAKZ,UAAU,CAAC;;EAE3F;EACAU,mBAAmB,CAACG,IAAI,CAAC;IACvBD,CAAC,EAAE;MAAE,cAAc,EAAEZ,UAAU;MAAE,YAAY,EAAE;IAAS;EAC1D,CAAC,CAAC;EACF,OAAOU,mBAAmB;AAC5B;AAEA,SAASX,mCAAmC,CAACb,WAAqB,EAAY;EAC5E,OAAOA,WAAW,CAAC4B,GAAG,CAAEd,UAAU,IAAK;IACrC,IAAI,CAACA,UAAU,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE;MAC7B,OAAQ,sBAAqBD,UAAW,EAAC;IAC3C;IACA,OAAOA,UAAU;EACnB,CAAC,CAAC;AACJ;AAEO,SAASe,qBAAqB,CAAC9B,MAAmC,EAAY;EAAA;EACnF,oDAAOA,MAAM,CAACM,OAAO,qDAAd,iBAAgBL,WAAW,yEAAI,EAAE;AAC1C;AAEO,SAASU,qBAAqB,CACnCX,MAAmC,EACnCsB,eAAgC,EAChC;EAAA;EACA,MAAMrB,WAAW,GAAG6B,qBAAqB,CAAC9B,MAAM,CAAC;EACjD,MAAM+B,mBAAmB,GAAGjB,mCAAmC,CAACb,WAAW,CAAC;EAC5E,MAAM+B,gBAAgB,GAAG,CAAC,GAAGD,mBAAmB,CAAC;EAEjD,IAAI,CAACT,eAAe,CAACC,QAAQ,CAACU,cAAc,CAAC,iBAAiB,CAAC,EAAE;IAC/DX,eAAe,CAACC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE;EAClD;EACA;;EAEA,MAAME,mBAAmB,4BAAGH,eAAe,CAACC,QAAQ,CAAC,iBAAiB,CAAC,yEAAI,EAAE;EAE7ES,gBAAgB,CAACE,OAAO,CAAEnB,UAAU,IAAK;IACvC,IAAI,CAACoB,4BAA4B,CAACpB,UAAU,EAAEU,mBAAmB,CAAC,EAAE;MAClEW,uBAAuB,CAACrB,UAAU,EAAEU,mBAAmB,CAAC;IAC1D;EACF,CAAC,CAAC;EAEF,OAAOH,eAAe;AACxB;AAEO,SAASa,4BAA4B,CAC1CpB,UAAkB,EAClBU,mBAA6C,EACpC;EACT,OAAOA,mBAAmB,CAACY,IAAI,CAAEX,CAAC,IAAKA,CAAC,CAACC,CAAC,CAAC,cAAc,CAAC,KAAKZ,UAAU,CAAC;AAC5E;AAEO,SAASqB,uBAAuB,CACrCrB,UAAkB,EAClBU,mBAA6C,EAC7C;EACAA,mBAAmB,CAACG,IAAI,CAAC;IAAED,CAAC,EAAE;MAAE,cAAc,EAAEZ;IAAW;EAAE,CAAC,CAAC;EAC/D,OAAOU,mBAAmB;AAC5B;AAEO,SAASa,iBAAiB,CAAChB,eAAgC,EAAEiB,eAA0B,EAAE;EAC9F,MAAMC,WAAW,GAAGD,eAAe,GAAGA,eAAe,CAACV,GAAG,CAACY,0BAA0B,CAAC,GAAG,IAAI;EAC5F,MAAMxC,WAAW,GAAGqB,eAAe,CAACC,QAAQ,CAACzB,eAAe,CAAC,IAAI,EAAE;EACnE,MAAM4C,eAAe,GAAG,EAAE;EAC1B,KAAK,MAAMC,SAAS,IAAI1C,WAAW,EAAE;IACnC,IAAIuC,WAAW,EAAE;MACf;MACA,MAAMI,KAAK,GAAGD,SAAS,CAAChB,CAAC,CAAC,cAAc,CAAC,IAAIgB,SAAS,CAAChB,CAAC,CAACkB,IAAI;MAC7D,IAAI,CAACL,WAAW,CAACxB,QAAQ,CAAC4B,KAAK,CAAC,EAAE;QAChCF,eAAe,CAACd,IAAI,CAACe,SAAS,CAAC;MACjC;IACF;EACF;EAEArB,eAAe,CAACC,QAAQ,CAACzB,eAAe,CAAC,GAAG4C,eAAe;AAC7D;AAEO,SAASI,aAAa,CAACxB,eAAgC,EAAEyB,cAAsB,EAAQ;EAC5F,MAAMC,eAAyC,GAAG1B,eAAe,CAACC,QAAQ,CAACzB,eAAe,CAAC,IAAI,EAAE;EACjGkD,eAAe,CAACpB,IAAI,CAAC;IACnBD,CAAC,EAAE;MAAE,cAAc,EAAEoB;IAAe;EACtC,CAAC,CAAC;EACFzB,eAAe,CAACC,QAAQ,CAACzB,eAAe,CAAC,GAAGkD,eAAe;AAC7D;AAEO,SAASC,iBAAiB,CAC/B3B,eAAgC,EAChCiB,eAAyB,EACU;EACnC,MAAMtC,WAAW,GAAGiD,cAAc,CAAC5B,eAAe,CAAC;EAEnD,MAAM6B,OAA0C,GAAG,CAAC,CAAC;EACrD,KAAK,MAAMJ,cAAc,IAAIR,eAAe,EAAE;IAC5C,MAAMa,UAAU,GAAGX,0BAA0B,CAACM,cAAc,CAAC;IAC7D,IAAI,CAAC9C,WAAW,CAACe,QAAQ,CAACoC,UAAU,CAAC,EAAE;MACrCN,aAAa,CAACxB,eAAe,EAAE8B,UAAU,CAAC;MAC1CD,OAAO,CAACJ,cAAc,CAAC,GAAG,IAAI;IAChC,CAAC,MAAM;MACLI,OAAO,CAACJ,cAAc,CAAC,GAAG,KAAK;IACjC;EACF;EACA,OAAOI,OAAO;AAChB;AAEO,SAASE,gBAAgB,CAC9B/B,eAAgC,EAChCyB,cAAsB,EACb;EACT,MAAM9C,WAAW,GAAGiD,cAAc,CAAC5B,eAAe,CAAC;EACnD,MAAM8B,UAAU,GAAGX,0BAA0B,CAACM,cAAc,CAAC;EAE7D,IAAI,CAAC9C,WAAW,CAACe,QAAQ,CAACoC,UAAU,CAAC,EAAE;IACrCN,aAAa,CAACxB,eAAe,EAAE8B,UAAU,CAAC;IAC1C,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd;AAEO,SAASX,0BAA0B,CAACM,cAAsB,EAAU;EACzE,IAAIA,cAAc,CAAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE;IAChC,MAAMsC,GAAG,GAAGP,cAAc,CAACQ,KAAK,CAAC,GAAG,CAAC;IACrC,MAAMV,IAAI,GAAGS,GAAG,CAACE,GAAG,EAAY;IAChC,OAAO,CAAC,GAAGF,GAAG,EAAET,IAAI,CAACY,WAAW,EAAE,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;EAC/C,CAAC,MAAM;IACL;IACA,OAAOjB,0BAA0B,CAAE,sBAAqBM,cAAe,EAAC,CAAC;EAC3E;AACF;AAEO,SAASG,cAAc,CAAC5B,eAAgC,EAAY;EACzE,MAAM0B,eAAyC,GAAG1B,eAAe,CAACC,QAAQ,CAACzB,eAAe,CAAC,IAAI,EAAE;EACjG,MAAMG,WAAW,GAAG+C,eAAe,CAACnB,GAAG,CAAE8B,gBAAgB,IAAK;IAC5D,OAAOA,gBAAgB,CAAChC,CAAC,CAAC,cAAc,CAAC,IAAIgC,gBAAgB,CAAChC,CAAC,CAACkB,IAAI;EACtE,CAAC,CAAC;EACF,OAAO5C,WAAW;AACpB"}
|
|
@@ -5,48 +5,35 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getPrimaryColor = getPrimaryColor;
|
|
7
7
|
exports.withPrimaryColorStyles = exports.withPrimaryColorColors = exports.withPrimaryColor = void 0;
|
|
8
|
-
|
|
9
8
|
function _androidPlugins() {
|
|
10
9
|
const data = require("../plugins/android-plugins");
|
|
11
|
-
|
|
12
10
|
_androidPlugins = function () {
|
|
13
11
|
return data;
|
|
14
12
|
};
|
|
15
|
-
|
|
16
13
|
return data;
|
|
17
14
|
}
|
|
18
|
-
|
|
19
15
|
function _Colors() {
|
|
20
16
|
const data = require("./Colors");
|
|
21
|
-
|
|
22
17
|
_Colors = function () {
|
|
23
18
|
return data;
|
|
24
19
|
};
|
|
25
|
-
|
|
26
20
|
return data;
|
|
27
21
|
}
|
|
28
|
-
|
|
29
22
|
function _Styles() {
|
|
30
23
|
const data = require("./Styles");
|
|
31
|
-
|
|
32
24
|
_Styles = function () {
|
|
33
25
|
return data;
|
|
34
26
|
};
|
|
35
|
-
|
|
36
27
|
return data;
|
|
37
28
|
}
|
|
38
|
-
|
|
39
29
|
const COLOR_PRIMARY_KEY = 'colorPrimary';
|
|
40
30
|
const DEFAULT_PRIMARY_COLOR = '#023c69';
|
|
41
|
-
|
|
42
31
|
const withPrimaryColor = config => {
|
|
43
32
|
config = withPrimaryColorColors(config);
|
|
44
33
|
config = withPrimaryColorStyles(config);
|
|
45
34
|
return config;
|
|
46
35
|
};
|
|
47
|
-
|
|
48
36
|
exports.withPrimaryColor = withPrimaryColor;
|
|
49
|
-
|
|
50
37
|
const withPrimaryColorColors = config => {
|
|
51
38
|
return (0, _androidPlugins().withAndroidColors)(config, config => {
|
|
52
39
|
config.modResults = (0, _Colors().assignColorValue)(config.modResults, {
|
|
@@ -56,9 +43,7 @@ const withPrimaryColorColors = config => {
|
|
|
56
43
|
return config;
|
|
57
44
|
});
|
|
58
45
|
};
|
|
59
|
-
|
|
60
46
|
exports.withPrimaryColorColors = withPrimaryColorColors;
|
|
61
|
-
|
|
62
47
|
const withPrimaryColorStyles = config => {
|
|
63
48
|
return (0, _androidPlugins().withAndroidStyles)(config, config => {
|
|
64
49
|
config.modResults = (0, _Styles().assignStylesValue)(config.modResults, {
|
|
@@ -70,12 +55,9 @@ const withPrimaryColorStyles = config => {
|
|
|
70
55
|
return config;
|
|
71
56
|
});
|
|
72
57
|
};
|
|
73
|
-
|
|
74
58
|
exports.withPrimaryColorStyles = withPrimaryColorStyles;
|
|
75
|
-
|
|
76
59
|
function getPrimaryColor(config) {
|
|
77
60
|
var _config$primaryColor;
|
|
78
|
-
|
|
79
61
|
return (_config$primaryColor = config.primaryColor) !== null && _config$primaryColor !== void 0 ? _config$primaryColor : DEFAULT_PRIMARY_COLOR;
|
|
80
62
|
}
|
|
81
63
|
//# sourceMappingURL=PrimaryColor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrimaryColor.js","names":["COLOR_PRIMARY_KEY","DEFAULT_PRIMARY_COLOR","withPrimaryColor","config","withPrimaryColorColors","withPrimaryColorStyles","withAndroidColors","modResults","assignColorValue","name","value","getPrimaryColor","withAndroidStyles","assignStylesValue","add","parent","getAppThemeLightNoActionBarGroup","primaryColor"],"sources":["../../src/android/PrimaryColor.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidColors, withAndroidStyles } from '../plugins/android-plugins';\nimport { assignColorValue } from './Colors';\nimport { assignStylesValue, getAppThemeLightNoActionBarGroup } from './Styles';\n\nconst COLOR_PRIMARY_KEY = 'colorPrimary';\nconst DEFAULT_PRIMARY_COLOR = '#023c69';\n\nexport const withPrimaryColor: ConfigPlugin = (config) => {\n config = withPrimaryColorColors(config);\n config = withPrimaryColorStyles(config);\n return config;\n};\n\nexport const withPrimaryColorColors: ConfigPlugin = (config) => {\n return withAndroidColors(config, (config) => {\n config.modResults = assignColorValue(config.modResults, {\n name: COLOR_PRIMARY_KEY,\n value: getPrimaryColor(config),\n });\n return config;\n });\n};\n\nexport const withPrimaryColorStyles: ConfigPlugin = (config) => {\n return withAndroidStyles(config, (config) => {\n config.modResults = assignStylesValue(config.modResults, {\n add: !!getPrimaryColor(config),\n parent: getAppThemeLightNoActionBarGroup(),\n name: COLOR_PRIMARY_KEY,\n value: `@color/${COLOR_PRIMARY_KEY}`,\n });\n return config;\n });\n};\n\nexport function getPrimaryColor(config: Pick<ExpoConfig, 'primaryColor'>) {\n return config.primaryColor ?? DEFAULT_PRIMARY_COLOR;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PrimaryColor.js","names":["COLOR_PRIMARY_KEY","DEFAULT_PRIMARY_COLOR","withPrimaryColor","config","withPrimaryColorColors","withPrimaryColorStyles","withAndroidColors","modResults","assignColorValue","name","value","getPrimaryColor","withAndroidStyles","assignStylesValue","add","parent","getAppThemeLightNoActionBarGroup","primaryColor"],"sources":["../../src/android/PrimaryColor.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidColors, withAndroidStyles } from '../plugins/android-plugins';\nimport { assignColorValue } from './Colors';\nimport { assignStylesValue, getAppThemeLightNoActionBarGroup } from './Styles';\n\nconst COLOR_PRIMARY_KEY = 'colorPrimary';\nconst DEFAULT_PRIMARY_COLOR = '#023c69';\n\nexport const withPrimaryColor: ConfigPlugin = (config) => {\n config = withPrimaryColorColors(config);\n config = withPrimaryColorStyles(config);\n return config;\n};\n\nexport const withPrimaryColorColors: ConfigPlugin = (config) => {\n return withAndroidColors(config, (config) => {\n config.modResults = assignColorValue(config.modResults, {\n name: COLOR_PRIMARY_KEY,\n value: getPrimaryColor(config),\n });\n return config;\n });\n};\n\nexport const withPrimaryColorStyles: ConfigPlugin = (config) => {\n return withAndroidStyles(config, (config) => {\n config.modResults = assignStylesValue(config.modResults, {\n add: !!getPrimaryColor(config),\n parent: getAppThemeLightNoActionBarGroup(),\n name: COLOR_PRIMARY_KEY,\n value: `@color/${COLOR_PRIMARY_KEY}`,\n });\n return config;\n });\n};\n\nexport function getPrimaryColor(config: Pick<ExpoConfig, 'primaryColor'>) {\n return config.primaryColor ?? DEFAULT_PRIMARY_COLOR;\n}\n"],"mappings":";;;;;;;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA,MAAMA,iBAAiB,GAAG,cAAc;AACxC,MAAMC,qBAAqB,GAAG,SAAS;AAEhC,MAAMC,gBAA8B,GAAIC,MAAM,IAAK;EACxDA,MAAM,GAAGC,sBAAsB,CAACD,MAAM,CAAC;EACvCA,MAAM,GAAGE,sBAAsB,CAACF,MAAM,CAAC;EACvC,OAAOA,MAAM;AACf,CAAC;AAAC;AAEK,MAAMC,sBAAoC,GAAID,MAAM,IAAK;EAC9D,OAAO,IAAAG,mCAAiB,EAACH,MAAM,EAAGA,MAAM,IAAK;IAC3CA,MAAM,CAACI,UAAU,GAAG,IAAAC,0BAAgB,EAACL,MAAM,CAACI,UAAU,EAAE;MACtDE,IAAI,EAAET,iBAAiB;MACvBU,KAAK,EAAEC,eAAe,CAACR,MAAM;IAC/B,CAAC,CAAC;IACF,OAAOA,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC;AAEK,MAAME,sBAAoC,GAAIF,MAAM,IAAK;EAC9D,OAAO,IAAAS,mCAAiB,EAACT,MAAM,EAAGA,MAAM,IAAK;IAC3CA,MAAM,CAACI,UAAU,GAAG,IAAAM,2BAAiB,EAACV,MAAM,CAACI,UAAU,EAAE;MACvDO,GAAG,EAAE,CAAC,CAACH,eAAe,CAACR,MAAM,CAAC;MAC9BY,MAAM,EAAE,IAAAC,0CAAgC,GAAE;MAC1CP,IAAI,EAAET,iBAAiB;MACvBU,KAAK,EAAG,UAASV,iBAAkB;IACrC,CAAC,CAAC;IACF,OAAOG,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC;AAEK,SAASQ,eAAe,CAACR,MAAwC,EAAE;EAAA;EACxE,+BAAOA,MAAM,CAACc,YAAY,uEAAIhB,qBAAqB;AACrD"}
|
|
@@ -5,14 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.parsePropertiesFile = parsePropertiesFile;
|
|
7
7
|
exports.propertiesListToString = propertiesListToString;
|
|
8
|
-
|
|
9
8
|
function parsePropertiesFile(contents) {
|
|
10
9
|
const propertiesList = [];
|
|
11
10
|
const lines = contents.split('\n');
|
|
12
|
-
|
|
13
11
|
for (let i = 0; i < lines.length; i++) {
|
|
14
12
|
const line = lines[i].trim();
|
|
15
|
-
|
|
16
13
|
if (!line) {
|
|
17
14
|
propertiesList.push({
|
|
18
15
|
type: 'empty'
|
|
@@ -33,16 +30,12 @@ function parsePropertiesFile(contents) {
|
|
|
33
30
|
});
|
|
34
31
|
}
|
|
35
32
|
}
|
|
36
|
-
|
|
37
33
|
return propertiesList;
|
|
38
34
|
}
|
|
39
|
-
|
|
40
35
|
function propertiesListToString(props) {
|
|
41
36
|
let output = '';
|
|
42
|
-
|
|
43
37
|
for (let i = 0; i < props.length; i++) {
|
|
44
38
|
const prop = props[i];
|
|
45
|
-
|
|
46
39
|
if (prop.type === 'empty') {
|
|
47
40
|
output += '';
|
|
48
41
|
} else if (prop.type === 'comment') {
|
|
@@ -53,12 +46,10 @@ function propertiesListToString(props) {
|
|
|
53
46
|
// @ts-ignore: assertion
|
|
54
47
|
throw new Error(`Invalid properties type "${prop.type}"`);
|
|
55
48
|
}
|
|
56
|
-
|
|
57
49
|
if (i < props.length - 1) {
|
|
58
50
|
output += '\n';
|
|
59
51
|
}
|
|
60
52
|
}
|
|
61
|
-
|
|
62
53
|
return output;
|
|
63
54
|
}
|
|
64
55
|
//# sourceMappingURL=Properties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Properties.js","names":["parsePropertiesFile","contents","propertiesList","lines","split","i","length","line","trim","push","type","startsWith","value","substring","trimStart","eok","indexOf","key","slice","propertiesListToString","props","output","prop","Error"],"sources":["../../src/android/Properties.ts"],"sourcesContent":["export type PropertiesItem =\n | {\n type: 'comment';\n value: string;\n }\n | {\n type: 'empty';\n }\n | {\n type: 'property';\n key: string;\n value: string;\n };\n\nexport function parsePropertiesFile(contents: string): PropertiesItem[] {\n const propertiesList: PropertiesItem[] = [];\n const lines = contents.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n if (!line) {\n propertiesList.push({ type: 'empty' });\n } else if (line.startsWith('#')) {\n propertiesList.push({ type: 'comment', value: line.substring(1).trimStart() });\n } else {\n const eok = line.indexOf('=');\n const key = line.slice(0, eok);\n const value = line.slice(eok + 1, line.length);\n propertiesList.push({ type: 'property', key, value });\n }\n }\n\n return propertiesList;\n}\n\nexport function propertiesListToString(props: PropertiesItem[]): string {\n let output = '';\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (prop.type === 'empty') {\n output += '';\n } else if (prop.type === 'comment') {\n output += '# ' + prop.value;\n } else if (prop.type === 'property') {\n output += `${prop.key}=${prop.value}`;\n } else {\n // @ts-ignore: assertion\n throw new Error(`Invalid properties type \"${prop.type}\"`);\n }\n if (i < props.length - 1) {\n output += '\\n';\n }\n }\n return output;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Properties.js","names":["parsePropertiesFile","contents","propertiesList","lines","split","i","length","line","trim","push","type","startsWith","value","substring","trimStart","eok","indexOf","key","slice","propertiesListToString","props","output","prop","Error"],"sources":["../../src/android/Properties.ts"],"sourcesContent":["export type PropertiesItem =\n | {\n type: 'comment';\n value: string;\n }\n | {\n type: 'empty';\n }\n | {\n type: 'property';\n key: string;\n value: string;\n };\n\nexport function parsePropertiesFile(contents: string): PropertiesItem[] {\n const propertiesList: PropertiesItem[] = [];\n const lines = contents.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n if (!line) {\n propertiesList.push({ type: 'empty' });\n } else if (line.startsWith('#')) {\n propertiesList.push({ type: 'comment', value: line.substring(1).trimStart() });\n } else {\n const eok = line.indexOf('=');\n const key = line.slice(0, eok);\n const value = line.slice(eok + 1, line.length);\n propertiesList.push({ type: 'property', key, value });\n }\n }\n\n return propertiesList;\n}\n\nexport function propertiesListToString(props: PropertiesItem[]): string {\n let output = '';\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (prop.type === 'empty') {\n output += '';\n } else if (prop.type === 'comment') {\n output += '# ' + prop.value;\n } else if (prop.type === 'property') {\n output += `${prop.key}=${prop.value}`;\n } else {\n // @ts-ignore: assertion\n throw new Error(`Invalid properties type \"${prop.type}\"`);\n }\n if (i < props.length - 1) {\n output += '\\n';\n }\n }\n return output;\n}\n"],"mappings":";;;;;;;AAcO,SAASA,mBAAmB,CAACC,QAAgB,EAAoB;EACtE,MAAMC,cAAgC,GAAG,EAAE;EAC3C,MAAMC,KAAK,GAAGF,QAAQ,CAACG,KAAK,CAAC,IAAI,CAAC;EAClC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACrC,MAAME,IAAI,GAAGJ,KAAK,CAACE,CAAC,CAAC,CAACG,IAAI,EAAE;IAC5B,IAAI,CAACD,IAAI,EAAE;MACTL,cAAc,CAACO,IAAI,CAAC;QAAEC,IAAI,EAAE;MAAQ,CAAC,CAAC;IACxC,CAAC,MAAM,IAAIH,IAAI,CAACI,UAAU,CAAC,GAAG,CAAC,EAAE;MAC/BT,cAAc,CAACO,IAAI,CAAC;QAAEC,IAAI,EAAE,SAAS;QAAEE,KAAK,EAAEL,IAAI,CAACM,SAAS,CAAC,CAAC,CAAC,CAACC,SAAS;MAAG,CAAC,CAAC;IAChF,CAAC,MAAM;MACL,MAAMC,GAAG,GAAGR,IAAI,CAACS,OAAO,CAAC,GAAG,CAAC;MAC7B,MAAMC,GAAG,GAAGV,IAAI,CAACW,KAAK,CAAC,CAAC,EAAEH,GAAG,CAAC;MAC9B,MAAMH,KAAK,GAAGL,IAAI,CAACW,KAAK,CAACH,GAAG,GAAG,CAAC,EAAER,IAAI,CAACD,MAAM,CAAC;MAC9CJ,cAAc,CAACO,IAAI,CAAC;QAAEC,IAAI,EAAE,UAAU;QAAEO,GAAG;QAAEL;MAAM,CAAC,CAAC;IACvD;EACF;EAEA,OAAOV,cAAc;AACvB;AAEO,SAASiB,sBAAsB,CAACC,KAAuB,EAAU;EACtE,IAAIC,MAAM,GAAG,EAAE;EACf,KAAK,IAAIhB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGe,KAAK,CAACd,MAAM,EAAED,CAAC,EAAE,EAAE;IACrC,MAAMiB,IAAI,GAAGF,KAAK,CAACf,CAAC,CAAC;IACrB,IAAIiB,IAAI,CAACZ,IAAI,KAAK,OAAO,EAAE;MACzBW,MAAM,IAAI,EAAE;IACd,CAAC,MAAM,IAAIC,IAAI,CAACZ,IAAI,KAAK,SAAS,EAAE;MAClCW,MAAM,IAAI,IAAI,GAAGC,IAAI,CAACV,KAAK;IAC7B,CAAC,MAAM,IAAIU,IAAI,CAACZ,IAAI,KAAK,UAAU,EAAE;MACnCW,MAAM,IAAK,GAAEC,IAAI,CAACL,GAAI,IAAGK,IAAI,CAACV,KAAM,EAAC;IACvC,CAAC,MAAM;MACL;MACA,MAAM,IAAIW,KAAK,CAAE,4BAA2BD,IAAI,CAACZ,IAAK,GAAE,CAAC;IAC3D;IACA,IAAIL,CAAC,GAAGe,KAAK,CAACd,MAAM,GAAG,CAAC,EAAE;MACxBe,MAAM,IAAI,IAAI;IAChB;EACF;EACA,OAAOA,MAAM;AACf"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { XMLObject } from '../utils/XML';
|
|
2
|
-
export
|
|
2
|
+
export type ResourceGroupXML = {
|
|
3
3
|
$: {
|
|
4
4
|
name: string;
|
|
5
5
|
parent: string;
|
|
6
6
|
};
|
|
7
7
|
item: ResourceItemXML[];
|
|
8
8
|
};
|
|
9
|
-
export
|
|
9
|
+
export type ResourceXML = {
|
|
10
10
|
resources: {
|
|
11
11
|
$?: {
|
|
12
12
|
'xmlns:tools'?: string;
|
|
@@ -16,7 +16,7 @@ export declare type ResourceXML = {
|
|
|
16
16
|
style?: ResourceGroupXML[];
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
-
export
|
|
19
|
+
export type ResourceItemXML = {
|
|
20
20
|
_: string;
|
|
21
21
|
$: {
|
|
22
22
|
name: string;
|
|
@@ -27,7 +27,7 @@ export declare type ResourceItemXML = {
|
|
|
27
27
|
/**
|
|
28
28
|
* Name of the resource folder.
|
|
29
29
|
*/
|
|
30
|
-
export
|
|
30
|
+
export type ResourceKind = 'values' | 'values-night' | 'values-v23' | 'values-night-v23' | 'drawable';
|
|
31
31
|
/**
|
|
32
32
|
* Read an XML file while providing a default fallback for resource files.
|
|
33
33
|
*
|