godot-export-presets 0.1.0 → 0.1.5
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/dist/index.cjs +124 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +124 -0
- package/dist/index.js.map +1 -1
- package/package.json +6 -7
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/parser.ts","../src/writer.ts","../src/config-file.ts","../src/export-presets/parser.ts","../src/export-presets/serializer.ts","../src/export-presets/file-io.ts","../src/export-presets/operations.ts","../src/export-presets/merge.ts","../src/export-presets/base-presets.ts"],"names":["c","peek","writeFile","readFile"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Parser for Godot config file format\n * Based on Godot's VariantParser implementation\n */\n\nexport class ParseError extends Error {\n constructor(message: string, public line: number) {\n super(`Parse error at line ${line}: ${message}`);\n this.name = \"ParseError\";\n }\n}\n\ntype TokenType =\n | \"STRING\"\n | \"NUMBER\"\n | \"BOOLEAN\"\n | \"IDENTIFIER\"\n | \"BRACKET_OPEN\"\n | \"BRACKET_CLOSE\"\n | \"PARENTHESIS_OPEN\"\n | \"PARENTHESIS_CLOSE\"\n | \"EQUAL\"\n | \"COMMA\"\n | \"SEMICOLON\"\n | \"HASH\"\n | \"EOF\";\n\ninterface Token {\n type: TokenType;\n value: string | number | boolean;\n line: number;\n}\n\nclass Stream {\n private pos = 0;\n private line = 1;\n private saved: string | null = null;\n\n constructor(private content: string) {}\n\n get_char(): string {\n if (this.saved !== null) {\n const c = this.saved;\n this.saved = null;\n return c;\n }\n if (this.pos >= this.content.length) {\n return \"\\0\";\n }\n const c = this.content[this.pos++];\n if (c === \"\\n\") {\n this.line++;\n }\n return c;\n }\n\n peek_char(): string {\n if (this.pos >= this.content.length) {\n return \"\\0\";\n }\n return this.content[this.pos];\n }\n\n save_char(c: string): void {\n this.saved = c;\n }\n\n is_eof(): boolean {\n return this.pos >= this.content.length && this.saved === null;\n }\n\n get_line(): number {\n return this.line;\n }\n}\n\nfunction is_whitespace(c: string): boolean {\n return c === \" \" || c === \"\\t\" || c === \"\\r\" || c === \"\\n\";\n}\n\nfunction is_digit(c: string): boolean {\n return c >= \"0\" && c <= \"9\";\n}\n\nfunction is_alpha(c: string): boolean {\n return (c >= \"a\" && c <= \"z\") || (c >= \"A\" && c <= \"Z\") || c === \"_\";\n}\n\nfunction is_alnum(c: string): boolean {\n return is_alpha(c) || is_digit(c);\n}\n\nfunction is_identifier_char(c: string): boolean {\n return is_alnum(c) || c === \"/\" || c === \".\" || c === \"_\" || c === \"-\";\n}\n\nfunction get_token(stream: Stream): Token {\n // Skip whitespace\n while (true) {\n const c = stream.peek_char();\n if (is_whitespace(c)) {\n stream.get_char();\n continue;\n }\n break;\n }\n\n const line = stream.get_line();\n const c = stream.get_char();\n\n if (c === \"\\0\") {\n return { type: \"EOF\", value: \"\", line };\n }\n\n switch (c) {\n case \"[\":\n return { type: \"BRACKET_OPEN\", value: c, line };\n case \"]\":\n return { type: \"BRACKET_CLOSE\", value: c, line };\n case \"(\":\n return { type: \"PARENTHESIS_OPEN\", value: c, line };\n case \")\":\n return { type: \"PARENTHESIS_CLOSE\", value: c, line };\n case \"=\":\n return { type: \"EQUAL\", value: c, line };\n case \",\":\n return { type: \"COMMA\", value: c, line };\n case \";\":\n // Comment - skip to end of line\n while (true) {\n const ch = stream.get_char();\n if (ch === \"\\n\" || ch === \"\\0\") {\n break;\n }\n }\n return get_token(stream); // Get next token after comment\n case \"#\":\n // Comment - skip to end of line\n while (true) {\n const ch = stream.get_char();\n if (ch === \"\\n\" || ch === \"\\0\") {\n break;\n }\n }\n return get_token(stream); // Get next token after comment\n case '\"': {\n // String - supports multi-line strings\n let str = \"\";\n let escaped = false;\n while (true) {\n const ch = stream.get_char();\n if (ch === \"\\0\") {\n throw new ParseError(\"Unterminated string\", line);\n }\n if (escaped) {\n if (ch === \"n\") {\n str += \"\\n\";\n } else if (ch === \"t\") {\n str += \"\\t\";\n } else if (ch === \"r\") {\n str += \"\\r\";\n } else if (ch === \"\\\\\") {\n str += \"\\\\\";\n } else if (ch === '\"') {\n str += '\"';\n } else {\n str += ch;\n }\n escaped = false;\n } else if (ch === \"\\\\\") {\n escaped = true;\n } else if (ch === '\"') {\n // Check if this is the end of the string\n // Look ahead to see if there's whitespace, newline, EOF, or comment\n const peek = stream.peek_char();\n if (\n peek === \"\\0\" ||\n peek === \"\\n\" ||\n peek === \"\\r\" ||\n peek === \" \" ||\n peek === \"\\t\" ||\n peek === \";\" ||\n peek === \"#\"\n ) {\n break;\n }\n // If followed by '=', it might be end of key (like \"a=b\"=value)\n // But if it's in the middle, it's part of the string\n // For now, assume it's the end if followed by whitespace/comment/newline\n break;\n } else {\n str += ch;\n }\n }\n return { type: \"STRING\", value: str, line };\n }\n default: {\n // Number, boolean, or identifier\n const peek = stream.peek_char();\n if (\n is_digit(c) ||\n (c === \"-\" && is_digit(peek)) ||\n (c === \"+\" && is_digit(peek)) ||\n (c === \".\" && is_digit(peek))\n ) {\n // Number - only start if we have a digit or sign followed by digit\n let numStr = c;\n let hasDot = c === \".\";\n while (true) {\n const nextPeek = stream.peek_char();\n if (is_digit(nextPeek) || nextPeek === \".\") {\n if (nextPeek === \".\") {\n if (hasDot) break;\n hasDot = true;\n }\n numStr += stream.get_char();\n } else {\n break;\n }\n }\n const num = parseFloat(numStr);\n if (isNaN(num)) {\n throw new ParseError(`Invalid number: ${numStr}`, line);\n }\n return { type: \"NUMBER\", value: num, line };\n } else if (is_alpha(c) || c === \"/\") {\n // Identifier or boolean\n let ident = c;\n while (true) {\n const peek = stream.peek_char();\n if (is_identifier_char(peek)) {\n ident += stream.get_char();\n } else {\n break;\n }\n }\n if (ident === \"true\") {\n return { type: \"BOOLEAN\", value: true, line };\n } else if (ident === \"false\") {\n return { type: \"BOOLEAN\", value: false, line };\n }\n return { type: \"IDENTIFIER\", value: ident, line };\n } else {\n throw new ParseError(`Unexpected character: ${c}`, line);\n }\n }\n }\n}\n\nfunction parse_construct_args(stream: Stream): number[] {\n const args: number[] = [];\n let token = get_token(stream);\n\n if (token.type !== \"PARENTHESIS_OPEN\") {\n throw new ParseError(\"Expected '(' in constructor\", token.line);\n }\n\n let first = true;\n while (true) {\n if (!first) {\n token = get_token(stream);\n if (token.type === \"COMMA\") {\n // Continue\n } else if (token.type === \"PARENTHESIS_CLOSE\") {\n break;\n } else {\n throw new ParseError(\"Expected ',' or ')' in constructor\", token.line);\n }\n }\n\n token = get_token(stream);\n if (first && token.type === \"PARENTHESIS_CLOSE\") {\n break;\n }\n\n if (token.type === \"NUMBER\") {\n args.push(token.value as number);\n } else if (token.type === \"IDENTIFIER\") {\n // Try to parse as number (e.g., \"inf\", \"nan\")\n const ident = token.value as string;\n if (ident === \"inf\" || ident === \"Infinity\") {\n args.push(Infinity);\n } else if (ident === \"-inf\" || ident === \"-Infinity\") {\n args.push(-Infinity);\n } else if (ident === \"nan\" || ident === \"NaN\") {\n args.push(NaN);\n } else {\n throw new ParseError(`Expected number in constructor, got: ${ident}`, token.line);\n }\n } else {\n throw new ParseError(\"Expected number in constructor\", token.line);\n }\n first = false;\n }\n\n return args;\n}\n\nfunction parse_value(stream: Stream): unknown {\n const token = get_token(stream);\n\n switch (token.type) {\n case \"STRING\":\n return token.value;\n case \"NUMBER\":\n return token.value;\n case \"BOOLEAN\":\n return token.value;\n case \"IDENTIFIER\": {\n const ident = token.value as string;\n if (ident === \"Color\") {\n const args = parse_construct_args(stream);\n if (args.length !== 4) {\n throw new ParseError(\"Expected 4 arguments for Color constructor\", token.line);\n }\n return { r: args[0], g: args[1], b: args[2], a: args[3] };\n } else if (ident === \"Vector2\") {\n const args = parse_construct_args(stream);\n if (args.length !== 2) {\n throw new ParseError(\"Expected 2 arguments for Vector2 constructor\", token.line);\n }\n return { x: args[0], y: args[1] };\n } else {\n throw new ParseError(`Unknown identifier: ${ident}`, token.line);\n }\n }\n default:\n throw new ParseError(`Unexpected token type: ${token.type}`, token.line);\n }\n}\n\nexport function parse_config(content: string): {\n values: Map<string, Map<string, unknown>>;\n error?: Error;\n} {\n const values = new Map<string, Map<string, unknown>>();\n const stream = new Stream(content);\n let currentSection = \"\";\n\n try {\n while (true) {\n // Skip whitespace\n while (true) {\n const peek = stream.peek_char();\n if (is_whitespace(peek)) {\n stream.get_char();\n continue;\n }\n break;\n }\n\n const token = get_token(stream);\n if (token.type === \"EOF\") {\n break;\n }\n\n if (token.type === \"BRACKET_OPEN\") {\n // Parse section name\n const sectionToken = get_token(stream);\n if (sectionToken.type !== \"IDENTIFIER\" && sectionToken.type !== \"STRING\") {\n throw new ParseError(\"Expected section name\", sectionToken.line);\n }\n let sectionName = String(sectionToken.value);\n const closeToken = get_token(stream);\n if (closeToken.type === \"BRACKET_CLOSE\") {\n // Handle escaped brackets\n sectionName = sectionName.replace(/\\\\\\]/g, \"]\");\n currentSection = sectionName;\n if (!values.has(currentSection)) {\n values.set(currentSection, new Map());\n }\n } else {\n throw new ParseError(\"Expected ']' after section name\", closeToken.line);\n }\n } else if (token.type === \"IDENTIFIER\" || token.type === \"STRING\") {\n // Key-value pair - key can be identifier or quoted string\n const key = String(token.value);\n const equalToken = get_token(stream);\n if (equalToken.type !== \"EQUAL\") {\n throw new ParseError(\"Expected '=' after key\", equalToken.line);\n }\n const value = parse_value(stream);\n\n if (!values.has(currentSection)) {\n values.set(currentSection, new Map());\n }\n values.get(currentSection)!.set(key, value);\n } else if (token.type === \"BRACKET_CLOSE\") {\n throw new ParseError(\"Unexpected ']'\", token.line);\n }\n }\n } catch (error) {\n if (error instanceof ParseError) {\n return { values, error };\n }\n throw error;\n }\n\n return { values };\n}\n\n","/**\n * Writer for Godot config file format\n * Serializes values back to config format matching Godot's output\n */\n\nimport type { Color, Vector2 } from \"./types.js\";\n\nfunction needs_quotes(str: string): boolean {\n // Quote if contains special characters, spaces, or Unicode characters\n // Based on Godot's property_name_encode() logic:\n // Quote if contains: =, \", ;, [, ], or characters < 33 or > 126\n if (str.length === 0) return true;\n \n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n if (\n code === 61 || // =\n code === 34 || // \"\n code === 59 || // ;\n code === 91 || // [\n code === 93 || // ]\n code < 33 || // control characters and space\n code > 126 // extended ASCII and Unicode\n ) {\n return true;\n }\n }\n \n return false;\n}\n\nfunction encode_key(key: string): string {\n if (needs_quotes(key)) {\n // Escape quotes and backslashes\n const escaped = key.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n return `\"${escaped}\"`;\n }\n return key;\n}\n\nfunction escape_string(str: string): string {\n // Don't escape newlines - preserve them for multi-line strings\n // Godot preserves newlines in strings when writing\n return str\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, '\\\\\"');\n}\n\nfunction serialize_value(value: unknown): string {\n if (value === null || value === undefined) {\n return \"null\";\n }\n\n if (typeof value === \"string\") {\n return `\"${escape_string(value)}\"`;\n }\n\n if (typeof value === \"number\") {\n if (isNaN(value)) {\n return \"nan\";\n }\n if (!isFinite(value)) {\n return value > 0 ? \"inf\" : \"-inf\";\n }\n return String(value);\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n\n // Check for Color object\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"r\" in value &&\n \"g\" in value &&\n \"b\" in value &&\n \"a\" in value &&\n typeof (value as Color).r === \"number\" &&\n typeof (value as Color).g === \"number\" &&\n typeof (value as Color).b === \"number\" &&\n typeof (value as Color).a === \"number\"\n ) {\n const color = value as Color;\n return `Color(${color.r}, ${color.g}, ${color.b}, ${color.a})`;\n }\n\n // Check for Vector2 object\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"x\" in value &&\n \"y\" in value &&\n typeof (value as Vector2).x === \"number\" &&\n typeof (value as Vector2).y === \"number\"\n ) {\n const vec = value as Vector2;\n return `Vector2(${vec.x}, ${vec.y})`;\n }\n\n // Fallback: try to stringify\n return String(value);\n}\n\nexport function serialize_config(\n values: Map<string, Map<string, unknown>>\n): string {\n const sections: string[] = [];\n let first = true;\n\n for (const [section, keys] of values.entries()) {\n if (!first) {\n sections.push(\"\");\n }\n first = false;\n\n if (section) {\n // Escape brackets in section name\n const escapedSection = section.replace(/\\]/g, \"\\\\]\");\n sections.push(`[${escapedSection}]`);\n sections.push(\"\");\n }\n\n for (const [key, value] of keys.entries()) {\n const encodedKey = encode_key(key);\n const serializedValue = serialize_value(value);\n sections.push(`${encodedKey}=${serializedValue}`);\n }\n }\n\n const result = sections.join(\"\\n\");\n // Godot adds a trailing newline after the last line\n return result + \"\\n\";\n}\n\n","/**\n * ConfigFile class for reading and writing Godot config files\n * Based on Godot's ConfigFile implementation\n */\n\nimport { parse_config } from \"./parser.js\";\nimport { serialize_config } from \"./writer.js\";\nimport { writeFile } from \"node:fs/promises\";\n\nexport class ConfigFile {\n private values = new Map<string, Map<string, unknown>>();\n\n /**\n * Parse config file content\n * @param content Config file content as string\n * @returns Error if parsing failed, undefined on success\n */\n parse(content: string): Error | undefined {\n const { values, error } = parse_config(content);\n if (error) {\n return error;\n }\n this.values = values;\n return undefined;\n }\n\n /**\n * Get a value from the config file\n * @param section Section name (empty string for section-less keys)\n * @param key Key name\n * @param defaultValue Optional default value if key doesn't exist\n * @returns The value or default value\n */\n get_value(section: string, key: string, defaultValue?: unknown): unknown {\n const sectionMap = this.values.get(section);\n if (!sectionMap) {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n throw new Error(\n `Section \"${section}\" not found and no default value provided`\n );\n }\n if (!sectionMap.has(key)) {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n throw new Error(\n `Key \"${key}\" not found in section \"${section}\" and no default value provided`\n );\n }\n return sectionMap.get(key);\n }\n\n /**\n * Set a value in the config file\n * @param section Section name (empty string for section-less keys)\n * @param key Key name\n * @param value Value to set\n */\n set_value(section: string, key: string, value: unknown): void {\n if (!this.values.has(section)) {\n this.values.set(section, new Map());\n }\n this.values.get(section)!.set(key, value);\n }\n\n /**\n * Save config file to disk\n * @param path File path to save to\n */\n async save(path: string): Promise<void> {\n const content = serialize_config(this.values);\n await writeFile(path, content, \"utf-8\");\n }\n\n /**\n * Check if a section exists\n * @param section Section name\n * @returns True if section exists\n */\n has_section(section: string): boolean {\n return this.values.has(section);\n }\n\n /**\n * Check if a key exists in a section\n * @param section Section name\n * @param key Key name\n * @returns True if key exists in section\n */\n has_section_key(section: string, key: string): boolean {\n const sectionMap = this.values.get(section);\n if (!sectionMap) {\n return false;\n }\n return sectionMap.has(key);\n }\n\n /**\n * Clear all values\n */\n clear(): void {\n this.values.clear();\n }\n\n /**\n * Get all section names\n */\n get_sections(): string[] {\n return Array.from(this.values.keys());\n }\n\n /**\n * Get all keys in a section\n */\n get_section_keys(section: string): string[] {\n const sectionMap = this.values.get(section);\n if (!sectionMap) {\n return [];\n }\n return Array.from(sectionMap.keys());\n }\n\n /**\n * Encode config to text format\n */\n encode_to_text(): string {\n return serialize_config(this.values);\n }\n}\n\n","/**\n * Parser for export_presets.cfg file format\n */\n\nimport { ConfigFile } from \"../config-file.js\";\nimport type { ExportPreset, ExportPresetsFile, PresetOptions } from \"./types.js\";\n\nexport function parseExportPresets(content: string): ExportPresetsFile {\n const configFile = new ConfigFile();\n const error = configFile.parse(content);\n\n if (error) {\n throw error;\n }\n\n const presets: ExportPreset[] = [];\n const sections = configFile.get_sections();\n\n // Find all preset sections (preset.0, preset.1, etc.)\n const presetSections = sections\n .filter((s) => s.startsWith(\"preset.\") && !s.includes(\".options\"))\n .sort((a, b) => {\n const aNum = parseInt(a.split(\".\")[1] || \"0\", 10);\n const bNum = parseInt(b.split(\".\")[1] || \"0\", 10);\n return aNum - bNum;\n });\n\n for (const presetSection of presetSections) {\n const preset: ExportPreset = {\n name: \"\",\n platform: \"\",\n runnable: false,\n };\n\n // Get all keys from the preset section\n const keys = configFile.get_section_keys(presetSection);\n for (const key of keys) {\n const value = configFile.get_value(presetSection, key);\n if (key === \"options\") {\n // This shouldn't happen, but handle it\n continue;\n }\n (preset as Record<string, unknown>)[key] = value;\n }\n\n // Get options from preset.X.options section\n const optionsSection = `${presetSection}.options`;\n if (configFile.has_section(optionsSection)) {\n const options: PresetOptions = {};\n const optionKeys = configFile.get_section_keys(optionsSection);\n for (const key of optionKeys) {\n options[key] = configFile.get_value(optionsSection, key);\n }\n preset.options = options;\n }\n\n presets.push(preset);\n }\n\n return { presets };\n}\n\n","/**\n * Serializer for export_presets.cfg file format\n */\n\nimport { ConfigFile } from \"../config-file.js\";\nimport type { ExportPreset, ExportPresetsFile } from \"./types.js\";\n\nexport function serializeExportPresets(presets: ExportPresetsFile): string {\n const configFile = new ConfigFile();\n\n for (let i = 0; i < presets.presets.length; i++) {\n const preset = presets.presets[i];\n const presetSection = `preset.${i}`;\n const optionsSection = `${presetSection}.options`;\n\n // Write preset properties (excluding options)\n for (const [key, value] of Object.entries(preset)) {\n if (key === \"options\") {\n continue;\n }\n configFile.set_value(presetSection, key, value);\n }\n\n // Write options\n if (preset.options) {\n for (const [key, value] of Object.entries(preset.options)) {\n configFile.set_value(optionsSection, key, value);\n }\n }\n }\n\n // Use ConfigFile's internal serialization\n return configFile.encode_to_text();\n}\n\n","/**\n * File I/O operations for export presets\n */\n\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { parseExportPresets } from \"./parser.js\";\nimport { serializeExportPresets } from \"./serializer.js\";\nimport type { ExportPresetsFile } from \"./types.js\";\n\nexport async function loadExportPresets(\n filePath: string\n): Promise<ExportPresetsFile> {\n try {\n const content = await readFile(filePath, \"utf-8\");\n return parseExportPresets(content);\n } catch (error: unknown) {\n if (\n error &&\n typeof error === \"object\" &&\n \"code\" in error &&\n error.code === \"ENOENT\"\n ) {\n throw new Error(`File not found: ${filePath}`);\n }\n throw error;\n }\n}\n\nexport async function saveExportPresets(\n filePath: string,\n presets: ExportPresetsFile\n): Promise<void> {\n const content = serializeExportPresets(presets);\n await writeFile(filePath, content, \"utf-8\");\n}\n\n","/**\n * Preset operations: get, find, set, remove\n */\n\nimport type {\n ExportPreset,\n ExportPresetsFile,\n FindPresetCriteria,\n} from \"./types.js\";\n\nexport function getPreset(\n presets: ExportPresetsFile,\n index: number\n): ExportPreset | undefined {\n if (index < 0 || index >= presets.presets.length) {\n return undefined;\n }\n return presets.presets[index];\n}\n\nexport function findPreset(\n presets: ExportPresetsFile,\n criteria: FindPresetCriteria\n): ExportPreset | undefined {\n if (criteria.index !== undefined) {\n return getPreset(presets, criteria.index);\n }\n\n for (const preset of presets.presets) {\n if (criteria.platform) {\n const presetPlatform = String(preset.platform || \"\").trim().toUpperCase();\n const searchPlatform = criteria.platform.trim().toUpperCase();\n if (presetPlatform === searchPlatform) {\n return preset;\n }\n }\n\n if (criteria.name) {\n const presetName = String(preset.name || \"\").trim().toUpperCase();\n const searchName = criteria.name.trim().toUpperCase();\n if (presetName === searchName) {\n return preset;\n }\n }\n }\n\n return undefined;\n}\n\nexport function setPreset(\n presets: ExportPresetsFile,\n preset: ExportPreset,\n index?: number\n): ExportPresetsFile {\n const newPresets = [...presets.presets];\n\n if (index !== undefined && index >= 0 && index < newPresets.length) {\n // Update existing preset\n newPresets[index] = preset;\n } else {\n // Add new preset\n newPresets.push(preset);\n }\n\n return { presets: newPresets };\n}\n\nexport function removePreset(\n presets: ExportPresetsFile,\n index: number\n): ExportPresetsFile {\n if (index < 0 || index >= presets.presets.length) {\n return presets;\n }\n\n const newPresets = [...presets.presets];\n newPresets.splice(index, 1);\n return { presets: newPresets };\n}\n\n","/**\n * Merging functions for presets and options\n */\n\nimport type { ExportPreset, PresetOptions } from \"./types.js\";\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.prototype.toString.call(value) === \"[object Object]\"\n );\n}\n\nfunction deepMerge(\n target: Record<string, unknown>,\n source: Record<string, unknown>\n): Record<string, unknown> {\n const result = { ...target };\n\n for (const [key, sourceValue] of Object.entries(source)) {\n const targetValue = result[key];\n\n if (\n isPlainObject(targetValue) &&\n isPlainObject(sourceValue) &&\n key !== \"options\"\n ) {\n // Deep merge objects (except options which we handle separately)\n result[key] = deepMerge(\n targetValue as Record<string, unknown>,\n sourceValue as Record<string, unknown>\n );\n } else {\n // Override with source value\n result[key] = sourceValue;\n }\n }\n\n return result;\n}\n\nexport function mergePresets(...presets: ExportPreset[]): ExportPreset {\n if (presets.length === 0) {\n throw new Error(\"At least one preset required for merging\");\n }\n\n if (presets.length === 1) {\n return {\n ...presets[0],\n options: presets[0].options ? { ...presets[0].options } : undefined,\n };\n }\n\n // Start with first preset (deep copy)\n let merged: ExportPreset = {\n ...presets[0],\n options: presets[0].options ? { ...presets[0].options } : undefined,\n };\n\n // Merge each subsequent preset\n for (let i = 1; i < presets.length; i++) {\n const current = presets[i];\n\n // Deep merge the main preset properties (excluding options)\n const currentWithoutOptions: Record<string, unknown> = { ...current };\n delete currentWithoutOptions.options;\n\n merged = deepMerge(\n merged as Record<string, unknown>,\n currentWithoutOptions\n ) as ExportPreset;\n\n // Merge options separately (always merge, even if one is undefined)\n merged.options = mergeOptions(\n merged.options || {},\n current.options || {}\n );\n }\n\n return merged;\n}\n\nexport function mergeOptions(...options: PresetOptions[]): PresetOptions {\n if (options.length === 0) {\n return {};\n }\n\n if (options.length === 1) {\n return { ...options[0] };\n }\n\n // Simple shallow merge for options (they're flat key-value pairs)\n const merged: PresetOptions = {};\n for (const opts of options) {\n Object.assign(merged, opts);\n }\n\n return merged;\n}\n\n","/**\n * Base preset definitions for common platforms and Godot versions\n */\n\nimport type { ExportPreset } from \"./types.js\";\n\nexport type GodotMajorVersion = 3 | 4;\nexport type Platform = \"Android\" | \"iOS\";\n\n/**\n * Extract major version number from version string\n * @param version Version string (e.g., \"4.3.2\", \"3.5.1\")\n * @returns Major version number (3 or 4)\n */\nexport function getMajorVersion(version: string): GodotMajorVersion {\n const match = version.match(/^(\\d+)/);\n if (!match) {\n throw new Error(`Invalid version string: ${version}`);\n }\n const major = parseInt(match[1], 10);\n if (major !== 3 && major !== 4) {\n throw new Error(`Unsupported Godot version: ${major}`);\n }\n return major as GodotMajorVersion;\n}\n\n/**\n * Check if a base preset exists for the given platform and version\n */\nexport function hasBasePreset(\n platform: Platform,\n version: GodotMajorVersion\n): boolean {\n return (\n (platform === \"Android\" && (version === 3 || version === 4)) ||\n (platform === \"iOS\" && (version === 3 || version === 4))\n );\n}\n\n/**\n * Get base preset for platform and version\n */\nexport function getBasePreset(\n platform: Platform,\n version: GodotMajorVersion\n): ExportPreset {\n switch (platform) {\n case \"Android\":\n return version === 3\n ? getBasePreset_Android_v3()\n : getBasePreset_Android_v4();\n case \"iOS\":\n return version === 3\n ? getBasePreset_iOS_v3()\n : getBasePreset_iOS_v4();\n default:\n throw new Error(\n `Unsupported platform: ${platform}. Supported platforms: Android, iOS`\n );\n }\n}\n\n/**\n * Base preset for Android (Godot 3.x)\n */\nexport function getBasePreset_Android_v3(): ExportPreset {\n return {\n name: \"Android\",\n platform: \"Android\",\n runnable: true,\n advanced_options: false,\n dedicated_server: false,\n custom_features: \"\",\n export_filter: \"all_resources\",\n include_filter: \"*.json\",\n exclude_filter: \"\",\n export_path: \"game.aab\",\n encryption_include_filters: \"\",\n encryption_exclude_filters: \"\",\n encrypt_pck: false,\n encrypt_directory: false,\n script_export_mode: 1,\n options: {\n \"custom_build/use_custom_build\": true,\n \"custom_build/export_format\": 1,\n \"custom_build/min_sdk\": \"\",\n \"custom_build/target_sdk\": \"\",\n \"architectures/armeabi-v7a\": false,\n \"architectures/arm64-v8a\": true,\n \"architectures/x86\": false,\n \"architectures/x86_64\": false,\n \"one_click_deploy/clear_previous_install\": true,\n \"package/signed\": true,\n \"package/classify_as_game\": true,\n \"package/retain_data_on_uninstall\": false,\n \"package/exclude_from_recents\": false,\n \"launcher_icons/main_192x192\": \"\",\n \"launcher_icons/adaptive_foreground_432x432\": \"\",\n \"launcher_icons/adaptive_background_432x432\": \"\",\n \"graphics/opengl_debug\": false,\n \"xr_features/xr_mode\": 0,\n \"xr_features/hand_tracking\": 0,\n \"xr_features/hand_tracking_frequency\": 0,\n \"xr_features/passthrough\": 0,\n \"screen/immersive_mode\": true,\n \"screen/support_small\": true,\n \"screen/support_normal\": true,\n \"screen/support_large\": true,\n \"screen/support_xlarge\": true,\n \"user_data_backup/allow\": true,\n \"command_line/extra_args\": \"\",\n \"apk_expansion/enable\": false,\n \"apk_expansion/salt\": \"\",\n \"apk_expansion/public_key\": \"\",\n \"permissions/custom_permissions\": \"PoolStringArray( )\",\n \"permissions/access_checkin_properties\": false,\n \"permissions/access_coarse_location\": false,\n \"permissions/access_fine_location\": false,\n \"permissions/access_location_extra_commands\": false,\n \"permissions/access_mock_location\": false,\n \"permissions/access_network_state\": false,\n \"permissions/access_surface_flinger\": false,\n \"permissions/access_wifi_state\": false,\n \"permissions/account_manager\": false,\n \"permissions/add_voicemail\": false,\n \"permissions/authenticate_accounts\": false,\n \"permissions/battery_stats\": false,\n \"permissions/bind_accessibility_service\": false,\n \"permissions/bind_appwidget\": false,\n \"permissions/bind_device_admin\": false,\n \"permissions/bind_input_method\": false,\n \"permissions/bind_nfc_service\": false,\n \"permissions/bind_notification_listener_service\": false,\n \"permissions/bind_print_service\": false,\n \"permissions/bind_remoteviews\": false,\n \"permissions/bind_text_service\": false,\n \"permissions/bind_vpn_service\": false,\n \"permissions/bind_wallpaper\": false,\n \"permissions/bluetooth\": false,\n \"permissions/bluetooth_admin\": false,\n \"permissions/bluetooth_privileged\": false,\n \"permissions/brick\": false,\n \"permissions/broadcast_package_removed\": false,\n \"permissions/broadcast_sms\": false,\n \"permissions/broadcast_sticky\": false,\n \"permissions/broadcast_wap_push\": false,\n \"permissions/call_phone\": false,\n \"permissions/call_privileged\": false,\n \"permissions/camera\": false,\n \"permissions/capture_audio_output\": false,\n \"permissions/capture_secure_video_output\": false,\n \"permissions/capture_video_output\": false,\n \"permissions/change_component_enabled_state\": false,\n \"permissions/change_configuration\": false,\n \"permissions/change_network_state\": false,\n \"permissions/change_wifi_multicast_state\": false,\n \"permissions/change_wifi_state\": false,\n \"permissions/clear_app_cache\": false,\n \"permissions/clear_app_user_data\": false,\n \"permissions/control_location_updates\": false,\n \"permissions/delete_cache_files\": false,\n \"permissions/delete_packages\": false,\n \"permissions/device_power\": false,\n \"permissions/diagnostic\": false,\n \"permissions/disable_keyguard\": false,\n \"permissions/dump\": false,\n \"permissions/expand_status_bar\": false,\n \"permissions/factory_test\": false,\n \"permissions/flashlight\": false,\n \"permissions/force_back\": false,\n \"permissions/get_accounts\": false,\n \"permissions/get_package_size\": false,\n \"permissions/get_tasks\": false,\n \"permissions/get_top_activity_info\": false,\n \"permissions/global_search\": false,\n \"permissions/hardware_test\": false,\n \"permissions/inject_events\": false,\n \"permissions/install_location_provider\": false,\n \"permissions/install_packages\": false,\n \"permissions/install_shortcut\": false,\n \"permissions/internal_system_window\": false,\n \"permissions/internet\": false,\n \"permissions/kill_background_processes\": false,\n \"permissions/location_hardware\": false,\n \"permissions/manage_accounts\": false,\n \"permissions/manage_app_tokens\": false,\n \"permissions/manage_documents\": false,\n \"permissions/manage_external_storage\": false,\n \"permissions/master_clear\": false,\n \"permissions/media_content_control\": false,\n \"permissions/modify_audio_settings\": false,\n \"permissions/modify_phone_state\": false,\n \"permissions/mount_format_filesystems\": false,\n \"permissions/mount_unmount_filesystems\": false,\n \"permissions/nfc\": false,\n \"permissions/persistent_activity\": false,\n \"permissions/process_outgoing_calls\": false,\n \"permissions/read_calendar\": false,\n \"permissions/read_call_log\": false,\n \"permissions/read_contacts\": false,\n \"permissions/read_external_storage\": false,\n \"permissions/read_frame_buffer\": false,\n \"permissions/read_history_bookmarks\": false,\n \"permissions/read_input_state\": false,\n \"permissions/read_logs\": false,\n \"permissions/read_phone_state\": false,\n \"permissions/read_profile\": false,\n \"permissions/read_sms\": false,\n \"permissions/read_social_stream\": false,\n \"permissions/read_sync_settings\": false,\n \"permissions/read_sync_stats\": false,\n \"permissions/read_user_dictionary\": false,\n \"permissions/reboot\": false,\n \"permissions/receive_boot_completed\": false,\n \"permissions/receive_mms\": false,\n \"permissions/receive_sms\": false,\n \"permissions/receive_wap_push\": false,\n \"permissions/record_audio\": false,\n \"permissions/reorder_tasks\": false,\n \"permissions/restart_packages\": false,\n \"permissions/send_respond_via_message\": false,\n \"permissions/send_sms\": false,\n \"permissions/set_activity_watcher\": false,\n \"permissions/set_alarm\": false,\n \"permissions/set_always_finish\": false,\n \"permissions/set_animation_scale\": false,\n \"permissions/set_debug_app\": false,\n \"permissions/set_orientation\": false,\n \"permissions/set_pointer_speed\": false,\n \"permissions/set_preferred_applications\": false,\n \"permissions/set_process_limit\": false,\n \"permissions/set_time\": false,\n \"permissions/set_time_zone\": false,\n \"permissions/set_wallpaper\": false,\n \"permissions/set_wallpaper_hints\": false,\n \"permissions/signal_persistent_processes\": false,\n \"permissions/status_bar\": false,\n \"permissions/subscribed_feeds_read\": false,\n \"permissions/subscribed_feeds_write\": false,\n \"permissions/system_alert_window\": false,\n \"permissions/transmit_ir\": false,\n \"permissions/uninstall_shortcut\": false,\n \"permissions/update_device_stats\": false,\n \"permissions/use_credentials\": false,\n \"permissions/use_sip\": false,\n \"permissions/vibrate\": false,\n \"permissions/wake_lock\": false,\n \"permissions/write_apn_settings\": false,\n \"permissions/write_calendar\": false,\n \"permissions/write_call_log\": false,\n \"permissions/write_contacts\": false,\n \"permissions/write_external_storage\": false,\n \"permissions/write_gservices\": false,\n \"permissions/write_history_bookmarks\": false,\n \"permissions/write_profile\": false,\n \"permissions/write_secure_settings\": false,\n \"permissions/write_settings\": false,\n \"permissions/write_sms\": false,\n \"permissions/write_social_stream\": false,\n \"permissions/write_sync_settings\": false,\n \"permissions/write_user_dictionary\": false,\n },\n };\n}\n\n/**\n * Base preset for Android (Godot 4.x)\n */\nexport function getBasePreset_Android_v4(): ExportPreset {\n return {\n name: \"Android\",\n platform: \"Android\",\n runnable: true,\n advanced_options: false,\n dedicated_server: false,\n custom_features: \"\",\n export_filter: \"all_resources\",\n include_filter: \"\",\n exclude_filter: \"\",\n export_path: \"game.aab\",\n encryption_include_filters: \"\",\n encryption_exclude_filters: \"\",\n encrypt_pck: false,\n encrypt_directory: false,\n script_export_mode: 2,\n options: {\n \"gradle_build/use_gradle_build\": true,\n \"gradle_build/export_format\": 1,\n \"gradle_build/compress_native_libraries\": false,\n \"gradle_build/min_sdk\": \"\",\n \"gradle_build/target_sdk\": \"\",\n \"architectures/armeabi-v7a\": false,\n \"architectures/arm64-v8a\": true,\n \"architectures/x86\": false,\n \"architectures/x86_64\": false,\n \"package/signed\": true,\n \"package/app_category\": 2,\n \"package/retain_data_on_uninstall\": false,\n \"package/exclude_from_recents\": false,\n \"package/show_in_android_tv\": false,\n \"package/show_in_app_library\": true,\n \"package/show_as_launcher_app\": false,\n \"launcher_icons/main_192x192\": \"\",\n \"launcher_icons/adaptive_foreground_432x432\": \"\",\n \"launcher_icons/adaptive_background_432x432\": \"\",\n \"graphics/opengl_debug\": false,\n \"xr_features/xr_mode\": 0,\n \"screen/immersive_mode\": true,\n \"screen/support_small\": true,\n \"screen/support_normal\": true,\n \"screen/support_large\": true,\n \"screen/support_xlarge\": true,\n \"user_data_backup/allow\": false,\n \"command_line/extra_args\": \"\",\n \"apk_expansion/enable\": false,\n \"apk_expansion/SALT\": \"\",\n \"apk_expansion/public_key\": \"\",\n \"permissions/custom_permissions\": \"PackedStringArray()\",\n \"permissions/access_checkin_properties\": false,\n \"permissions/access_coarse_location\": false,\n \"permissions/access_fine_location\": false,\n \"permissions/access_location_extra_commands\": false,\n \"permissions/access_mock_location\": false,\n \"permissions/access_network_state\": false,\n \"permissions/access_surface_flinger\": false,\n \"permissions/access_wifi_state\": false,\n \"permissions/account_manager\": false,\n \"permissions/add_voicemail\": false,\n \"permissions/authenticate_accounts\": false,\n \"permissions/battery_stats\": false,\n \"permissions/bind_accessibility_service\": false,\n \"permissions/bind_appwidget\": false,\n \"permissions/bind_device_admin\": false,\n \"permissions/bind_input_method\": false,\n \"permissions/bind_nfc_service\": false,\n \"permissions/bind_notification_listener_service\": false,\n \"permissions/bind_print_service\": false,\n \"permissions/bind_remoteviews\": false,\n \"permissions/bind_text_service\": false,\n \"permissions/bind_vpn_service\": false,\n \"permissions/bind_wallpaper\": false,\n \"permissions/bluetooth\": false,\n \"permissions/bluetooth_admin\": false,\n \"permissions/bluetooth_privileged\": false,\n \"permissions/brick\": false,\n \"permissions/broadcast_package_removed\": false,\n \"permissions/broadcast_sms\": false,\n \"permissions/broadcast_sticky\": false,\n \"permissions/broadcast_wap_push\": false,\n \"permissions/call_phone\": false,\n \"permissions/call_privileged\": false,\n \"permissions/camera\": false,\n \"permissions/capture_audio_output\": false,\n \"permissions/capture_secure_video_output\": false,\n \"permissions/capture_video_output\": false,\n \"permissions/change_component_enabled_state\": false,\n \"permissions/change_configuration\": false,\n \"permissions/change_network_state\": false,\n \"permissions/change_wifi_multicast_state\": false,\n \"permissions/change_wifi_state\": false,\n \"permissions/clear_app_cache\": false,\n \"permissions/clear_app_user_data\": false,\n \"permissions/control_location_updates\": false,\n \"permissions/delete_cache_files\": false,\n \"permissions/delete_packages\": false,\n \"permissions/device_power\": false,\n \"permissions/diagnostic\": false,\n \"permissions/disable_keyguard\": false,\n \"permissions/dump\": false,\n \"permissions/expand_status_bar\": false,\n \"permissions/factory_test\": false,\n \"permissions/flashlight\": false,\n \"permissions/force_back\": false,\n \"permissions/get_accounts\": false,\n \"permissions/get_package_size\": false,\n \"permissions/get_tasks\": false,\n \"permissions/get_top_activity_info\": false,\n \"permissions/global_search\": false,\n \"permissions/hardware_test\": false,\n \"permissions/inject_events\": false,\n \"permissions/install_location_provider\": false,\n \"permissions/install_packages\": false,\n \"permissions/install_shortcut\": false,\n \"permissions/internal_system_window\": false,\n \"permissions/internet\": false,\n \"permissions/kill_background_processes\": false,\n \"permissions/location_hardware\": false,\n \"permissions/manage_accounts\": false,\n \"permissions/manage_app_tokens\": false,\n \"permissions/manage_documents\": false,\n \"permissions/manage_external_storage\": false,\n \"permissions/master_clear\": false,\n \"permissions/media_content_control\": false,\n \"permissions/modify_audio_settings\": false,\n \"permissions/modify_phone_state\": false,\n \"permissions/mount_format_filesystems\": false,\n \"permissions/mount_unmount_filesystems\": false,\n \"permissions/nfc\": false,\n \"permissions/persistent_activity\": false,\n \"permissions/process_outgoing_calls\": false,\n \"permissions/read_calendar\": false,\n \"permissions/read_call_log\": false,\n \"permissions/read_contacts\": false,\n \"permissions/read_external_storage\": false,\n \"permissions/read_frame_buffer\": false,\n \"permissions/read_history_bookmarks\": false,\n \"permissions/read_input_state\": false,\n \"permissions/read_logs\": false,\n \"permissions/read_phone_state\": false,\n \"permissions/read_profile\": false,\n \"permissions/read_sms\": false,\n \"permissions/read_social_stream\": false,\n \"permissions/read_sync_settings\": false,\n \"permissions/read_sync_stats\": false,\n \"permissions/read_user_dictionary\": false,\n \"permissions/reboot\": false,\n \"permissions/receive_boot_completed\": false,\n \"permissions/receive_mms\": false,\n \"permissions/receive_sms\": false,\n \"permissions/receive_wap_push\": false,\n \"permissions/record_audio\": false,\n \"permissions/reorder_tasks\": false,\n \"permissions/restart_packages\": false,\n \"permissions/send_respond_via_message\": false,\n \"permissions/send_sms\": false,\n \"permissions/set_activity_watcher\": false,\n \"permissions/set_alarm\": false,\n \"permissions/set_always_finish\": false,\n \"permissions/set_animation_scale\": false,\n \"permissions/set_debug_app\": false,\n \"permissions/set_orientation\": false,\n \"permissions/set_pointer_speed\": false,\n \"permissions/set_preferred_applications\": false,\n \"permissions/set_process_limit\": false,\n \"permissions/set_time\": false,\n \"permissions/set_time_zone\": false,\n \"permissions/set_wallpaper\": false,\n \"permissions/set_wallpaper_hints\": false,\n \"permissions/signal_persistent_processes\": false,\n \"permissions/status_bar\": false,\n \"permissions/subscribed_feeds_read\": false,\n \"permissions/subscribed_feeds_write\": false,\n \"permissions/system_alert_window\": false,\n \"permissions/transmit_ir\": false,\n \"permissions/uninstall_shortcut\": false,\n \"permissions/update_device_stats\": false,\n \"permissions/use_credentials\": false,\n \"permissions/use_sip\": false,\n \"permissions/vibrate\": false,\n \"permissions/wake_lock\": false,\n \"permissions/write_apn_settings\": false,\n \"permissions/write_calendar\": false,\n \"permissions/write_call_log\": false,\n \"permissions/write_contacts\": false,\n \"permissions/write_external_storage\": false,\n \"permissions/write_gservices\": false,\n \"permissions/write_history_bookmarks\": false,\n \"permissions/write_profile\": false,\n \"permissions/write_secure_settings\": false,\n \"permissions/write_settings\": false,\n \"permissions/write_sms\": false,\n \"permissions/write_social_stream\": false,\n \"permissions/write_sync_settings\": false,\n \"permissions/write_user_dictionary\": false,\n },\n };\n}\n\n/**\n * Base preset for iOS (Godot 3.x)\n */\nexport function getBasePreset_iOS_v3(): ExportPreset {\n return {\n name: \"iOS\",\n platform: \"iOS\",\n runnable: true,\n custom_features: \"\",\n export_filter: \"all_resources\",\n include_filter: \"\",\n exclude_filter: \"\",\n export_path: \"\",\n script_export_mode: 1,\n script_encryption_key: \"\",\n options: {\n \"custom_template/debug\": \"\",\n \"architectures/armv7\": false,\n \"architectures/arm64\": true,\n \"application/copyright\": \"\",\n \"application/icon_interpolation\": 4,\n \"application/info\": \"Made with Godot Engine\",\n \"application/provisioning_profile_uuid_debug\": \"\",\n \"application/provisioning_profile_uuid_release\": \"\",\n \"application/signature\": \"\",\n \"application/targeted_device_family\": 2,\n \"capabilities/access_wifi\": false,\n \"capabilities/push_notifications\": false,\n \"user_data/accessible_from_files_app\": false,\n \"user_data/accessible_from_itunes_sharing\": false,\n \"privacy/camera_usage_description\": \"\",\n \"privacy/microphone_usage_description\": \"\",\n \"privacy/photolibrary_usage_description\": \"\",\n \"privacy/file_timestamp_access_reasons\": 3,\n \"privacy/system_boot_time_access_reasons\": 1,\n \"privacy/disk_space_access_reasons\": 3,\n \"privacy/active_keyboard_access_reasons\": 0,\n \"privacy/user_defaults_access_reasons\": 0,\n \"privacy/tracking_enabled\": false,\n \"privacy/tracking_domains\": \"PoolStringArray( )\",\n \"privacy/collected_data/name/collected\": false,\n \"privacy/collected_data/name/linked_to_user\": false,\n \"privacy/collected_data/name/used_for_tracking\": false,\n \"privacy/collected_data/name/collection_purposes\": 0,\n \"privacy/collected_data/email_address/collected\": false,\n \"privacy/collected_data/email_address/linked_to_user\": false,\n \"privacy/collected_data/email_address/used_for_tracking\": false,\n \"privacy/collected_data/email_address/collection_purposes\": 0,\n \"privacy/collected_data/phone_number/collected\": false,\n \"privacy/collected_data/phone_number/linked_to_user\": false,\n \"privacy/collected_data/phone_number/used_for_tracking\": false,\n \"privacy/collected_data/phone_number/collection_purposes\": 0,\n \"privacy/collected_data/physical_address/collected\": false,\n \"privacy/collected_data/physical_address/linked_to_user\": false,\n \"privacy/collected_data/physical_address/used_for_tracking\": false,\n \"privacy/collected_data/physical_address/collection_purposes\": 0,\n \"privacy/collected_data/other_contact_info/collected\": false,\n \"privacy/collected_data/other_contact_info/linked_to_user\": false,\n \"privacy/collected_data/other_contact_info/used_for_tracking\": false,\n \"privacy/collected_data/other_contact_info/collection_purposes\": 0,\n \"privacy/collected_data/health/collected\": false,\n \"privacy/collected_data/health/linked_to_user\": false,\n \"privacy/collected_data/health/used_for_tracking\": false,\n \"privacy/collected_data/health/collection_purposes\": 0,\n \"privacy/collected_data/fitness/collected\": false,\n \"privacy/collected_data/fitness/linked_to_user\": false,\n \"privacy/collected_data/fitness/used_for_tracking\": false,\n \"privacy/collected_data/fitness/collection_purposes\": 0,\n \"privacy/collected_data/payment_info/collected\": false,\n \"privacy/collected_data/payment_info/linked_to_user\": false,\n \"privacy/collected_data/payment_info/used_for_tracking\": false,\n \"privacy/collected_data/payment_info/collection_purposes\": 0,\n \"privacy/collected_data/credit_info/collected\": false,\n \"privacy/collected_data/credit_info/linked_to_user\": false,\n \"privacy/collected_data/credit_info/used_for_tracking\": false,\n \"privacy/collected_data/credit_info/collection_purposes\": 0,\n \"privacy/collected_data/other_financial_info/collected\": false,\n \"privacy/collected_data/other_financial_info/linked_to_user\": false,\n \"privacy/collected_data/other_financial_info/used_for_tracking\": false,\n \"privacy/collected_data/other_financial_info/collection_purposes\": 0,\n \"privacy/collected_data/precise_location/collected\": false,\n \"privacy/collected_data/precise_location/linked_to_user\": false,\n \"privacy/collected_data/precise_location/used_for_tracking\": false,\n \"privacy/collected_data/precise_location/collection_purposes\": 0,\n \"privacy/collected_data/coarse_location/collected\": false,\n \"privacy/collected_data/coarse_location/linked_to_user\": false,\n \"privacy/collected_data/coarse_location/used_for_tracking\": false,\n \"privacy/collected_data/coarse_location/collection_purposes\": 0,\n \"privacy/collected_data/sensitive_info/collected\": false,\n \"privacy/collected_data/sensitive_info/linked_to_user\": false,\n \"privacy/collected_data/sensitive_info/used_for_tracking\": false,\n \"privacy/collected_data/sensitive_info/collection_purposes\": 0,\n \"privacy/collected_data/contacts/collected\": false,\n \"privacy/collected_data/contacts/linked_to_user\": false,\n \"privacy/collected_data/contacts/used_for_tracking\": false,\n \"privacy/collected_data/contacts/collection_purposes\": 0,\n \"privacy/collected_data/emails_or_text_messages/collected\": false,\n \"privacy/collected_data/emails_or_text_messages/linked_to_user\": false,\n \"privacy/collected_data/emails_or_text_messages/used_for_tracking\": false,\n \"privacy/collected_data/emails_or_text_messages/collection_purposes\": 0,\n \"privacy/collected_data/photos_or_videos/collected\": false,\n \"privacy/collected_data/photos_or_videos/linked_to_user\": false,\n \"privacy/collected_data/photos_or_videos/used_for_tracking\": false,\n \"privacy/collected_data/photos_or_videos/collection_purposes\": 0,\n \"privacy/collected_data/audio_data/collected\": false,\n \"privacy/collected_data/audio_data/linked_to_user\": false,\n \"privacy/collected_data/audio_data/used_for_tracking\": false,\n \"privacy/collected_data/audio_data/collection_purposes\": 0,\n \"privacy/collected_data/gameplay_content/collected\": false,\n \"privacy/collected_data/gameplay_content/linked_to_user\": false,\n \"privacy/collected_data/gameplay_content/used_for_tracking\": false,\n \"privacy/collected_data/gameplay_content/collection_purposes\": 0,\n \"privacy/collected_data/customer_support/collected\": false,\n \"privacy/collected_data/customer_support/linked_to_user\": false,\n \"privacy/collected_data/customer_support/used_for_tracking\": false,\n \"privacy/collected_data/customer_support/collection_purposes\": 0,\n \"privacy/collected_data/other_user_content/collected\": false,\n \"privacy/collected_data/other_user_content/linked_to_user\": false,\n \"privacy/collected_data/other_user_content/used_for_tracking\": false,\n \"privacy/collected_data/other_user_content/collection_purposes\": 0,\n \"privacy/collected_data/browsing_history/collected\": false,\n \"privacy/collected_data/browsing_history/linked_to_user\": false,\n \"privacy/collected_data/browsing_history/used_for_tracking\": false,\n \"privacy/collected_data/browsing_history/collection_purposes\": 0,\n \"privacy/collected_data/search_hhistory/collected\": false,\n \"privacy/collected_data/search_hhistory/linked_to_user\": false,\n \"privacy/collected_data/search_hhistory/used_for_tracking\": false,\n \"privacy/collected_data/search_hhistory/collection_purposes\": 0,\n \"privacy/collected_data/user_id/collected\": false,\n \"privacy/collected_data/user_id/linked_to_user\": false,\n \"privacy/collected_data/user_id/used_for_tracking\": false,\n \"privacy/collected_data/user_id/collection_purposes\": 0,\n \"privacy/collected_data/device_id/collected\": false,\n \"privacy/collected_data/device_id/linked_to_user\": false,\n \"privacy/collected_data/device_id/used_for_tracking\": false,\n \"privacy/collected_data/device_id/collection_purposes\": 0,\n \"privacy/collected_data/purchase_history/collected\": false,\n \"privacy/collected_data/purchase_history/linked_to_user\": false,\n \"privacy/collected_data/purchase_history/used_for_tracking\": false,\n \"privacy/collected_data/purchase_history/collection_purposes\": 0,\n \"privacy/collected_data/product_interaction/collected\": false,\n \"privacy/collected_data/product_interaction/linked_to_user\": false,\n \"privacy/collected_data/product_interaction/used_for_tracking\": false,\n \"privacy/collected_data/product_interaction/collection_purposes\": 0,\n \"privacy/collected_data/advertising_data/collected\": false,\n \"privacy/collected_data/advertising_data/linked_to_user\": false,\n \"privacy/collected_data/advertising_data/used_for_tracking\": false,\n \"privacy/collected_data/advertising_data/collection_purposes\": 0,\n \"privacy/collected_data/other_usage_data/collected\": false,\n \"privacy/collected_data/other_usage_data/linked_to_user\": false,\n \"privacy/collected_data/other_usage_data/used_for_tracking\": false,\n \"privacy/collected_data/other_usage_data/collection_purposes\": 0,\n \"privacy/collected_data/crash_data/collected\": false,\n \"privacy/collected_data/crash_data/linked_to_user\": false,\n \"privacy/collected_data/crash_data/used_for_tracking\": false,\n \"privacy/collected_data/crash_data/collection_purposes\": 0,\n \"privacy/collected_data/performance_data/collected\": false,\n \"privacy/collected_data/performance_data/linked_to_user\": false,\n \"privacy/collected_data/performance_data/used_for_tracking\": false,\n \"privacy/collected_data/performance_data/collection_purposes\": 0,\n \"privacy/collected_data/other_diagnostic_data/collected\": false,\n \"privacy/collected_data/other_diagnostic_data/linked_to_user\": false,\n \"privacy/collected_data/other_diagnostic_data/used_for_tracking\": false,\n \"privacy/collected_data/other_diagnostic_data/collection_purposes\": 0,\n \"privacy/collected_data/environment_scanning/collected\": false,\n \"privacy/collected_data/environment_scanning/linked_to_user\": false,\n \"privacy/collected_data/environment_scanning/used_for_tracking\": false,\n \"privacy/collected_data/environment_scanning/collection_purposes\": 0,\n \"privacy/collected_data/hands/collected\": false,\n \"privacy/collected_data/hands/linked_to_user\": false,\n \"privacy/collected_data/hands/used_for_tracking\": false,\n \"privacy/collected_data/hands/collection_purposes\": 0,\n \"privacy/collected_data/head/collected\": false,\n \"privacy/collected_data/head/linked_to_user\": false,\n \"privacy/collected_data/head/used_for_tracking\": false,\n \"privacy/collected_data/head/collection_purposes\": 0,\n \"privacy/collected_data/other_data_types/collected\": false,\n \"privacy/collected_data/other_data_types/linked_to_user\": false,\n \"privacy/collected_data/other_data_types/used_for_tracking\": false,\n \"privacy/collected_data/other_data_types/collection_purposes\": 0,\n \"icons/app_store_1024x1024\": \"\",\n \"icons/ipad_152x152\": \"\",\n \"icons/ipad_167x167\": \"\",\n \"icons/ipad_76x76\": \"\",\n \"icons/iphone_120x120\": \"\",\n \"icons/iphone_180x180\": \"\",\n \"icons/spotlight_40x40\": \"\",\n \"icons/spotlight_80x80\": \"\",\n \"storyboard/image_scale_mode\": 0,\n \"storyboard/custom_image@2x\": \"\",\n \"storyboard/custom_image@3x\": \"\",\n \"storyboard/use_custom_bg_color\": false,\n \"storyboard/custom_bg_color\": \"Color( 0, 0, 0, 1 )\",\n },\n };\n}\n\n/**\n * Base preset for iOS (Godot 4.x)\n */\nexport function getBasePreset_iOS_v4(): ExportPreset {\n return {\n name: \"iOS\",\n platform: \"iOS\",\n runnable: true,\n dedicated_server: false,\n custom_features: \"\",\n export_filter: \"all_resources\",\n include_filter: \"\",\n exclude_filter: \"\",\n export_path: \"output\",\n encryption_include_filters: \"\",\n encryption_exclude_filters: \"\",\n encrypt_pck: false,\n encrypt_directory: false,\n options: {\n \"custom_template/debug\": \"\",\n \"custom_template/release\": \"\",\n \"architectures/arm64\": true,\n \"application/signature\": \"\",\n \"application/icon_interpolation\": \"4\",\n \"application/launch_screens_interpolation\": \"4\",\n \"application/export_project_only\": true,\n \"capabilities/access_wifi\": false,\n \"capabilities/push_notifications\": false,\n \"user_data/accessible_from_files_app\": false,\n \"user_data/accessible_from_itunes_sharing\": false,\n \"privacy/camera_usage_description\": \"\",\n \"privacy/camera_usage_description_localized\": \"{}\",\n \"privacy/microphone_usage_description\": \"\",\n \"privacy/microphone_usage_description_localized\": \"{}\",\n \"privacy/photolibrary_usage_description\": \"\",\n \"privacy/photolibrary_usage_description_localized\": \"{}\",\n \"icons/app_store_1024x1024\": \"\",\n \"icons/ipad_152x152\": \"\",\n \"icons/ipad_167x167\": \"\",\n \"icons/ipad_76x76\": \"\",\n \"icons/iphone_120x120\": \"\",\n \"icons/iphone_180x180\": \"\",\n \"icons/notification_40x40\": \"\",\n \"icons/notification_60x60\": \"\",\n \"icons/settings_58x58\": \"\",\n \"icons/settings_87x87\": \"\",\n \"icons/spotlight_40x40\": \"\",\n \"icons/spotlight_80x80\": \"\",\n \"storyboard/use_launch_screen_storyboard\": true,\n \"storyboard/image_scale_mode\": \"0\",\n \"storyboard/custom_image@2x\": \"\",\n \"storyboard/custom_image@3x\": \"\",\n \"storyboard/use_custom_bg_color\": false,\n \"storyboard/custom_bg_color\": \"Color(0, 0, 0, 1)\",\n \"landscape_launch_screens/iphone_2436x1125\": \"\",\n \"landscape_launch_screens/iphone_2208x1242\": \"\",\n \"landscape_launch_screens/ipad_1024x768\": \"\",\n \"landscape_launch_screens/ipad_2048x1536\": \"\",\n \"portrait_launch_screens/iphone_640x960\": \"\",\n \"portrait_launch_screens/iphone_640x1136\": \"\",\n \"portrait_launch_screens/iphone_750x1334\": \"\",\n \"portrait_launch_screens/iphone_1125x2436\": \"\",\n \"portrait_launch_screens/ipad_768x1024\": \"\",\n \"portrait_launch_screens/ipad_1536x2048\": \"\",\n \"portrait_launch_screens/iphone_1242x2208\": \"\",\n },\n };\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/parser.ts","../src/writer.ts","../src/config-file.ts","../src/export-presets/parser.ts","../src/export-presets/serializer.ts","../src/export-presets/file-io.ts","../src/export-presets/operations.ts","../src/export-presets/merge.ts","../src/export-presets/base-presets.ts"],"names":["c","peek","writeFile","readFile"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Parser for Godot config file format\n * Based on Godot's VariantParser implementation\n */\n\nexport class ParseError extends Error {\n constructor(message: string, public line: number) {\n super(`Parse error at line ${line}: ${message}`);\n this.name = \"ParseError\";\n }\n}\n\ntype TokenType =\n | \"STRING\"\n | \"NUMBER\"\n | \"BOOLEAN\"\n | \"IDENTIFIER\"\n | \"BRACKET_OPEN\"\n | \"BRACKET_CLOSE\"\n | \"PARENTHESIS_OPEN\"\n | \"PARENTHESIS_CLOSE\"\n | \"CURLY_BRACKET_OPEN\"\n | \"CURLY_BRACKET_CLOSE\"\n | \"EQUAL\"\n | \"COLON\"\n | \"COMMA\"\n | \"SEMICOLON\"\n | \"HASH\"\n | \"EOF\";\n\ninterface Token {\n type: TokenType;\n value: string | number | boolean;\n line: number;\n}\n\nclass Stream {\n private pos = 0;\n private line = 1;\n private saved: string | null = null;\n\n constructor(private content: string) {}\n\n get_char(): string {\n if (this.saved !== null) {\n const c = this.saved;\n this.saved = null;\n return c;\n }\n if (this.pos >= this.content.length) {\n return \"\\0\";\n }\n const c = this.content[this.pos++];\n if (c === \"\\n\") {\n this.line++;\n }\n return c;\n }\n\n peek_char(): string {\n if (this.pos >= this.content.length) {\n return \"\\0\";\n }\n return this.content[this.pos];\n }\n\n save_char(c: string): void {\n this.saved = c;\n }\n\n is_eof(): boolean {\n return this.pos >= this.content.length && this.saved === null;\n }\n\n get_line(): number {\n return this.line;\n }\n}\n\nfunction is_whitespace(c: string): boolean {\n return c === \" \" || c === \"\\t\" || c === \"\\r\" || c === \"\\n\";\n}\n\nfunction is_digit(c: string): boolean {\n return c >= \"0\" && c <= \"9\";\n}\n\nfunction is_alpha(c: string): boolean {\n return (c >= \"a\" && c <= \"z\") || (c >= \"A\" && c <= \"Z\") || c === \"_\";\n}\n\nfunction is_alnum(c: string): boolean {\n return is_alpha(c) || is_digit(c);\n}\n\nfunction is_identifier_char(c: string): boolean {\n return is_alnum(c) || c === \"/\" || c === \".\" || c === \"_\" || c === \"-\";\n}\n\nfunction get_token(stream: Stream): Token {\n // Skip whitespace\n while (true) {\n const c = stream.peek_char();\n if (is_whitespace(c)) {\n stream.get_char();\n continue;\n }\n break;\n }\n\n const line = stream.get_line();\n const c = stream.get_char();\n\n if (c === \"\\0\") {\n return { type: \"EOF\", value: \"\", line };\n }\n\n switch (c) {\n case \"[\":\n return { type: \"BRACKET_OPEN\", value: c, line };\n case \"]\":\n return { type: \"BRACKET_CLOSE\", value: c, line };\n case \"(\":\n return { type: \"PARENTHESIS_OPEN\", value: c, line };\n case \")\":\n return { type: \"PARENTHESIS_CLOSE\", value: c, line };\n case \"{\":\n return { type: \"CURLY_BRACKET_OPEN\", value: c, line };\n case \"}\":\n return { type: \"CURLY_BRACKET_CLOSE\", value: c, line };\n case \"=\":\n return { type: \"EQUAL\", value: c, line };\n case \":\":\n return { type: \"COLON\", value: c, line };\n case \",\":\n return { type: \"COMMA\", value: c, line };\n case \";\":\n // Comment - skip to end of line\n while (true) {\n const ch = stream.get_char();\n if (ch === \"\\n\" || ch === \"\\0\") {\n break;\n }\n }\n return get_token(stream); // Get next token after comment\n case \"#\":\n // Comment - skip to end of line\n while (true) {\n const ch = stream.get_char();\n if (ch === \"\\n\" || ch === \"\\0\") {\n break;\n }\n }\n return get_token(stream); // Get next token after comment\n case '\"': {\n // String - supports multi-line strings\n let str = \"\";\n let escaped = false;\n while (true) {\n const ch = stream.get_char();\n if (ch === \"\\0\") {\n throw new ParseError(\"Unterminated string\", line);\n }\n if (escaped) {\n if (ch === \"n\") {\n str += \"\\n\";\n } else if (ch === \"t\") {\n str += \"\\t\";\n } else if (ch === \"r\") {\n str += \"\\r\";\n } else if (ch === \"\\\\\") {\n str += \"\\\\\";\n } else if (ch === '\"') {\n str += '\"';\n } else {\n str += ch;\n }\n escaped = false;\n } else if (ch === \"\\\\\") {\n escaped = true;\n } else if (ch === '\"') {\n // Check if this is the end of the string\n // Look ahead to see if there's whitespace, newline, EOF, or comment\n const peek = stream.peek_char();\n if (\n peek === \"\\0\" ||\n peek === \"\\n\" ||\n peek === \"\\r\" ||\n peek === \" \" ||\n peek === \"\\t\" ||\n peek === \";\" ||\n peek === \"#\"\n ) {\n break;\n }\n // If followed by '=', it might be end of key (like \"a=b\"=value)\n // But if it's in the middle, it's part of the string\n // For now, assume it's the end if followed by whitespace/comment/newline\n break;\n } else {\n str += ch;\n }\n }\n return { type: \"STRING\", value: str, line };\n }\n default: {\n // Number, boolean, or identifier\n const peek = stream.peek_char();\n if (\n is_digit(c) ||\n (c === \"-\" && is_digit(peek)) ||\n (c === \"+\" && is_digit(peek)) ||\n (c === \".\" && is_digit(peek))\n ) {\n // Number - only start if we have a digit or sign followed by digit\n let numStr = c;\n let hasDot = c === \".\";\n while (true) {\n const nextPeek = stream.peek_char();\n if (is_digit(nextPeek) || nextPeek === \".\") {\n if (nextPeek === \".\") {\n if (hasDot) break;\n hasDot = true;\n }\n numStr += stream.get_char();\n } else {\n break;\n }\n }\n const num = parseFloat(numStr);\n if (isNaN(num)) {\n throw new ParseError(`Invalid number: ${numStr}`, line);\n }\n return { type: \"NUMBER\", value: num, line };\n } else if (is_alpha(c) || c === \"/\") {\n // Identifier or boolean\n let ident = c;\n while (true) {\n const peek = stream.peek_char();\n if (is_identifier_char(peek)) {\n ident += stream.get_char();\n } else {\n break;\n }\n }\n if (ident === \"true\") {\n return { type: \"BOOLEAN\", value: true, line };\n } else if (ident === \"false\") {\n return { type: \"BOOLEAN\", value: false, line };\n }\n return { type: \"IDENTIFIER\", value: ident, line };\n } else {\n throw new ParseError(`Unexpected character: ${c}`, line);\n }\n }\n }\n}\n\nfunction parse_construct_args(stream: Stream): number[] {\n const args: number[] = [];\n let token = get_token(stream);\n\n if (token.type !== \"PARENTHESIS_OPEN\") {\n throw new ParseError(\"Expected '(' in constructor\", token.line);\n }\n\n let first = true;\n while (true) {\n if (!first) {\n token = get_token(stream);\n if (token.type === \"COMMA\") {\n // Continue\n } else if (token.type === \"PARENTHESIS_CLOSE\") {\n break;\n } else {\n throw new ParseError(\"Expected ',' or ')' in constructor\", token.line);\n }\n }\n\n token = get_token(stream);\n if (first && token.type === \"PARENTHESIS_CLOSE\") {\n break;\n }\n\n if (token.type === \"NUMBER\") {\n args.push(token.value as number);\n } else if (token.type === \"IDENTIFIER\") {\n // Try to parse as number (e.g., \"inf\", \"nan\")\n const ident = token.value as string;\n if (ident === \"inf\" || ident === \"Infinity\") {\n args.push(Infinity);\n } else if (ident === \"-inf\" || ident === \"-Infinity\") {\n args.push(-Infinity);\n } else if (ident === \"nan\" || ident === \"NaN\") {\n args.push(NaN);\n } else {\n throw new ParseError(`Expected number in constructor, got: ${ident}`, token.line);\n }\n } else {\n throw new ParseError(\"Expected number in constructor\", token.line);\n }\n first = false;\n }\n\n return args;\n}\n\nfunction parse_string_construct_args(stream: Stream): string[] {\n const args: string[] = [];\n let token = get_token(stream);\n\n if (token.type !== \"PARENTHESIS_OPEN\") {\n throw new ParseError(\"Expected '(' in constructor\", token.line);\n }\n\n let first = true;\n while (true) {\n if (!first) {\n token = get_token(stream);\n if (token.type === \"COMMA\") {\n // Continue\n } else if (token.type === \"PARENTHESIS_CLOSE\") {\n break;\n } else {\n throw new ParseError(\"Expected ',' or ')' in constructor\", token.line);\n }\n }\n\n token = get_token(stream);\n if (first && token.type === \"PARENTHESIS_CLOSE\") {\n break;\n }\n\n if (token.type === \"STRING\") {\n args.push(token.value as string);\n } else {\n throw new ParseError(\"Expected string in constructor\", token.line);\n }\n first = false;\n }\n\n return args;\n}\n\nfunction parse_dictionary(stream: Stream): Record<string, unknown> {\n const dict: Record<string, unknown> = {};\n let needComma = false;\n\n while (true) {\n if (stream.is_eof()) {\n throw new ParseError(\"Unexpected EOF while parsing dictionary\", stream.get_line());\n }\n\n // Skip whitespace and peek at next token\n while (true) {\n const peek = stream.peek_char();\n if (is_whitespace(peek)) {\n stream.get_char();\n continue;\n }\n break;\n }\n\n // Check if next character is closing brace\n if (stream.peek_char() === \"}\") {\n // Consume the closing brace token\n get_token(stream);\n return dict;\n }\n\n if (needComma) {\n const token = get_token(stream);\n if (token.type !== \"COMMA\") {\n throw new ParseError(\"Expected '}' or ','\", token.line);\n }\n needComma = false;\n }\n\n // Parse key\n const keyToken = get_token(stream);\n let key: unknown;\n if (keyToken.type === \"STRING\") {\n key = keyToken.value;\n } else if (keyToken.type === \"NUMBER\") {\n key = keyToken.value;\n } else if (keyToken.type === \"BOOLEAN\") {\n key = keyToken.value;\n } else if (keyToken.type === \"IDENTIFIER\") {\n key = keyToken.value;\n } else {\n throw new ParseError(\"Expected dictionary key\", keyToken.line);\n }\n\n // Expect colon after key\n const colonToken = get_token(stream);\n if (colonToken.type !== \"COLON\") {\n throw new ParseError(\"Expected ':' after dictionary key\", colonToken.line);\n }\n\n // Parse value\n const value = parse_value(stream);\n const keyStr = String(key);\n dict[keyStr] = value;\n needComma = true;\n }\n}\n\nfunction parse_array(stream: Stream): unknown[] {\n const arr: unknown[] = [];\n let needComma = false;\n\n while (true) {\n if (stream.is_eof()) {\n throw new ParseError(\"Unexpected EOF while parsing array\", stream.get_line());\n }\n\n // Skip whitespace and peek at next token\n while (true) {\n const peek = stream.peek_char();\n if (is_whitespace(peek)) {\n stream.get_char();\n continue;\n }\n break;\n }\n\n // Check if next character is closing bracket\n if (stream.peek_char() === \"]\") {\n // Consume the closing bracket token\n get_token(stream);\n return arr;\n }\n\n if (needComma) {\n const token = get_token(stream);\n if (token.type !== \"COMMA\") {\n throw new ParseError(\"Expected ']' or ','\", token.line);\n }\n needComma = false;\n }\n\n // Parse value\n const value = parse_value(stream);\n arr.push(value);\n needComma = true;\n }\n}\n\nfunction parse_value(stream: Stream): unknown {\n const token = get_token(stream);\n\n switch (token.type) {\n case \"STRING\":\n return token.value;\n case \"NUMBER\":\n return token.value;\n case \"BOOLEAN\":\n return token.value;\n case \"BRACKET_OPEN\": {\n // Array literal\n return parse_array(stream);\n }\n case \"CURLY_BRACKET_OPEN\": {\n // Dictionary/object literal\n return parse_dictionary(stream);\n }\n case \"IDENTIFIER\": {\n const ident = token.value as string;\n if (ident === \"Color\") {\n const args = parse_construct_args(stream);\n if (args.length !== 4) {\n throw new ParseError(\"Expected 4 arguments for Color constructor\", token.line);\n }\n return { r: args[0], g: args[1], b: args[2], a: args[3] };\n } else if (ident === \"Vector2\") {\n const args = parse_construct_args(stream);\n if (args.length !== 2) {\n throw new ParseError(\"Expected 2 arguments for Vector2 constructor\", token.line);\n }\n return { x: args[0], y: args[1] };\n } else if (ident === \"PackedStringArray\" || ident === \"PoolStringArray\" || ident === \"StringArray\") {\n // Handle PackedStringArray constructor\n const args = parse_string_construct_args(stream);\n return args; // Return as a regular array of strings\n } else {\n throw new ParseError(`Unknown identifier: ${ident}`, token.line);\n }\n }\n default:\n throw new ParseError(`Unexpected token type: ${token.type}`, token.line);\n }\n}\n\nexport function parse_config(content: string): {\n values: Map<string, Map<string, unknown>>;\n error?: Error;\n} {\n const values = new Map<string, Map<string, unknown>>();\n const stream = new Stream(content);\n let currentSection = \"\";\n\n try {\n while (true) {\n // Skip whitespace\n while (true) {\n const peek = stream.peek_char();\n if (is_whitespace(peek)) {\n stream.get_char();\n continue;\n }\n break;\n }\n\n const token = get_token(stream);\n if (token.type === \"EOF\") {\n break;\n }\n\n if (token.type === \"BRACKET_OPEN\") {\n // Parse section name\n const sectionToken = get_token(stream);\n if (sectionToken.type !== \"IDENTIFIER\" && sectionToken.type !== \"STRING\") {\n throw new ParseError(\"Expected section name\", sectionToken.line);\n }\n let sectionName = String(sectionToken.value);\n const closeToken = get_token(stream);\n if (closeToken.type === \"BRACKET_CLOSE\") {\n // Handle escaped brackets\n sectionName = sectionName.replace(/\\\\\\]/g, \"]\");\n currentSection = sectionName;\n if (!values.has(currentSection)) {\n values.set(currentSection, new Map());\n }\n } else {\n throw new ParseError(\"Expected ']' after section name\", closeToken.line);\n }\n } else if (token.type === \"IDENTIFIER\" || token.type === \"STRING\") {\n // Key-value pair - key can be identifier or quoted string\n const key = String(token.value);\n const equalToken = get_token(stream);\n if (equalToken.type !== \"EQUAL\") {\n throw new ParseError(\"Expected '=' after key\", equalToken.line);\n }\n const value = parse_value(stream);\n\n if (!values.has(currentSection)) {\n values.set(currentSection, new Map());\n }\n values.get(currentSection)!.set(key, value);\n } else if (token.type === \"BRACKET_CLOSE\") {\n throw new ParseError(\"Unexpected ']'\", token.line);\n }\n }\n } catch (error) {\n if (error instanceof ParseError) {\n return { values, error };\n }\n throw error;\n }\n\n return { values };\n}\n\n","/**\n * Writer for Godot config file format\n * Serializes values back to config format matching Godot's output\n */\n\nimport type { Color, Vector2 } from \"./types.js\";\n\nfunction needs_quotes(str: string): boolean {\n // Quote if contains special characters, spaces, or Unicode characters\n // Based on Godot's property_name_encode() logic:\n // Quote if contains: =, \", ;, [, ], or characters < 33 or > 126\n if (str.length === 0) return true;\n \n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n if (\n code === 61 || // =\n code === 34 || // \"\n code === 59 || // ;\n code === 91 || // [\n code === 93 || // ]\n code < 33 || // control characters and space\n code > 126 // extended ASCII and Unicode\n ) {\n return true;\n }\n }\n \n return false;\n}\n\nfunction encode_key(key: string): string {\n if (needs_quotes(key)) {\n // Escape quotes and backslashes\n const escaped = key.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n return `\"${escaped}\"`;\n }\n return key;\n}\n\nfunction escape_string(str: string): string {\n // Don't escape newlines - preserve them for multi-line strings\n // Godot preserves newlines in strings when writing\n return str\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, '\\\\\"');\n}\n\nfunction serialize_value(value: unknown): string {\n if (value === null || value === undefined) {\n return \"null\";\n }\n\n if (typeof value === \"string\") {\n return `\"${escape_string(value)}\"`;\n }\n\n if (typeof value === \"number\") {\n if (isNaN(value)) {\n return \"nan\";\n }\n if (!isFinite(value)) {\n return value > 0 ? \"inf\" : \"-inf\";\n }\n return String(value);\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n\n // Check for Color object\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"r\" in value &&\n \"g\" in value &&\n \"b\" in value &&\n \"a\" in value &&\n typeof (value as Color).r === \"number\" &&\n typeof (value as Color).g === \"number\" &&\n typeof (value as Color).b === \"number\" &&\n typeof (value as Color).a === \"number\"\n ) {\n const color = value as Color;\n return `Color(${color.r}, ${color.g}, ${color.b}, ${color.a})`;\n }\n\n // Check for Vector2 object\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"x\" in value &&\n \"y\" in value &&\n typeof (value as Vector2).x === \"number\" &&\n typeof (value as Vector2).y === \"number\"\n ) {\n const vec = value as Vector2;\n return `Vector2(${vec.x}, ${vec.y})`;\n }\n\n // Fallback: try to stringify\n return String(value);\n}\n\nexport function serialize_config(\n values: Map<string, Map<string, unknown>>\n): string {\n const sections: string[] = [];\n let first = true;\n\n for (const [section, keys] of values.entries()) {\n if (!first) {\n sections.push(\"\");\n }\n first = false;\n\n if (section) {\n // Escape brackets in section name\n const escapedSection = section.replace(/\\]/g, \"\\\\]\");\n sections.push(`[${escapedSection}]`);\n sections.push(\"\");\n }\n\n for (const [key, value] of keys.entries()) {\n const encodedKey = encode_key(key);\n const serializedValue = serialize_value(value);\n sections.push(`${encodedKey}=${serializedValue}`);\n }\n }\n\n const result = sections.join(\"\\n\");\n // Godot adds a trailing newline after the last line\n return result + \"\\n\";\n}\n\n","/**\n * ConfigFile class for reading and writing Godot config files\n * Based on Godot's ConfigFile implementation\n */\n\nimport { parse_config } from \"./parser.js\";\nimport { serialize_config } from \"./writer.js\";\nimport { writeFile } from \"node:fs/promises\";\n\nexport class ConfigFile {\n private values = new Map<string, Map<string, unknown>>();\n\n /**\n * Parse config file content\n * @param content Config file content as string\n * @returns Error if parsing failed, undefined on success\n */\n parse(content: string): Error | undefined {\n const { values, error } = parse_config(content);\n if (error) {\n return error;\n }\n this.values = values;\n return undefined;\n }\n\n /**\n * Get a value from the config file\n * @param section Section name (empty string for section-less keys)\n * @param key Key name\n * @param defaultValue Optional default value if key doesn't exist\n * @returns The value or default value\n */\n get_value(section: string, key: string, defaultValue?: unknown): unknown {\n const sectionMap = this.values.get(section);\n if (!sectionMap) {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n throw new Error(\n `Section \"${section}\" not found and no default value provided`\n );\n }\n if (!sectionMap.has(key)) {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n throw new Error(\n `Key \"${key}\" not found in section \"${section}\" and no default value provided`\n );\n }\n return sectionMap.get(key);\n }\n\n /**\n * Set a value in the config file\n * @param section Section name (empty string for section-less keys)\n * @param key Key name\n * @param value Value to set\n */\n set_value(section: string, key: string, value: unknown): void {\n if (!this.values.has(section)) {\n this.values.set(section, new Map());\n }\n this.values.get(section)!.set(key, value);\n }\n\n /**\n * Save config file to disk\n * @param path File path to save to\n */\n async save(path: string): Promise<void> {\n const content = serialize_config(this.values);\n await writeFile(path, content, \"utf-8\");\n }\n\n /**\n * Check if a section exists\n * @param section Section name\n * @returns True if section exists\n */\n has_section(section: string): boolean {\n return this.values.has(section);\n }\n\n /**\n * Check if a key exists in a section\n * @param section Section name\n * @param key Key name\n * @returns True if key exists in section\n */\n has_section_key(section: string, key: string): boolean {\n const sectionMap = this.values.get(section);\n if (!sectionMap) {\n return false;\n }\n return sectionMap.has(key);\n }\n\n /**\n * Clear all values\n */\n clear(): void {\n this.values.clear();\n }\n\n /**\n * Get all section names\n */\n get_sections(): string[] {\n return Array.from(this.values.keys());\n }\n\n /**\n * Get all keys in a section\n */\n get_section_keys(section: string): string[] {\n const sectionMap = this.values.get(section);\n if (!sectionMap) {\n return [];\n }\n return Array.from(sectionMap.keys());\n }\n\n /**\n * Encode config to text format\n */\n encode_to_text(): string {\n return serialize_config(this.values);\n }\n}\n\n","/**\n * Parser for export_presets.cfg file format\n */\n\nimport { ConfigFile } from \"../config-file.js\";\nimport type { ExportPreset, ExportPresetsFile, PresetOptions } from \"./types.js\";\n\nexport function parseExportPresets(content: string): ExportPresetsFile {\n const configFile = new ConfigFile();\n const error = configFile.parse(content);\n\n if (error) {\n throw error;\n }\n\n const presets: ExportPreset[] = [];\n const sections = configFile.get_sections();\n\n // Find all preset sections (preset.0, preset.1, etc.)\n const presetSections = sections\n .filter((s) => s.startsWith(\"preset.\") && !s.includes(\".options\"))\n .sort((a, b) => {\n const aNum = parseInt(a.split(\".\")[1] || \"0\", 10);\n const bNum = parseInt(b.split(\".\")[1] || \"0\", 10);\n return aNum - bNum;\n });\n\n for (const presetSection of presetSections) {\n const preset: ExportPreset = {\n name: \"\",\n platform: \"\",\n runnable: false,\n };\n\n // Get all keys from the preset section\n const keys = configFile.get_section_keys(presetSection);\n for (const key of keys) {\n const value = configFile.get_value(presetSection, key);\n if (key === \"options\") {\n // This shouldn't happen, but handle it\n continue;\n }\n (preset as Record<string, unknown>)[key] = value;\n }\n\n // Get options from preset.X.options section\n const optionsSection = `${presetSection}.options`;\n if (configFile.has_section(optionsSection)) {\n const options: PresetOptions = {};\n const optionKeys = configFile.get_section_keys(optionsSection);\n for (const key of optionKeys) {\n options[key] = configFile.get_value(optionsSection, key);\n }\n preset.options = options;\n }\n\n presets.push(preset);\n }\n\n return { presets };\n}\n\n","/**\n * Serializer for export_presets.cfg file format\n */\n\nimport { ConfigFile } from \"../config-file.js\";\nimport type { ExportPreset, ExportPresetsFile } from \"./types.js\";\n\nexport function serializeExportPresets(presets: ExportPresetsFile): string {\n const configFile = new ConfigFile();\n\n for (let i = 0; i < presets.presets.length; i++) {\n const preset = presets.presets[i];\n const presetSection = `preset.${i}`;\n const optionsSection = `${presetSection}.options`;\n\n // Write preset properties (excluding options)\n for (const [key, value] of Object.entries(preset)) {\n if (key === \"options\") {\n continue;\n }\n configFile.set_value(presetSection, key, value);\n }\n\n // Write options\n if (preset.options) {\n for (const [key, value] of Object.entries(preset.options)) {\n configFile.set_value(optionsSection, key, value);\n }\n }\n }\n\n // Use ConfigFile's internal serialization\n return configFile.encode_to_text();\n}\n\n","/**\n * File I/O operations for export presets\n */\n\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { parseExportPresets } from \"./parser.js\";\nimport { serializeExportPresets } from \"./serializer.js\";\nimport type { ExportPresetsFile } from \"./types.js\";\n\nexport async function loadExportPresets(\n filePath: string\n): Promise<ExportPresetsFile> {\n try {\n const content = await readFile(filePath, \"utf-8\");\n return parseExportPresets(content);\n } catch (error: unknown) {\n if (\n error &&\n typeof error === \"object\" &&\n \"code\" in error &&\n error.code === \"ENOENT\"\n ) {\n throw new Error(`File not found: ${filePath}`);\n }\n throw error;\n }\n}\n\nexport async function saveExportPresets(\n filePath: string,\n presets: ExportPresetsFile\n): Promise<void> {\n const content = serializeExportPresets(presets);\n await writeFile(filePath, content, \"utf-8\");\n}\n\n","/**\n * Preset operations: get, find, set, remove\n */\n\nimport type {\n ExportPreset,\n ExportPresetsFile,\n FindPresetCriteria,\n} from \"./types.js\";\n\nexport function getPreset(\n presets: ExportPresetsFile,\n index: number\n): ExportPreset | undefined {\n if (index < 0 || index >= presets.presets.length) {\n return undefined;\n }\n return presets.presets[index];\n}\n\nexport function findPreset(\n presets: ExportPresetsFile,\n criteria: FindPresetCriteria\n): ExportPreset | undefined {\n if (criteria.index !== undefined) {\n return getPreset(presets, criteria.index);\n }\n\n for (const preset of presets.presets) {\n if (criteria.platform) {\n const presetPlatform = String(preset.platform || \"\").trim().toUpperCase();\n const searchPlatform = criteria.platform.trim().toUpperCase();\n if (presetPlatform === searchPlatform) {\n return preset;\n }\n }\n\n if (criteria.name) {\n const presetName = String(preset.name || \"\").trim().toUpperCase();\n const searchName = criteria.name.trim().toUpperCase();\n if (presetName === searchName) {\n return preset;\n }\n }\n }\n\n return undefined;\n}\n\nexport function setPreset(\n presets: ExportPresetsFile,\n preset: ExportPreset,\n index?: number\n): ExportPresetsFile {\n const newPresets = [...presets.presets];\n\n if (index !== undefined && index >= 0 && index < newPresets.length) {\n // Update existing preset\n newPresets[index] = preset;\n } else {\n // Add new preset\n newPresets.push(preset);\n }\n\n return { presets: newPresets };\n}\n\nexport function removePreset(\n presets: ExportPresetsFile,\n index: number\n): ExportPresetsFile {\n if (index < 0 || index >= presets.presets.length) {\n return presets;\n }\n\n const newPresets = [...presets.presets];\n newPresets.splice(index, 1);\n return { presets: newPresets };\n}\n\n","/**\n * Merging functions for presets and options\n */\n\nimport type { ExportPreset, PresetOptions } from \"./types.js\";\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.prototype.toString.call(value) === \"[object Object]\"\n );\n}\n\nfunction deepMerge(\n target: Record<string, unknown>,\n source: Record<string, unknown>\n): Record<string, unknown> {\n const result = { ...target };\n\n for (const [key, sourceValue] of Object.entries(source)) {\n const targetValue = result[key];\n\n if (\n isPlainObject(targetValue) &&\n isPlainObject(sourceValue) &&\n key !== \"options\"\n ) {\n // Deep merge objects (except options which we handle separately)\n result[key] = deepMerge(\n targetValue as Record<string, unknown>,\n sourceValue as Record<string, unknown>\n );\n } else {\n // Override with source value\n result[key] = sourceValue;\n }\n }\n\n return result;\n}\n\nexport function mergePresets(...presets: ExportPreset[]): ExportPreset {\n if (presets.length === 0) {\n throw new Error(\"At least one preset required for merging\");\n }\n\n if (presets.length === 1) {\n return {\n ...presets[0],\n options: presets[0].options ? { ...presets[0].options } : undefined,\n };\n }\n\n // Start with first preset (deep copy)\n let merged: ExportPreset = {\n ...presets[0],\n options: presets[0].options ? { ...presets[0].options } : undefined,\n };\n\n // Merge each subsequent preset\n for (let i = 1; i < presets.length; i++) {\n const current = presets[i];\n\n // Deep merge the main preset properties (excluding options)\n const currentWithoutOptions: Record<string, unknown> = { ...current };\n delete currentWithoutOptions.options;\n\n merged = deepMerge(\n merged as Record<string, unknown>,\n currentWithoutOptions\n ) as ExportPreset;\n\n // Merge options separately (always merge, even if one is undefined)\n merged.options = mergeOptions(\n merged.options || {},\n current.options || {}\n );\n }\n\n return merged;\n}\n\nexport function mergeOptions(...options: PresetOptions[]): PresetOptions {\n if (options.length === 0) {\n return {};\n }\n\n if (options.length === 1) {\n return { ...options[0] };\n }\n\n // Simple shallow merge for options (they're flat key-value pairs)\n const merged: PresetOptions = {};\n for (const opts of options) {\n Object.assign(merged, opts);\n }\n\n return merged;\n}\n\n","/**\n * Base preset definitions for common platforms and Godot versions\n */\n\nimport type { ExportPreset } from \"./types.js\";\n\nexport type GodotMajorVersion = 3 | 4;\nexport type Platform = \"Android\" | \"iOS\";\n\n/**\n * Extract major version number from version string\n * @param version Version string (e.g., \"4.3.2\", \"3.5.1\")\n * @returns Major version number (3 or 4)\n */\nexport function getMajorVersion(version: string): GodotMajorVersion {\n const match = version.match(/^(\\d+)/);\n if (!match) {\n throw new Error(`Invalid version string: ${version}`);\n }\n const major = parseInt(match[1], 10);\n if (major !== 3 && major !== 4) {\n throw new Error(`Unsupported Godot version: ${major}`);\n }\n return major as GodotMajorVersion;\n}\n\n/**\n * Check if a base preset exists for the given platform and version\n */\nexport function hasBasePreset(\n platform: Platform,\n version: GodotMajorVersion\n): boolean {\n return (\n (platform === \"Android\" && (version === 3 || version === 4)) ||\n (platform === \"iOS\" && (version === 3 || version === 4))\n );\n}\n\n/**\n * Get base preset for platform and version\n */\nexport function getBasePreset(\n platform: Platform,\n version: GodotMajorVersion\n): ExportPreset {\n switch (platform) {\n case \"Android\":\n return version === 3\n ? getBasePreset_Android_v3()\n : getBasePreset_Android_v4();\n case \"iOS\":\n return version === 3\n ? getBasePreset_iOS_v3()\n : getBasePreset_iOS_v4();\n default:\n throw new Error(\n `Unsupported platform: ${platform}. Supported platforms: Android, iOS`\n );\n }\n}\n\n/**\n * Base preset for Android (Godot 3.x)\n */\nexport function getBasePreset_Android_v3(): ExportPreset {\n return {\n name: \"Android\",\n platform: \"Android\",\n runnable: true,\n advanced_options: false,\n dedicated_server: false,\n custom_features: \"\",\n export_filter: \"all_resources\",\n include_filter: \"*.json\",\n exclude_filter: \"\",\n export_path: \"game.aab\",\n encryption_include_filters: \"\",\n encryption_exclude_filters: \"\",\n encrypt_pck: false,\n encrypt_directory: false,\n script_export_mode: 1,\n options: {\n \"custom_build/use_custom_build\": true,\n \"custom_build/export_format\": 1,\n \"custom_build/min_sdk\": \"\",\n \"custom_build/target_sdk\": \"\",\n \"architectures/armeabi-v7a\": false,\n \"architectures/arm64-v8a\": true,\n \"architectures/x86\": false,\n \"architectures/x86_64\": false,\n \"one_click_deploy/clear_previous_install\": true,\n \"package/signed\": true,\n \"package/classify_as_game\": true,\n \"package/retain_data_on_uninstall\": false,\n \"package/exclude_from_recents\": false,\n \"launcher_icons/main_192x192\": \"\",\n \"launcher_icons/adaptive_foreground_432x432\": \"\",\n \"launcher_icons/adaptive_background_432x432\": \"\",\n \"graphics/opengl_debug\": false,\n \"xr_features/xr_mode\": 0,\n \"xr_features/hand_tracking\": 0,\n \"xr_features/hand_tracking_frequency\": 0,\n \"xr_features/passthrough\": 0,\n \"screen/immersive_mode\": true,\n \"screen/support_small\": true,\n \"screen/support_normal\": true,\n \"screen/support_large\": true,\n \"screen/support_xlarge\": true,\n \"user_data_backup/allow\": true,\n \"command_line/extra_args\": \"\",\n \"apk_expansion/enable\": false,\n \"apk_expansion/salt\": \"\",\n \"apk_expansion/public_key\": \"\",\n \"permissions/custom_permissions\": \"PoolStringArray( )\",\n \"permissions/access_checkin_properties\": false,\n \"permissions/access_coarse_location\": false,\n \"permissions/access_fine_location\": false,\n \"permissions/access_location_extra_commands\": false,\n \"permissions/access_mock_location\": false,\n \"permissions/access_network_state\": false,\n \"permissions/access_surface_flinger\": false,\n \"permissions/access_wifi_state\": false,\n \"permissions/account_manager\": false,\n \"permissions/add_voicemail\": false,\n \"permissions/authenticate_accounts\": false,\n \"permissions/battery_stats\": false,\n \"permissions/bind_accessibility_service\": false,\n \"permissions/bind_appwidget\": false,\n \"permissions/bind_device_admin\": false,\n \"permissions/bind_input_method\": false,\n \"permissions/bind_nfc_service\": false,\n \"permissions/bind_notification_listener_service\": false,\n \"permissions/bind_print_service\": false,\n \"permissions/bind_remoteviews\": false,\n \"permissions/bind_text_service\": false,\n \"permissions/bind_vpn_service\": false,\n \"permissions/bind_wallpaper\": false,\n \"permissions/bluetooth\": false,\n \"permissions/bluetooth_admin\": false,\n \"permissions/bluetooth_privileged\": false,\n \"permissions/brick\": false,\n \"permissions/broadcast_package_removed\": false,\n \"permissions/broadcast_sms\": false,\n \"permissions/broadcast_sticky\": false,\n \"permissions/broadcast_wap_push\": false,\n \"permissions/call_phone\": false,\n \"permissions/call_privileged\": false,\n \"permissions/camera\": false,\n \"permissions/capture_audio_output\": false,\n \"permissions/capture_secure_video_output\": false,\n \"permissions/capture_video_output\": false,\n \"permissions/change_component_enabled_state\": false,\n \"permissions/change_configuration\": false,\n \"permissions/change_network_state\": false,\n \"permissions/change_wifi_multicast_state\": false,\n \"permissions/change_wifi_state\": false,\n \"permissions/clear_app_cache\": false,\n \"permissions/clear_app_user_data\": false,\n \"permissions/control_location_updates\": false,\n \"permissions/delete_cache_files\": false,\n \"permissions/delete_packages\": false,\n \"permissions/device_power\": false,\n \"permissions/diagnostic\": false,\n \"permissions/disable_keyguard\": false,\n \"permissions/dump\": false,\n \"permissions/expand_status_bar\": false,\n \"permissions/factory_test\": false,\n \"permissions/flashlight\": false,\n \"permissions/force_back\": false,\n \"permissions/get_accounts\": false,\n \"permissions/get_package_size\": false,\n \"permissions/get_tasks\": false,\n \"permissions/get_top_activity_info\": false,\n \"permissions/global_search\": false,\n \"permissions/hardware_test\": false,\n \"permissions/inject_events\": false,\n \"permissions/install_location_provider\": false,\n \"permissions/install_packages\": false,\n \"permissions/install_shortcut\": false,\n \"permissions/internal_system_window\": false,\n \"permissions/internet\": false,\n \"permissions/kill_background_processes\": false,\n \"permissions/location_hardware\": false,\n \"permissions/manage_accounts\": false,\n \"permissions/manage_app_tokens\": false,\n \"permissions/manage_documents\": false,\n \"permissions/manage_external_storage\": false,\n \"permissions/master_clear\": false,\n \"permissions/media_content_control\": false,\n \"permissions/modify_audio_settings\": false,\n \"permissions/modify_phone_state\": false,\n \"permissions/mount_format_filesystems\": false,\n \"permissions/mount_unmount_filesystems\": false,\n \"permissions/nfc\": false,\n \"permissions/persistent_activity\": false,\n \"permissions/process_outgoing_calls\": false,\n \"permissions/read_calendar\": false,\n \"permissions/read_call_log\": false,\n \"permissions/read_contacts\": false,\n \"permissions/read_external_storage\": false,\n \"permissions/read_frame_buffer\": false,\n \"permissions/read_history_bookmarks\": false,\n \"permissions/read_input_state\": false,\n \"permissions/read_logs\": false,\n \"permissions/read_phone_state\": false,\n \"permissions/read_profile\": false,\n \"permissions/read_sms\": false,\n \"permissions/read_social_stream\": false,\n \"permissions/read_sync_settings\": false,\n \"permissions/read_sync_stats\": false,\n \"permissions/read_user_dictionary\": false,\n \"permissions/reboot\": false,\n \"permissions/receive_boot_completed\": false,\n \"permissions/receive_mms\": false,\n \"permissions/receive_sms\": false,\n \"permissions/receive_wap_push\": false,\n \"permissions/record_audio\": false,\n \"permissions/reorder_tasks\": false,\n \"permissions/restart_packages\": false,\n \"permissions/send_respond_via_message\": false,\n \"permissions/send_sms\": false,\n \"permissions/set_activity_watcher\": false,\n \"permissions/set_alarm\": false,\n \"permissions/set_always_finish\": false,\n \"permissions/set_animation_scale\": false,\n \"permissions/set_debug_app\": false,\n \"permissions/set_orientation\": false,\n \"permissions/set_pointer_speed\": false,\n \"permissions/set_preferred_applications\": false,\n \"permissions/set_process_limit\": false,\n \"permissions/set_time\": false,\n \"permissions/set_time_zone\": false,\n \"permissions/set_wallpaper\": false,\n \"permissions/set_wallpaper_hints\": false,\n \"permissions/signal_persistent_processes\": false,\n \"permissions/status_bar\": false,\n \"permissions/subscribed_feeds_read\": false,\n \"permissions/subscribed_feeds_write\": false,\n \"permissions/system_alert_window\": false,\n \"permissions/transmit_ir\": false,\n \"permissions/uninstall_shortcut\": false,\n \"permissions/update_device_stats\": false,\n \"permissions/use_credentials\": false,\n \"permissions/use_sip\": false,\n \"permissions/vibrate\": false,\n \"permissions/wake_lock\": false,\n \"permissions/write_apn_settings\": false,\n \"permissions/write_calendar\": false,\n \"permissions/write_call_log\": false,\n \"permissions/write_contacts\": false,\n \"permissions/write_external_storage\": false,\n \"permissions/write_gservices\": false,\n \"permissions/write_history_bookmarks\": false,\n \"permissions/write_profile\": false,\n \"permissions/write_secure_settings\": false,\n \"permissions/write_settings\": false,\n \"permissions/write_sms\": false,\n \"permissions/write_social_stream\": false,\n \"permissions/write_sync_settings\": false,\n \"permissions/write_user_dictionary\": false,\n },\n };\n}\n\n/**\n * Base preset for Android (Godot 4.x)\n */\nexport function getBasePreset_Android_v4(): ExportPreset {\n return {\n name: \"Android\",\n platform: \"Android\",\n runnable: true,\n advanced_options: false,\n dedicated_server: false,\n custom_features: \"\",\n export_filter: \"all_resources\",\n include_filter: \"\",\n exclude_filter: \"\",\n export_path: \"game.aab\",\n encryption_include_filters: \"\",\n encryption_exclude_filters: \"\",\n encrypt_pck: false,\n encrypt_directory: false,\n script_export_mode: 2,\n options: {\n \"gradle_build/use_gradle_build\": true,\n \"gradle_build/export_format\": 1,\n \"gradle_build/compress_native_libraries\": false,\n \"gradle_build/min_sdk\": \"\",\n \"gradle_build/target_sdk\": \"\",\n \"architectures/armeabi-v7a\": false,\n \"architectures/arm64-v8a\": true,\n \"architectures/x86\": false,\n \"architectures/x86_64\": false,\n \"package/signed\": true,\n \"package/app_category\": 2,\n \"package/retain_data_on_uninstall\": false,\n \"package/exclude_from_recents\": false,\n \"package/show_in_android_tv\": false,\n \"package/show_in_app_library\": true,\n \"package/show_as_launcher_app\": false,\n \"launcher_icons/main_192x192\": \"\",\n \"launcher_icons/adaptive_foreground_432x432\": \"\",\n \"launcher_icons/adaptive_background_432x432\": \"\",\n \"graphics/opengl_debug\": false,\n \"xr_features/xr_mode\": 0,\n \"screen/immersive_mode\": true,\n \"screen/support_small\": true,\n \"screen/support_normal\": true,\n \"screen/support_large\": true,\n \"screen/support_xlarge\": true,\n \"user_data_backup/allow\": false,\n \"command_line/extra_args\": \"\",\n \"apk_expansion/enable\": false,\n \"apk_expansion/SALT\": \"\",\n \"apk_expansion/public_key\": \"\",\n \"permissions/custom_permissions\": \"PackedStringArray()\",\n \"permissions/access_checkin_properties\": false,\n \"permissions/access_coarse_location\": false,\n \"permissions/access_fine_location\": false,\n \"permissions/access_location_extra_commands\": false,\n \"permissions/access_mock_location\": false,\n \"permissions/access_network_state\": false,\n \"permissions/access_surface_flinger\": false,\n \"permissions/access_wifi_state\": false,\n \"permissions/account_manager\": false,\n \"permissions/add_voicemail\": false,\n \"permissions/authenticate_accounts\": false,\n \"permissions/battery_stats\": false,\n \"permissions/bind_accessibility_service\": false,\n \"permissions/bind_appwidget\": false,\n \"permissions/bind_device_admin\": false,\n \"permissions/bind_input_method\": false,\n \"permissions/bind_nfc_service\": false,\n \"permissions/bind_notification_listener_service\": false,\n \"permissions/bind_print_service\": false,\n \"permissions/bind_remoteviews\": false,\n \"permissions/bind_text_service\": false,\n \"permissions/bind_vpn_service\": false,\n \"permissions/bind_wallpaper\": false,\n \"permissions/bluetooth\": false,\n \"permissions/bluetooth_admin\": false,\n \"permissions/bluetooth_privileged\": false,\n \"permissions/brick\": false,\n \"permissions/broadcast_package_removed\": false,\n \"permissions/broadcast_sms\": false,\n \"permissions/broadcast_sticky\": false,\n \"permissions/broadcast_wap_push\": false,\n \"permissions/call_phone\": false,\n \"permissions/call_privileged\": false,\n \"permissions/camera\": false,\n \"permissions/capture_audio_output\": false,\n \"permissions/capture_secure_video_output\": false,\n \"permissions/capture_video_output\": false,\n \"permissions/change_component_enabled_state\": false,\n \"permissions/change_configuration\": false,\n \"permissions/change_network_state\": false,\n \"permissions/change_wifi_multicast_state\": false,\n \"permissions/change_wifi_state\": false,\n \"permissions/clear_app_cache\": false,\n \"permissions/clear_app_user_data\": false,\n \"permissions/control_location_updates\": false,\n \"permissions/delete_cache_files\": false,\n \"permissions/delete_packages\": false,\n \"permissions/device_power\": false,\n \"permissions/diagnostic\": false,\n \"permissions/disable_keyguard\": false,\n \"permissions/dump\": false,\n \"permissions/expand_status_bar\": false,\n \"permissions/factory_test\": false,\n \"permissions/flashlight\": false,\n \"permissions/force_back\": false,\n \"permissions/get_accounts\": false,\n \"permissions/get_package_size\": false,\n \"permissions/get_tasks\": false,\n \"permissions/get_top_activity_info\": false,\n \"permissions/global_search\": false,\n \"permissions/hardware_test\": false,\n \"permissions/inject_events\": false,\n \"permissions/install_location_provider\": false,\n \"permissions/install_packages\": false,\n \"permissions/install_shortcut\": false,\n \"permissions/internal_system_window\": false,\n \"permissions/internet\": false,\n \"permissions/kill_background_processes\": false,\n \"permissions/location_hardware\": false,\n \"permissions/manage_accounts\": false,\n \"permissions/manage_app_tokens\": false,\n \"permissions/manage_documents\": false,\n \"permissions/manage_external_storage\": false,\n \"permissions/master_clear\": false,\n \"permissions/media_content_control\": false,\n \"permissions/modify_audio_settings\": false,\n \"permissions/modify_phone_state\": false,\n \"permissions/mount_format_filesystems\": false,\n \"permissions/mount_unmount_filesystems\": false,\n \"permissions/nfc\": false,\n \"permissions/persistent_activity\": false,\n \"permissions/process_outgoing_calls\": false,\n \"permissions/read_calendar\": false,\n \"permissions/read_call_log\": false,\n \"permissions/read_contacts\": false,\n \"permissions/read_external_storage\": false,\n \"permissions/read_frame_buffer\": false,\n \"permissions/read_history_bookmarks\": false,\n \"permissions/read_input_state\": false,\n \"permissions/read_logs\": false,\n \"permissions/read_phone_state\": false,\n \"permissions/read_profile\": false,\n \"permissions/read_sms\": false,\n \"permissions/read_social_stream\": false,\n \"permissions/read_sync_settings\": false,\n \"permissions/read_sync_stats\": false,\n \"permissions/read_user_dictionary\": false,\n \"permissions/reboot\": false,\n \"permissions/receive_boot_completed\": false,\n \"permissions/receive_mms\": false,\n \"permissions/receive_sms\": false,\n \"permissions/receive_wap_push\": false,\n \"permissions/record_audio\": false,\n \"permissions/reorder_tasks\": false,\n \"permissions/restart_packages\": false,\n \"permissions/send_respond_via_message\": false,\n \"permissions/send_sms\": false,\n \"permissions/set_activity_watcher\": false,\n \"permissions/set_alarm\": false,\n \"permissions/set_always_finish\": false,\n \"permissions/set_animation_scale\": false,\n \"permissions/set_debug_app\": false,\n \"permissions/set_orientation\": false,\n \"permissions/set_pointer_speed\": false,\n \"permissions/set_preferred_applications\": false,\n \"permissions/set_process_limit\": false,\n \"permissions/set_time\": false,\n \"permissions/set_time_zone\": false,\n \"permissions/set_wallpaper\": false,\n \"permissions/set_wallpaper_hints\": false,\n \"permissions/signal_persistent_processes\": false,\n \"permissions/status_bar\": false,\n \"permissions/subscribed_feeds_read\": false,\n \"permissions/subscribed_feeds_write\": false,\n \"permissions/system_alert_window\": false,\n \"permissions/transmit_ir\": false,\n \"permissions/uninstall_shortcut\": false,\n \"permissions/update_device_stats\": false,\n \"permissions/use_credentials\": false,\n \"permissions/use_sip\": false,\n \"permissions/vibrate\": false,\n \"permissions/wake_lock\": false,\n \"permissions/write_apn_settings\": false,\n \"permissions/write_calendar\": false,\n \"permissions/write_call_log\": false,\n \"permissions/write_contacts\": false,\n \"permissions/write_external_storage\": false,\n \"permissions/write_gservices\": false,\n \"permissions/write_history_bookmarks\": false,\n \"permissions/write_profile\": false,\n \"permissions/write_secure_settings\": false,\n \"permissions/write_settings\": false,\n \"permissions/write_sms\": false,\n \"permissions/write_social_stream\": false,\n \"permissions/write_sync_settings\": false,\n \"permissions/write_user_dictionary\": false,\n },\n };\n}\n\n/**\n * Base preset for iOS (Godot 3.x)\n */\nexport function getBasePreset_iOS_v3(): ExportPreset {\n return {\n name: \"iOS\",\n platform: \"iOS\",\n runnable: true,\n custom_features: \"\",\n export_filter: \"all_resources\",\n include_filter: \"\",\n exclude_filter: \"\",\n export_path: \"\",\n script_export_mode: 1,\n script_encryption_key: \"\",\n options: {\n \"custom_template/debug\": \"\",\n \"architectures/armv7\": false,\n \"architectures/arm64\": true,\n \"application/copyright\": \"\",\n \"application/icon_interpolation\": 4,\n \"application/info\": \"Made with Godot Engine\",\n \"application/provisioning_profile_uuid_debug\": \"\",\n \"application/provisioning_profile_uuid_release\": \"\",\n \"application/signature\": \"\",\n \"application/targeted_device_family\": 2,\n \"capabilities/access_wifi\": false,\n \"capabilities/push_notifications\": false,\n \"user_data/accessible_from_files_app\": false,\n \"user_data/accessible_from_itunes_sharing\": false,\n \"privacy/camera_usage_description\": \"\",\n \"privacy/microphone_usage_description\": \"\",\n \"privacy/photolibrary_usage_description\": \"\",\n \"privacy/file_timestamp_access_reasons\": 3,\n \"privacy/system_boot_time_access_reasons\": 1,\n \"privacy/disk_space_access_reasons\": 3,\n \"privacy/active_keyboard_access_reasons\": 0,\n \"privacy/user_defaults_access_reasons\": 0,\n \"privacy/tracking_enabled\": false,\n \"privacy/tracking_domains\": \"PoolStringArray( )\",\n \"privacy/collected_data/name/collected\": false,\n \"privacy/collected_data/name/linked_to_user\": false,\n \"privacy/collected_data/name/used_for_tracking\": false,\n \"privacy/collected_data/name/collection_purposes\": 0,\n \"privacy/collected_data/email_address/collected\": false,\n \"privacy/collected_data/email_address/linked_to_user\": false,\n \"privacy/collected_data/email_address/used_for_tracking\": false,\n \"privacy/collected_data/email_address/collection_purposes\": 0,\n \"privacy/collected_data/phone_number/collected\": false,\n \"privacy/collected_data/phone_number/linked_to_user\": false,\n \"privacy/collected_data/phone_number/used_for_tracking\": false,\n \"privacy/collected_data/phone_number/collection_purposes\": 0,\n \"privacy/collected_data/physical_address/collected\": false,\n \"privacy/collected_data/physical_address/linked_to_user\": false,\n \"privacy/collected_data/physical_address/used_for_tracking\": false,\n \"privacy/collected_data/physical_address/collection_purposes\": 0,\n \"privacy/collected_data/other_contact_info/collected\": false,\n \"privacy/collected_data/other_contact_info/linked_to_user\": false,\n \"privacy/collected_data/other_contact_info/used_for_tracking\": false,\n \"privacy/collected_data/other_contact_info/collection_purposes\": 0,\n \"privacy/collected_data/health/collected\": false,\n \"privacy/collected_data/health/linked_to_user\": false,\n \"privacy/collected_data/health/used_for_tracking\": false,\n \"privacy/collected_data/health/collection_purposes\": 0,\n \"privacy/collected_data/fitness/collected\": false,\n \"privacy/collected_data/fitness/linked_to_user\": false,\n \"privacy/collected_data/fitness/used_for_tracking\": false,\n \"privacy/collected_data/fitness/collection_purposes\": 0,\n \"privacy/collected_data/payment_info/collected\": false,\n \"privacy/collected_data/payment_info/linked_to_user\": false,\n \"privacy/collected_data/payment_info/used_for_tracking\": false,\n \"privacy/collected_data/payment_info/collection_purposes\": 0,\n \"privacy/collected_data/credit_info/collected\": false,\n \"privacy/collected_data/credit_info/linked_to_user\": false,\n \"privacy/collected_data/credit_info/used_for_tracking\": false,\n \"privacy/collected_data/credit_info/collection_purposes\": 0,\n \"privacy/collected_data/other_financial_info/collected\": false,\n \"privacy/collected_data/other_financial_info/linked_to_user\": false,\n \"privacy/collected_data/other_financial_info/used_for_tracking\": false,\n \"privacy/collected_data/other_financial_info/collection_purposes\": 0,\n \"privacy/collected_data/precise_location/collected\": false,\n \"privacy/collected_data/precise_location/linked_to_user\": false,\n \"privacy/collected_data/precise_location/used_for_tracking\": false,\n \"privacy/collected_data/precise_location/collection_purposes\": 0,\n \"privacy/collected_data/coarse_location/collected\": false,\n \"privacy/collected_data/coarse_location/linked_to_user\": false,\n \"privacy/collected_data/coarse_location/used_for_tracking\": false,\n \"privacy/collected_data/coarse_location/collection_purposes\": 0,\n \"privacy/collected_data/sensitive_info/collected\": false,\n \"privacy/collected_data/sensitive_info/linked_to_user\": false,\n \"privacy/collected_data/sensitive_info/used_for_tracking\": false,\n \"privacy/collected_data/sensitive_info/collection_purposes\": 0,\n \"privacy/collected_data/contacts/collected\": false,\n \"privacy/collected_data/contacts/linked_to_user\": false,\n \"privacy/collected_data/contacts/used_for_tracking\": false,\n \"privacy/collected_data/contacts/collection_purposes\": 0,\n \"privacy/collected_data/emails_or_text_messages/collected\": false,\n \"privacy/collected_data/emails_or_text_messages/linked_to_user\": false,\n \"privacy/collected_data/emails_or_text_messages/used_for_tracking\": false,\n \"privacy/collected_data/emails_or_text_messages/collection_purposes\": 0,\n \"privacy/collected_data/photos_or_videos/collected\": false,\n \"privacy/collected_data/photos_or_videos/linked_to_user\": false,\n \"privacy/collected_data/photos_or_videos/used_for_tracking\": false,\n \"privacy/collected_data/photos_or_videos/collection_purposes\": 0,\n \"privacy/collected_data/audio_data/collected\": false,\n \"privacy/collected_data/audio_data/linked_to_user\": false,\n \"privacy/collected_data/audio_data/used_for_tracking\": false,\n \"privacy/collected_data/audio_data/collection_purposes\": 0,\n \"privacy/collected_data/gameplay_content/collected\": false,\n \"privacy/collected_data/gameplay_content/linked_to_user\": false,\n \"privacy/collected_data/gameplay_content/used_for_tracking\": false,\n \"privacy/collected_data/gameplay_content/collection_purposes\": 0,\n \"privacy/collected_data/customer_support/collected\": false,\n \"privacy/collected_data/customer_support/linked_to_user\": false,\n \"privacy/collected_data/customer_support/used_for_tracking\": false,\n \"privacy/collected_data/customer_support/collection_purposes\": 0,\n \"privacy/collected_data/other_user_content/collected\": false,\n \"privacy/collected_data/other_user_content/linked_to_user\": false,\n \"privacy/collected_data/other_user_content/used_for_tracking\": false,\n \"privacy/collected_data/other_user_content/collection_purposes\": 0,\n \"privacy/collected_data/browsing_history/collected\": false,\n \"privacy/collected_data/browsing_history/linked_to_user\": false,\n \"privacy/collected_data/browsing_history/used_for_tracking\": false,\n \"privacy/collected_data/browsing_history/collection_purposes\": 0,\n \"privacy/collected_data/search_hhistory/collected\": false,\n \"privacy/collected_data/search_hhistory/linked_to_user\": false,\n \"privacy/collected_data/search_hhistory/used_for_tracking\": false,\n \"privacy/collected_data/search_hhistory/collection_purposes\": 0,\n \"privacy/collected_data/user_id/collected\": false,\n \"privacy/collected_data/user_id/linked_to_user\": false,\n \"privacy/collected_data/user_id/used_for_tracking\": false,\n \"privacy/collected_data/user_id/collection_purposes\": 0,\n \"privacy/collected_data/device_id/collected\": false,\n \"privacy/collected_data/device_id/linked_to_user\": false,\n \"privacy/collected_data/device_id/used_for_tracking\": false,\n \"privacy/collected_data/device_id/collection_purposes\": 0,\n \"privacy/collected_data/purchase_history/collected\": false,\n \"privacy/collected_data/purchase_history/linked_to_user\": false,\n \"privacy/collected_data/purchase_history/used_for_tracking\": false,\n \"privacy/collected_data/purchase_history/collection_purposes\": 0,\n \"privacy/collected_data/product_interaction/collected\": false,\n \"privacy/collected_data/product_interaction/linked_to_user\": false,\n \"privacy/collected_data/product_interaction/used_for_tracking\": false,\n \"privacy/collected_data/product_interaction/collection_purposes\": 0,\n \"privacy/collected_data/advertising_data/collected\": false,\n \"privacy/collected_data/advertising_data/linked_to_user\": false,\n \"privacy/collected_data/advertising_data/used_for_tracking\": false,\n \"privacy/collected_data/advertising_data/collection_purposes\": 0,\n \"privacy/collected_data/other_usage_data/collected\": false,\n \"privacy/collected_data/other_usage_data/linked_to_user\": false,\n \"privacy/collected_data/other_usage_data/used_for_tracking\": false,\n \"privacy/collected_data/other_usage_data/collection_purposes\": 0,\n \"privacy/collected_data/crash_data/collected\": false,\n \"privacy/collected_data/crash_data/linked_to_user\": false,\n \"privacy/collected_data/crash_data/used_for_tracking\": false,\n \"privacy/collected_data/crash_data/collection_purposes\": 0,\n \"privacy/collected_data/performance_data/collected\": false,\n \"privacy/collected_data/performance_data/linked_to_user\": false,\n \"privacy/collected_data/performance_data/used_for_tracking\": false,\n \"privacy/collected_data/performance_data/collection_purposes\": 0,\n \"privacy/collected_data/other_diagnostic_data/collected\": false,\n \"privacy/collected_data/other_diagnostic_data/linked_to_user\": false,\n \"privacy/collected_data/other_diagnostic_data/used_for_tracking\": false,\n \"privacy/collected_data/other_diagnostic_data/collection_purposes\": 0,\n \"privacy/collected_data/environment_scanning/collected\": false,\n \"privacy/collected_data/environment_scanning/linked_to_user\": false,\n \"privacy/collected_data/environment_scanning/used_for_tracking\": false,\n \"privacy/collected_data/environment_scanning/collection_purposes\": 0,\n \"privacy/collected_data/hands/collected\": false,\n \"privacy/collected_data/hands/linked_to_user\": false,\n \"privacy/collected_data/hands/used_for_tracking\": false,\n \"privacy/collected_data/hands/collection_purposes\": 0,\n \"privacy/collected_data/head/collected\": false,\n \"privacy/collected_data/head/linked_to_user\": false,\n \"privacy/collected_data/head/used_for_tracking\": false,\n \"privacy/collected_data/head/collection_purposes\": 0,\n \"privacy/collected_data/other_data_types/collected\": false,\n \"privacy/collected_data/other_data_types/linked_to_user\": false,\n \"privacy/collected_data/other_data_types/used_for_tracking\": false,\n \"privacy/collected_data/other_data_types/collection_purposes\": 0,\n \"icons/app_store_1024x1024\": \"\",\n \"icons/ipad_152x152\": \"\",\n \"icons/ipad_167x167\": \"\",\n \"icons/ipad_76x76\": \"\",\n \"icons/iphone_120x120\": \"\",\n \"icons/iphone_180x180\": \"\",\n \"icons/spotlight_40x40\": \"\",\n \"icons/spotlight_80x80\": \"\",\n \"storyboard/image_scale_mode\": 0,\n \"storyboard/custom_image@2x\": \"\",\n \"storyboard/custom_image@3x\": \"\",\n \"storyboard/use_custom_bg_color\": false,\n \"storyboard/custom_bg_color\": \"Color( 0, 0, 0, 1 )\",\n },\n };\n}\n\n/**\n * Base preset for iOS (Godot 4.x)\n */\nexport function getBasePreset_iOS_v4(): ExportPreset {\n return {\n name: \"iOS\",\n platform: \"iOS\",\n runnable: true,\n dedicated_server: false,\n custom_features: \"\",\n export_filter: \"all_resources\",\n include_filter: \"\",\n exclude_filter: \"\",\n export_path: \"output\",\n encryption_include_filters: \"\",\n encryption_exclude_filters: \"\",\n encrypt_pck: false,\n encrypt_directory: false,\n options: {\n \"custom_template/debug\": \"\",\n \"custom_template/release\": \"\",\n \"architectures/arm64\": true,\n \"application/signature\": \"\",\n \"application/icon_interpolation\": \"4\",\n \"application/launch_screens_interpolation\": \"4\",\n \"application/export_project_only\": true,\n \"capabilities/access_wifi\": false,\n \"capabilities/push_notifications\": false,\n \"user_data/accessible_from_files_app\": false,\n \"user_data/accessible_from_itunes_sharing\": false,\n \"privacy/camera_usage_description\": \"\",\n \"privacy/camera_usage_description_localized\": \"{}\",\n \"privacy/microphone_usage_description\": \"\",\n \"privacy/microphone_usage_description_localized\": \"{}\",\n \"privacy/photolibrary_usage_description\": \"\",\n \"privacy/photolibrary_usage_description_localized\": \"{}\",\n \"icons/app_store_1024x1024\": \"\",\n \"icons/ipad_152x152\": \"\",\n \"icons/ipad_167x167\": \"\",\n \"icons/ipad_76x76\": \"\",\n \"icons/iphone_120x120\": \"\",\n \"icons/iphone_180x180\": \"\",\n \"icons/notification_40x40\": \"\",\n \"icons/notification_60x60\": \"\",\n \"icons/settings_58x58\": \"\",\n \"icons/settings_87x87\": \"\",\n \"icons/spotlight_40x40\": \"\",\n \"icons/spotlight_80x80\": \"\",\n \"storyboard/use_launch_screen_storyboard\": true,\n \"storyboard/image_scale_mode\": \"0\",\n \"storyboard/custom_image@2x\": \"\",\n \"storyboard/custom_image@3x\": \"\",\n \"storyboard/use_custom_bg_color\": false,\n \"storyboard/custom_bg_color\": \"Color(0, 0, 0, 1)\",\n \"landscape_launch_screens/iphone_2436x1125\": \"\",\n \"landscape_launch_screens/iphone_2208x1242\": \"\",\n \"landscape_launch_screens/ipad_1024x768\": \"\",\n \"landscape_launch_screens/ipad_2048x1536\": \"\",\n \"portrait_launch_screens/iphone_640x960\": \"\",\n \"portrait_launch_screens/iphone_640x1136\": \"\",\n \"portrait_launch_screens/iphone_750x1334\": \"\",\n \"portrait_launch_screens/iphone_1125x2436\": \"\",\n \"portrait_launch_screens/ipad_768x1024\": \"\",\n \"portrait_launch_screens/ipad_1536x2048\": \"\",\n \"portrait_launch_screens/iphone_1242x2208\": \"\",\n },\n };\n}\n\n"]}
|