}
function addMapping(loc: Position, name: string | null = null) {
- // @ts-ignore we use the private property to directly add the mapping
+ // we use the private property to directly add the mapping
// because the addMapping() implementation in source-map-js has a bunch of
// unnecessary arg and validation checks that are pure overhead in our case.
- const { _names, _mappings } = context.map
+ const { _names, _mappings } = context.map!
if (name !== null && !_names.has(name)) _names.add(name)
_mappings.add({
originalLine: loc.line,
ast,
code: context.code,
preamble: isSetupInlined ? preambleContext.code : ``,
- // SourceMapGenerator does have toJSON() method but it's not in the types
- map: context.map ? (context.map as any).toJSON() : undefined
+ map: context.map ? context.map.toJSON() : undefined
}
}
if (map) {
return {
code: result.css.toString(),
- map: merge(map, JSON.parse(result.map.toString())),
+ map: merge(
+ map,
+ result.map.toJSON
+ ? result.map.toJSON()
+ : JSON.parse(result.map.toString())
+ ),
errors: [],
dependencies
}
)
}
+declare module 'source-map-js' {
+ export interface SourceMapGenerator {
+ // SourceMapGenerator has this method but the types do not include it
+ toJSON(): RawSourceMap
+ _names: Set<string>
+ _mappings: {
+ add(mapping: {
+ originalLine: number
+ originalColumn: number
+ generatedLine: number
+ generatedColumn: number
+ source: string
+ name: string | null
+ }): void
+ }
+ }
+}
+
declare interface String {
/**
* @deprecated Please use String.prototype.slice instead of String.prototype.substring in the repository.