{"version":3,"file":"index.cjs","sources":["../src/loggers/CompactLogger.ts","../src/loggers/ExpandedLogger.ts","../src/loggers/MinimalLogger.ts","../src/loggers/SimpleLogger.ts","../src/loggers/VerboseLogger.ts","../src/simple-process-webpack-plugin.ts"],"sourcesContent":["import chalk from 'chalk';\nimport figures from 'figures';\nimport log from 'log-update';\nimport * as path from 'path';\nimport webpack, { Compiler, WebpackPluginInstance } from 'webpack';\n\nimport { SimpleProgressWebpackPluginOptions } from '../simple-process-webpack-plugin.interfaces';\n\n/**\n * Compact logger\n */\nexport class CompactLogger implements WebpackPluginInstance {\n  /**\n   * Options\n   */\n  private readonly options: SimpleProgressWebpackPluginOptions;\n\n  /**\n   * Constructor\n   *\n   * @param options Options\n   */\n  constructor(options: SimpleProgressWebpackPluginOptions) {\n    this.options = options;\n  }\n\n  /**\n   * Apply\n   *\n   * @param compiler Compiler\n   */\n  public apply(compiler: Compiler): ReturnType<WebpackPluginInstance['apply']> {\n    // Variables for the process, reset after each run\n    let startTime = new Date();\n    let previousStep = 0;\n\n    /**\n     * Use the webpack-internal progress plugin as the base of the logger\n     */\n    const absoluteProjectPath = `${path.resolve('.').toString()}`;\n    return new webpack.ProgressPlugin((progress, message, moduleProgress, activeModules, moduleName) => {\n      // Initial log\n      const logLines = [];\n\n      // Reset process variables for this run\n      if (previousStep === 0) {\n        log(this.options.name);\n        startTime = new Date();\n      }\n\n      // STEP 0: HEADER\n      logLines.push(chalk.white('Webpack: Starting ...\\n'));\n\n      // STEP 1: COMPILATION\n      if (progress >= 0 && progress < 0.1) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 1) {\n          return;\n        }\n        previousStep = 1;\n\n        logLines.push(chalk.white(`  ${figures.pointer} Compile modules`));\n      } else if (progress >= 0.1) {\n        logLines.push(chalk.green(`  ${figures.tick} Compile modules`));\n      }\n\n      // STEP 2: BUILDING\n      if (progress >= 0.1 && progress <= 0.7) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 2) {\n          return;\n        }\n        previousStep = 2;\n\n        // Log progress line (with sub-progress indicator)\n        const subProgress = Math.round(((progress - 0.1) * 10000) / 60);\n        logLines.push(chalk.white(`  ${figures.pointer} Build modules (${subProgress}%)`));\n\n        // Log additional information (if possible)\n        if (moduleName !== undefined) {\n          let betterModuleName = moduleName;\n\n          // Only show the file that is actually being processed (and remove all details about used loaders)\n          if (betterModuleName.indexOf('!') !== -1) {\n            const splitModuleName = betterModuleName.split('!');\n            betterModuleName = splitModuleName[splitModuleName.length - 1];\n          }\n\n          // Transform absolute paths into relative ones (to shorten the so so incredible long path)\n          if (betterModuleName.indexOf(absoluteProjectPath) !== -1) {\n            betterModuleName = betterModuleName\n              .split(`${absoluteProjectPath}`)[1] // Transform absolute path to relative one\n              .substring(1); // Remove leading path slash\n          }\n\n          // Improve the path presentation further by enforcing style consistency and removing unnecessary details\n          betterModuleName = betterModuleName.replace(/\\\\/g, '/').replace('./', '').replace('multi ', '');\n\n          // Add extra details about whether the currently processed module is an internal or external one\n          if (betterModuleName.startsWith('node_modules')) {\n            betterModuleName = `${betterModuleName} ~ external`;\n          }\n          if (betterModuleName.startsWith('src')) {\n            betterModuleName = `${betterModuleName} ~ internal`;\n          }\n\n          const [betterModulesDone, betterAllModules] = moduleProgress.split('/');\n          const moduleDetails = `${betterModulesDone} of ${betterAllModules} :: ${betterModuleName}`;\n          logLines.push(chalk.grey(`    ${figures.arrowRight} ${moduleDetails}`));\n        }\n      } else if (progress > 0.7) {\n        logLines.push(chalk.green(`  ${figures.tick} Build modules`));\n      }\n\n      // STEP 3: OPTIMIZATION\n      if (progress > 0.7 && progress < 0.95) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 3) {\n          return;\n        }\n        previousStep = 3;\n\n        // Log progress line (with sub-progress indicator)\n        const subProgress = Math.round(((progress - 0.71) * 10000) / 23);\n        logLines.push(chalk.white(`  ${figures.pointer} Optimize modules (${subProgress}%)`));\n\n        const formattedMessage = `${message[0].toUpperCase()}${message.slice(1)}`;\n        const formattedMessageExtra = progress === 0.91 ? ' -- may take a while' : ''; // Add some extra info (calming devs down)\n\n        logLines.push(chalk.grey(`    ${figures.arrowRight} ${formattedMessage}${formattedMessageExtra} ...`));\n      } else if (progress >= 0.95) {\n        logLines.push(chalk.green(`  ${figures.tick} Optimize modules`));\n      }\n\n      // STEP 4: EMIT\n      if (progress >= 0.95 && progress < 1) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 4) {\n          return;\n        }\n        previousStep = 4;\n\n        logLines.push(chalk.white(`  ${figures.pointer} Emit files`));\n      } else if (progress === 1) {\n        logLines.push(chalk.green(`  ${figures.tick} Emit files`));\n      }\n\n      // STEP 5: FOOTER\n      if (progress === 1) {\n        // Calculate process time\n        previousStep = 0;\n        const finishTime = new Date();\n        const processTime = ((finishTime.getTime() - startTime.getTime()) / 1000).toFixed(3);\n\n        logLines.push(chalk.white(`\\nFinished after ${processTime} seconds.\\n`));\n      }\n\n      // Finally, let's bring those logs to da screen\n      log(logLines.join('\\n'));\n      if (progress === 1) {\n        log.done();\n      }\n    }).apply(compiler);\n  }\n}\n","import chalk from 'chalk';\nimport figures from 'figures';\nimport * as path from 'path';\nimport webpack, { Compiler, WebpackPluginInstance } from 'webpack';\n\nimport { SimpleProgressWebpackPluginOptions } from '../simple-process-webpack-plugin.interfaces';\n\n/**\n * Expanded Logger\n */\nexport class ExpandedLogger implements WebpackPluginInstance {\n  /**\n   * Options\n   */\n  private readonly options: SimpleProgressWebpackPluginOptions;\n\n  /**\n   * Constructor\n   *\n   * @param options Options\n   */\n  constructor(options: SimpleProgressWebpackPluginOptions) {\n    this.options = options;\n  }\n\n  /**\n   * Apply\n   *\n   * @param compiler Compiler\n   */\n  public apply(compiler: Compiler): ReturnType<WebpackPluginInstance['apply']> {\n    // Variables for the process, reset after each run\n    let startTime = new Date();\n    let previousStep = 0;\n\n    /**\n     * Use the webpack-internal progress plugin as the base of the logger\n     */\n    const absoluteProjectPath = `${path.resolve('.').toString()}`;\n    return new webpack.ProgressPlugin((progress, message, moduleProgress, activeModules, moduleName) => {\n      // Reset process variables for this run\n      if (previousStep === 0) {\n        console.log(chalk.white(this.options.name));\n        startTime = new Date();\n      }\n\n      // STEP 1: COMPILATION\n      if (progress >= 0 && progress < 0.1) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 1) {\n          return;\n        } else if (previousStep < 1) {\n          console.log(chalk.white(`\\n  ${figures.pointer} Compile modules`));\n        }\n        previousStep = 1;\n      }\n\n      // STEP 2: BUILDING\n      if (progress >= 0.1 && progress <= 0.7) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 2) {\n          return;\n        } else if (previousStep < 2) {\n          console.log(chalk.white(`\\n  ${figures.pointer} Build modules`));\n        }\n        previousStep = 2;\n\n        // Log additional information (if possible)\n        if (moduleName !== undefined) {\n          const roundedSubProgress = Math.round(((progress - 0.1) * 10000) / 60);\n          let betterModuleName = moduleName;\n\n          // Only show the file that is actually being processed (and remove all details about used loaders)\n          if (betterModuleName.indexOf('!') !== -1) {\n            const splitModuleName = betterModuleName.split('!');\n            betterModuleName = splitModuleName[splitModuleName.length - 1];\n          }\n\n          // Transform absolute paths into relative ones (to shorten the so so incredible long path)\n          if (betterModuleName.indexOf(absoluteProjectPath) !== -1) {\n            betterModuleName = betterModuleName\n              .split(`${absoluteProjectPath}`)[1] // Transform absolute path to relative one\n              .substring(1); // Remove leading path slash\n          }\n\n          // Improve the path presentation further by enforcing style consistency and removing unnecessary details\n          betterModuleName = betterModuleName.replace(/\\\\/g, '/').replace('./', '').replace('multi ', '');\n\n          // Add extra details about whether the currently processed module is an internal or external one\n          if (betterModuleName.startsWith('node_modules')) {\n            betterModuleName = `${betterModuleName} ~ external`;\n          }\n          if (betterModuleName.startsWith('src')) {\n            betterModuleName = `${betterModuleName} ~ internal`;\n          }\n\n          const [betterModulesDone, betterAllModules] = moduleProgress.split('/');\n          const moduleDetails = `${betterModulesDone} of ${betterAllModules} :: ${betterModuleName}`;\n          console.log(chalk.grey(`    ${figures.arrowRight} [${roundedSubProgress}%] ${moduleDetails}`));\n        }\n      }\n\n      // STEP 3: OPTIMIZATION\n      if (progress > 0.7 && progress < 0.95) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 3) {\n          return;\n        } else if (previousStep < 3) {\n          console.log(chalk.white(`\\n  ${figures.pointer} Optimize modules`));\n        }\n        previousStep = 3;\n\n        // Log progress line (with sub-progress indicator)\n        const subProgress = Math.round(((progress - 0.71) * 10000) / 23);\n\n        const formattedMessage = `${message[0].toUpperCase()}${message.slice(1)}`;\n        const formattedMessageExtra = progress === 0.91 ? ' -- may take a while' : ''; // Add some extra info (calming devs down)\n\n        console.log(chalk.grey(`    ${figures.arrowRight} [${subProgress}%] ${formattedMessage}${formattedMessageExtra} ...`));\n      }\n\n      // STEP 4: EMIT\n      if (progress >= 0.95 && progress < 1) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 4) {\n          return;\n        } else if (previousStep < 4) {\n          console.log(chalk.white(`\\n  ${figures.pointer} Emit files`));\n        }\n        previousStep = 4;\n      }\n\n      // STEP 5: FOOTER\n      if (progress === 1) {\n        // Calculate process time\n        previousStep = 0;\n        const finishTime = new Date();\n        const processTime = ((finishTime.getTime() - startTime.getTime()) / 1000).toFixed(3);\n\n        console.log(chalk.white(`\\nFinished after ${processTime} seconds.\\n`));\n      }\n    }).apply(compiler);\n  }\n}\n","import chalk from 'chalk';\nimport log from 'log-update';\nimport * as path from 'path';\nimport webpack, { Compiler, WebpackPluginInstance } from 'webpack';\n\nimport { SimpleProgressWebpackPluginOptions } from '../simple-process-webpack-plugin.interfaces';\n\n/**\n * Minimal Logger\n */\nexport class MinimalLogger implements WebpackPluginInstance {\n  /**\n   * Options\n   */\n  private readonly options: SimpleProgressWebpackPluginOptions;\n\n  /**\n   * Constructor\n   *\n   * @param options Options\n   */\n  constructor(options: SimpleProgressWebpackPluginOptions) {\n    this.options = options;\n  }\n\n  /**\n   * Apply\n   *\n   * @param compiler Compiler\n   */\n  public apply(compiler: Compiler): ReturnType<WebpackPluginInstance['apply']> {\n    // Variables for the process, reset after each run\n    let startTime = new Date();\n    let previousStep = 0;\n\n    /**\n     * Use the webpack-internal progress plugin as the base of the logger\n     */\n    const absoluteProjectPath = `${path.resolve('.').toString()}`;\n    return new webpack.ProgressPlugin((progress, message, moduleProgress, activeModules, moduleName) => {\n      // Initial log\n      let logLine = this.options.name;\n\n      // Reset process variables for this run\n      if (previousStep === 0) {\n        log(logLine);\n        startTime = new Date();\n      }\n\n      // Progress\n      logLine = chalk.yellow(`[${Math.round(progress * 100)}%] `);\n\n      // STEP 1: COMPILATION\n      if (progress >= 0 && progress < 0.1) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 1) {\n          return;\n        }\n        previousStep = 1;\n\n        logLine += chalk.white('Compile modules ...');\n      }\n\n      // STEP 2: BUILDING\n      if (progress >= 0.1 && progress <= 0.7) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 2) {\n          return;\n        }\n        previousStep = 2;\n\n        // Log progress line\n        logLine += chalk.white('Build modules ...');\n\n        // Log additional information (if possible)\n        if (moduleName !== undefined) {\n          let betterModuleName = moduleName;\n\n          // Only show the file that is actually being processed (and remove all details about used loaders)\n          if (betterModuleName.indexOf('!') !== -1) {\n            const splitModuleName = betterModuleName.split('!');\n            betterModuleName = splitModuleName[splitModuleName.length - 1];\n          }\n\n          // Transform absolute paths into relative ones (to shorten the so so incredible long path)\n          if (betterModuleName.indexOf(absoluteProjectPath) !== -1) {\n            betterModuleName = betterModuleName\n              .split(`${absoluteProjectPath}`)[1] // Transform absolute path to relative one\n              .substring(1); // Remove leading path slash\n          }\n\n          // Improve the path presentation further by enforcing style consistency and removing unnecessary details\n          betterModuleName = betterModuleName.replace(/\\\\/g, '/').replace('./', '').replace('multi ', '');\n\n          // Add extra details about whether the currently processed module is an internal or external one\n          if (betterModuleName.startsWith('node_modules')) {\n            betterModuleName = `${betterModuleName} ~ external`;\n          }\n          if (betterModuleName.startsWith('src')) {\n            betterModuleName = `${betterModuleName} ~ internal`;\n          }\n\n          const [betterModulesDone, betterAllModules] = moduleProgress.split('/');\n          const moduleDetails = `${betterModulesDone} of ${betterAllModules} :: ${betterModuleName}`;\n\n          logLine += chalk.grey(` (${moduleDetails})`);\n        }\n      }\n\n      // STEP 3: OPTIMIZATION\n      if (progress > 0.7 && progress < 0.95) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 3) {\n          return;\n        }\n        previousStep = 3;\n\n        // Log progress line (with sub-progress indicator)\n        logLine += chalk.white('Optimize modules ...');\n        const formattedMessageExtra = progress === 0.91 ? ' -- may take a while' : ''; // Add some extra info (calming devs down)\n\n        logLine += chalk.grey(` (${message}${formattedMessageExtra})`);\n      }\n\n      // STEP 4: EMIT\n      if (progress >= 0.95 && progress < 1) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 4) {\n          return;\n        }\n        previousStep = 4;\n\n        logLine += chalk.white('Emit files ...');\n      }\n\n      // STEP 5: FOOTER\n      if (progress === 1) {\n        // Calculate process time\n        previousStep = 0;\n        const finishTime = new Date();\n        const processTime = ((finishTime.getTime() - startTime.getTime()) / 1000).toFixed(3);\n\n        logLine = chalk.white(`Finished after ${processTime} seconds.\\n`); // Overwrite\n      }\n\n      // Finally, let's bring those logs to da screen\n      log(logLine);\n      if (progress === 1) {\n        log.done();\n      }\n    }).apply(compiler);\n  }\n}\n","import chalk from 'chalk';\nimport figures from 'figures';\nimport webpack, { Compiler, WebpackPluginInstance } from 'webpack';\n\nimport { SimpleProgressWebpackPluginOptions } from '../simple-process-webpack-plugin.interfaces';\n\n/**\n * Simple Logger\n */\nexport class SimpleLogger implements WebpackPluginInstance {\n  /**\n   * Options\n   */\n  private readonly options: SimpleProgressWebpackPluginOptions;\n\n  /**\n   * Constructor\n   *\n   * @param options Options\n   */\n  constructor(options: SimpleProgressWebpackPluginOptions) {\n    this.options = options;\n  }\n\n  /**\n   * Apply\n   *\n   * @param compiler Compiler\n   */\n  public apply(compiler: Compiler): ReturnType<WebpackPluginInstance['apply']> {\n    // Variables for the process, reset after each run\n    let startTime = new Date();\n    let previousStep = 0;\n\n    /**\n     * Use the webpack-internal progress plugin as the base of the logger\n     */\n    return new webpack.ProgressPlugin((progress) => {\n      // Reset process variables for this run\n      if (previousStep === 0) {\n        console.log(chalk.white(this.options.name));\n        startTime = new Date();\n      }\n\n      // STEP 1: COMPILATION\n      if (progress >= 0 && progress < 0.1) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 1) {\n          return;\n        } else if (previousStep < 1) {\n          console.log(chalk.white(`\\n  ${figures.pointer} Compile modules`));\n        }\n        previousStep = 1;\n      }\n\n      // STEP 2: BUILDING\n      if (progress >= 0.1 && progress <= 0.7) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 2) {\n          return;\n        } else if (previousStep < 2) {\n          console.log(chalk.white(`  ${figures.pointer} Build modules`));\n        }\n        previousStep = 2;\n      }\n\n      // STEP 3: OPTIMIZATION\n      if (progress > 0.7 && progress < 0.95) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 3) {\n          return;\n        } else if (previousStep < 3) {\n          console.log(chalk.white(`  ${figures.pointer} Optimize modules`));\n        }\n        previousStep = 3;\n      }\n\n      // STEP 4: EMIT\n      if (progress >= 0.95 && progress < 1) {\n        // Skip if we jumped back a step, else update the step counter\n        if (previousStep > 4) {\n          return;\n        } else if (previousStep < 4) {\n          console.log(chalk.white(`  ${figures.pointer} Emit files`));\n        }\n        previousStep = 4;\n      }\n\n      // STEP 5: FOOTER\n      if (progress === 1) {\n        // Calculate process time\n        previousStep = 0;\n        const finishTime = new Date();\n        const processTime = ((finishTime.getTime() - startTime.getTime()) / 1000).toFixed(3);\n\n        console.log(chalk.white(`\\nFinished after ${processTime} seconds.\\n`));\n      }\n    }).apply(compiler);\n  }\n}\n","import webpack, { Compiler, WebpackPluginInstance } from 'webpack';\n\nimport { SimpleProgressWebpackPluginOptions } from '../simple-process-webpack-plugin.interfaces';\n\n/**\n * Verbose Logger (aka \"the full truth\")\n */\nexport class VerboseLogger implements WebpackPluginInstance {\n  /**\n   * Options\n   */\n  private readonly options: SimpleProgressWebpackPluginOptions;\n\n  /**\n   * Constructor\n   *\n   * @param options Options\n   */\n  constructor(options: SimpleProgressWebpackPluginOptions) {\n    this.options = options;\n  }\n  /**\n   * Apply\n   *\n   * @param compiler Compiler\n   */\n  public apply(compiler: Compiler): ReturnType<WebpackPluginInstance['apply']> {\n    // Variables for the process, reset after each run\n    let startTime = new Date();\n    let previousStep = 0;\n\n    /**\n     * Use the webpack-internal progress plugin as the base\n     */\n    return new webpack.ProgressPlugin((progress, message, moduleProgress, activeModules, moduleName) => {\n      // Initial logs\n      let logLine = this.options.name;\n\n      // Reset process variables for this run\n      if (previousStep === 0) {\n        console.log(`${this.getTimePrefix()} ${logLine}\\n`);\n        startTime = new Date();\n      }\n\n      // STEP 1: COMPILATION\n      if (progress >= 0 && progress < 0.1) {\n        logLine = 'Compile modules';\n        previousStep = 1;\n      }\n\n      // STEP 2: BUILDING\n      if (progress >= 0.1 && progress <= 0.7) {\n        logLine = 'Build modules';\n        if (moduleName !== undefined) {\n          logLine += ` (${moduleName})`;\n        }\n        previousStep = 2;\n      }\n\n      // STEP 3: OPTIMIZATION\n      if (progress > 0.7 && progress < 0.95) {\n        logLine = `Optimize modules (${message})`;\n        previousStep = 3;\n      }\n\n      // STEP 4: EMIT\n      if (progress >= 0.95 && progress < 1) {\n        logLine = 'Emit files';\n        previousStep = 4;\n      }\n\n      // STEP 5: FOOTER\n      if (progress === 1) {\n        // Calculate process time\n        previousStep = 0;\n        const finishTime = new Date();\n        const processTime = ((finishTime.getTime() - startTime.getTime()) / 1000).toFixed(3);\n\n        logLine = `Finished after ${processTime} seconds.\\n`;\n      }\n\n      // Finally, let's bring those logs to da screen\n      if (progress === 1) {\n        console.log(`\\n${this.getTimePrefix()} ${logLine}`);\n      } else {\n        console.log(`${this.getTimePrefix()} Webpack (${Math.round(progress * 100)}%) - ${logLine}`);\n      }\n    }).apply(compiler);\n  }\n\n  /**\n   * Calculate a time prefix (similar to what Gulp does)\n   */\n  private getTimePrefix(): string {\n    const date = new Date();\n    const hours = `0${date.getHours()}`.slice(-2);\n    const minutes = `0${date.getMinutes()}`.slice(-2);\n    const seconds = `0${date.getSeconds()}`.slice(-2);\n    return `[${hours}:${minutes}:${seconds}]`;\n  }\n}\n","import chalk from 'chalk';\nimport webpack, { WebpackPluginInstance } from 'webpack';\n\nimport { CompactLogger } from './loggers/CompactLogger';\nimport { ExpandedLogger } from './loggers/ExpandedLogger';\nimport { MinimalLogger } from './loggers/MinimalLogger';\nimport { SimpleLogger } from './loggers/SimpleLogger';\nimport { VerboseLogger } from './loggers/VerboseLogger';\nimport { SimpleProgressWebpackPluginOptions } from './simple-process-webpack-plugin.interfaces';\n\n/**\n * Simple Progress Plugin for Webpack\n *\n * @param options - Custom options\n */\nexport class SimpleProgressWebpackPlugin implements WebpackPluginInstance {\n  /**\n   * Options\n   */\n  private options: SimpleProgressWebpackPluginOptions;\n\n  /**\n   * Constructor\n   *\n   * @param options\n   */\n  constructor(options: Partial<SimpleProgressWebpackPluginOptions>) {\n    this.options = {\n      color: true,\n      format: 'compact',\n      name: 'Webpack: Starting ...',\n      ...options,\n    };\n  }\n\n  /**\n   * Apply\n   */\n  public apply(compiler: webpack.Compiler): ReturnType<WebpackPluginInstance['apply']> {\n    // Disable color if specifically configured\n    if (this.options.color === false) {\n      chalk.supportsColor = false;\n    }\n\n    // Run the correct plugin, falling back to 'compact' by default\n    const progressPlugin =\n      this.options.format === 'minimal'\n        ? new MinimalLogger(this.options)\n        : this.options.format === 'simple'\n        ? new SimpleLogger(this.options)\n        : this.options.format === 'expanded'\n        ? new ExpandedLogger(this.options)\n        : this.options.format === 'verbose'\n        ? new VerboseLogger(this.options)\n        : new CompactLogger(this.options);\n    return progressPlugin.apply(compiler);\n  }\n}\n"],"names":["path","webpack","log","chalk","figures"],"mappings":"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"}