1{"version":3,"file":"Serialize.js","names":["serializeAndEvaluate","val","includes","Array","isArray","map","output","property","hasOwnProperty","ConfigError","serializeSkippingMods","serializeAndEvaluatePlugin","name","serializeAfterStaticPlugins"],"sources":["../src/Serialize.ts"],"sourcesContent":["import { ConfigError } from './Errors';\n\nexport function serializeAndEvaluate(val: any): any {\n  if (['undefined', 'string', 'boolean', 'number', 'bigint'].includes(typeof val)) {\n    return val;\n  } else if (typeof val === 'function') {\n    // TODO: Bacon: Should we support async methods?\n    return val();\n  } else if (Array.isArray(val)) {\n    return val.map(serializeAndEvaluate);\n  } else if (typeof val === 'object') {\n    const output: { [key: string]: any } = {};\n    for (const property in val) {\n      if (val.hasOwnProperty(property)) {\n        output[property] = serializeAndEvaluate(val[property]);\n      }\n    }\n    return output;\n  }\n  // symbol\n  throw new ConfigError(`Expo config doesn't support \\`Symbols\\`: ${val}`, 'INVALID_CONFIG');\n}\n\nexport function serializeSkippingMods(val: any): any {\n  if (typeof val === 'object' && !Array.isArray(val)) {\n    const output: { [key: string]: any } = {};\n    for (const property in val) {\n      if (val.hasOwnProperty(property)) {\n        if (property === 'mods' || property === 'plugins') {\n          // Don't serialize mods or plugins\n          output[property] = val[property];\n        } else {\n          output[property] = serializeAndEvaluate(val[property]);\n        }\n      }\n    }\n    return output;\n  }\n  return serializeAndEvaluate(val);\n}\n\nfunction serializeAndEvaluatePlugin(val: any): any {\n  if (['undefined', 'string', 'boolean', 'number', 'bigint'].includes(typeof val)) {\n    return val;\n  } else if (typeof val === 'function') {\n    return val.name ?? 'withAnonymous';\n  } else if (Array.isArray(val)) {\n    return val.map(serializeAndEvaluatePlugin);\n  } else if (typeof val === 'object') {\n    const output: { [key: string]: any } = {};\n    for (const property in val) {\n      if (val.hasOwnProperty(property)) {\n        output[property] = serializeAndEvaluatePlugin(val[property]);\n      }\n    }\n    return output;\n  }\n  // symbol\n  throw new ConfigError(`Expo config doesn't support \\`Symbols\\`: ${val}`, 'INVALID_CONFIG');\n}\n\nexport function serializeAfterStaticPlugins(val: any): any {\n  if (typeof val === 'object' && !Array.isArray(val)) {\n    const output: { [key: string]: any } = {};\n    for (const property in val) {\n      if (val.hasOwnProperty(property)) {\n        if (property === 'mods') {\n          // Don't serialize mods\n          output[property] = val[property];\n        } else if (property === 'plugins' && Array.isArray(val[property])) {\n          // Serialize the mods by removing any config plugins\n          output[property] = val[property].map(serializeAndEvaluatePlugin);\n        } else {\n          output[property] = serializeAndEvaluate(val[property]);\n        }\n      }\n    }\n    return output;\n  }\n  return serializeAndEvaluate(val);\n}\n"],"mappings":"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"}