Skip to content

Upgrading postcss 7 to 8

Breaking7.0.39 → 8.5.32Breaking8Security13New27Changed23Fixed148Other11

BreakingUpgrade verdict

8 breaking changes and 11 security fixes.

  • Removed debug code.
  • Removed unnecessary fix which could lead to infinite loop.
  • Remove debugging code.
  • Removed source-map from client-side bundle (by @barak007).
Top 5 of 19 that need code or config changes

postcss publishes an official migration guide for version 8. It covers more than the release notes do.

**for plugin developers** ↗

Node.js requirement changed in 8.0.0: >=6.0.0 → ^10 || ^12 || >=14.

Adds nanoid ^3.3.20, source-map-js ^1.2.2.

Drops source-map.

Installs 3 packages in all (was 2).

Moves picocolors 0.2.1 → 1.1.1. Your build may pick other versions.

Breaking8
Removed debug code.
Removed unnecessary fix which could lead to infinite loop.
Remove debugging code.
Removed source-map from client-side bundle (by @barak007).
source-map
PostCSS 8 dropped Node.js 6.x, 8.x, 11.x, and 13.x versions support.
Removed docs from the npm package.
We now serve ES6+ sources in the npm package without Babel compilation.
node_modules/postcss
We removed rarely used postcss.vendor API.
postcss.vendor
Security11
Stops loading source maps when opts.from is not set, for security reasons.
opts.from
PostCSS: incomplete fix of GHSA-6g55-p6wh-862q — attacker-controlled sourceMappingURL reads arbitrary .map files when from is unset
Moderate
Restricts loading previous source map files to the opts.from folder for security reasons; unsafeMap: true disables the check.
opts.fromunsafeMap
PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
High · CVSS 7.5
Fixes prototype hijacking for postcss.fromJSON().
postcss.fromJSON()
PostCSS: Arbitrary file read and information disclosure via attacker-controlled sourceMappingURL in CSS comments
High · CVSS 7.5
PostCSS has XSS via Unescaped </style> in its CSS Stringify Output
</style>Moderate · CVSS 6.1
Fixed \r parsing to fix CVE-2023-44270.
\rModerate · CVSS 5.3
Fixed ReDoS vulnerabilities in source map parsing (by @yetingli).
Regular Expression Denial of Service in postcss
Moderate · CVSS 5.3
Regular Expression Denial of Service in postcss
Moderate · CVSS 5.3

Generated by DepDelta from published .d.ts files. Not mixed with prose notes.

  • added: class AtRule extends AtRule_
  • added: export = AtRule
  • added: interface AtRule.AtRuleProps extends ContainerProps
  • added: interface AtRule.AtRuleRaws extends Record<string, unknown>
  • added: namespace AtRule
  • added: property AtRule.AtRuleProps.name: string
  • added: property AtRule.AtRuleProps.params?: number | string
  • added: property AtRule.AtRuleProps.raws?: AtRuleRaws
  • added: property AtRule.AtRuleRaws.after?: string
  • added: property AtRule.AtRuleRaws.afterName?: string
  • added: property AtRule.AtRuleRaws.before?: string
  • added: property AtRule.AtRuleRaws.between?: string
  • added: property AtRule.AtRuleRaws.params?: { raw: string; value: string }
  • added: property AtRule.AtRuleRaws.semicolon?: boolean
  • added: class Comment extends Comment_
  • added: export = Comment
  • added: interface Comment.CommentProps extends NodeProps
  • added: interface Comment.CommentRaws extends Record<string, unknown>
  • added: namespace Comment
  • added: property Comment.CommentProps.raws?: CommentRaws
  • added: property Comment.CommentProps.text: string
  • added: property Comment.CommentRaws.before?: string
  • added: property Comment.CommentRaws.left?: string
  • added: property Comment.CommentRaws.right?: string
  • added: class Container<Child extends Node = ChildNode> extends Container_<Child>
  • added: export = Container
  • added: interface Container.ContainerProps extends NodeProps
  • added: interface Container.ValueOptions
  • added: namespace Container
  • added: property Container.ContainerProps.nodes?: readonly (ChildProps | Node)[]
  • added: property Container.ValueOptions.fast?: string
  • added: property Container.ValueOptions.props?: readonly string[]
  • added: type Container.ContainerWithChildren<Child extends Node = ChildNode> = { nodes: Child[] } & (AtRule | Root | Rule)
  • added: type Container.NewChild = ChildProps | Node | readonly ChildProps[] | readonly Node[] | readonly string[] | string | undefined
  • added: class CssSyntaxError extends CssSyntaxError_
  • added: export = CssSyntaxError
  • added: interface CssSyntaxError.RangePosition
  • added: namespace CssSyntaxError
  • added: property CssSyntaxError.RangePosition.column: number
  • added: property CssSyntaxError.RangePosition.line: number
  • added: class Declaration extends Declaration_
  • added: export = Declaration
  • added: interface Declaration.DeclarationProps extends NodeProps
  • added: interface Declaration.DeclarationRaws extends Record<string, unknown>
  • added: namespace Declaration
  • added: property Declaration.DeclarationProps.important?: boolean
  • added: property Declaration.DeclarationProps.prop: string
  • added: property Declaration.DeclarationProps.raws?: DeclarationRaws
  • added: property Declaration.DeclarationProps.value: string
  • added: property Declaration.DeclarationRaws.before?: string
  • added: property Declaration.DeclarationRaws.between?: string
  • added: property Declaration.DeclarationRaws.important?: string
  • added: property Declaration.DeclarationRaws.value?: { raw: string; value: string }
  • added: class Document extends Document_
  • added: export = Document
  • added: interface Document.DocumentProps extends ContainerProps
  • added: namespace Document
  • added: property Document.DocumentProps.nodes?: readonly Root[]
  • added: property Document.DocumentProps.raws?: Record<string, any>
  • added: export = fromJSON
  • added: let fromJSON: FromJSON
  • added: class Input extends Input_
  • added: export = Input
  • added: interface Input.FilePosition
  • added: namespace Input
  • added: property Input.FilePosition.column: number
  • added: property Input.FilePosition.endColumn?: number
  • added: property Input.FilePosition.endLine?: number
  • added: property Input.FilePosition.endOffset?: number
  • added: property Input.FilePosition.file?: string
  • added: property Input.FilePosition.line: number
  • added: property Input.FilePosition.offset: number
  • added: property Input.FilePosition.source?: string
  • added: property Input.FilePosition.url: string
  • added: class LazyResult<RootNode = Document | Root> extends LazyResult_<RootNode>
  • added: export = LazyResult
  • added: namespace LazyResult
  • added: export = list
  • added: let list: list.List
  • added: namespace list
  • added: type list.List = { comma(str: string): string[]; default: List; space(str: string): string[]; split(string: string, separators: readonly string[], last: boolean): string[] }
  • added: class NoWorkResult extends NoWorkResult_
  • added: export = NoWorkResult
  • added: namespace NoWorkResult
  • added: class Node extends Node_
  • added: class Node.Node extends Node_
  • added: export = Node
  • added: interface Node.NodeErrorOptions
  • added: interface Node.NodeProps
  • added: interface Node.Position
  • added: interface Node.Range
  • added: interface Node.Source
  • added: namespace Node
  • added: property Node.NodeErrorOptions.endIndex?: number
  • added: property Node.NodeErrorOptions.index?: number
  • added: property Node.NodeErrorOptions.plugin?: string
  • added: property Node.NodeErrorOptions.word?: string
  • added: property Node.NodeProps.source?: Source
  • added: property Node.Position.column: number
  • added: property Node.Position.line: number
  • added: property Node.Position.offset: number
  • added: property Node.Range.end: Position
  • added: property Node.Range.start: Position
  • added: property Node.Source.end?: Position
  • added: property Node.Source.input: Input
  • added: property Node.Source.start?: Position
  • added: type Node.AnyNode = AtRule.default | Comment | Declaration | Document | Root | Rule
  • added: type Node.ChildNode = AtRule.default | Comment | Declaration | Rule
  • added: type Node.ChildProps = AtRuleProps | CommentProps | DeclarationProps | RuleProps
  • added: export = parse
  • added: let parse: Parse
  • removed: call postcss.Plugin(opts?: T): Transformer
  • removed: call postcss.PluginInitializer(pluginOptions?: T): Transformer
  • removed: class postcss.PreviousMap
  • removed: const postcss.parse: Parser
  • removed: const postcss.stringify: Stringifier
  • removed: constructor postcss.PreviousMap(css: any, opts: any)
  • removed: function postcss.list.comma(str: string): string[]
  • removed: function postcss.list.space(str: string): string[]
  • removed: function postcss.plugin<T>(name: string, initializer: PluginInitializer<T>): Plugin<T>
  • removed: function postcss.vendor.prefix(prop: string): string
  • removed: function postcss.vendor.unprefixed(prop: string): string
  • removed: index postcss.ResultMessage[others: string]: any
  • removed: interface postcss.AtRule extends ContainerBase
  • removed: interface postcss.AtRuleNewProps extends ContainerNewProps
  • removed: interface postcss.AtRuleRaws extends NodeRaws
  • removed: interface postcss.Comment extends NodeBase
  • removed: interface postcss.CommentNewProps
  • removed: interface postcss.ContainerBase extends NodeBase
  • removed: interface postcss.ContainerNewProps extends NodeNewProps
  • removed: interface postcss.ContainerRaws extends NodeRaws
  • removed: interface postcss.CssSyntaxError extends InputOrigin
  • removed: interface postcss.Declaration extends NodeBase
  • removed: interface postcss.DeclarationNewProps
  • removed: interface postcss.DeclarationRaws extends NodeRaws
  • removed: interface postcss.Input
  • removed: interface postcss.InputOrigin
  • removed: interface postcss.JsonAtRule extends JsonContainer
  • removed: interface postcss.JsonComment extends JsonNode
  • removed: interface postcss.JsonContainer extends JsonNode
  • removed: interface postcss.JsonDeclaration extends JsonNode
  • removed: interface postcss.JsonNode
  • removed: interface postcss.JsonRoot extends JsonContainer
  • removed: interface postcss.JsonRule extends JsonContainer
  • removed: interface postcss.LazyResult
  • removed: interface postcss.NodeBase
  • removed: interface postcss.NodeErrorOptions
  • removed: interface postcss.NodeNewProps
  • removed: interface postcss.NodeRaws
  • removed: interface postcss.NodeSource
  • removed: interface postcss.PluginInitializer<T>
  • removed: interface postcss.Processor
  • removed: interface postcss.Result
  • removed: interface postcss.ResultMap
  • removed: interface postcss.ResultMessage
  • removed: interface postcss.ResultOptions extends ProcessOptions
  • removed: interface postcss.Root extends ContainerBase
  • removed: interface postcss.RootNewProps extends ContainerNewProps
  • removed: interface postcss.Rule extends ContainerBase
  • removed: interface postcss.RuleNewProps extends ContainerNewProps
  • removed: interface postcss.RuleRaws extends ContainerRaws
  • removed: interface postcss.Warning
  • removed: interface postcss.WarningOptions extends ResultOptions
  • removed: method postcss.AtRule.clone(overrides?: object): this
  • removed: method postcss.Comment.clone(overrides?: object): this
  • removed: method postcss.ContainerBase.append(...nodes: (Node | object | string)[]): this
  • removed: method postcss.ContainerBase.clone(overrides?: object): this
  • removed: method postcss.ContainerBase.each(callback: (node: ChildNode, index: number) => boolean): boolean
  • removed: method postcss.ContainerBase.each(callback: (node: ChildNode, index: number) => void): void
  • removed: method postcss.ContainerBase.every(callback: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean
  • removed: method postcss.ContainerBase.index(child: ChildNode | number): number
  • removed: method postcss.ContainerBase.insertAfter(oldNode: ChildNode | number, newNode: ChildNode | object | string): this
  • removed: method postcss.ContainerBase.insertBefore(oldNode: ChildNode | number, newNode: ChildNode | object | string): this
  • removed: method postcss.ContainerBase.prepend(...nodes: (Node | object | string)[]): this
  • removed: method postcss.ContainerBase.remove(): this
  • removed: method postcss.ContainerBase.removeAll(): this
  • removed: method postcss.ContainerBase.removeChild(child: ChildNode | number): this
  • removed: method postcss.ContainerBase.replaceValues(pattern: string | RegExp, callbackOrReplaceValue: string | { (substring: string, ...args: any[]): string }): this
  • removed: method postcss.ContainerBase.replaceValues(pattern: string | RegExp, options: { props?: string[]; fast?: string }, callbackOrReplaceValue: string | { (substring: string, ...args: any[]): string }): this
  • removed: method postcss.ContainerBase.some(callback: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean
  • removed: method postcss.ContainerBase.walk(callback: (node: ChildNode, index: number) => boolean): boolean
  • removed: method postcss.ContainerBase.walk(callback: (node: ChildNode, index: number) => void): void
  • removed: method postcss.ContainerBase.walkAtRules(callback: (atRule: AtRule, index: number) => boolean): boolean
  • removed: method postcss.ContainerBase.walkAtRules(callback: (atRule: AtRule, index: number) => void): void
  • removed: method postcss.ContainerBase.walkAtRules(nameFilter: string | RegExp, callback: (atRule: AtRule, index: number) => boolean): boolean
  • removed: method postcss.ContainerBase.walkAtRules(nameFilter: string | RegExp, callback: (atRule: AtRule, index: number) => void): void
  • removed: method postcss.ContainerBase.walkComments(callback: (comment: Comment, indexed: number) => boolean): boolean
  • removed: method postcss.ContainerBase.walkComments(callback: (comment: Comment, indexed: number) => void): void
  • removed: method postcss.ContainerBase.walkDecls(callback: (decl: Declaration, index: number) => boolean): boolean
  • removed: method postcss.ContainerBase.walkDecls(callback: (decl: Declaration, index: number) => void): void
  • removed: method postcss.ContainerBase.walkDecls(propFilter: string | RegExp, callback: (decl: Declaration, index: number) => boolean): boolean
  • removed: method postcss.ContainerBase.walkDecls(propFilter: string | RegExp, callback: (decl: Declaration, index: number) => void): void
  • removed: method postcss.ContainerBase.walkRules(callback: (atRule: Rule, index: number) => boolean): boolean
  • removed: method postcss.ContainerBase.walkRules(callback: (atRule: Rule, index: number) => void): void
  • removed: method postcss.ContainerBase.walkRules(selectorFilter: string | RegExp, callback: (atRule: Rule, index: number) => boolean): boolean
  • removed: method postcss.ContainerBase.walkRules(selectorFilter: string | RegExp, callback: (atRule: Rule, index: number) => void): void
  • removed: method postcss.CssSyntaxError.showSourceCode(color?: boolean): string
  • removed: method postcss.CssSyntaxError.toString(): string
  • removed: method postcss.Declaration.clone(overrides?: object): this
  • removed: method postcss.Input.origin(line: number, column: number): InputOrigin | false
  • removed: method postcss.LazyResult.toString(): string
  • removed: method postcss.LazyResult.warnings(): Warning[]
  • removed: method postcss.NodeBase.after(newNode: Node | object | string | Node[]): this
  • removed: method postcss.NodeBase.before(newNode: Node | object | string | Node[]): this
  • removed: method postcss.NodeBase.clone(overrides?: object): this
  • removed: method postcss.NodeBase.cloneAfter(overrides?: object): this
  • removed: method postcss.NodeBase.cloneBefore(overrides?: object): this
  • removed: method postcss.NodeBase.error(message: string, options?: NodeErrorOptions): CssSyntaxError
  • removed: method postcss.NodeBase.next(): ChildNode | undefined
  • removed: method postcss.NodeBase.prev(): ChildNode | undefined
  • removed: method postcss.NodeBase.raw(prop: string, defaultType?: string): string
  • removed: method postcss.NodeBase.remove(): this
  • removed: method postcss.NodeBase.replaceWith(...nodes: (Node | object)[]): this
  • removed: method postcss.NodeBase.root(): Root
  • removed: method postcss.NodeBase.toString(stringifier?: Stringifier | Syntax): string
  • removed: method postcss.NodeBase.warn(result: Result, text: string, opts?: WarningOptions): void
  • removed: method postcss.PreviousMap.consumer(): mozilla.SourceMapConsumer
  • removed: method postcss.PreviousMap.decodeInline(text: string): string
  • removed: method postcss.PreviousMap.getAnnotationURL(sourceMapString: string): string
  • removed: method postcss.PreviousMap.isMap(map: any): boolean
  • removed: method postcss.PreviousMap.loadAnnotation(css: string): void
  • removed: method postcss.PreviousMap.loadMap(file: any, prev: string | Function | mozilla.SourceMapConsumer | mozilla.SourceMapGenerator | mozilla.RawSourceMap): string
  • removed: method postcss.PreviousMap.startWith(string: string, start: string): boolean
  • removed: method postcss.PreviousMap.withContent(): boolean
  • removed: method postcss.Processor.process(css: ParserInput | Result | LazyResult | Root, options?: ProcessOptions): LazyResult
  • removed: method postcss.Processor.use(plugin: AcceptedPlugin): Processor
  • removed: method postcss.Result.toString(): string
  • removed: method postcss.Result.warn(message: string, options?: WarningOptions): void
  • removed: method postcss.Result.warnings(): Warning[]
  • removed: method postcss.ResultMap.addMapping(mapping: mozilla.Mapping): void
  • removed: method postcss.ResultMap.applySourceMap(sourceMapConsumer: mozilla.SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void
  • removed: method postcss.ResultMap.setSourceContent(sourceFile: string, sourceContent: string): void
  • removed: method postcss.Root.clone(overrides?: object): this
  • removed: method postcss.Root.removeChild(child: ChildNode | number): this
  • removed: method postcss.Root.toResult(options?: { to?: string; map?: SourceMapOptions }): Result
  • removed: method postcss.Rule.clone(overrides?: object): this
  • removed: method postcss.Warning.toString(): string
  • removed: namespace postcss.list
  • removed: namespace postcss.vendor
  • removed: property postcss.AtRule.name: string
  • removed: property postcss.AtRule.params: string
  • removed: property postcss.AtRule.parent: Container
  • removed: property postcss.AtRule.type: 'atrule'
  • removed: property postcss.AtRuleNewProps.name?: string
  • removed: property postcss.AtRuleNewProps.params?: string | number
  • removed: property postcss.AtRuleNewProps.raws?: AtRuleRaws
  • removed: property postcss.AtRuleRaws.params?: string
  • removed: property postcss.Comment.parent: Container
  • removed: property postcss.Comment.text: string
  • removed: property postcss.Comment.type: 'comment'
  • removed: property postcss.CommentNewProps.text?: string
  • removed: property postcss.ContainerBase.first?: ChildNode
  • removed: property postcss.ContainerBase.last?: ChildNode
  • removed: property postcss.ContainerBase.nodes?: ChildNode[]
  • removed: property postcss.ContainerNewProps.nodes?: ChildNode[]
  • removed: property postcss.ContainerNewProps.raws?: ContainerRaws
  • removed: property postcss.ContainerRaws.indent?: string
  • removed: property postcss.CssSyntaxError.input?: InputOrigin
  • removed: property postcss.CssSyntaxError.message: string
  • removed: property postcss.CssSyntaxError.name: string
  • removed: property postcss.CssSyntaxError.plugin?: string
  • removed: property postcss.CssSyntaxError.reason: string
  • removed: property postcss.Declaration.important: boolean
  • removed: property postcss.Declaration.parent: Container
  • removed: property postcss.Declaration.prop: string
  • removed: property postcss.Declaration.type: 'decl'
  • removed: property postcss.Declaration.value: string
  • removed: property postcss.DeclarationNewProps.prop?: string
  • removed: property postcss.DeclarationNewProps.raws?: DeclarationRaws
  • removed: property postcss.DeclarationNewProps.value?: string
  • removed: property postcss.DeclarationRaws.value?: string
  • removed: property postcss.Input.file?: string
  • removed: property postcss.Input.from: string
  • removed: property postcss.Input.hasBOM: boolean
  • removed: property postcss.Input.id?: string
  • removed: property postcss.Input.map: PreviousMap
  • removed: property postcss.InputOrigin.column?: number
  • removed: property postcss.InputOrigin.file?: string
  • removed: property postcss.InputOrigin.line?: number
  • removed: property postcss.InputOrigin.source?: string
  • removed: property postcss.JsonAtRule.name?: string
  • removed: property postcss.JsonAtRule.params?: string
  • removed: property postcss.JsonContainer.first?: ChildNode
  • removed: property postcss.JsonContainer.last?: ChildNode
  • removed: property postcss.JsonContainer.nodes?: ChildNode[]
  • removed: property postcss.JsonDeclaration.important?: boolean
  • removed: property postcss.JsonNode.parent?: JsonContainer
  • removed: property postcss.JsonNode.raws?: NodeRaws
  • removed: property postcss.JsonNode.source?: NodeSource
  • removed: property postcss.JsonNode.type?: string
  • removed: property postcss.JsonRule.selector?: string
  • removed: property postcss.JsonRule.selectors?: string[]
  • removed: property postcss.LazyResult.catch: Promise<Result>['catch']
  • removed: property postcss.LazyResult.content: string
  • removed: property postcss.LazyResult.css: string
  • removed: property postcss.LazyResult.map: ResultMap
  • removed: property postcss.LazyResult.messages: ResultMessage[]
  • removed: property postcss.LazyResult.opts: ResultOptions
  • removed: property postcss.LazyResult.processor: Processor
  • removed: property postcss.LazyResult.root: Root
  • removed: property postcss.LazyResult.then: Promise<Result>['then']
  • removed: property postcss.NodeBase.raws: NodeRaws
  • removed: property postcss.NodeBase.source?: NodeSource
  • removed: property postcss.NodeErrorOptions.index?: number
  • removed: property postcss.NodeErrorOptions.plugin?: string
  • removed: property postcss.NodeErrorOptions.word?: string
  • removed: property postcss.NodeNewProps.raws?: NodeRaws
  • removed: property postcss.NodeNewProps.source?: NodeSource
  • removed: property postcss.NodeRaws.after?: string
  • removed: property postcss.NodeRaws.afterName?: string
  • removed: property postcss.NodeRaws.before?: string
  • removed: property postcss.NodeRaws.between?: string
  • removed: property postcss.NodeRaws.important?: string
  • removed: property postcss.NodeRaws.left?: string
  • removed: property postcss.NodeRaws.right?: string
  • removed: property postcss.NodeRaws.semicolon?: boolean
  • removed: property postcss.NodeSource.end?: { column: number; line: number }
  • removed: property postcss.NodeSource.input: Input
  • removed: property postcss.NodeSource.start?: { column: number; line: number }
  • removed: property postcss.Plugin.postcss: Transformer
  • removed: property postcss.Plugin.process: (css: string | { toString(): string } | Result, processOpts?: ProcessOptions, pluginOpts?: T) => LazyResult
  • removed: property postcss.PreviousMap.annotation: string
  • removed: property postcss.PreviousMap.file: string
  • removed: property postcss.PreviousMap.root: string
  • removed: property postcss.PreviousMap.text: string
  • removed: property postcss.Processor.plugins: Plugin<any>[]
  • removed: property postcss.Processor.version: string
  • removed: property postcss.Result.content: string
  • removed: property postcss.Result.css: string
  • removed: property postcss.Result.map: ResultMap
  • removed: property postcss.Result.messages: ResultMessage[]
  • removed: property postcss.Result.opts?: ResultOptions
  • removed: property postcss.Result.processor?: Processor
  • removed: property postcss.Result.root?: Root
  • removed: property postcss.ResultMap.toJSON: () => mozilla.RawSourceMap
  • removed: property postcss.ResultMap.toString: () => string
  • removed: property postcss.ResultMessage.plugin: string
  • removed: property postcss.ResultMessage.type: string
  • removed: property postcss.ResultOptions.node?: postcss.Node
  • removed: property postcss.ResultOptions.plugin?: string
  • removed: property postcss.Root.parent: void
  • removed: property postcss.Root.type: 'root'
  • removed: property postcss.Rule.parent: Container
  • removed: property postcss.Rule.selector: string
  • removed: property postcss.Rule.selectors: string[]
  • removed: property postcss.Rule.type: 'rule'
  • removed: property postcss.RuleNewProps.raws?: RuleRaws
  • removed: property postcss.RuleNewProps.selector?: string
  • removed: property postcss.RuleNewProps.selectors?: string[]
  • removed: property postcss.RuleRaws.selector?: string
  • removed: property postcss.Warning.column: number
  • removed: property postcss.Warning.line: number
  • removed: property postcss.Warning.node: Node
  • removed: property postcss.Warning.plugin: string
  • removed: property postcss.Warning.text: string
  • removed: property postcss.WarningOptions.index?: number
  • removed: property postcss.WarningOptions.word?: string
  • removed: type postcss.ChildNode = AtRule | Rule | Declaration | Comment
  • removed: type postcss.Container = Root | AtRule | Rule
  • removed: type postcss.Node = Root | ChildNode
  • removed: type postcss.ParserInput = string | { toString(): string }
  • changed: call postcss.Builder(part: string, node?: Node, type?: 'start' | 'end'): void → call postcss.Builder(part: string, node?: AnyNode, type?: 'end' | 'start'): void
  • changed: call postcss.Parser(css: ParserInput, opts?: Pick<ProcessOptions, 'map' | 'from'>): Root → call postcss.Parser(css: { toString(): string } | string, opts?: Pick<ProcessOptions, 'document' | 'from' | 'map' | 'unsafeMap'>): RootNode
  • changed: call postcss.Stringifier(node: Node, builder: Builder): void → call postcss.Stringifier(node: AnyNode, builder: Builder): void
  • changed: call postcss.TransformCallback(root: Root, result: Result): Promise<any> | any → call postcss.TransformCallback(root: Root, result: Result): Promise<void> | void
  • changed: function postcss(...plugins: postcss.AcceptedPlugin[]): postcss.Processor → function postcss(...plugins: postcss.AcceptedPlugin[]): Processor
  • changed: function postcss(plugins?: postcss.AcceptedPlugin[]): postcss.Processor → function postcss(plugins?: readonly postcss.AcceptedPlugin[]): Processor
  • changed: function postcss.atRule(defaults?: AtRuleNewProps): AtRule → function postcss.atRule(defaults?: AtRuleProps): AtRule
  • changed: function postcss.comment(defaults?: CommentNewProps): Comment → function postcss.comment(defaults?: CommentProps): Comment
  • changed: function postcss.decl(defaults?: DeclarationNewProps): Declaration → function postcss.decl(defaults?: DeclarationProps): Declaration
  • changed: function postcss.root(defaults?: object): Root → function postcss.root(defaults?: RootProps): Root
  • changed: function postcss.rule(defaults?: RuleNewProps): Rule → function postcss.rule(defaults?: RuleProps): Rule
  • changed: interface postcss.Parser → interface postcss.Parser<RootNode = Document | Root>
  • changed: interface postcss.Plugin<T> extends Transformer → interface postcss.Plugin extends Processors
  • changed: interface postcss.ProcessOptions → interface postcss.ProcessOptions<RootNode = Document | Root>
  • changed: interface postcss.Syntax → interface postcss.Syntax<RootNode = Document | Root>
  • changed: property postcss.ProcessOptions.from?: string → property postcss.ProcessOptions.from?: string | undefined
  • changed: property postcss.ProcessOptions.map?: SourceMapOptions | boolean → property postcss.ProcessOptions.map?: boolean | SourceMapOptions
  • changed: property postcss.ProcessOptions.parser?: Parser → property postcss.ProcessOptions.parser?: Parser<RootNode> | Syntax<RootNode>
  • changed: property postcss.ProcessOptions.stringifier?: Stringifier → property postcss.ProcessOptions.stringifier?: Stringifier | Syntax<RootNode>
  • changed: property postcss.ProcessOptions.syntax?: Syntax → property postcss.ProcessOptions.syntax?: Syntax<RootNode>
  • changed: property postcss.SourceMapOptions.annotation?: string | boolean → property postcss.SourceMapOptions.annotation?: ((file: string, root: Root) => string) | boolean | string
  • changed: property postcss.SourceMapOptions.prev?: any → property postcss.SourceMapOptions.prev?: ((file: string) => string) | boolean | object | string
  • changed: property postcss.Syntax.parse?: Parser → property postcss.Syntax.parse?: Parser<RootNode>
  • changed: property postcss.Transformer.postcssPlugin?: string → property postcss.Transformer.postcssPlugin: string
  • changed: property postcss.Transformer.postcssVersion?: string → property postcss.Transformer.postcssVersion: string
  • changed: type postcss.AcceptedPlugin = Plugin<any> | Transformer | { postcss: TransformCallback | Processor } | Processor → type postcss.AcceptedPlugin = { postcss: Processor | TransformCallback } | OldPlugin<any> | Plugin | PluginCreator<any> | Processor | TransformCallback
  • added: call postcss.JSONHydrator(data: object): Node
  • added: call postcss.JSONHydrator(data: object[]): Node[]
  • added: call postcss.OldPlugin(opts?: T): Transformer
  • added: call postcss.PluginCreator(opts?: PluginOptions): Plugin | Processor
  • added: export { AcceptedPlugin } from './postcss'
  • added: export { AnyNode } from './postcss'
  • added: export { AtRule } from './postcss'
  • added: export { AtRuleProps } from './postcss'
  • added: export { Builder } from './postcss'
  • added: export { ChildNode } from './postcss'
  • added: export { ChildProps } from './postcss'
  • added: export { Comment } from './postcss'
  • added: export { CommentProps } from './postcss'
  • added: export { Container } from './postcss'
  • added: export { ContainerProps } from './postcss'
  • added: export { CssSyntaxError } from './postcss'
  • added: export { Declaration } from './postcss'
  • added: export { DeclarationProps } from './postcss'
  • added: export { Document } from './postcss'
  • added: export { DocumentProps } from './postcss'
  • added: export { FilePosition } from './postcss'
  • added: export { Helpers } from './postcss'
  • added: export { Input } from './postcss'
  • added: export { JSONHydrator } from './postcss'
  • added: export { LazyResult } from './postcss'
  • added: export { Message } from './postcss'
  • added: export { Node } from './postcss'
  • added: export { NodeErrorOptions } from './postcss'
  • added: export { NodeProps } from './postcss'
  • added: export { OldPlugin } from './postcss'
  • added: export { Parser } from './postcss'
  • added: export { Plugin } from './postcss'
  • added: export { PluginCreator } from './postcss'
  • added: export { Position } from './postcss'
  • added: export { Postcss } from './postcss'
  • added: export { ProcessOptions } from './postcss'
  • added: export { Processor } from './postcss'
  • added: export { Result } from './postcss'
  • added: export { Root } from './postcss'
  • added: export { RootProps } from './postcss'
  • added: export { Rule } from './postcss'
  • added: export { RuleProps } from './postcss'
  • added: export { Source } from './postcss'
  • added: export { SourceMap } from './postcss'
  • added: export { SourceMapOptions } from './postcss'
  • added: export { Stringifier } from './postcss'
  • added: export { Syntax } from './postcss'
  • added: export { TransformCallback } from './postcss'
  • added: export { Transformer } from './postcss'
  • added: export { Warning } from './postcss'
  • added: export { WarningOptions } from './postcss'
  • added: export { atRule } from './postcss'
  • added: export { comment } from './postcss'
  • added: export { decl } from './postcss'
  • added: export { default } from './postcss'
  • added: export { document } from './postcss'
  • added: export { fromJSON } from './postcss'
  • added: export { list } from './postcss'
  • added: export { parse } from './postcss'
  • added: export { plugin } from './postcss'
  • added: export { root } from './postcss'
  • added: export { rule } from './postcss'
  • added: export { stringify } from './postcss'
  • added: function postcss.document(defaults?: DocumentProps): Document
  • added: interface postcss.JSONHydrator
  • added: interface postcss.OldPlugin<T> extends Transformer
  • added: interface postcss.PluginCreator<PluginOptions>
  • added: let postcss.fromJSON: JSONHydrator
  • added: let postcss.parse: Parser<Root>
  • added: let postcss.stringify: Stringifier
  • added: property postcss.OldPlugin.postcss: Transformer
  • added: property postcss.Plugin.postcssPlugin: string
  • added: property postcss.Plugin.prepare?: (result: Result) => Processors
  • added: property postcss.PluginCreator.postcss: true
  • added: property postcss.ProcessOptions.document?: string
  • added: property postcss.ProcessOptions.unsafeMap?: boolean
  • added: property postcss.SourceMapOptions.absolute?: boolean
  • added: type postcss.Helpers = { postcss: Postcss; result: Result } & Postcss
  • added: type postcss.Postcss = typeof postcss
  • added: type postcss.SourceMap = { toJSON(): RawSourceMap } & SourceMapGenerator
  • added: class PreviousMap extends PreviousMap_
  • added: export = PreviousMap
  • added: namespace PreviousMap
  • added: class Processor extends Processor_
  • added: export = Processor
  • added: namespace Processor
  • added: class Result<RootNode = Document | Root> extends Result_<RootNode>
  • added: export = Result
  • added: index Result.Message[others: string]: any
  • added: interface Result.Message
  • added: interface Result.ResultOptions extends ProcessOptions
  • added: namespace Result
  • added: property Result.Message.plugin?: string
  • added: property Result.Message.type: string
  • added: property Result.ResultOptions.node?: Node
  • added: property Result.ResultOptions.plugin?: string
  • added: class Root extends Root_
  • added: export = Root
  • added: interface Root.RootProps extends ContainerProps
  • added: interface Root.RootRaws extends Record<string, any>
  • added: namespace Root
  • added: property Root.RootProps.raws?: RootRaws
  • added: property Root.RootRaws.after?: string
  • added: property Root.RootRaws.codeAfter?: string
  • added: property Root.RootRaws.codeBefore?: string
  • added: property Root.RootRaws.semicolon?: boolean
  • added: class Rule extends Rule_
  • added: export = Rule
  • added: interface Rule.RuleRaws extends Record<string, unknown>
  • added: namespace Rule
  • added: property Rule.RuleRaws.after?: string
  • added: property Rule.RuleRaws.before?: string
  • added: property Rule.RuleRaws.between?: string
  • added: property Rule.RuleRaws.ownSemicolon?: string
  • added: property Rule.RuleRaws.selector?: { raw: string; value: string }
  • added: property Rule.RuleRaws.semicolon?: boolean
  • added: type Rule.RuleProps = { raws?: RuleRaws } & (| { selector: string; selectors?: never } | { selector?: never; selectors: readonly string[] }) & ContainerProps
  • added: class Stringifier extends Stringifier_
  • added: export = Stringifier
  • added: namespace Stringifier
  • added: export = stringify
  • added: let stringify: Stringify
  • added: class Warning extends Warning_
  • added: export = Warning
  • added: interface Warning.WarningOptions
  • added: namespace Warning
  • added: property Warning.WarningOptions.end?: RangePosition
  • added: property Warning.WarningOptions.endIndex?: number
  • added: property Warning.WarningOptions.index?: number
  • added: property Warning.WarningOptions.node?: Node
  • added: property Warning.WarningOptions.plugin?: string
  • added: property Warning.WarningOptions.start?: RangePosition
  • added: property Warning.WarningOptions.word?: string