1{"version":3,"file":"withRunOnce.js","names":["withRunOnce","config","plugin","name","version","getHistoryItem","addHistoryItem","createRunOncePlugin","props"],"sources":["../../src/plugins/withRunOnce.ts"],"sourcesContent":["import { ConfigPlugin } from '../Plugin.types';\nimport { addHistoryItem, getHistoryItem, PluginHistoryItem } from '../utils/history';\n\n/**\n * Prevents the same plugin from being run twice.\n * Used for migrating from unversioned expo config plugins to versioned plugins.\n *\n * @param config\n * @param name\n */\nexport const withRunOnce: ConfigPlugin<{\n  plugin: ConfigPlugin<void>;\n  name: PluginHistoryItem['name'];\n  version?: PluginHistoryItem['version'];\n}> = (config, { plugin, name, version }) => {\n  // Detect if a plugin has already been run on this config.\n  if (getHistoryItem(config, name)) {\n    return config;\n  }\n\n  // Push the history item so duplicates cannot be run.\n  config = addHistoryItem(config, { name, version });\n\n  return plugin(config);\n};\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createRunOncePlugin<T>(\n  plugin: ConfigPlugin<T>,\n  name: string,\n  version?: string\n): ConfigPlugin<T> {\n  return (config, props) => {\n    return withRunOnce(config, { plugin: (config) => plugin(config, props), name, version });\n  };\n}\n"],"mappings":";;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,WAIX,GAAG,CAACC,MAAD,EAAS;EAAEC,MAAF;EAAUC,IAAV;EAAgBC;AAAhB,CAAT,KAAuC;EAC1C;EACA,IAAI,IAAAC,yBAAA,EAAeJ,MAAf,EAAuBE,IAAvB,CAAJ,EAAkC;IAChC,OAAOF,MAAP;EACD,CAJyC,CAM1C;;;EACAA,MAAM,GAAG,IAAAK,yBAAA,EAAeL,MAAf,EAAuB;IAAEE,IAAF;IAAQC;EAAR,CAAvB,CAAT;EAEA,OAAOF,MAAM,CAACD,MAAD,CAAb;AACD,CAdM;AAgBP;AACA;AACA;AACA;AACA;;;;;AACO,SAASM,mBAAT,CACLL,MADK,EAELC,IAFK,EAGLC,OAHK,EAIY;EACjB,OAAO,CAACH,MAAD,EAASO,KAAT,KAAmB;IACxB,OAAOR,WAAW,CAACC,MAAD,EAAS;MAAEC,MAAM,EAAGD,MAAD,IAAYC,MAAM,CAACD,MAAD,EAASO,KAAT,CAA5B;MAA6CL,IAA7C;MAAmDC;IAAnD,CAAT,CAAlB;EACD,CAFD;AAGD"}