1082815dcSEvan Bacon"use strict"; 2082815dcSEvan Bacon 3082815dcSEvan BaconObject.defineProperty(exports, "__esModule", { 4082815dcSEvan Bacon value: true 5082815dcSEvan Bacon}); 6082815dcSEvan Baconexports.createRunOncePlugin = createRunOncePlugin; 7082815dcSEvan Baconexports.withRunOnce = void 0; 8082815dcSEvan Baconfunction _history() { 9082815dcSEvan Bacon const data = require("../utils/history"); 10082815dcSEvan Bacon _history = function () { 11082815dcSEvan Bacon return data; 12082815dcSEvan Bacon }; 13082815dcSEvan Bacon return data; 14082815dcSEvan Bacon} 15082815dcSEvan Bacon/** 16082815dcSEvan Bacon * Prevents the same plugin from being run twice. 17082815dcSEvan Bacon * Used for migrating from unversioned expo config plugins to versioned plugins. 18082815dcSEvan Bacon * 19082815dcSEvan Bacon * @param config 20082815dcSEvan Bacon * @param name 21082815dcSEvan Bacon */ 22082815dcSEvan Baconconst withRunOnce = (config, { 23082815dcSEvan Bacon plugin, 24082815dcSEvan Bacon name, 25082815dcSEvan Bacon version 26082815dcSEvan Bacon}) => { 27082815dcSEvan Bacon // Detect if a plugin has already been run on this config. 28082815dcSEvan Bacon if ((0, _history().getHistoryItem)(config, name)) { 29082815dcSEvan Bacon return config; 30*ee216927STomasz Sapeta } 31082815dcSEvan Bacon 32*ee216927STomasz Sapeta // Push the history item so duplicates cannot be run. 33082815dcSEvan Bacon config = (0, _history().addHistoryItem)(config, { 34082815dcSEvan Bacon name, 35082815dcSEvan Bacon version 36082815dcSEvan Bacon }); 37082815dcSEvan Bacon return plugin(config); 38082815dcSEvan Bacon}; 39*ee216927STomasz Sapeta 40082815dcSEvan Bacon/** 41082815dcSEvan Bacon * Helper method for creating mods from existing config functions. 42082815dcSEvan Bacon * 43082815dcSEvan Bacon * @param action 44082815dcSEvan Bacon */ 45082815dcSEvan Baconexports.withRunOnce = withRunOnce; 46082815dcSEvan Baconfunction createRunOncePlugin(plugin, name, version) { 47082815dcSEvan Bacon return (config, props) => { 48082815dcSEvan Bacon return withRunOnce(config, { 49082815dcSEvan Bacon plugin: config => plugin(config, props), 50082815dcSEvan Bacon name, 51082815dcSEvan Bacon version 52082815dcSEvan Bacon }); 53082815dcSEvan Bacon }; 54082815dcSEvan Bacon} 55082815dcSEvan Bacon//# sourceMappingURL=withRunOnce.js.map