{"version":3,"file":"magic-string.umd.js","sources":["../src/Chunk.js","../src/utils/btoa.js","../src/utils/SourceMap.js","../src/utils/guessIndent.js","../node_modules/vlq/src/vlq.js","../src/utils/getLocator.js","../src/utils/encodeMappings.js","../src/utils/getRelativePath.js","../src/utils/isObject.js","../src/MagicString.js","../src/utils/hasOwnProp.js","../src/Bundle.js","../src/index.js"],"sourcesContent":["export default function Chunk ( start, end, content ) {\n\tthis.start = start;\n\tthis.end = end;\n\tthis.original = content;\n\n\tthis.intro = '';\n\tthis.outro = '';\n\n\tthis.content = content;\n\tthis.storeName = false;\n\tthis.edited = false;\n\n\t// we make these non-enumerable, for sanity while debugging\n\tObject.defineProperties( this, {\n\t\tprevious: { writable: true, value: null },\n\t\tnext: { writable: true, value: null }\n\t});\n}\n\nChunk.prototype = {\n\tappend ( content ) {\n\t\tthis.outro += content;\n\t},\n\n\tclone () {\n\t\tconst chunk = new Chunk( this.start, this.end, this.original );\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t},\n\n\tcontains ( index ) {\n\t\treturn this.start < index && index < this.end;\n\t},\n\n\teachNext ( fn ) {\n\t\tlet chunk = this;\n\t\twhile ( chunk ) {\n\t\t\tfn( chunk );\n\t\t\tchunk = chunk.next;\n\t\t}\n\t},\n\n\teachPrevious ( fn ) {\n\t\tlet chunk = this;\n\t\twhile ( chunk ) {\n\t\t\tfn( chunk );\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t},\n\n\tedit ( content, storeName ) {\n\t\tthis.content = content;\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t},\n\n\tprepend ( content ) {\n\t\tthis.intro = content + this.intro;\n\t},\n\n\tsplit ( index ) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice( 0, sliceIndex );\n\t\tconst originalAfter = this.original.slice( sliceIndex );\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk( index, this.end, originalAfter );\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif ( this.edited ) {\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit( '', false );\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif ( newChunk.next ) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t},\n\n\ttoString () {\n\t\treturn this.intro + this.content + this.outro;\n\t},\n\n\ttrimEnd ( rx ) {\n\t\tthis.outro = this.outro.replace( rx, '' );\n\t\tif ( this.outro.length ) return true;\n\n\t\tconst trimmed = this.content.replace( rx, '' );\n\n\t\tif ( trimmed.length ) {\n\t\t\tif ( trimmed !== this.content ) {\n\t\t\t\tthis.split( this.start + trimmed.length ).edit( '', false );\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit( '', false );\n\n\t\t\tthis.intro = this.intro.replace( rx, '' );\n\t\t\tif ( this.intro.length ) return true;\n\t\t}\n\t},\n\n\ttrimStart ( rx ) {\n\t\tthis.intro = this.intro.replace( rx, '' );\n\t\tif ( this.intro.length ) return true;\n\n\t\tconst trimmed = this.content.replace( rx, '' );\n\n\t\tif ( trimmed.length ) {\n\t\t\tif ( trimmed !== this.content ) {\n\t\t\t\tthis.split( this.end - trimmed.length );\n\t\t\t\tthis.edit( '', false );\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit( '', false );\n\n\t\t\tthis.outro = this.outro.replace( rx, '' );\n\t\t\tif ( this.outro.length ) return true;\n\t\t}\n\t}\n};\n","let _btoa;\n\nif ( typeof window !== 'undefined' && typeof window.btoa === 'function' ) {\n\t_btoa = window.btoa;\n} else if ( typeof Buffer === 'function' ) {\n\t_btoa = str => new Buffer( str ).toString( 'base64' );\n} else {\n\t_btoa = () => {\n\t\tthrow new Error( 'Unsupported environment: `window.btoa` or `Buffer` should be supported.' );\n\t};\n}\n\nexport default _btoa;\n","import btoa from './btoa.js';\n\nexport default function SourceMap ( properties ) {\n\tthis.version = 3;\n\n\tthis.file = properties.file;\n\tthis.sources = properties.sources;\n\tthis.sourcesContent = properties.sourcesContent;\n\tthis.names = properties.names;\n\tthis.mappings = properties.mappings;\n}\n\nSourceMap.prototype = {\n\ttoString () {\n\t\treturn JSON.stringify( this );\n\t},\n\n\ttoUrl () {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa( this.toString() );\n\t}\n};\n","export default function guessIndent ( code ) {\n\tconst lines = code.split( '\\n' );\n\n\tconst tabbed = lines.filter( line => /^\\t+/.test( line ) );\n\tconst spaced = lines.filter( line => /^ {2,}/.test( line ) );\n\n\tif ( tabbed.length === 0 && spaced.length === 0 ) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif ( tabbed.length >= spaced.length ) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce( ( previous, current ) => {\n\t\tconst numSpaces = /^ +/.exec( current )[0].length;\n\t\treturn Math.min( numSpaces, previous );\n\t}, Infinity );\n\n\treturn new Array( min + 1 ).join( ' ' );\n}\n","var charToInteger = {};\nvar integerToChar = {};\n\n'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split( '' ).forEach( function ( char, i ) {\n\tcharToInteger[ char ] = i;\n\tintegerToChar[ i ] = char;\n});\n\nexport function decode ( string ) {\n\tvar result = [],\n\t\tlen = string.length,\n\t\ti,\n\t\thasContinuationBit,\n\t\tshift = 0,\n\t\tvalue = 0,\n\t\tinteger,\n\t\tshouldNegate;\n\n\tfor ( i = 0; i < len; i += 1 ) {\n\t\tinteger = charToInteger[ string[i] ];\n\n\t\tif ( integer === undefined ) {\n\t\t\tthrow new Error( 'Invalid character (' + string[i] + ')' );\n\t\t}\n\n\t\thasContinuationBit = integer & 32;\n\n\t\tinteger &= 31;\n\t\tvalue += integer << shift;\n\n\t\tif ( hasContinuationBit ) {\n\t\t\tshift += 5;\n\t\t} else {\n\t\t\tshouldNegate = value & 1;\n\t\t\tvalue >>= 1;\n\n\t\t\tresult.push( shouldNegate ? -value : value );\n\n\t\t\t// reset\n\t\t\tvalue = shift = 0;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function encode ( value ) {\n\tvar result, i;\n\n\tif ( typeof value === 'number' ) {\n\t\tresult = encodeInteger( value );\n\t} else {\n\t\tresult = '';\n\t\tfor ( i = 0; i < value.length; i += 1 ) {\n\t\t\tresult += encodeInteger( value[i] );\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction encodeInteger ( num ) {\n\tvar result = '', clamped;\n\n\tif ( num < 0 ) {\n\t\tnum = ( -num << 1 ) | 1;\n\t} else {\n\t\tnum <<= 1;\n\t}\n\n\tdo {\n\t\tclamped = num & 31;\n\t\tnum >>= 5;\n\n\t\tif ( num > 0 ) {\n\t\t\tclamped |= 32;\n\t\t}\n\n\t\tresult += integerToChar[ clamped ];\n\t} while ( num > 0 );\n\n\treturn result;\n}\n","export default function getLocator ( source ) {\n\tlet originalLines = source.split( '\\n' );\n\n\tlet start = 0;\n\tlet lineRanges = originalLines.map( ( line, i ) => {\n\t\tconst end = start + line.length + 1;\n\t\tconst range = { start, end, line: i };\n\n\t\tstart = end;\n\t\treturn range;\n\t});\n\n\tlet i = 0;\n\n\tfunction rangeContains ( range, index ) {\n\t\treturn range.start <= index && index < range.end;\n\t}\n\n\tfunction getLocation ( range, index ) {\n\t\treturn { line: range.line, column: index - range.start };\n\t}\n\n\treturn function locate ( index ) {\n\t\tlet range = lineRanges[i];\n\n\t\tconst d = index >= range.end ? 1 : -1;\n\n\t\twhile ( range ) {\n\t\t\tif ( rangeContains( range, index ) ) return getLocation( range, index );\n\n\t\t\ti += d;\n\t\t\trange = lineRanges[i];\n\t\t}\n\t};\n}\n","import { encode } from 'vlq';\nimport getLocator from './getLocator.js';\n\nexport default function encodeMappings ( original, intro, chunk, hires, sourcemapLocations, sourceIndex, offsets, names ) {\n\tlet rawLines = [];\n\n\tlet generatedCodeLine = intro.split( '\\n' ).length - 1;\n\tlet rawSegments = rawLines[ generatedCodeLine ] = [];\n\n\tlet generatedCodeColumn = 0;\n\n\tconst locate = getLocator( original );\n\n\tfunction addEdit ( content, original, loc, nameIndex, i ) {\n\t\tif ( i || content.length ) {\n\t\t\trawSegments.push({\n\t\t\t\tgeneratedCodeLine,\n\t\t\t\tgeneratedCodeColumn,\n\t\t\t\tsourceCodeLine: loc.line,\n\t\t\t\tsourceCodeColumn: loc.column,\n\t\t\t\tsourceCodeName: nameIndex,\n\t\t\t\tsourceIndex\n\t\t\t});\n\t\t}\n\n\t\tlet lines = content.split( '\\n' );\n\t\tlet lastLine = lines.pop();\n\n\t\tif ( lines.length ) {\n\t\t\tgeneratedCodeLine += lines.length;\n\t\t\trawLines[ generatedCodeLine ] = rawSegments = [];\n\t\t\tgeneratedCodeColumn = lastLine.length;\n\t\t} else {\n\t\t\tgeneratedCodeColumn += lastLine.length;\n\t\t}\n\n\t\tlines = original.split( '\\n' );\n\t\tlastLine = lines.pop();\n\n\t\tif ( lines.length ) {\n\t\t\tloc.line += lines.length;\n\t\t\tloc.column = lastLine.length;\n\t\t} else {\n\t\t\tloc.column += lastLine.length;\n\t\t}\n\t}\n\n\tfunction addUneditedChunk ( chunk, loc ) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\n\t\twhile ( originalCharIndex < chunk.end ) {\n\t\t\tif ( hires || first || sourcemapLocations[ originalCharIndex ] ) {\n\t\t\t\trawSegments.push({\n\t\t\t\t\tgeneratedCodeLine,\n\t\t\t\t\tgeneratedCodeColumn,\n\t\t\t\t\tsourceCodeLine: loc.line,\n\t\t\t\t\tsourceCodeColumn: loc.column,\n\t\t\t\t\tsourceCodeName: -1,\n\t\t\t\t\tsourceIndex\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( original[ originalCharIndex ] === '\\n' ) {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tgeneratedCodeLine += 1;\n\t\t\t\trawLines[ generatedCodeLine ] = rawSegments = [];\n\t\t\t\tgeneratedCodeColumn = 0;\n\t\t\t} else {\n\t\t\t\tloc.column += 1;\n\t\t\t\tgeneratedCodeColumn += 1;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t\tfirst = false;\n\t\t}\n\t}\n\n\twhile ( chunk ) {\n\t\tlet loc = locate( chunk.start );\n\n\t\tif ( chunk.intro.length ) {\n\t\t\taddEdit( chunk.intro, '', loc, -1, !!chunk.previous );\n\t\t}\n\n\t\tif ( chunk.edited ) {\n\t\t\taddEdit( chunk.content, chunk.original, loc, chunk.storeName ? names.indexOf( chunk.original ) : -1, !!chunk.previous );\n\t\t} else {\n\t\t\taddUneditedChunk( chunk, loc );\n\t\t}\n\n\t\tif ( chunk.outro.length ) {\n\t\t\taddEdit( chunk.outro, '', loc, -1, !!chunk.previous );\n\t\t}\n\n\t\tconst nextChunk = chunk.next;\n\t\tchunk = nextChunk;\n\t}\n\n\toffsets.sourceIndex = offsets.sourceIndex || 0;\n\toffsets.sourceCodeLine = offsets.sourceCodeLine || 0;\n\toffsets.sourceCodeColumn = offsets.sourceCodeColumn || 0;\n\toffsets.sourceCodeName = offsets.sourceCodeName || 0;\n\n\tconst encoded = rawLines.map( segments => {\n\t\tlet generatedCodeColumn = 0;\n\n\t\treturn segments.map( segment => {\n\t\t\tlet arr = [\n\t\t\t\tsegment.generatedCodeColumn - generatedCodeColumn,\n\t\t\t\tsegment.sourceIndex - offsets.sourceIndex,\n\t\t\t\tsegment.sourceCodeLine - offsets.sourceCodeLine,\n\t\t\t\tsegment.sourceCodeColumn - offsets.sourceCodeColumn\n\t\t\t];\n\n\t\t\tgeneratedCodeColumn = segment.generatedCodeColumn;\n\t\t\toffsets.sourceIndex = segment.sourceIndex;\n\t\t\toffsets.sourceCodeLine = segment.sourceCodeLine;\n\t\t\toffsets.sourceCodeColumn = segment.sourceCodeColumn;\n\n\t\t\tif ( ~segment.sourceCodeName ) {\n\t\t\t\tarr.push( segment.sourceCodeName - offsets.sourceCodeName );\n\t\t\t\toffsets.sourceCodeName = segment.sourceCodeName;\n\t\t\t}\n\n\t\t\treturn encode( arr );\n\t\t}).join( ',' );\n\t}).join( ';' );\n\n\treturn encoded;\n}\n","export default function getRelativePath ( from, to ) {\n\tlet fromParts = from.split( /[\\/\\\\]/ );\n\tlet toParts = to.split( /[\\/\\\\]/ );\n\n\tfromParts.pop(); // get dirname\n\n\twhile ( fromParts[0] === toParts[0] ) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif ( fromParts.length ) {\n\t\tlet i = fromParts.length;\n\t\twhile ( i-- ) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat( toParts ).join( '/' );\n}\n","const toString = Object.prototype.toString;\n\nexport default function isObject ( thing ) {\n\treturn toString.call( thing ) === '[object Object]';\n}\n","import Chunk from './Chunk.js';\nimport SourceMap from './utils/SourceMap.js';\nimport guessIndent from './utils/guessIndent.js';\nimport encodeMappings from './utils/encodeMappings.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Stats from './utils/Stats.js';\n\nexport default function MagicString ( string, options = {} ) {\n\tconst chunk = new Chunk( 0, string.length, string );\n\n\tObject.defineProperties( this, {\n\t\toriginal: { writable: true, value: string },\n\t\toutro: { writable: true, value: '' },\n\t\tintro: { writable: true, value: '' },\n\t\tfirstChunk: { writable: true, value: chunk },\n\t\tlastChunk: { writable: true, value: chunk },\n\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\tbyStart: { writable: true, value: {} },\n\t\tbyEnd: { writable: true, value: {} },\n\t\tfilename: { writable: true, value: options.filename },\n\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\tsourcemapLocations: { writable: true, value: {} },\n\t\tstoredNames: { writable: true, value: {} },\n\t\tindentStr: { writable: true, value: guessIndent( string ) }\n\t});\n\n\tif ( DEBUG ) {\n\t\tObject.defineProperty( this, 'stats', { value: new Stats() });\n\t}\n\n\tthis.byStart[ 0 ] = chunk;\n\tthis.byEnd[ string.length ] = chunk;\n}\n\nMagicString.prototype = {\n\taddSourcemapLocation ( char ) {\n\t\tthis.sourcemapLocations[ char ] = true;\n\t},\n\n\tappend ( content ) {\n\t\tif ( typeof content !== 'string' ) throw new TypeError( 'outro content must be a string' );\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t},\n\n\tclone () {\n\t\tlet cloned = new MagicString( this.original, { filename: this.filename });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone();\n\n\t\twhile ( originalChunk ) {\n\t\t\tcloned.byStart[ clonedChunk.start ] = clonedChunk;\n\t\t\tcloned.byEnd[ clonedChunk.end ] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif ( nextClonedChunk ) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif ( this.indentExclusionRanges ) {\n\t\t\tcloned.indentExclusionRanges = typeof this.indentExclusionRanges[0] === 'number' ?\n\t\t\t\t[ this.indentExclusionRanges[0], this.indentExclusionRanges[1] ] :\n\t\t\t\tthis.indentExclusionRanges.map( range => [ range.start, range.end ] );\n\t\t}\n\n\t\tObject.keys( this.sourcemapLocations ).forEach( loc => {\n\t\t\tcloned.sourcemapLocations[ loc ] = true;\n\t\t});\n\n\t\treturn cloned;\n\t},\n\n\tgenerateMap ( options ) {\n\t\toptions = options || {};\n\n\t\tconst names = Object.keys( this.storedNames );\n\n\t\tif ( DEBUG ) this.stats.time( 'generateMap' );\n\t\tconst map = new SourceMap({\n\t\t\tfile: ( options.file ? options.file.split( /[\\/\\\\]/ ).pop() : null ),\n\t\t\tsources: [ options.source ? getRelativePath( options.file || '', options.source ) : null ],\n\t\t\tsourcesContent: options.includeContent ? [ this.original ] : [ null ],\n\t\t\tnames,\n\t\t\tmappings: this.getMappings( options.hires, 0, {}, names )\n\t\t});\n\t\tif ( DEBUG ) this.stats.timeEnd( 'generateMap' );\n\n\t\treturn map;\n\t},\n\n\tgetIndentString () {\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t},\n\n\tgetMappings ( hires, sourceIndex, offsets, names ) {\n\t\treturn encodeMappings( this.original, this.intro, this.firstChunk, hires, this.sourcemapLocations, sourceIndex, offsets, names );\n\t},\n\n\tindent ( indentStr, options ) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif ( isObject( indentStr ) ) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tindentStr = indentStr !== undefined ? indentStr : ( this.indentStr || '\\t' );\n\n\t\tif ( indentStr === '' ) return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tlet isExcluded = {};\n\n\t\tif ( options.exclude ) {\n\t\t\tlet exclusions = typeof options.exclude[0] === 'number' ? [ options.exclude ] : options.exclude;\n\t\t\texclusions.forEach( exclusion => {\n\t\t\t\tfor ( let i = exclusion[0]; i < exclusion[1]; i += 1 ) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = match => {\n\t\t\tif ( shouldIndentNextCharacter ) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace( pattern, replacer );\n\n\t\tlet charIndex = 0;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile ( chunk ) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif ( chunk.edited ) {\n\t\t\t\tif ( !isExcluded[ charIndex ] ) {\n\t\t\t\t\tchunk.content = chunk.content.replace( pattern, replacer );\n\n\t\t\t\t\tif ( chunk.content.length ) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[ chunk.content.length - 1 ] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile ( charIndex < end ) {\n\t\t\t\t\tif ( !isExcluded[ charIndex ] ) {\n\t\t\t\t\t\tconst char = this.original[ charIndex ];\n\n\t\t\t\t\t\tif ( char === '\\n' ) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if ( char !== '\\r' && shouldIndentNextCharacter ) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif ( charIndex === chunk.start ) {\n\t\t\t\t\t\t\t\tchunk.prepend( indentStr );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst rhs = chunk.split( charIndex );\n\t\t\t\t\t\t\t\trhs.prepend( indentStr );\n\n\t\t\t\t\t\t\t\tthis.byStart[ charIndex ] = rhs;\n\t\t\t\t\t\t\t\tthis.byEnd[ charIndex ] = chunk;\n\n\t\t\t\t\t\t\t\tchunk = rhs;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace( pattern, replacer );\n\n\t\treturn this;\n\t},\n\n\tinsert () {\n\t\tthrow new Error( 'magicString.insert(...) is deprecated. Use insertRight(...) or insertLeft(...)' );\n\t},\n\n\tinsertLeft ( index, content ) {\n\t\tif ( typeof content !== 'string' ) throw new TypeError( 'inserted content must be a string' );\n\n\t\tif ( DEBUG ) this.stats.time( 'insertLeft' );\n\n\t\tthis._split( index );\n\n\t\tconst chunk = this.byEnd[ index ];\n\n\t\tif ( chunk ) {\n\t\t\tchunk.append( content );\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\tif ( DEBUG ) this.stats.timeEnd( 'insertLeft' );\n\t\treturn this;\n\t},\n\n\tinsertRight ( index, content ) {\n\t\tif ( typeof content !== 'string' ) throw new TypeError( 'inserted content must be a string' );\n\n\t\tif ( DEBUG ) this.stats.time( 'insertRight' );\n\n\t\tthis._split( index );\n\n\t\tconst chunk = this.byStart[ index ];\n\n\t\tif ( chunk ) {\n\t\t\tchunk.prepend( content );\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\tif ( DEBUG ) this.stats.timeEnd( 'insertRight' );\n\t\treturn this;\n\t},\n\n\tmove ( start, end, index ) {\n\t\tif ( index >= start && index <= end ) throw new Error( 'Cannot move a selection inside itself' );\n\n\t\tif ( DEBUG ) this.stats.time( 'move' );\n\n\t\tthis._split( start );\n\t\tthis._split( end );\n\t\tthis._split( index );\n\n\t\tconst first = this.byStart[ start ];\n\t\tconst last = this.byEnd[ end ];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[ index ];\n\t\tif ( !newRight && last === this.lastChunk ) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif ( oldLeft ) oldLeft.next = oldRight;\n\t\tif ( oldRight ) oldRight.previous = oldLeft;\n\n\t\tif ( newLeft ) newLeft.next = first;\n\t\tif ( newRight ) newRight.previous = last;\n\n\t\tif ( !first.previous ) this.firstChunk = last.next;\n\t\tif ( !last.next ) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight;\n\n\t\tif ( !newLeft ) this.firstChunk = first;\n\t\tif ( !newRight ) this.lastChunk = last;\n\n\t\tif ( DEBUG ) this.stats.timeEnd( 'move' );\n\t\treturn this;\n\t},\n\n\toverwrite ( start, end, content, storeName ) {\n\t\tif ( typeof content !== 'string' ) throw new TypeError( 'replacement content must be a string' );\n\n\t\twhile ( start < 0 ) start += this.original.length;\n\t\twhile ( end < 0 ) end += this.original.length;\n\n\t\tif ( end > this.original.length ) throw new Error( 'end is out of bounds' );\n\t\tif ( start === end ) throw new Error( 'Cannot overwrite a zero-length range – use insertLeft or insertRight instead' );\n\n\t\tif ( DEBUG ) this.stats.time( 'overwrite' );\n\n\t\tthis._split( start );\n\t\tthis._split( end );\n\n\t\tif ( storeName ) {\n\t\t\tconst original = this.original.slice( start, end );\n\t\t\tthis.storedNames[ original ] = true;\n\t\t}\n\n\t\tconst first = this.byStart[ start ];\n\t\tconst last = this.byEnd[ end ];\n\n\t\tif ( first ) {\n\t\t\tfirst.edit( content, storeName );\n\n\t\t\tif ( first !== last ) {\n\t\t\t\tfirst.outro = '';\n\n\t\t\t\tlet chunk = first.next;\n\t\t\t\twhile ( chunk !== last ) {\n\t\t\t\t\tchunk.edit( '', false );\n\t\t\t\t\tchunk.intro = chunk.outro = '';\n\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tchunk.edit( '', false );\n\t\t\t\tchunk.intro = '';\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk( start, end, '' ).edit( content, storeName );\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\tif ( DEBUG ) this.stats.timeEnd( 'overwrite' );\n\t\treturn this;\n\t},\n\n\tprepend ( content ) {\n\t\tif ( typeof content !== 'string' ) throw new TypeError( 'outro content must be a string' );\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t},\n\n\tremove ( start, end ) {\n\t\twhile ( start < 0 ) start += this.original.length;\n\t\twhile ( end < 0 ) end += this.original.length;\n\n\t\tif ( start === end ) return this;\n\n\t\tif ( start < 0 || end > this.original.length ) throw new Error( 'Character is out of bounds' );\n\t\tif ( start > end ) throw new Error( 'end must be greater than start' );\n\n\t\treturn this.overwrite( start, end, '', false );\n\t},\n\n\tslice ( start = 0, end = this.original.length ) {\n\t\twhile ( start < 0 ) start += this.original.length;\n\t\twhile ( end < 0 ) end += this.original.length;\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile ( chunk && ( chunk.start > start || chunk.end <= start ) ) {\n\n\t\t\t// found end chunk before start\n\t\t\tif ( chunk.start < end && chunk.end >= end ) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif ( chunk && chunk.edited && chunk.start !== start ) throw new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tlet startChunk = chunk;\n\t\twhile ( chunk ) {\n\t\t\tif ( chunk.intro && ( startChunk !== chunk || chunk.start === start ) ) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif ( containsEnd && chunk.edited && chunk.end !== end ) throw new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice( sliceStart, sliceEnd );\n\n\t\t\tif ( chunk.outro && ( !containsEnd || chunk.end === end ) ) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif ( containsEnd ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\t// TODO deprecate this? not really very useful\n\tsnip ( start, end ) {\n\t\tconst clone = this.clone();\n\t\tclone.remove( 0, start );\n\t\tclone.remove( end, clone.original.length );\n\n\t\treturn clone;\n\t},\n\n\t_split ( index ) {\n\t\tif ( this.byStart[ index ] || this.byEnd[ index ] ) return;\n\n\t\tif ( DEBUG ) this.stats.time( '_split' );\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile ( true ) {\n\t\t\tif ( chunk.contains( index ) ) return this._splitChunk( chunk, index );\n\n\t\t\tchunk = searchForward ?\n\t\t\t\tthis.byStart[ chunk.end ] :\n\t\t\t\tthis.byEnd[ chunk.start ];\n\t\t}\n\t},\n\n\t_splitChunk ( chunk, index ) {\n\t\tif ( chunk.edited && chunk.content.length ) { // zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator( this.original )( index );\n\t\t\tthrow new Error( `Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")` );\n\t\t}\n\n\t\tconst newChunk = chunk.split( index );\n\n\t\tthis.byEnd[ index ] = chunk;\n\t\tthis.byStart[ index ] = newChunk;\n\t\tthis.byEnd[ newChunk.end ] = newChunk;\n\n\t\tif ( chunk === this.lastChunk ) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\tif ( DEBUG ) this.stats.timeEnd( '_split' );\n\t\treturn true;\n\t},\n\n\ttoString () {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile ( chunk ) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t},\n\n\ttrimLines () {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t},\n\n\ttrim ( charType ) {\n\t\treturn this.trimStart( charType ).trimEnd( charType );\n\t},\n\n\ttrimEnd ( charType ) {\n\t\tconst rx = new RegExp( ( charType || '\\\\s' ) + '+$' );\n\n\t\tthis.outro = this.outro.replace( rx, '' );\n\t\tif ( this.outro.length ) return this;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd( rx );\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif ( chunk.end !== end ) {\n\t\t\t\tthis.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[ chunk.end ] = chunk;\n\t\t\t\tthis.byStart[ chunk.next.start ] = chunk.next;\n\t\t\t}\n\n\t\t\tif ( aborted ) return this;\n\t\t\tchunk = chunk.previous;\n\t\t} while ( chunk );\n\n\t\treturn this;\n\t},\n\n\ttrimStart ( charType ) {\n\t\tconst rx = new RegExp( '^' + ( charType || '\\\\s' ) + '+' );\n\n\t\tthis.intro = this.intro.replace( rx, '' );\n\t\tif ( this.intro.length ) return this;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart( rx );\n\n\t\t\tif ( chunk.end !== end ) {\n\t\t\t\t// special case...\n\t\t\t\tif ( chunk === this.lastChunk ) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[ chunk.end ] = chunk;\n\t\t\t\tthis.byStart[ chunk.next.start ] = chunk.next;\n\t\t\t}\n\n\t\t\tif ( aborted ) return this;\n\t\t\tchunk = chunk.next;\n\t\t} while ( chunk );\n\n\t\treturn this;\n\t}\n};\n","export default Object.prototype.hasOwnProperty;","import MagicString from './MagicString.js';\nimport SourceMap from './utils/SourceMap.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport hasOwnProp from './utils/hasOwnProp.js';\nimport isObject from './utils/isObject.js';\n\nexport default function Bundle ( options = {} ) {\n\tthis.intro = options.intro || '';\n\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\n\tthis.sources = [];\n\n\tthis.uniqueSources = [];\n\tthis.uniqueSourceIndexByFilename = {};\n}\n\nBundle.prototype = {\n\taddSource ( source ) {\n\t\tif ( source instanceof MagicString ) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator\n\t\t\t});\n\t\t}\n\n\t\tif ( !isObject( source ) || !source.content ) {\n\t\t\tthrow new Error( 'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`' );\n\t\t}\n\n\t\t[ 'filename', 'indentExclusionRanges', 'separator' ].forEach( option => {\n\t\t\tif ( !hasOwnProp.call( source, option ) ) source[ option ] = source.content[ option ];\n\t\t});\n\n\t\tif ( source.separator === undefined ) { // TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif ( source.filename ) {\n\t\t\tif ( !hasOwnProp.call( this.uniqueSourceIndexByFilename, source.filename ) ) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[ source.filename ] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[ this.uniqueSourceIndexByFilename[ source.filename ] ];\n\t\t\t\tif ( source.content.original !== uniqueSource.content ) {\n\t\t\t\t\tthrow new Error( `Illegal source: same filename (${source.filename}), different contents` );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push( source );\n\t\treturn this;\n\t},\n\n\tappend ( str, options ) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString( str ),\n\t\t\tseparator: ( options && options.separator ) || ''\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tclone () {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator\n\t\t});\n\n\t\tthis.sources.forEach( source => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t},\n\n\tgenerateMap ( options ) {\n\t\tlet offsets = {};\n\n\t\tlet names = [];\n\t\tthis.sources.forEach( source => {\n\t\t\tObject.keys( source.content.storedNames ).forEach( name => {\n\t\t\t\tif ( !~names.indexOf( name ) ) names.push( name );\n\t\t\t});\n\t\t});\n\n\t\tconst encoded = (\n\t\t\tgetSemis( this.intro ) +\n\t\t\tthis.sources.map( ( source, i ) => {\n\t\t\t\tconst prefix = ( i > 0 ) ? ( getSemis( source.separator ) || ',' ) : '';\n\t\t\t\tlet mappings;\n\n\t\t\t\t// we don't bother encoding sources without a filename\n\t\t\t\tif ( !source.filename ) {\n\t\t\t\t\tmappings = getSemis( source.content.toString() );\n\t\t\t\t} else {\n\t\t\t\t\tconst sourceIndex = this.uniqueSourceIndexByFilename[ source.filename ];\n\t\t\t\t\tmappings = source.content.getMappings( options.hires, sourceIndex, offsets, names );\n\t\t\t\t}\n\n\t\t\t\treturn prefix + mappings;\n\t\t\t}).join( '' )\n\t\t);\n\n\t\treturn new SourceMap({\n\t\t\tfile: ( options.file ? options.file.split( /[\\/\\\\]/ ).pop() : null ),\n\t\t\tsources: this.uniqueSources.map( source => {\n\t\t\t\treturn options.file ? getRelativePath( options.file, source.filename ) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map( source => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: encoded\n\t\t});\n\t},\n\n\tgetIndentString () {\n\t\tlet indentStringCounts = {};\n\n\t\tthis.sources.forEach( source => {\n\t\t\tconst indentStr = source.content.indentStr;\n\n\t\t\tif ( indentStr === null ) return;\n\n\t\t\tif ( !indentStringCounts[ indentStr ] ) indentStringCounts[ indentStr ] = 0;\n\t\t\tindentStringCounts[ indentStr ] += 1;\n\t\t});\n\n\t\treturn ( Object.keys( indentStringCounts ).sort( ( a, b ) => {\n\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t})[0] ) || '\\t';\n\t},\n\n\tindent ( indentStr ) {\n\t\tif ( !arguments.length ) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif ( indentStr === '' ) return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice( -1 ) === '\\n';\n\n\t\tthis.sources.forEach( ( source, i ) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || ( i > 0 && /\\r?\\n$/.test( separator ) );\n\n\t\t\tsource.content.indent( indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart//: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\t// TODO this is a very slow way to determine this\n\t\t\ttrailingNewline = source.content.toString().slice( 0, -1 ) === '\\n';\n\t\t});\n\n\t\tif ( this.intro ) {\n\t\t\tthis.intro = indentStr + this.intro.replace( /^[^\\n]/gm, ( match, index ) => {\n\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tprepend ( str ) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t},\n\n\ttoString () {\n\t\tconst body = this.sources.map( ( source, i ) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tlet str = ( i > 0 ? separator : '' ) + source.content.toString();\n\n\t\t\treturn str;\n\t\t}).join( '' );\n\n\t\treturn this.intro + body;\n\t},\n\n\ttrimLines () {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t},\n\n\ttrim ( charType ) {\n\t\treturn this.trimStart( charType ).trimEnd( charType );\n\t},\n\n\ttrimStart ( charType ) {\n\t\tconst rx = new RegExp( '^' + ( charType || '\\\\s' ) + '+' );\n\t\tthis.intro = this.intro.replace( rx, '' );\n\n\t\tif ( !this.intro ) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i];\n\n\t\t\t\tif ( !source ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tsource.content.trimStart( charType );\n\t\t\t\ti += 1;\n\t\t\t} while ( source.content.toString() === '' ); // TODO faster way to determine non-empty source?\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttrimEnd ( charType ) {\n\t\tconst rx = new RegExp( ( charType || '\\\\s' ) + '+$' );\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i];\n\n\t\t\tif ( !source ) {\n\t\t\t\tthis.intro = this.intro.replace( rx, '' );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tsource.content.trimEnd( charType );\n\t\t\ti -= 1;\n\t\t} while ( source.content.toString() === '' ); // TODO faster way to determine non-empty source?\n\n\t\treturn this;\n\t}\n};\n\nfunction getSemis ( str ) {\n\treturn new Array( str.split( '\\n' ).length ).join( ';' );\n}\n","import MagicString from './MagicString.js';\nimport Bundle from './Bundle.js';\n\nMagicString.Bundle = Bundle;\n\nexport default MagicString;\n"],"names":["const","let","this"],"mappings":"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"}