|
@@ -28,8 +28,6 @@ class Chef {
|
|
|
* @param {Object[]} recipeConfig - The recipe configuration object
|
|
|
* @param {Object} options - The options object storing various user choices
|
|
|
* @param {boolean} options.attempHighlight - Whether or not to attempt highlighting
|
|
|
- * @param {number} progress - The position in the recipe to start from
|
|
|
- * @param {number} [step] - Whether to only execute one operation in the recipe
|
|
|
*
|
|
|
* @returns {Object} response
|
|
|
* @returns {string} response.result - The output of the recipe
|
|
@@ -38,48 +36,20 @@ class Chef {
|
|
|
* @returns {number} response.duration - The number of ms it took to execute the recipe
|
|
|
* @returns {number} response.error - The error object thrown by a failed operation (false if no error)
|
|
|
*/
|
|
|
- async bake(input, recipeConfig, options, progress, step) {
|
|
|
+ async bake(input, recipeConfig, options) {
|
|
|
log.debug("Chef baking");
|
|
|
const startTime = new Date().getTime(),
|
|
|
recipe = new Recipe(recipeConfig),
|
|
|
containsFc = recipe.containsFlowControl(),
|
|
|
notUTF8 = options && options.hasOwnProperty("treatAsUtf8") && !options.treatAsUtf8;
|
|
|
- let error = false;
|
|
|
-
|
|
|
- if (containsFc && ENVIRONMENT_IS_WORKER()) self.setOption("attemptHighlight", false);
|
|
|
-
|
|
|
- // Clean up progress
|
|
|
- if (progress >= recipeConfig.length) {
|
|
|
+ let error = false,
|
|
|
progress = 0;
|
|
|
- }
|
|
|
|
|
|
- if (step) {
|
|
|
- // Unset breakpoint on this step
|
|
|
- recipe.setBreakpoint(progress, false);
|
|
|
- // Set breakpoint on next step
|
|
|
- recipe.setBreakpoint(progress + 1, true);
|
|
|
- }
|
|
|
-
|
|
|
- // If the previously run operation presented a different value to its
|
|
|
- // normal output, we need to recalculate it.
|
|
|
- if (recipe.lastOpPresented(progress)) {
|
|
|
- progress = 0;
|
|
|
- }
|
|
|
-
|
|
|
- // If stepping with flow control, we have to start from the beginning
|
|
|
- // but still want to skip all previous breakpoints.
|
|
|
- // If stepping, we need to start from the beginning as the current dish
|
|
|
- // value may not be for the correct input, so should be recalculated.
|
|
|
- if (progress > 0 && containsFc || step) {
|
|
|
- recipe.removeBreaksUpTo(progress);
|
|
|
- progress = 0;
|
|
|
- }
|
|
|
+ if (containsFc && ENVIRONMENT_IS_WORKER()) self.setOption("attemptHighlight", false);
|
|
|
|
|
|
- // If starting from scratch, load data
|
|
|
- if (progress === 0) {
|
|
|
- const type = input instanceof ArrayBuffer ? Dish.ARRAY_BUFFER : Dish.STRING;
|
|
|
- this.dish.set(input, type);
|
|
|
- }
|
|
|
+ // Load data
|
|
|
+ const type = input instanceof ArrayBuffer ? Dish.ARRAY_BUFFER : Dish.STRING;
|
|
|
+ this.dish.set(input, type);
|
|
|
|
|
|
try {
|
|
|
progress = await recipe.execute(this.dish, progress);
|