init
This commit is contained in:
		
							
								
								
									
										134
									
								
								node_modules/postcss/lib/at-rule.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								node_modules/postcss/lib/at-rule.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,134 @@
 | 
			
		||||
import Container, { ContainerProps } from './container.js'
 | 
			
		||||
 | 
			
		||||
declare namespace AtRule {
 | 
			
		||||
  export interface AtRuleRaws extends Record<string, unknown> {
 | 
			
		||||
    /**
 | 
			
		||||
     * The space symbols after the last child of the node to the end of the node.
 | 
			
		||||
     */
 | 
			
		||||
    after?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The space between the at-rule name and its parameters.
 | 
			
		||||
     */
 | 
			
		||||
    afterName?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The space symbols before the node. It also stores `*`
 | 
			
		||||
     * and `_` symbols before the declaration (IE hack).
 | 
			
		||||
     */
 | 
			
		||||
    before?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The symbols between the last parameter and `{` for rules.
 | 
			
		||||
     */
 | 
			
		||||
    between?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The rule’s selector with comments.
 | 
			
		||||
     */
 | 
			
		||||
    params?: {
 | 
			
		||||
      raw: string
 | 
			
		||||
      value: string
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Contains `true` if the last child has an (optional) semicolon.
 | 
			
		||||
     */
 | 
			
		||||
    semicolon?: boolean
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface AtRuleProps extends ContainerProps {
 | 
			
		||||
    /** Name of the at-rule. */
 | 
			
		||||
    name: string
 | 
			
		||||
    /** Parameters following the name of the at-rule. */
 | 
			
		||||
    params?: number | string
 | 
			
		||||
    /** Information used to generate byte-to-byte equal node string as it was in the origin input. */
 | 
			
		||||
    raws?: AtRuleRaws
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { AtRule_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Represents an at-rule.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * Once (root, { AtRule }) {
 | 
			
		||||
 *   let media = new AtRule({ name: 'media', params: 'print' })
 | 
			
		||||
 *   media.append(…)
 | 
			
		||||
 *   root.append(media)
 | 
			
		||||
 * }
 | 
			
		||||
 * ```
 | 
			
		||||
 *
 | 
			
		||||
 * If it’s followed in the CSS by a `{}` block, this node will have
 | 
			
		||||
 * a nodes property representing its children.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const root = postcss.parse('@charset "UTF-8"; @media print {}')
 | 
			
		||||
 *
 | 
			
		||||
 * const charset = root.first
 | 
			
		||||
 * charset.type  //=> 'atrule'
 | 
			
		||||
 * charset.nodes //=> undefined
 | 
			
		||||
 *
 | 
			
		||||
 * const media = root.last
 | 
			
		||||
 * media.nodes   //=> []
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class AtRule_ extends Container {
 | 
			
		||||
  /**
 | 
			
		||||
   * The at-rule’s name immediately follows the `@`.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root  = postcss.parse('@media print {}')
 | 
			
		||||
   * const media = root.first
 | 
			
		||||
   * media.name //=> 'media'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  name: string
 | 
			
		||||
  /**
 | 
			
		||||
   * An array containing the layer’s children.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('@layer example { a { color: black } }')
 | 
			
		||||
   * const layer = root.first
 | 
			
		||||
   * layer.nodes.length           //=> 1
 | 
			
		||||
   * layer.nodes[0].selector      //=> 'a'
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * Can be `undefinded` if the at-rule has no body.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('@layer a, b, c;')
 | 
			
		||||
   * const layer = root.first
 | 
			
		||||
   * layer.nodes //=> undefined
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  nodes: Container['nodes']
 | 
			
		||||
  /**
 | 
			
		||||
   * The at-rule’s parameters, the values that follow the at-rule’s name
 | 
			
		||||
   * but precede any `{}` block.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root  = postcss.parse('@media print, screen {}')
 | 
			
		||||
   * const media = root.first
 | 
			
		||||
   * media.params //=> 'print, screen'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  params: string
 | 
			
		||||
  parent: Container | undefined
 | 
			
		||||
 | 
			
		||||
  raws: AtRule.AtRuleRaws
 | 
			
		||||
 | 
			
		||||
  type: 'atrule'
 | 
			
		||||
 | 
			
		||||
  constructor(defaults?: AtRule.AtRuleProps)
 | 
			
		||||
  assign(overrides: AtRule.AtRuleProps | object): this
 | 
			
		||||
  clone(overrides?: Partial<AtRule.AtRuleProps>): AtRule
 | 
			
		||||
  cloneAfter(overrides?: Partial<AtRule.AtRuleProps>): AtRule
 | 
			
		||||
  cloneBefore(overrides?: Partial<AtRule.AtRuleProps>): AtRule
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class AtRule extends AtRule_ {}
 | 
			
		||||
 | 
			
		||||
export = AtRule
 | 
			
		||||
							
								
								
									
										25
									
								
								node_modules/postcss/lib/at-rule.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								node_modules/postcss/lib/at-rule.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Container = require('./container')
 | 
			
		||||
 | 
			
		||||
class AtRule extends Container {
 | 
			
		||||
  constructor(defaults) {
 | 
			
		||||
    super(defaults)
 | 
			
		||||
    this.type = 'atrule'
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  append(...children) {
 | 
			
		||||
    if (!this.proxyOf.nodes) this.nodes = []
 | 
			
		||||
    return super.append(...children)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  prepend(...children) {
 | 
			
		||||
    if (!this.proxyOf.nodes) this.nodes = []
 | 
			
		||||
    return super.prepend(...children)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = AtRule
 | 
			
		||||
AtRule.default = AtRule
 | 
			
		||||
 | 
			
		||||
Container.registerAtRule(AtRule)
 | 
			
		||||
							
								
								
									
										67
									
								
								node_modules/postcss/lib/comment.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								node_modules/postcss/lib/comment.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
import Container from './container.js'
 | 
			
		||||
import Node, { NodeProps } from './node.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Comment {
 | 
			
		||||
  export interface CommentRaws extends Record<string, unknown> {
 | 
			
		||||
    /**
 | 
			
		||||
     * The space symbols before the node.
 | 
			
		||||
     */
 | 
			
		||||
    before?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The space symbols between `/*` and the comment’s text.
 | 
			
		||||
     */
 | 
			
		||||
    left?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The space symbols between the comment’s text.
 | 
			
		||||
     */
 | 
			
		||||
    right?: string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface CommentProps extends NodeProps {
 | 
			
		||||
    /** Information used to generate byte-to-byte equal node string as it was in the origin input. */
 | 
			
		||||
    raws?: CommentRaws
 | 
			
		||||
    /** Content of the comment. */
 | 
			
		||||
    text: string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Comment_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * It represents a class that handles
 | 
			
		||||
 * [CSS comments](https://developer.mozilla.org/en-US/docs/Web/CSS/Comments)
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * Once (root, { Comment }) {
 | 
			
		||||
 *   const note = new Comment({ text: 'Note: …' })
 | 
			
		||||
 *   root.append(note)
 | 
			
		||||
 * }
 | 
			
		||||
 * ```
 | 
			
		||||
 *
 | 
			
		||||
 * Remember that CSS comments inside selectors, at-rule parameters,
 | 
			
		||||
 * or declaration values will be stored in the `raws` properties
 | 
			
		||||
 * explained above.
 | 
			
		||||
 */
 | 
			
		||||
declare class Comment_ extends Node {
 | 
			
		||||
  parent: Container | undefined
 | 
			
		||||
  raws: Comment.CommentRaws
 | 
			
		||||
  /**
 | 
			
		||||
   * The comment's text.
 | 
			
		||||
   */
 | 
			
		||||
  text: string
 | 
			
		||||
 | 
			
		||||
  type: 'comment'
 | 
			
		||||
 | 
			
		||||
  constructor(defaults?: Comment.CommentProps)
 | 
			
		||||
  assign(overrides: Comment.CommentProps | object): this
 | 
			
		||||
  clone(overrides?: Partial<Comment.CommentProps>): Comment
 | 
			
		||||
  cloneAfter(overrides?: Partial<Comment.CommentProps>): Comment
 | 
			
		||||
  cloneBefore(overrides?: Partial<Comment.CommentProps>): Comment
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Comment extends Comment_ {}
 | 
			
		||||
 | 
			
		||||
export = Comment
 | 
			
		||||
							
								
								
									
										13
									
								
								node_modules/postcss/lib/comment.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								node_modules/postcss/lib/comment.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Node = require('./node')
 | 
			
		||||
 | 
			
		||||
class Comment extends Node {
 | 
			
		||||
  constructor(defaults) {
 | 
			
		||||
    super(defaults)
 | 
			
		||||
    this.type = 'comment'
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Comment
 | 
			
		||||
Comment.default = Comment
 | 
			
		||||
							
								
								
									
										452
									
								
								node_modules/postcss/lib/container.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										452
									
								
								node_modules/postcss/lib/container.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,452 @@
 | 
			
		||||
import AtRule from './at-rule.js'
 | 
			
		||||
import Comment from './comment.js'
 | 
			
		||||
import Declaration from './declaration.js'
 | 
			
		||||
import Node, { ChildNode, ChildProps, NodeProps } from './node.js'
 | 
			
		||||
import Rule from './rule.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Container {
 | 
			
		||||
  export interface ValueOptions {
 | 
			
		||||
    /**
 | 
			
		||||
     * String that’s used to narrow down values and speed up the regexp search.
 | 
			
		||||
     */
 | 
			
		||||
    fast?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * An array of property names.
 | 
			
		||||
     */
 | 
			
		||||
    props?: string[]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface ContainerProps extends NodeProps {
 | 
			
		||||
    nodes?: (ChildNode | ChildProps)[]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Container_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The `Root`, `AtRule`, and `Rule` container nodes
 | 
			
		||||
 * inherit some common methods to help work with their children.
 | 
			
		||||
 *
 | 
			
		||||
 * Note that all containers can store any content. If you write a rule inside
 | 
			
		||||
 * a rule, PostCSS will parse it.
 | 
			
		||||
 */
 | 
			
		||||
declare abstract class Container_<Child extends Node = ChildNode> extends Node {
 | 
			
		||||
  /**
 | 
			
		||||
   * An array containing the container’s children.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('a { color: black }')
 | 
			
		||||
   * root.nodes.length           //=> 1
 | 
			
		||||
   * root.nodes[0].selector      //=> 'a'
 | 
			
		||||
   * root.nodes[0].nodes[0].prop //=> 'color'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  nodes: Child[] | undefined
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Inserts new nodes to the end of the container.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const decl1 = new Declaration({ prop: 'color', value: 'black' })
 | 
			
		||||
   * const decl2 = new Declaration({ prop: 'background-color', value: 'white' })
 | 
			
		||||
   * rule.append(decl1, decl2)
 | 
			
		||||
   *
 | 
			
		||||
   * root.append({ name: 'charset', params: '"UTF-8"' })  // at-rule
 | 
			
		||||
   * root.append({ selector: 'a' })                       // rule
 | 
			
		||||
   * rule.append({ prop: 'color', value: 'black' })       // declaration
 | 
			
		||||
   * rule.append({ text: 'Comment' })                     // comment
 | 
			
		||||
   *
 | 
			
		||||
   * root.append('a {}')
 | 
			
		||||
   * root.first.append('color: black; z-index: 1')
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param nodes New nodes.
 | 
			
		||||
   * @return This node for methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  append(
 | 
			
		||||
    ...nodes: (ChildProps | ChildProps[] | Node | Node[] | string | string[])[]
 | 
			
		||||
  ): this
 | 
			
		||||
 | 
			
		||||
  assign(overrides: Container.ContainerProps | object): this
 | 
			
		||||
  clone(overrides?: Partial<Container.ContainerProps>): Container<Child>
 | 
			
		||||
  cloneAfter(overrides?: Partial<Container.ContainerProps>): Container<Child>
 | 
			
		||||
  cloneBefore(overrides?: Partial<Container.ContainerProps>): Container<Child>
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Iterates through the container’s immediate children,
 | 
			
		||||
   * calling `callback` for each child.
 | 
			
		||||
   *
 | 
			
		||||
   * Returning `false` in the callback will break iteration.
 | 
			
		||||
   *
 | 
			
		||||
   * This method only iterates through the container’s immediate children.
 | 
			
		||||
   * If you need to recursively iterate through all the container’s descendant
 | 
			
		||||
   * nodes, use `Container#walk`.
 | 
			
		||||
   *
 | 
			
		||||
   * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe
 | 
			
		||||
   * if you are mutating the array of child nodes during iteration.
 | 
			
		||||
   * PostCSS will adjust the current index to match the mutations.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('a { color: black; z-index: 1 }')
 | 
			
		||||
   * const rule = root.first
 | 
			
		||||
   *
 | 
			
		||||
   * for (const decl of rule.nodes) {
 | 
			
		||||
   *   decl.cloneBefore({ prop: '-webkit-' + decl.prop })
 | 
			
		||||
   *   // Cycle will be infinite, because cloneBefore moves the current node
 | 
			
		||||
   *   // to the next index
 | 
			
		||||
   * }
 | 
			
		||||
   *
 | 
			
		||||
   * rule.each(decl => {
 | 
			
		||||
   *   decl.cloneBefore({ prop: '-webkit-' + decl.prop })
 | 
			
		||||
   *   // Will be executed only for color and z-index
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param callback Iterator receives each node and index.
 | 
			
		||||
   * @return Returns `false` if iteration was broke.
 | 
			
		||||
   */
 | 
			
		||||
  each(
 | 
			
		||||
    callback: (node: Child, index: number) => false | void
 | 
			
		||||
  ): false | undefined
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns `true` if callback returns `true`
 | 
			
		||||
   * for all of the container’s children.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const noPrefixes = rule.every(i => i.prop[0] !== '-')
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param condition Iterator returns true or false.
 | 
			
		||||
   * @return Is every child pass condition.
 | 
			
		||||
   */
 | 
			
		||||
  every(
 | 
			
		||||
    condition: (node: Child, index: number, nodes: Child[]) => boolean
 | 
			
		||||
  ): boolean
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns a `child`’s index within the `Container#nodes` array.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * rule.index( rule.nodes[2] ) //=> 2
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param child Child of the current container.
 | 
			
		||||
   * @return Child index.
 | 
			
		||||
   */
 | 
			
		||||
  index(child: Child | number): number
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Insert new node after old node within the container.
 | 
			
		||||
   *
 | 
			
		||||
   * @param oldNode Child or child’s index.
 | 
			
		||||
   * @param newNode New node.
 | 
			
		||||
   * @return This node for methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  insertAfter(
 | 
			
		||||
    oldNode: Child | number,
 | 
			
		||||
    newNode: Child | Child[] | ChildProps | ChildProps[] | string | string[]
 | 
			
		||||
  ): this
 | 
			
		||||
  /**
 | 
			
		||||
   * Insert new node before old node within the container.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param oldNode Child or child’s index.
 | 
			
		||||
   * @param newNode New node.
 | 
			
		||||
   * @return This node for methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  insertBefore(
 | 
			
		||||
    oldNode: Child | number,
 | 
			
		||||
    newNode: Child | Child[] | ChildProps | ChildProps[] | string | string[]
 | 
			
		||||
  ): this
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Traverses the container’s descendant nodes, calling callback
 | 
			
		||||
   * for each comment node.
 | 
			
		||||
   *
 | 
			
		||||
   * Like `Container#each`, this method is safe
 | 
			
		||||
   * to use if you are mutating arrays during iteration.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.walkComments(comment => {
 | 
			
		||||
   *   comment.remove()
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param callback Iterator receives each node and index.
 | 
			
		||||
   * @return Returns `false` if iteration was broke.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Inserts new nodes to the start of the container.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const decl1 = new Declaration({ prop: 'color', value: 'black' })
 | 
			
		||||
   * const decl2 = new Declaration({ prop: 'background-color', value: 'white' })
 | 
			
		||||
   * rule.prepend(decl1, decl2)
 | 
			
		||||
   *
 | 
			
		||||
   * root.append({ name: 'charset', params: '"UTF-8"' })  // at-rule
 | 
			
		||||
   * root.append({ selector: 'a' })                       // rule
 | 
			
		||||
   * rule.append({ prop: 'color', value: 'black' })       // declaration
 | 
			
		||||
   * rule.append({ text: 'Comment' })                     // comment
 | 
			
		||||
   *
 | 
			
		||||
   * root.append('a {}')
 | 
			
		||||
   * root.first.append('color: black; z-index: 1')
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param nodes New nodes.
 | 
			
		||||
   * @return This node for methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  prepend(
 | 
			
		||||
    ...nodes: (ChildProps | ChildProps[] | Node | Node[] | string | string[])[]
 | 
			
		||||
  ): this
 | 
			
		||||
  /**
 | 
			
		||||
   * Add child to the end of the node.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * rule.push(new Declaration({ prop: 'color', value: 'black' }))
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param child New node.
 | 
			
		||||
   * @return This node for methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  push(child: Child): this
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Removes all children from the container
 | 
			
		||||
   * and cleans their parent properties.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * rule.removeAll()
 | 
			
		||||
   * rule.nodes.length //=> 0
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @return This node for methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  removeAll(): this
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Removes node from the container and cleans the parent properties
 | 
			
		||||
   * from the node and its children.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * rule.nodes.length  //=> 5
 | 
			
		||||
   * rule.removeChild(decl)
 | 
			
		||||
   * rule.nodes.length  //=> 4
 | 
			
		||||
   * decl.parent        //=> undefined
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param child Child or child’s index.
 | 
			
		||||
   * @return This node for methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  removeChild(child: Child | number): this
 | 
			
		||||
 | 
			
		||||
  replaceValues(
 | 
			
		||||
    pattern: RegExp | string,
 | 
			
		||||
    replaced: { (substring: string, ...args: any[]): string } | string
 | 
			
		||||
  ): this
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Passes all declaration values within the container that match pattern
 | 
			
		||||
   * through callback, replacing those values with the returned result
 | 
			
		||||
   * of callback.
 | 
			
		||||
   *
 | 
			
		||||
   * This method is useful if you are using a custom unit or function
 | 
			
		||||
   * and need to iterate through all values.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.replaceValues(/\d+rem/, { fast: 'rem' }, string => {
 | 
			
		||||
   *   return 15 * parseInt(string) + 'px'
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param pattern      Replace pattern.
 | 
			
		||||
   * @param {object} opts                Options to speed up the search.
 | 
			
		||||
   * @param callback   String to replace pattern or callback
 | 
			
		||||
   *                                     that returns a new value. The callback
 | 
			
		||||
   *                                     will receive the same arguments
 | 
			
		||||
   *                                     as those passed to a function parameter
 | 
			
		||||
   *                                     of `String#replace`.
 | 
			
		||||
   * @return This node for methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  replaceValues(
 | 
			
		||||
    pattern: RegExp | string,
 | 
			
		||||
    options: Container.ValueOptions,
 | 
			
		||||
    replaced: { (substring: string, ...args: any[]): string } | string
 | 
			
		||||
  ): this
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns `true` if callback returns `true` for (at least) one
 | 
			
		||||
   * of the container’s children.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const hasPrefix = rule.some(i => i.prop[0] === '-')
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param condition Iterator returns true or false.
 | 
			
		||||
   * @return Is some child pass condition.
 | 
			
		||||
   */
 | 
			
		||||
  some(
 | 
			
		||||
    condition: (node: Child, index: number, nodes: Child[]) => boolean
 | 
			
		||||
  ): boolean
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Traverses the container’s descendant nodes, calling callback
 | 
			
		||||
   * for each node.
 | 
			
		||||
   *
 | 
			
		||||
   * Like container.each(), this method is safe to use
 | 
			
		||||
   * if you are mutating arrays during iteration.
 | 
			
		||||
   *
 | 
			
		||||
   * If you only need to iterate through the container’s immediate children,
 | 
			
		||||
   * use `Container#each`.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.walk(node => {
 | 
			
		||||
   *   // Traverses all descendant nodes.
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param callback Iterator receives each node and index.
 | 
			
		||||
   * @return  Returns `false` if iteration was broke.
 | 
			
		||||
   */
 | 
			
		||||
  walk(
 | 
			
		||||
    callback: (node: ChildNode, index: number) => false | void
 | 
			
		||||
  ): false | undefined
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Traverses the container’s descendant nodes, calling callback
 | 
			
		||||
   * for each at-rule node.
 | 
			
		||||
   *
 | 
			
		||||
   * If you pass a filter, iteration will only happen over at-rules
 | 
			
		||||
   * that have matching names.
 | 
			
		||||
   *
 | 
			
		||||
   * Like `Container#each`, this method is safe
 | 
			
		||||
   * to use if you are mutating arrays during iteration.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.walkAtRules(rule => {
 | 
			
		||||
   *   if (isOld(rule.name)) rule.remove()
 | 
			
		||||
   * })
 | 
			
		||||
   *
 | 
			
		||||
   * let first = false
 | 
			
		||||
   * root.walkAtRules('charset', rule => {
 | 
			
		||||
   *   if (!first) {
 | 
			
		||||
   *     first = true
 | 
			
		||||
   *   } else {
 | 
			
		||||
   *     rule.remove()
 | 
			
		||||
   *   }
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param name     String or regular expression to filter at-rules by name.
 | 
			
		||||
   * @param callback Iterator receives each node and index.
 | 
			
		||||
   * @return Returns `false` if iteration was broke.
 | 
			
		||||
   */
 | 
			
		||||
  walkAtRules(
 | 
			
		||||
    nameFilter: RegExp | string,
 | 
			
		||||
    callback: (atRule: AtRule, index: number) => false | void
 | 
			
		||||
  ): false | undefined
 | 
			
		||||
 | 
			
		||||
  walkAtRules(
 | 
			
		||||
    callback: (atRule: AtRule, index: number) => false | void
 | 
			
		||||
  ): false | undefined
 | 
			
		||||
  walkComments(
 | 
			
		||||
    callback: (comment: Comment, indexed: number) => false | void
 | 
			
		||||
  ): false | undefined
 | 
			
		||||
 | 
			
		||||
  walkComments(
 | 
			
		||||
    callback: (comment: Comment, indexed: number) => false | void
 | 
			
		||||
  ): false | undefined
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Traverses the container’s descendant nodes, calling callback
 | 
			
		||||
   * for each declaration node.
 | 
			
		||||
   *
 | 
			
		||||
   * If you pass a filter, iteration will only happen over declarations
 | 
			
		||||
   * with matching properties.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.walkDecls(decl => {
 | 
			
		||||
   *   checkPropertySupport(decl.prop)
 | 
			
		||||
   * })
 | 
			
		||||
   *
 | 
			
		||||
   * root.walkDecls('border-radius', decl => {
 | 
			
		||||
   *   decl.remove()
 | 
			
		||||
   * })
 | 
			
		||||
   *
 | 
			
		||||
   * root.walkDecls(/^background/, decl => {
 | 
			
		||||
   *   decl.value = takeFirstColorFromGradient(decl.value)
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * Like `Container#each`, this method is safe
 | 
			
		||||
   * to use if you are mutating arrays during iteration.
 | 
			
		||||
   *
 | 
			
		||||
   * @param prop     String or regular expression to filter declarations
 | 
			
		||||
   *                 by property name.
 | 
			
		||||
   * @param callback Iterator receives each node and index.
 | 
			
		||||
   * @return Returns `false` if iteration was broke.
 | 
			
		||||
   */
 | 
			
		||||
  walkDecls(
 | 
			
		||||
    propFilter: RegExp | string,
 | 
			
		||||
    callback: (decl: Declaration, index: number) => false | void
 | 
			
		||||
  ): false | undefined
 | 
			
		||||
 | 
			
		||||
  walkDecls(
 | 
			
		||||
    callback: (decl: Declaration, index: number) => false | void
 | 
			
		||||
  ): false | undefined
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Traverses the container’s descendant nodes, calling callback
 | 
			
		||||
   * for each rule node.
 | 
			
		||||
   *
 | 
			
		||||
   * If you pass a filter, iteration will only happen over rules
 | 
			
		||||
   * with matching selectors.
 | 
			
		||||
   *
 | 
			
		||||
   * Like `Container#each`, this method is safe
 | 
			
		||||
   * to use if you are mutating arrays during iteration.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const selectors = []
 | 
			
		||||
   * root.walkRules(rule => {
 | 
			
		||||
   *   selectors.push(rule.selector)
 | 
			
		||||
   * })
 | 
			
		||||
   * console.log(`Your CSS uses ${ selectors.length } selectors`)
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param selector String or regular expression to filter rules by selector.
 | 
			
		||||
   * @param callback Iterator receives each node and index.
 | 
			
		||||
   * @return Returns `false` if iteration was broke.
 | 
			
		||||
   */
 | 
			
		||||
  walkRules(
 | 
			
		||||
    selectorFilter: RegExp | string,
 | 
			
		||||
    callback: (rule: Rule, index: number) => false | void
 | 
			
		||||
  ): false | undefined
 | 
			
		||||
  walkRules(
 | 
			
		||||
    callback: (rule: Rule, index: number) => false | void
 | 
			
		||||
  ): false | undefined
 | 
			
		||||
  /**
 | 
			
		||||
   * The container’s first child.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * rule.first === rules.nodes[0]
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  get first(): Child | undefined
 | 
			
		||||
  /**
 | 
			
		||||
   * The container’s last child.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * rule.last === rule.nodes[rule.nodes.length - 1]
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  get last(): Child | undefined
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Container<Child extends Node = ChildNode> extends Container_<Child> {}
 | 
			
		||||
 | 
			
		||||
export = Container
 | 
			
		||||
							
								
								
									
										439
									
								
								node_modules/postcss/lib/container.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										439
									
								
								node_modules/postcss/lib/container.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,439 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let { isClean, my } = require('./symbols')
 | 
			
		||||
let Declaration = require('./declaration')
 | 
			
		||||
let Comment = require('./comment')
 | 
			
		||||
let Node = require('./node')
 | 
			
		||||
 | 
			
		||||
let parse, Rule, AtRule, Root
 | 
			
		||||
 | 
			
		||||
function cleanSource(nodes) {
 | 
			
		||||
  return nodes.map(i => {
 | 
			
		||||
    if (i.nodes) i.nodes = cleanSource(i.nodes)
 | 
			
		||||
    delete i.source
 | 
			
		||||
    return i
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function markDirtyUp(node) {
 | 
			
		||||
  node[isClean] = false
 | 
			
		||||
  if (node.proxyOf.nodes) {
 | 
			
		||||
    for (let i of node.proxyOf.nodes) {
 | 
			
		||||
      markDirtyUp(i)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class Container extends Node {
 | 
			
		||||
  append(...children) {
 | 
			
		||||
    for (let child of children) {
 | 
			
		||||
      let nodes = this.normalize(child, this.last)
 | 
			
		||||
      for (let node of nodes) this.proxyOf.nodes.push(node)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.markDirty()
 | 
			
		||||
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  cleanRaws(keepBetween) {
 | 
			
		||||
    super.cleanRaws(keepBetween)
 | 
			
		||||
    if (this.nodes) {
 | 
			
		||||
      for (let node of this.nodes) node.cleanRaws(keepBetween)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  each(callback) {
 | 
			
		||||
    if (!this.proxyOf.nodes) return undefined
 | 
			
		||||
    let iterator = this.getIterator()
 | 
			
		||||
 | 
			
		||||
    let index, result
 | 
			
		||||
    while (this.indexes[iterator] < this.proxyOf.nodes.length) {
 | 
			
		||||
      index = this.indexes[iterator]
 | 
			
		||||
      result = callback(this.proxyOf.nodes[index], index)
 | 
			
		||||
      if (result === false) break
 | 
			
		||||
 | 
			
		||||
      this.indexes[iterator] += 1
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    delete this.indexes[iterator]
 | 
			
		||||
    return result
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  every(condition) {
 | 
			
		||||
    return this.nodes.every(condition)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getIterator() {
 | 
			
		||||
    if (!this.lastEach) this.lastEach = 0
 | 
			
		||||
    if (!this.indexes) this.indexes = {}
 | 
			
		||||
 | 
			
		||||
    this.lastEach += 1
 | 
			
		||||
    let iterator = this.lastEach
 | 
			
		||||
    this.indexes[iterator] = 0
 | 
			
		||||
 | 
			
		||||
    return iterator
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getProxyProcessor() {
 | 
			
		||||
    return {
 | 
			
		||||
      get(node, prop) {
 | 
			
		||||
        if (prop === 'proxyOf') {
 | 
			
		||||
          return node
 | 
			
		||||
        } else if (!node[prop]) {
 | 
			
		||||
          return node[prop]
 | 
			
		||||
        } else if (
 | 
			
		||||
          prop === 'each' ||
 | 
			
		||||
          (typeof prop === 'string' && prop.startsWith('walk'))
 | 
			
		||||
        ) {
 | 
			
		||||
          return (...args) => {
 | 
			
		||||
            return node[prop](
 | 
			
		||||
              ...args.map(i => {
 | 
			
		||||
                if (typeof i === 'function') {
 | 
			
		||||
                  return (child, index) => i(child.toProxy(), index)
 | 
			
		||||
                } else {
 | 
			
		||||
                  return i
 | 
			
		||||
                }
 | 
			
		||||
              })
 | 
			
		||||
            )
 | 
			
		||||
          }
 | 
			
		||||
        } else if (prop === 'every' || prop === 'some') {
 | 
			
		||||
          return cb => {
 | 
			
		||||
            return node[prop]((child, ...other) =>
 | 
			
		||||
              cb(child.toProxy(), ...other)
 | 
			
		||||
            )
 | 
			
		||||
          }
 | 
			
		||||
        } else if (prop === 'root') {
 | 
			
		||||
          return () => node.root().toProxy()
 | 
			
		||||
        } else if (prop === 'nodes') {
 | 
			
		||||
          return node.nodes.map(i => i.toProxy())
 | 
			
		||||
        } else if (prop === 'first' || prop === 'last') {
 | 
			
		||||
          return node[prop].toProxy()
 | 
			
		||||
        } else {
 | 
			
		||||
          return node[prop]
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      set(node, prop, value) {
 | 
			
		||||
        if (node[prop] === value) return true
 | 
			
		||||
        node[prop] = value
 | 
			
		||||
        if (prop === 'name' || prop === 'params' || prop === 'selector') {
 | 
			
		||||
          node.markDirty()
 | 
			
		||||
        }
 | 
			
		||||
        return true
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  index(child) {
 | 
			
		||||
    if (typeof child === 'number') return child
 | 
			
		||||
    if (child.proxyOf) child = child.proxyOf
 | 
			
		||||
    return this.proxyOf.nodes.indexOf(child)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  insertAfter(exist, add) {
 | 
			
		||||
    let existIndex = this.index(exist)
 | 
			
		||||
    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()
 | 
			
		||||
    existIndex = this.index(exist)
 | 
			
		||||
    for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)
 | 
			
		||||
 | 
			
		||||
    let index
 | 
			
		||||
    for (let id in this.indexes) {
 | 
			
		||||
      index = this.indexes[id]
 | 
			
		||||
      if (existIndex < index) {
 | 
			
		||||
        this.indexes[id] = index + nodes.length
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.markDirty()
 | 
			
		||||
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  insertBefore(exist, add) {
 | 
			
		||||
    let existIndex = this.index(exist)
 | 
			
		||||
    let type = existIndex === 0 ? 'prepend' : false
 | 
			
		||||
    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse()
 | 
			
		||||
    existIndex = this.index(exist)
 | 
			
		||||
    for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)
 | 
			
		||||
 | 
			
		||||
    let index
 | 
			
		||||
    for (let id in this.indexes) {
 | 
			
		||||
      index = this.indexes[id]
 | 
			
		||||
      if (existIndex <= index) {
 | 
			
		||||
        this.indexes[id] = index + nodes.length
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.markDirty()
 | 
			
		||||
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  normalize(nodes, sample) {
 | 
			
		||||
    if (typeof nodes === 'string') {
 | 
			
		||||
      nodes = cleanSource(parse(nodes).nodes)
 | 
			
		||||
    } else if (Array.isArray(nodes)) {
 | 
			
		||||
      nodes = nodes.slice(0)
 | 
			
		||||
      for (let i of nodes) {
 | 
			
		||||
        if (i.parent) i.parent.removeChild(i, 'ignore')
 | 
			
		||||
      }
 | 
			
		||||
    } else if (nodes.type === 'root' && this.type !== 'document') {
 | 
			
		||||
      nodes = nodes.nodes.slice(0)
 | 
			
		||||
      for (let i of nodes) {
 | 
			
		||||
        if (i.parent) i.parent.removeChild(i, 'ignore')
 | 
			
		||||
      }
 | 
			
		||||
    } else if (nodes.type) {
 | 
			
		||||
      nodes = [nodes]
 | 
			
		||||
    } else if (nodes.prop) {
 | 
			
		||||
      if (typeof nodes.value === 'undefined') {
 | 
			
		||||
        throw new Error('Value field is missed in node creation')
 | 
			
		||||
      } else if (typeof nodes.value !== 'string') {
 | 
			
		||||
        nodes.value = String(nodes.value)
 | 
			
		||||
      }
 | 
			
		||||
      nodes = [new Declaration(nodes)]
 | 
			
		||||
    } else if (nodes.selector) {
 | 
			
		||||
      nodes = [new Rule(nodes)]
 | 
			
		||||
    } else if (nodes.name) {
 | 
			
		||||
      nodes = [new AtRule(nodes)]
 | 
			
		||||
    } else if (nodes.text) {
 | 
			
		||||
      nodes = [new Comment(nodes)]
 | 
			
		||||
    } else {
 | 
			
		||||
      throw new Error('Unknown node type in node creation')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let processed = nodes.map(i => {
 | 
			
		||||
      /* c8 ignore next */
 | 
			
		||||
      if (!i[my]) Container.rebuild(i)
 | 
			
		||||
      i = i.proxyOf
 | 
			
		||||
      if (i.parent) i.parent.removeChild(i)
 | 
			
		||||
      if (i[isClean]) markDirtyUp(i)
 | 
			
		||||
      if (typeof i.raws.before === 'undefined') {
 | 
			
		||||
        if (sample && typeof sample.raws.before !== 'undefined') {
 | 
			
		||||
          i.raws.before = sample.raws.before.replace(/\S/g, '')
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      i.parent = this.proxyOf
 | 
			
		||||
      return i
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    return processed
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  prepend(...children) {
 | 
			
		||||
    children = children.reverse()
 | 
			
		||||
    for (let child of children) {
 | 
			
		||||
      let nodes = this.normalize(child, this.first, 'prepend').reverse()
 | 
			
		||||
      for (let node of nodes) this.proxyOf.nodes.unshift(node)
 | 
			
		||||
      for (let id in this.indexes) {
 | 
			
		||||
        this.indexes[id] = this.indexes[id] + nodes.length
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.markDirty()
 | 
			
		||||
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  push(child) {
 | 
			
		||||
    child.parent = this
 | 
			
		||||
    this.proxyOf.nodes.push(child)
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  removeAll() {
 | 
			
		||||
    for (let node of this.proxyOf.nodes) node.parent = undefined
 | 
			
		||||
    this.proxyOf.nodes = []
 | 
			
		||||
 | 
			
		||||
    this.markDirty()
 | 
			
		||||
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  removeChild(child) {
 | 
			
		||||
    child = this.index(child)
 | 
			
		||||
    this.proxyOf.nodes[child].parent = undefined
 | 
			
		||||
    this.proxyOf.nodes.splice(child, 1)
 | 
			
		||||
 | 
			
		||||
    let index
 | 
			
		||||
    for (let id in this.indexes) {
 | 
			
		||||
      index = this.indexes[id]
 | 
			
		||||
      if (index >= child) {
 | 
			
		||||
        this.indexes[id] = index - 1
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.markDirty()
 | 
			
		||||
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  replaceValues(pattern, opts, callback) {
 | 
			
		||||
    if (!callback) {
 | 
			
		||||
      callback = opts
 | 
			
		||||
      opts = {}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.walkDecls(decl => {
 | 
			
		||||
      if (opts.props && !opts.props.includes(decl.prop)) return
 | 
			
		||||
      if (opts.fast && !decl.value.includes(opts.fast)) return
 | 
			
		||||
 | 
			
		||||
      decl.value = decl.value.replace(pattern, callback)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    this.markDirty()
 | 
			
		||||
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  some(condition) {
 | 
			
		||||
    return this.nodes.some(condition)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  walk(callback) {
 | 
			
		||||
    return this.each((child, i) => {
 | 
			
		||||
      let result
 | 
			
		||||
      try {
 | 
			
		||||
        result = callback(child, i)
 | 
			
		||||
      } catch (e) {
 | 
			
		||||
        throw child.addToError(e)
 | 
			
		||||
      }
 | 
			
		||||
      if (result !== false && child.walk) {
 | 
			
		||||
        result = child.walk(callback)
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return result
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  walkAtRules(name, callback) {
 | 
			
		||||
    if (!callback) {
 | 
			
		||||
      callback = name
 | 
			
		||||
      return this.walk((child, i) => {
 | 
			
		||||
        if (child.type === 'atrule') {
 | 
			
		||||
          return callback(child, i)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
    if (name instanceof RegExp) {
 | 
			
		||||
      return this.walk((child, i) => {
 | 
			
		||||
        if (child.type === 'atrule' && name.test(child.name)) {
 | 
			
		||||
          return callback(child, i)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
    return this.walk((child, i) => {
 | 
			
		||||
      if (child.type === 'atrule' && child.name === name) {
 | 
			
		||||
        return callback(child, i)
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  walkComments(callback) {
 | 
			
		||||
    return this.walk((child, i) => {
 | 
			
		||||
      if (child.type === 'comment') {
 | 
			
		||||
        return callback(child, i)
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  walkDecls(prop, callback) {
 | 
			
		||||
    if (!callback) {
 | 
			
		||||
      callback = prop
 | 
			
		||||
      return this.walk((child, i) => {
 | 
			
		||||
        if (child.type === 'decl') {
 | 
			
		||||
          return callback(child, i)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
    if (prop instanceof RegExp) {
 | 
			
		||||
      return this.walk((child, i) => {
 | 
			
		||||
        if (child.type === 'decl' && prop.test(child.prop)) {
 | 
			
		||||
          return callback(child, i)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
    return this.walk((child, i) => {
 | 
			
		||||
      if (child.type === 'decl' && child.prop === prop) {
 | 
			
		||||
        return callback(child, i)
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  walkRules(selector, callback) {
 | 
			
		||||
    if (!callback) {
 | 
			
		||||
      callback = selector
 | 
			
		||||
 | 
			
		||||
      return this.walk((child, i) => {
 | 
			
		||||
        if (child.type === 'rule') {
 | 
			
		||||
          return callback(child, i)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
    if (selector instanceof RegExp) {
 | 
			
		||||
      return this.walk((child, i) => {
 | 
			
		||||
        if (child.type === 'rule' && selector.test(child.selector)) {
 | 
			
		||||
          return callback(child, i)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
    return this.walk((child, i) => {
 | 
			
		||||
      if (child.type === 'rule' && child.selector === selector) {
 | 
			
		||||
        return callback(child, i)
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get first() {
 | 
			
		||||
    if (!this.proxyOf.nodes) return undefined
 | 
			
		||||
    return this.proxyOf.nodes[0]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get last() {
 | 
			
		||||
    if (!this.proxyOf.nodes) return undefined
 | 
			
		||||
    return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Container.registerParse = dependant => {
 | 
			
		||||
  parse = dependant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Container.registerRule = dependant => {
 | 
			
		||||
  Rule = dependant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Container.registerAtRule = dependant => {
 | 
			
		||||
  AtRule = dependant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Container.registerRoot = dependant => {
 | 
			
		||||
  Root = dependant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Container
 | 
			
		||||
Container.default = Container
 | 
			
		||||
 | 
			
		||||
/* c8 ignore start */
 | 
			
		||||
Container.rebuild = node => {
 | 
			
		||||
  if (node.type === 'atrule') {
 | 
			
		||||
    Object.setPrototypeOf(node, AtRule.prototype)
 | 
			
		||||
  } else if (node.type === 'rule') {
 | 
			
		||||
    Object.setPrototypeOf(node, Rule.prototype)
 | 
			
		||||
  } else if (node.type === 'decl') {
 | 
			
		||||
    Object.setPrototypeOf(node, Declaration.prototype)
 | 
			
		||||
  } else if (node.type === 'comment') {
 | 
			
		||||
    Object.setPrototypeOf(node, Comment.prototype)
 | 
			
		||||
  } else if (node.type === 'root') {
 | 
			
		||||
    Object.setPrototypeOf(node, Root.prototype)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  node[my] = true
 | 
			
		||||
 | 
			
		||||
  if (node.nodes) {
 | 
			
		||||
    node.nodes.forEach(child => {
 | 
			
		||||
      Container.rebuild(child)
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
/* c8 ignore stop */
 | 
			
		||||
							
								
								
									
										248
									
								
								node_modules/postcss/lib/css-syntax-error.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										248
									
								
								node_modules/postcss/lib/css-syntax-error.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,248 @@
 | 
			
		||||
import { FilePosition } from './input.js'
 | 
			
		||||
 | 
			
		||||
declare namespace CssSyntaxError {
 | 
			
		||||
  /**
 | 
			
		||||
   * A position that is part of a range.
 | 
			
		||||
   */
 | 
			
		||||
  export interface RangePosition {
 | 
			
		||||
    /**
 | 
			
		||||
     * The column number in the input.
 | 
			
		||||
     */
 | 
			
		||||
    column: number
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The line number in the input.
 | 
			
		||||
     */
 | 
			
		||||
    line: number
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { CssSyntaxError_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The CSS parser throws this error for broken CSS.
 | 
			
		||||
 *
 | 
			
		||||
 * Custom parsers can throw this error for broken custom syntax using
 | 
			
		||||
 * the `Node#error` method.
 | 
			
		||||
 *
 | 
			
		||||
 * PostCSS will use the input source map to detect the original error location.
 | 
			
		||||
 * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,
 | 
			
		||||
 * PostCSS will show the original position in the Sass file.
 | 
			
		||||
 *
 | 
			
		||||
 * If you need the position in the PostCSS input
 | 
			
		||||
 * (e.g., to debug the previous compiler), use `error.input.file`.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * // Raising error from plugin
 | 
			
		||||
 * throw node.error('Unknown variable', { plugin: 'postcss-vars' })
 | 
			
		||||
 * ```
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * // Catching and checking syntax error
 | 
			
		||||
 * try {
 | 
			
		||||
 *   postcss.parse('a{')
 | 
			
		||||
 * } catch (error) {
 | 
			
		||||
 *   if (error.name === 'CssSyntaxError') {
 | 
			
		||||
 *     error //=> CssSyntaxError
 | 
			
		||||
 *   }
 | 
			
		||||
 * }
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class CssSyntaxError_ {
 | 
			
		||||
  /**
 | 
			
		||||
   * Source column of the error.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.column       //=> 1
 | 
			
		||||
   * error.input.column //=> 4
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS will use the input source map to detect the original location.
 | 
			
		||||
   * If you need the position in the PostCSS input, use `error.input.column`.
 | 
			
		||||
   */
 | 
			
		||||
  column?: number
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Source column of the error's end, exclusive. Provided if the error pertains
 | 
			
		||||
   * to a range.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.endColumn       //=> 1
 | 
			
		||||
   * error.input.endColumn //=> 4
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS will use the input source map to detect the original location.
 | 
			
		||||
   * If you need the position in the PostCSS input, use `error.input.endColumn`.
 | 
			
		||||
   */
 | 
			
		||||
  endColumn?: number
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Source line of the error's end, exclusive. Provided if the error pertains
 | 
			
		||||
   * to a range.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.endLine       //=> 3
 | 
			
		||||
   * error.input.endLine //=> 4
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS will use the input source map to detect the original location.
 | 
			
		||||
   * If you need the position in the PostCSS input, use `error.input.endLine`.
 | 
			
		||||
   */
 | 
			
		||||
  endLine?: number
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Absolute path to the broken file.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.file       //=> 'a.sass'
 | 
			
		||||
   * error.input.file //=> 'a.css'
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS will use the input source map to detect the original location.
 | 
			
		||||
   * If you need the position in the PostCSS input, use `error.input.file`.
 | 
			
		||||
   */
 | 
			
		||||
  file?: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Input object with PostCSS internal information
 | 
			
		||||
   * about input file. If input has source map
 | 
			
		||||
   * from previous tool, PostCSS will use origin
 | 
			
		||||
   * (for example, Sass) source. You can use this
 | 
			
		||||
   * object to get PostCSS input source.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.input.file //=> 'a.css'
 | 
			
		||||
   * error.file       //=> 'a.sass'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  input?: FilePosition
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Source line of the error.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.line       //=> 2
 | 
			
		||||
   * error.input.line //=> 4
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS will use the input source map to detect the original location.
 | 
			
		||||
   * If you need the position in the PostCSS input, use `error.input.line`.
 | 
			
		||||
   */
 | 
			
		||||
  line?: number
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Full error text in the GNU error format
 | 
			
		||||
   * with plugin, file, line and column.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.message //=> 'a.css:1:1: Unclosed block'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  message: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Always equal to `'CssSyntaxError'`. You should always check error type
 | 
			
		||||
   * by `error.name === 'CssSyntaxError'`
 | 
			
		||||
   * instead of `error instanceof CssSyntaxError`,
 | 
			
		||||
   * because npm could have several PostCSS versions.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * if (error.name === 'CssSyntaxError') {
 | 
			
		||||
   *   error //=> CssSyntaxError
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  name: 'CssSyntaxError'
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Plugin name, if error came from plugin.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.plugin //=> 'postcss-vars'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  plugin?: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Error message.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.message //=> 'Unclosed block'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  reason: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Source code of the broken file.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.source       //=> 'a { b {} }'
 | 
			
		||||
   * error.input.source //=> 'a b { }'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  source?: string
 | 
			
		||||
 | 
			
		||||
  stack: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Instantiates a CSS syntax error. Can be instantiated for a single position
 | 
			
		||||
   * or for a range.
 | 
			
		||||
   * @param message        Error message.
 | 
			
		||||
   * @param lineOrStartPos If for a single position, the line number, or if for
 | 
			
		||||
   *                       a range, the inclusive start position of the error.
 | 
			
		||||
   * @param columnOrEndPos If for a single position, the column number, or if for
 | 
			
		||||
   *                       a range, the exclusive end position of the error.
 | 
			
		||||
   * @param source         Source code of the broken file.
 | 
			
		||||
   * @param file           Absolute path to the broken file.
 | 
			
		||||
   * @param plugin         PostCSS plugin name, if error came from plugin.
 | 
			
		||||
   */
 | 
			
		||||
  constructor(
 | 
			
		||||
    message: string,
 | 
			
		||||
    lineOrStartPos?: CssSyntaxError.RangePosition | number,
 | 
			
		||||
    columnOrEndPos?: CssSyntaxError.RangePosition | number,
 | 
			
		||||
    source?: string,
 | 
			
		||||
    file?: string,
 | 
			
		||||
    plugin?: string
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns a few lines of CSS source that caused the error.
 | 
			
		||||
   *
 | 
			
		||||
   * If the CSS has an input source map without `sourceContent`,
 | 
			
		||||
   * this method will return an empty string.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.showSourceCode() //=> "  4 | }
 | 
			
		||||
   *                        //      5 | a {
 | 
			
		||||
   *                        //    > 6 |   bad
 | 
			
		||||
   *                        //        |   ^
 | 
			
		||||
   *                        //      7 | }
 | 
			
		||||
   *                        //      8 | b {"
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param color Whether arrow will be colored red by terminal
 | 
			
		||||
   *              color codes. By default, PostCSS will detect
 | 
			
		||||
   *              color support by `process.stdout.isTTY`
 | 
			
		||||
   *              and `process.env.NODE_DISABLE_COLORS`.
 | 
			
		||||
   * @return Few lines of CSS source that caused the error.
 | 
			
		||||
   */
 | 
			
		||||
  showSourceCode(color?: boolean): string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns error position, message and source code of the broken part.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * error.toString() //=> "CssSyntaxError: app.css:1:1: Unclosed block
 | 
			
		||||
   *                  //    > 1 | a {
 | 
			
		||||
   *                  //        | ^"
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @return Error position, message and source code.
 | 
			
		||||
   */
 | 
			
		||||
  toString(): string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class CssSyntaxError extends CssSyntaxError_ {}
 | 
			
		||||
 | 
			
		||||
export = CssSyntaxError
 | 
			
		||||
							
								
								
									
										100
									
								
								node_modules/postcss/lib/css-syntax-error.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								node_modules/postcss/lib/css-syntax-error.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,100 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let pico = require('picocolors')
 | 
			
		||||
 | 
			
		||||
let terminalHighlight = require('./terminal-highlight')
 | 
			
		||||
 | 
			
		||||
class CssSyntaxError extends Error {
 | 
			
		||||
  constructor(message, line, column, source, file, plugin) {
 | 
			
		||||
    super(message)
 | 
			
		||||
    this.name = 'CssSyntaxError'
 | 
			
		||||
    this.reason = message
 | 
			
		||||
 | 
			
		||||
    if (file) {
 | 
			
		||||
      this.file = file
 | 
			
		||||
    }
 | 
			
		||||
    if (source) {
 | 
			
		||||
      this.source = source
 | 
			
		||||
    }
 | 
			
		||||
    if (plugin) {
 | 
			
		||||
      this.plugin = plugin
 | 
			
		||||
    }
 | 
			
		||||
    if (typeof line !== 'undefined' && typeof column !== 'undefined') {
 | 
			
		||||
      if (typeof line === 'number') {
 | 
			
		||||
        this.line = line
 | 
			
		||||
        this.column = column
 | 
			
		||||
      } else {
 | 
			
		||||
        this.line = line.line
 | 
			
		||||
        this.column = line.column
 | 
			
		||||
        this.endLine = column.line
 | 
			
		||||
        this.endColumn = column.column
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.setMessage()
 | 
			
		||||
 | 
			
		||||
    if (Error.captureStackTrace) {
 | 
			
		||||
      Error.captureStackTrace(this, CssSyntaxError)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  setMessage() {
 | 
			
		||||
    this.message = this.plugin ? this.plugin + ': ' : ''
 | 
			
		||||
    this.message += this.file ? this.file : '<css input>'
 | 
			
		||||
    if (typeof this.line !== 'undefined') {
 | 
			
		||||
      this.message += ':' + this.line + ':' + this.column
 | 
			
		||||
    }
 | 
			
		||||
    this.message += ': ' + this.reason
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  showSourceCode(color) {
 | 
			
		||||
    if (!this.source) return ''
 | 
			
		||||
 | 
			
		||||
    let css = this.source
 | 
			
		||||
    if (color == null) color = pico.isColorSupported
 | 
			
		||||
    if (terminalHighlight) {
 | 
			
		||||
      if (color) css = terminalHighlight(css)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let lines = css.split(/\r?\n/)
 | 
			
		||||
    let start = Math.max(this.line - 3, 0)
 | 
			
		||||
    let end = Math.min(this.line + 2, lines.length)
 | 
			
		||||
 | 
			
		||||
    let maxWidth = String(end).length
 | 
			
		||||
 | 
			
		||||
    let mark, aside
 | 
			
		||||
    if (color) {
 | 
			
		||||
      let { bold, gray, red } = pico.createColors(true)
 | 
			
		||||
      mark = text => bold(red(text))
 | 
			
		||||
      aside = text => gray(text)
 | 
			
		||||
    } else {
 | 
			
		||||
      mark = aside = str => str
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return lines
 | 
			
		||||
      .slice(start, end)
 | 
			
		||||
      .map((line, index) => {
 | 
			
		||||
        let number = start + 1 + index
 | 
			
		||||
        let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '
 | 
			
		||||
        if (number === this.line) {
 | 
			
		||||
          let spacing =
 | 
			
		||||
            aside(gutter.replace(/\d/g, ' ')) +
 | 
			
		||||
            line.slice(0, this.column - 1).replace(/[^\t]/g, ' ')
 | 
			
		||||
          return mark('>') + aside(gutter) + line + '\n ' + spacing + mark('^')
 | 
			
		||||
        }
 | 
			
		||||
        return ' ' + aside(gutter) + line
 | 
			
		||||
      })
 | 
			
		||||
      .join('\n')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toString() {
 | 
			
		||||
    let code = this.showSourceCode()
 | 
			
		||||
    if (code) {
 | 
			
		||||
      code = '\n\n' + code + '\n'
 | 
			
		||||
    }
 | 
			
		||||
    return this.name + ': ' + this.message + code
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = CssSyntaxError
 | 
			
		||||
CssSyntaxError.default = CssSyntaxError
 | 
			
		||||
							
								
								
									
										148
									
								
								node_modules/postcss/lib/declaration.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								node_modules/postcss/lib/declaration.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,148 @@
 | 
			
		||||
import Container from './container.js'
 | 
			
		||||
import Node from './node.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Declaration {
 | 
			
		||||
  export interface DeclarationRaws extends Record<string, unknown> {
 | 
			
		||||
    /**
 | 
			
		||||
     * The space symbols before the node. It also stores `*`
 | 
			
		||||
     * and `_` symbols before the declaration (IE hack).
 | 
			
		||||
     */
 | 
			
		||||
    before?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The symbols between the property and value for declarations.
 | 
			
		||||
     */
 | 
			
		||||
    between?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The content of the important statement, if it is not just `!important`.
 | 
			
		||||
     */
 | 
			
		||||
    important?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Declaration value with comments.
 | 
			
		||||
     */
 | 
			
		||||
    value?: {
 | 
			
		||||
      raw: string
 | 
			
		||||
      value: string
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface DeclarationProps {
 | 
			
		||||
    /** Whether the declaration has an `!important` annotation. */
 | 
			
		||||
    important?: boolean
 | 
			
		||||
    /** Name of the declaration. */
 | 
			
		||||
    prop: string
 | 
			
		||||
    /** Information used to generate byte-to-byte equal node string as it was in the origin input. */
 | 
			
		||||
    raws?: DeclarationRaws
 | 
			
		||||
    /** Value of the declaration. */
 | 
			
		||||
    value: string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Declaration_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * It represents a class that handles
 | 
			
		||||
 * [CSS declarations](https://developer.mozilla.org/en-US/docs/Web/CSS/Syntax#css_declarations)
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * Once (root, { Declaration }) {
 | 
			
		||||
 *   const color = new Declaration({ prop: 'color', value: 'black' })
 | 
			
		||||
 *   root.append(color)
 | 
			
		||||
 * }
 | 
			
		||||
 * ```
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const root = postcss.parse('a { color: black }')
 | 
			
		||||
 * const decl = root.first?.first
 | 
			
		||||
 *
 | 
			
		||||
 * decl.type       //=> 'decl'
 | 
			
		||||
 * decl.toString() //=> ' color: black'
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class Declaration_ extends Node {
 | 
			
		||||
  /**
 | 
			
		||||
   * It represents a specificity of the declaration.
 | 
			
		||||
   *
 | 
			
		||||
   * If true, the CSS declaration will have an
 | 
			
		||||
   * [important](https://developer.mozilla.org/en-US/docs/Web/CSS/important)
 | 
			
		||||
   * specifier.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('a { color: black !important; color: red }')
 | 
			
		||||
   *
 | 
			
		||||
   * root.first.first.important //=> true
 | 
			
		||||
   * root.first.last.important  //=> undefined
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  important: boolean
 | 
			
		||||
 | 
			
		||||
  parent: Container | undefined
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The property name for a CSS declaration.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('a { color: black }')
 | 
			
		||||
   * const decl = root.first.first
 | 
			
		||||
   *
 | 
			
		||||
   * decl.prop //=> 'color'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  prop: string
 | 
			
		||||
 | 
			
		||||
  raws: Declaration.DeclarationRaws
 | 
			
		||||
 | 
			
		||||
  type: 'decl'
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The property value for a CSS declaration.
 | 
			
		||||
   *
 | 
			
		||||
   * Any CSS comments inside the value string will be filtered out.
 | 
			
		||||
   * CSS comments present in the source value will be available in
 | 
			
		||||
   * the `raws` property.
 | 
			
		||||
   *
 | 
			
		||||
   * Assigning new `value` would ignore the comments in `raws`
 | 
			
		||||
   * property while compiling node to string.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('a { color: black }')
 | 
			
		||||
   * const decl = root.first.first
 | 
			
		||||
   *
 | 
			
		||||
   * decl.value //=> 'black'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  value: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * It represents a getter that returns `true` if a declaration starts with
 | 
			
		||||
   * `--` or `$`, which are used to declare variables in CSS and SASS/SCSS.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse(':root { --one: 1 }')
 | 
			
		||||
   * const one = root.first.first
 | 
			
		||||
   *
 | 
			
		||||
   * one.variable //=> true
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('$one: 1')
 | 
			
		||||
   * const one = root.first
 | 
			
		||||
   *
 | 
			
		||||
   * one.variable //=> true
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  variable: boolean
 | 
			
		||||
 | 
			
		||||
  constructor(defaults?: Declaration.DeclarationProps)
 | 
			
		||||
  assign(overrides: Declaration.DeclarationProps | object): this
 | 
			
		||||
  clone(overrides?: Partial<Declaration.DeclarationProps>): Declaration
 | 
			
		||||
  cloneAfter(overrides?: Partial<Declaration.DeclarationProps>): Declaration
 | 
			
		||||
  cloneBefore(overrides?: Partial<Declaration.DeclarationProps>): Declaration
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Declaration extends Declaration_ {}
 | 
			
		||||
 | 
			
		||||
export = Declaration
 | 
			
		||||
							
								
								
									
										24
									
								
								node_modules/postcss/lib/declaration.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								node_modules/postcss/lib/declaration.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Node = require('./node')
 | 
			
		||||
 | 
			
		||||
class Declaration extends Node {
 | 
			
		||||
  constructor(defaults) {
 | 
			
		||||
    if (
 | 
			
		||||
      defaults &&
 | 
			
		||||
      typeof defaults.value !== 'undefined' &&
 | 
			
		||||
      typeof defaults.value !== 'string'
 | 
			
		||||
    ) {
 | 
			
		||||
      defaults = { ...defaults, value: String(defaults.value) }
 | 
			
		||||
    }
 | 
			
		||||
    super(defaults)
 | 
			
		||||
    this.type = 'decl'
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get variable() {
 | 
			
		||||
    return this.prop.startsWith('--') || this.prop[0] === '$'
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Declaration
 | 
			
		||||
Declaration.default = Declaration
 | 
			
		||||
							
								
								
									
										69
									
								
								node_modules/postcss/lib/document.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								node_modules/postcss/lib/document.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
import Container, { ContainerProps } from './container.js'
 | 
			
		||||
import { ProcessOptions } from './postcss.js'
 | 
			
		||||
import Result from './result.js'
 | 
			
		||||
import Root from './root.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Document {
 | 
			
		||||
  export interface DocumentProps extends ContainerProps {
 | 
			
		||||
    nodes?: Root[]
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Information to generate byte-to-byte equal node string as it was
 | 
			
		||||
     * in the origin input.
 | 
			
		||||
     *
 | 
			
		||||
     * Every parser saves its own properties.
 | 
			
		||||
     */
 | 
			
		||||
    raws?: Record<string, any>
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Document_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Represents a file and contains all its parsed nodes.
 | 
			
		||||
 *
 | 
			
		||||
 * **Experimental:** some aspects of this node could change within minor
 | 
			
		||||
 * or patch version releases.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const document = htmlParser(
 | 
			
		||||
 *   '<html><style>a{color:black}</style><style>b{z-index:2}</style>'
 | 
			
		||||
 * )
 | 
			
		||||
 * document.type         //=> 'document'
 | 
			
		||||
 * document.nodes.length //=> 2
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class Document_ extends Container<Root> {
 | 
			
		||||
  nodes: Root[]
 | 
			
		||||
  parent: undefined
 | 
			
		||||
  type: 'document'
 | 
			
		||||
 | 
			
		||||
  constructor(defaults?: Document.DocumentProps)
 | 
			
		||||
 | 
			
		||||
  assign(overrides: Document.DocumentProps | object): this
 | 
			
		||||
  clone(overrides?: Partial<Document.DocumentProps>): Document
 | 
			
		||||
  cloneAfter(overrides?: Partial<Document.DocumentProps>): Document
 | 
			
		||||
  cloneBefore(overrides?: Partial<Document.DocumentProps>): Document
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns a `Result` instance representing the document’s CSS roots.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root1 = postcss.parse(css1, { from: 'a.css' })
 | 
			
		||||
   * const root2 = postcss.parse(css2, { from: 'b.css' })
 | 
			
		||||
   * const document = postcss.document()
 | 
			
		||||
   * document.append(root1)
 | 
			
		||||
   * document.append(root2)
 | 
			
		||||
   * const result = document.toResult({ to: 'all.css', map: true })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param opts Options.
 | 
			
		||||
   * @return Result with current document’s CSS.
 | 
			
		||||
   */
 | 
			
		||||
  toResult(options?: ProcessOptions): Result
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Document extends Document_ {}
 | 
			
		||||
 | 
			
		||||
export = Document
 | 
			
		||||
							
								
								
									
										33
									
								
								node_modules/postcss/lib/document.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								node_modules/postcss/lib/document.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Container = require('./container')
 | 
			
		||||
 | 
			
		||||
let LazyResult, Processor
 | 
			
		||||
 | 
			
		||||
class Document extends Container {
 | 
			
		||||
  constructor(defaults) {
 | 
			
		||||
    // type needs to be passed to super, otherwise child roots won't be normalized correctly
 | 
			
		||||
    super({ type: 'document', ...defaults })
 | 
			
		||||
 | 
			
		||||
    if (!this.nodes) {
 | 
			
		||||
      this.nodes = []
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toResult(opts = {}) {
 | 
			
		||||
    let lazy = new LazyResult(new Processor(), this, opts)
 | 
			
		||||
 | 
			
		||||
    return lazy.stringify()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Document.registerLazyResult = dependant => {
 | 
			
		||||
  LazyResult = dependant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Document.registerProcessor = dependant => {
 | 
			
		||||
  Processor = dependant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Document
 | 
			
		||||
Document.default = Document
 | 
			
		||||
							
								
								
									
										9
									
								
								node_modules/postcss/lib/fromJSON.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								node_modules/postcss/lib/fromJSON.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
import { JSONHydrator } from './postcss.js'
 | 
			
		||||
 | 
			
		||||
interface FromJSON extends JSONHydrator {
 | 
			
		||||
  default: FromJSON
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare const fromJSON: FromJSON
 | 
			
		||||
 | 
			
		||||
export = fromJSON
 | 
			
		||||
							
								
								
									
										54
									
								
								node_modules/postcss/lib/fromJSON.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								node_modules/postcss/lib/fromJSON.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Declaration = require('./declaration')
 | 
			
		||||
let PreviousMap = require('./previous-map')
 | 
			
		||||
let Comment = require('./comment')
 | 
			
		||||
let AtRule = require('./at-rule')
 | 
			
		||||
let Input = require('./input')
 | 
			
		||||
let Root = require('./root')
 | 
			
		||||
let Rule = require('./rule')
 | 
			
		||||
 | 
			
		||||
function fromJSON(json, inputs) {
 | 
			
		||||
  if (Array.isArray(json)) return json.map(n => fromJSON(n))
 | 
			
		||||
 | 
			
		||||
  let { inputs: ownInputs, ...defaults } = json
 | 
			
		||||
  if (ownInputs) {
 | 
			
		||||
    inputs = []
 | 
			
		||||
    for (let input of ownInputs) {
 | 
			
		||||
      let inputHydrated = { ...input, __proto__: Input.prototype }
 | 
			
		||||
      if (inputHydrated.map) {
 | 
			
		||||
        inputHydrated.map = {
 | 
			
		||||
          ...inputHydrated.map,
 | 
			
		||||
          __proto__: PreviousMap.prototype
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      inputs.push(inputHydrated)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  if (defaults.nodes) {
 | 
			
		||||
    defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))
 | 
			
		||||
  }
 | 
			
		||||
  if (defaults.source) {
 | 
			
		||||
    let { inputId, ...source } = defaults.source
 | 
			
		||||
    defaults.source = source
 | 
			
		||||
    if (inputId != null) {
 | 
			
		||||
      defaults.source.input = inputs[inputId]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  if (defaults.type === 'root') {
 | 
			
		||||
    return new Root(defaults)
 | 
			
		||||
  } else if (defaults.type === 'decl') {
 | 
			
		||||
    return new Declaration(defaults)
 | 
			
		||||
  } else if (defaults.type === 'rule') {
 | 
			
		||||
    return new Rule(defaults)
 | 
			
		||||
  } else if (defaults.type === 'comment') {
 | 
			
		||||
    return new Comment(defaults)
 | 
			
		||||
  } else if (defaults.type === 'atrule') {
 | 
			
		||||
    return new AtRule(defaults)
 | 
			
		||||
  } else {
 | 
			
		||||
    throw new Error('Unknown node type: ' + json.type)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = fromJSON
 | 
			
		||||
fromJSON.default = fromJSON
 | 
			
		||||
							
								
								
									
										194
									
								
								node_modules/postcss/lib/input.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								node_modules/postcss/lib/input.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,194 @@
 | 
			
		||||
import { CssSyntaxError, ProcessOptions } from './postcss.js'
 | 
			
		||||
import PreviousMap from './previous-map.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Input {
 | 
			
		||||
  export interface FilePosition {
 | 
			
		||||
    /**
 | 
			
		||||
     * Column of inclusive start position in source file.
 | 
			
		||||
     */
 | 
			
		||||
    column: number
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Column of exclusive end position in source file.
 | 
			
		||||
     */
 | 
			
		||||
    endColumn?: number
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Line of exclusive end position in source file.
 | 
			
		||||
     */
 | 
			
		||||
    endLine?: number
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Absolute path to the source file.
 | 
			
		||||
     */
 | 
			
		||||
    file?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Line of inclusive start position in source file.
 | 
			
		||||
     */
 | 
			
		||||
    line: number
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Source code.
 | 
			
		||||
     */
 | 
			
		||||
    source?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * URL for the source file.
 | 
			
		||||
     */
 | 
			
		||||
    url: string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Input_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Represents the source CSS.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const root  = postcss.parse(css, { from: file })
 | 
			
		||||
 * const input = root.source.input
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class Input_ {
 | 
			
		||||
  /**
 | 
			
		||||
   * Input CSS source.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const input = postcss.parse('a{}', { from: file }).input
 | 
			
		||||
   * input.css //=> "a{}"
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  css: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The absolute path to the CSS source file defined
 | 
			
		||||
   * with the `from` option.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse(css, { from: 'a.css' })
 | 
			
		||||
   * root.source.input.file //=> '/home/ai/a.css'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  file?: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The flag to indicate whether or not the source code has Unicode BOM.
 | 
			
		||||
   */
 | 
			
		||||
  hasBOM: boolean
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The unique ID of the CSS source. It will be created if `from` option
 | 
			
		||||
   * is not provided (because PostCSS does not know the file path).
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse(css)
 | 
			
		||||
   * root.source.input.file //=> undefined
 | 
			
		||||
   * root.source.input.id   //=> "<input css 8LZeVF>"
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  id?: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The input source map passed from a compilation step before PostCSS
 | 
			
		||||
   * (for example, from Sass compiler).
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.source.input.map.consumer().sources //=> ['a.sass']
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  map: PreviousMap
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * @param css  Input CSS source.
 | 
			
		||||
   * @param opts Process options.
 | 
			
		||||
   */
 | 
			
		||||
  constructor(css: string, opts?: ProcessOptions)
 | 
			
		||||
 | 
			
		||||
  error(
 | 
			
		||||
    message: string,
 | 
			
		||||
    start:
 | 
			
		||||
      | {
 | 
			
		||||
          column: number
 | 
			
		||||
          line: number
 | 
			
		||||
        }
 | 
			
		||||
      | {
 | 
			
		||||
          offset: number
 | 
			
		||||
        },
 | 
			
		||||
    end:
 | 
			
		||||
      | {
 | 
			
		||||
          column: number
 | 
			
		||||
          line: number
 | 
			
		||||
        }
 | 
			
		||||
      | {
 | 
			
		||||
          offset: number
 | 
			
		||||
        },
 | 
			
		||||
    opts?: { plugin?: CssSyntaxError['plugin'] }
 | 
			
		||||
  ): CssSyntaxError
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns `CssSyntaxError` with information about the error and its position.
 | 
			
		||||
   */
 | 
			
		||||
  error(
 | 
			
		||||
    message: string,
 | 
			
		||||
    line: number,
 | 
			
		||||
    column: number,
 | 
			
		||||
    opts?: { plugin?: CssSyntaxError['plugin'] }
 | 
			
		||||
  ): CssSyntaxError
 | 
			
		||||
 | 
			
		||||
  error(
 | 
			
		||||
    message: string,
 | 
			
		||||
    offset: number,
 | 
			
		||||
    opts?: { plugin?: CssSyntaxError['plugin'] }
 | 
			
		||||
  ): CssSyntaxError
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Converts source offset to line and column.
 | 
			
		||||
   *
 | 
			
		||||
   * @param offset Source offset.
 | 
			
		||||
   */
 | 
			
		||||
  fromOffset(offset: number): { col: number; line: number } | null
 | 
			
		||||
  /**
 | 
			
		||||
   * Reads the input source map and returns a symbol position
 | 
			
		||||
   * in the input source (e.g., in a Sass file that was compiled
 | 
			
		||||
   * to CSS before being passed to PostCSS). Optionally takes an
 | 
			
		||||
   * end position, exclusive.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }
 | 
			
		||||
   * root.source.input.origin(1, 1, 1, 4)
 | 
			
		||||
   * //=> { file: 'a.css', line: 3, column: 1, endLine: 3, endColumn: 4 }
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param line      Line for inclusive start position in input CSS.
 | 
			
		||||
   * @param column    Column for inclusive start position in input CSS.
 | 
			
		||||
   * @param endLine   Line for exclusive end position in input CSS.
 | 
			
		||||
   * @param endColumn Column for exclusive end position in input CSS.
 | 
			
		||||
   *
 | 
			
		||||
   * @return Position in input source.
 | 
			
		||||
   */
 | 
			
		||||
  origin(
 | 
			
		||||
    line: number,
 | 
			
		||||
    column: number,
 | 
			
		||||
    endLine?: number,
 | 
			
		||||
    endColumn?: number
 | 
			
		||||
  ): false | Input.FilePosition
 | 
			
		||||
  /**
 | 
			
		||||
   * The CSS source identifier. Contains `Input#file` if the user
 | 
			
		||||
   * set the `from` option, or `Input#id` if they did not.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse(css, { from: 'a.css' })
 | 
			
		||||
   * root.source.input.from //=> "/home/ai/a.css"
 | 
			
		||||
   *
 | 
			
		||||
   * const root = postcss.parse(css)
 | 
			
		||||
   * root.source.input.from //=> "<input css 1>"
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  get from(): string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Input extends Input_ {}
 | 
			
		||||
 | 
			
		||||
export = Input
 | 
			
		||||
							
								
								
									
										248
									
								
								node_modules/postcss/lib/input.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										248
									
								
								node_modules/postcss/lib/input.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,248 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
 | 
			
		||||
let { fileURLToPath, pathToFileURL } = require('url')
 | 
			
		||||
let { isAbsolute, resolve } = require('path')
 | 
			
		||||
let { nanoid } = require('nanoid/non-secure')
 | 
			
		||||
 | 
			
		||||
let terminalHighlight = require('./terminal-highlight')
 | 
			
		||||
let CssSyntaxError = require('./css-syntax-error')
 | 
			
		||||
let PreviousMap = require('./previous-map')
 | 
			
		||||
 | 
			
		||||
let fromOffsetCache = Symbol('fromOffsetCache')
 | 
			
		||||
 | 
			
		||||
let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)
 | 
			
		||||
let pathAvailable = Boolean(resolve && isAbsolute)
 | 
			
		||||
 | 
			
		||||
class Input {
 | 
			
		||||
  constructor(css, opts = {}) {
 | 
			
		||||
    if (
 | 
			
		||||
      css === null ||
 | 
			
		||||
      typeof css === 'undefined' ||
 | 
			
		||||
      (typeof css === 'object' && !css.toString)
 | 
			
		||||
    ) {
 | 
			
		||||
      throw new Error(`PostCSS received ${css} instead of CSS string`)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.css = css.toString()
 | 
			
		||||
 | 
			
		||||
    if (this.css[0] === '\uFEFF' || this.css[0] === '\uFFFE') {
 | 
			
		||||
      this.hasBOM = true
 | 
			
		||||
      this.css = this.css.slice(1)
 | 
			
		||||
    } else {
 | 
			
		||||
      this.hasBOM = false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (opts.from) {
 | 
			
		||||
      if (
 | 
			
		||||
        !pathAvailable ||
 | 
			
		||||
        /^\w+:\/\//.test(opts.from) ||
 | 
			
		||||
        isAbsolute(opts.from)
 | 
			
		||||
      ) {
 | 
			
		||||
        this.file = opts.from
 | 
			
		||||
      } else {
 | 
			
		||||
        this.file = resolve(opts.from)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (pathAvailable && sourceMapAvailable) {
 | 
			
		||||
      let map = new PreviousMap(this.css, opts)
 | 
			
		||||
      if (map.text) {
 | 
			
		||||
        this.map = map
 | 
			
		||||
        let file = map.consumer().file
 | 
			
		||||
        if (!this.file && file) this.file = this.mapResolve(file)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!this.file) {
 | 
			
		||||
      this.id = '<input css ' + nanoid(6) + '>'
 | 
			
		||||
    }
 | 
			
		||||
    if (this.map) this.map.file = this.from
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  error(message, line, column, opts = {}) {
 | 
			
		||||
    let result, endLine, endColumn
 | 
			
		||||
 | 
			
		||||
    if (line && typeof line === 'object') {
 | 
			
		||||
      let start = line
 | 
			
		||||
      let end = column
 | 
			
		||||
      if (typeof start.offset === 'number') {
 | 
			
		||||
        let pos = this.fromOffset(start.offset)
 | 
			
		||||
        line = pos.line
 | 
			
		||||
        column = pos.col
 | 
			
		||||
      } else {
 | 
			
		||||
        line = start.line
 | 
			
		||||
        column = start.column
 | 
			
		||||
      }
 | 
			
		||||
      if (typeof end.offset === 'number') {
 | 
			
		||||
        let pos = this.fromOffset(end.offset)
 | 
			
		||||
        endLine = pos.line
 | 
			
		||||
        endColumn = pos.col
 | 
			
		||||
      } else {
 | 
			
		||||
        endLine = end.line
 | 
			
		||||
        endColumn = end.column
 | 
			
		||||
      }
 | 
			
		||||
    } else if (!column) {
 | 
			
		||||
      let pos = this.fromOffset(line)
 | 
			
		||||
      line = pos.line
 | 
			
		||||
      column = pos.col
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let origin = this.origin(line, column, endLine, endColumn)
 | 
			
		||||
    if (origin) {
 | 
			
		||||
      result = new CssSyntaxError(
 | 
			
		||||
        message,
 | 
			
		||||
        origin.endLine === undefined
 | 
			
		||||
          ? origin.line
 | 
			
		||||
          : { column: origin.column, line: origin.line },
 | 
			
		||||
        origin.endLine === undefined
 | 
			
		||||
          ? origin.column
 | 
			
		||||
          : { column: origin.endColumn, line: origin.endLine },
 | 
			
		||||
        origin.source,
 | 
			
		||||
        origin.file,
 | 
			
		||||
        opts.plugin
 | 
			
		||||
      )
 | 
			
		||||
    } else {
 | 
			
		||||
      result = new CssSyntaxError(
 | 
			
		||||
        message,
 | 
			
		||||
        endLine === undefined ? line : { column, line },
 | 
			
		||||
        endLine === undefined ? column : { column: endColumn, line: endLine },
 | 
			
		||||
        this.css,
 | 
			
		||||
        this.file,
 | 
			
		||||
        opts.plugin
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    result.input = { column, endColumn, endLine, line, source: this.css }
 | 
			
		||||
    if (this.file) {
 | 
			
		||||
      if (pathToFileURL) {
 | 
			
		||||
        result.input.url = pathToFileURL(this.file).toString()
 | 
			
		||||
      }
 | 
			
		||||
      result.input.file = this.file
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return result
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  fromOffset(offset) {
 | 
			
		||||
    let lastLine, lineToIndex
 | 
			
		||||
    if (!this[fromOffsetCache]) {
 | 
			
		||||
      let lines = this.css.split('\n')
 | 
			
		||||
      lineToIndex = new Array(lines.length)
 | 
			
		||||
      let prevIndex = 0
 | 
			
		||||
 | 
			
		||||
      for (let i = 0, l = lines.length; i < l; i++) {
 | 
			
		||||
        lineToIndex[i] = prevIndex
 | 
			
		||||
        prevIndex += lines[i].length + 1
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this[fromOffsetCache] = lineToIndex
 | 
			
		||||
    } else {
 | 
			
		||||
      lineToIndex = this[fromOffsetCache]
 | 
			
		||||
    }
 | 
			
		||||
    lastLine = lineToIndex[lineToIndex.length - 1]
 | 
			
		||||
 | 
			
		||||
    let min = 0
 | 
			
		||||
    if (offset >= lastLine) {
 | 
			
		||||
      min = lineToIndex.length - 1
 | 
			
		||||
    } else {
 | 
			
		||||
      let max = lineToIndex.length - 2
 | 
			
		||||
      let mid
 | 
			
		||||
      while (min < max) {
 | 
			
		||||
        mid = min + ((max - min) >> 1)
 | 
			
		||||
        if (offset < lineToIndex[mid]) {
 | 
			
		||||
          max = mid - 1
 | 
			
		||||
        } else if (offset >= lineToIndex[mid + 1]) {
 | 
			
		||||
          min = mid + 1
 | 
			
		||||
        } else {
 | 
			
		||||
          min = mid
 | 
			
		||||
          break
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return {
 | 
			
		||||
      col: offset - lineToIndex[min] + 1,
 | 
			
		||||
      line: min + 1
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  mapResolve(file) {
 | 
			
		||||
    if (/^\w+:\/\//.test(file)) {
 | 
			
		||||
      return file
 | 
			
		||||
    }
 | 
			
		||||
    return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  origin(line, column, endLine, endColumn) {
 | 
			
		||||
    if (!this.map) return false
 | 
			
		||||
    let consumer = this.map.consumer()
 | 
			
		||||
 | 
			
		||||
    let from = consumer.originalPositionFor({ column, line })
 | 
			
		||||
    if (!from.source) return false
 | 
			
		||||
 | 
			
		||||
    let to
 | 
			
		||||
    if (typeof endLine === 'number') {
 | 
			
		||||
      to = consumer.originalPositionFor({ column: endColumn, line: endLine })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let fromUrl
 | 
			
		||||
 | 
			
		||||
    if (isAbsolute(from.source)) {
 | 
			
		||||
      fromUrl = pathToFileURL(from.source)
 | 
			
		||||
    } else {
 | 
			
		||||
      fromUrl = new URL(
 | 
			
		||||
        from.source,
 | 
			
		||||
        this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let result = {
 | 
			
		||||
      column: from.column,
 | 
			
		||||
      endColumn: to && to.column,
 | 
			
		||||
      endLine: to && to.line,
 | 
			
		||||
      line: from.line,
 | 
			
		||||
      url: fromUrl.toString()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (fromUrl.protocol === 'file:') {
 | 
			
		||||
      if (fileURLToPath) {
 | 
			
		||||
        result.file = fileURLToPath(fromUrl)
 | 
			
		||||
      } else {
 | 
			
		||||
        /* c8 ignore next 2 */
 | 
			
		||||
        throw new Error(`file: protocol is not available in this PostCSS build`)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let source = consumer.sourceContentFor(from.source)
 | 
			
		||||
    if (source) result.source = source
 | 
			
		||||
 | 
			
		||||
    return result
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toJSON() {
 | 
			
		||||
    let json = {}
 | 
			
		||||
    for (let name of ['hasBOM', 'css', 'file', 'id']) {
 | 
			
		||||
      if (this[name] != null) {
 | 
			
		||||
        json[name] = this[name]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (this.map) {
 | 
			
		||||
      json.map = { ...this.map }
 | 
			
		||||
      if (json.map.consumerCache) {
 | 
			
		||||
        json.map.consumerCache = undefined
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return json
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get from() {
 | 
			
		||||
    return this.file || this.id
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Input
 | 
			
		||||
Input.default = Input
 | 
			
		||||
 | 
			
		||||
if (terminalHighlight && terminalHighlight.registerInput) {
 | 
			
		||||
  terminalHighlight.registerInput(Input)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										190
									
								
								node_modules/postcss/lib/lazy-result.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								node_modules/postcss/lib/lazy-result.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,190 @@
 | 
			
		||||
import Document from './document.js'
 | 
			
		||||
import { SourceMap } from './postcss.js'
 | 
			
		||||
import Processor from './processor.js'
 | 
			
		||||
import Result, { Message, ResultOptions } from './result.js'
 | 
			
		||||
import Root from './root.js'
 | 
			
		||||
import Warning from './warning.js'
 | 
			
		||||
 | 
			
		||||
declare namespace LazyResult {
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { LazyResult_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A Promise proxy for the result of PostCSS transformations.
 | 
			
		||||
 *
 | 
			
		||||
 * A `LazyResult` instance is returned by `Processor#process`.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const lazy = postcss([autoprefixer]).process(css)
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class LazyResult_<RootNode = Document | Root>
 | 
			
		||||
  implements PromiseLike<Result<RootNode>>
 | 
			
		||||
{
 | 
			
		||||
  /**
 | 
			
		||||
   * Processes input CSS through synchronous and asynchronous plugins
 | 
			
		||||
   * and calls onRejected for each error thrown in any plugin.
 | 
			
		||||
   *
 | 
			
		||||
   * It implements standard Promise API.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * postcss([autoprefixer]).process(css).then(result => {
 | 
			
		||||
   *   console.log(result.css)
 | 
			
		||||
   * }).catch(error => {
 | 
			
		||||
   *   console.error(error)
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  catch: Promise<Result<RootNode>>['catch']
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Processes input CSS through synchronous and asynchronous plugins
 | 
			
		||||
   * and calls onFinally on any error or when all plugins will finish work.
 | 
			
		||||
   *
 | 
			
		||||
   * It implements standard Promise API.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * postcss([autoprefixer]).process(css).finally(() => {
 | 
			
		||||
   *   console.log('processing ended')
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  finally: Promise<Result<RootNode>>['finally']
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Processes input CSS through synchronous and asynchronous plugins
 | 
			
		||||
   * and calls `onFulfilled` with a Result instance. If a plugin throws
 | 
			
		||||
   * an error, the `onRejected` callback will be executed.
 | 
			
		||||
   *
 | 
			
		||||
   * It implements standard Promise API.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * postcss([autoprefixer]).process(css, { from: cssPath }).then(result => {
 | 
			
		||||
   *   console.log(result.css)
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  then: Promise<Result<RootNode>>['then']
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * @param processor Processor used for this transformation.
 | 
			
		||||
   * @param css       CSS to parse and transform.
 | 
			
		||||
   * @param opts      Options from the `Processor#process` or `Root#toResult`.
 | 
			
		||||
   */
 | 
			
		||||
  constructor(processor: Processor, css: string, opts: ResultOptions)
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Run plugin in async way and return `Result`.
 | 
			
		||||
   *
 | 
			
		||||
   * @return Result with output content.
 | 
			
		||||
   */
 | 
			
		||||
  async(): Promise<Result<RootNode>>
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Run plugin in sync way and return `Result`.
 | 
			
		||||
   *
 | 
			
		||||
   * @return Result with output content.
 | 
			
		||||
   */
 | 
			
		||||
  sync(): Result<RootNode>
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Alias for the `LazyResult#css` property.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * lazy + '' === lazy.css
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @return Output CSS.
 | 
			
		||||
   */
 | 
			
		||||
  toString(): string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Processes input CSS through synchronous plugins
 | 
			
		||||
   * and calls `Result#warnings`.
 | 
			
		||||
   *
 | 
			
		||||
   * @return Warnings from plugins.
 | 
			
		||||
   */
 | 
			
		||||
  warnings(): Warning[]
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * An alias for the `css` property. Use it with syntaxes
 | 
			
		||||
   * that generate non-CSS output.
 | 
			
		||||
   *
 | 
			
		||||
   * This property will only work with synchronous plugins.
 | 
			
		||||
   * If the processor contains any asynchronous plugins
 | 
			
		||||
   * it will throw an error.
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS runners should always use `LazyResult#then`.
 | 
			
		||||
   */
 | 
			
		||||
  get content(): string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Processes input CSS through synchronous plugins, converts `Root`
 | 
			
		||||
   * to a CSS string and returns `Result#css`.
 | 
			
		||||
   *
 | 
			
		||||
   * This property will only work with synchronous plugins.
 | 
			
		||||
   * If the processor contains any asynchronous plugins
 | 
			
		||||
   * it will throw an error.
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS runners should always use `LazyResult#then`.
 | 
			
		||||
   */
 | 
			
		||||
  get css(): string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Processes input CSS through synchronous plugins
 | 
			
		||||
   * and returns `Result#map`.
 | 
			
		||||
   *
 | 
			
		||||
   * This property will only work with synchronous plugins.
 | 
			
		||||
   * If the processor contains any asynchronous plugins
 | 
			
		||||
   * it will throw an error.
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS runners should always use `LazyResult#then`.
 | 
			
		||||
   */
 | 
			
		||||
  get map(): SourceMap
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Processes input CSS through synchronous plugins
 | 
			
		||||
   * and returns `Result#messages`.
 | 
			
		||||
   *
 | 
			
		||||
   * This property will only work with synchronous plugins. If the processor
 | 
			
		||||
   * contains any asynchronous plugins it will throw an error.
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS runners should always use `LazyResult#then`.
 | 
			
		||||
   */
 | 
			
		||||
  get messages(): Message[]
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Options from the `Processor#process` call.
 | 
			
		||||
   */
 | 
			
		||||
  get opts(): ResultOptions
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns a `Processor` instance, which will be used
 | 
			
		||||
   * for CSS transformations.
 | 
			
		||||
   */
 | 
			
		||||
  get processor(): Processor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Processes input CSS through synchronous plugins
 | 
			
		||||
   * and returns `Result#root`.
 | 
			
		||||
   *
 | 
			
		||||
   * This property will only work with synchronous plugins. If the processor
 | 
			
		||||
   * contains any asynchronous plugins it will throw an error.
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS runners should always use `LazyResult#then`.
 | 
			
		||||
   */
 | 
			
		||||
  get root(): RootNode
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns the default string description of an object.
 | 
			
		||||
   * Required to implement the Promise interface.
 | 
			
		||||
   */
 | 
			
		||||
  get [Symbol.toStringTag](): string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class LazyResult<
 | 
			
		||||
  RootNode = Document | Root
 | 
			
		||||
> extends LazyResult_<RootNode> {}
 | 
			
		||||
 | 
			
		||||
export = LazyResult
 | 
			
		||||
							
								
								
									
										550
									
								
								node_modules/postcss/lib/lazy-result.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										550
									
								
								node_modules/postcss/lib/lazy-result.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,550 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let { isClean, my } = require('./symbols')
 | 
			
		||||
let MapGenerator = require('./map-generator')
 | 
			
		||||
let stringify = require('./stringify')
 | 
			
		||||
let Container = require('./container')
 | 
			
		||||
let Document = require('./document')
 | 
			
		||||
let warnOnce = require('./warn-once')
 | 
			
		||||
let Result = require('./result')
 | 
			
		||||
let parse = require('./parse')
 | 
			
		||||
let Root = require('./root')
 | 
			
		||||
 | 
			
		||||
const TYPE_TO_CLASS_NAME = {
 | 
			
		||||
  atrule: 'AtRule',
 | 
			
		||||
  comment: 'Comment',
 | 
			
		||||
  decl: 'Declaration',
 | 
			
		||||
  document: 'Document',
 | 
			
		||||
  root: 'Root',
 | 
			
		||||
  rule: 'Rule'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const PLUGIN_PROPS = {
 | 
			
		||||
  AtRule: true,
 | 
			
		||||
  AtRuleExit: true,
 | 
			
		||||
  Comment: true,
 | 
			
		||||
  CommentExit: true,
 | 
			
		||||
  Declaration: true,
 | 
			
		||||
  DeclarationExit: true,
 | 
			
		||||
  Document: true,
 | 
			
		||||
  DocumentExit: true,
 | 
			
		||||
  Once: true,
 | 
			
		||||
  OnceExit: true,
 | 
			
		||||
  postcssPlugin: true,
 | 
			
		||||
  prepare: true,
 | 
			
		||||
  Root: true,
 | 
			
		||||
  RootExit: true,
 | 
			
		||||
  Rule: true,
 | 
			
		||||
  RuleExit: true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const NOT_VISITORS = {
 | 
			
		||||
  Once: true,
 | 
			
		||||
  postcssPlugin: true,
 | 
			
		||||
  prepare: true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const CHILDREN = 0
 | 
			
		||||
 | 
			
		||||
function isPromise(obj) {
 | 
			
		||||
  return typeof obj === 'object' && typeof obj.then === 'function'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getEvents(node) {
 | 
			
		||||
  let key = false
 | 
			
		||||
  let type = TYPE_TO_CLASS_NAME[node.type]
 | 
			
		||||
  if (node.type === 'decl') {
 | 
			
		||||
    key = node.prop.toLowerCase()
 | 
			
		||||
  } else if (node.type === 'atrule') {
 | 
			
		||||
    key = node.name.toLowerCase()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (key && node.append) {
 | 
			
		||||
    return [
 | 
			
		||||
      type,
 | 
			
		||||
      type + '-' + key,
 | 
			
		||||
      CHILDREN,
 | 
			
		||||
      type + 'Exit',
 | 
			
		||||
      type + 'Exit-' + key
 | 
			
		||||
    ]
 | 
			
		||||
  } else if (key) {
 | 
			
		||||
    return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]
 | 
			
		||||
  } else if (node.append) {
 | 
			
		||||
    return [type, CHILDREN, type + 'Exit']
 | 
			
		||||
  } else {
 | 
			
		||||
    return [type, type + 'Exit']
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function toStack(node) {
 | 
			
		||||
  let events
 | 
			
		||||
  if (node.type === 'document') {
 | 
			
		||||
    events = ['Document', CHILDREN, 'DocumentExit']
 | 
			
		||||
  } else if (node.type === 'root') {
 | 
			
		||||
    events = ['Root', CHILDREN, 'RootExit']
 | 
			
		||||
  } else {
 | 
			
		||||
    events = getEvents(node)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return {
 | 
			
		||||
    eventIndex: 0,
 | 
			
		||||
    events,
 | 
			
		||||
    iterator: 0,
 | 
			
		||||
    node,
 | 
			
		||||
    visitorIndex: 0,
 | 
			
		||||
    visitors: []
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function cleanMarks(node) {
 | 
			
		||||
  node[isClean] = false
 | 
			
		||||
  if (node.nodes) node.nodes.forEach(i => cleanMarks(i))
 | 
			
		||||
  return node
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
let postcss = {}
 | 
			
		||||
 | 
			
		||||
class LazyResult {
 | 
			
		||||
  constructor(processor, css, opts) {
 | 
			
		||||
    this.stringified = false
 | 
			
		||||
    this.processed = false
 | 
			
		||||
 | 
			
		||||
    let root
 | 
			
		||||
    if (
 | 
			
		||||
      typeof css === 'object' &&
 | 
			
		||||
      css !== null &&
 | 
			
		||||
      (css.type === 'root' || css.type === 'document')
 | 
			
		||||
    ) {
 | 
			
		||||
      root = cleanMarks(css)
 | 
			
		||||
    } else if (css instanceof LazyResult || css instanceof Result) {
 | 
			
		||||
      root = cleanMarks(css.root)
 | 
			
		||||
      if (css.map) {
 | 
			
		||||
        if (typeof opts.map === 'undefined') opts.map = {}
 | 
			
		||||
        if (!opts.map.inline) opts.map.inline = false
 | 
			
		||||
        opts.map.prev = css.map
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      let parser = parse
 | 
			
		||||
      if (opts.syntax) parser = opts.syntax.parse
 | 
			
		||||
      if (opts.parser) parser = opts.parser
 | 
			
		||||
      if (parser.parse) parser = parser.parse
 | 
			
		||||
 | 
			
		||||
      try {
 | 
			
		||||
        root = parser(css, opts)
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        this.processed = true
 | 
			
		||||
        this.error = error
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (root && !root[my]) {
 | 
			
		||||
        /* c8 ignore next 2 */
 | 
			
		||||
        Container.rebuild(root)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.result = new Result(processor, root, opts)
 | 
			
		||||
    this.helpers = { ...postcss, postcss, result: this.result }
 | 
			
		||||
    this.plugins = this.processor.plugins.map(plugin => {
 | 
			
		||||
      if (typeof plugin === 'object' && plugin.prepare) {
 | 
			
		||||
        return { ...plugin, ...plugin.prepare(this.result) }
 | 
			
		||||
      } else {
 | 
			
		||||
        return plugin
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async() {
 | 
			
		||||
    if (this.error) return Promise.reject(this.error)
 | 
			
		||||
    if (this.processed) return Promise.resolve(this.result)
 | 
			
		||||
    if (!this.processing) {
 | 
			
		||||
      this.processing = this.runAsync()
 | 
			
		||||
    }
 | 
			
		||||
    return this.processing
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  catch(onRejected) {
 | 
			
		||||
    return this.async().catch(onRejected)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  finally(onFinally) {
 | 
			
		||||
    return this.async().then(onFinally, onFinally)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getAsyncError() {
 | 
			
		||||
    throw new Error('Use process(css).then(cb) to work with async plugins')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleError(error, node) {
 | 
			
		||||
    let plugin = this.result.lastPlugin
 | 
			
		||||
    try {
 | 
			
		||||
      if (node) node.addToError(error)
 | 
			
		||||
      this.error = error
 | 
			
		||||
      if (error.name === 'CssSyntaxError' && !error.plugin) {
 | 
			
		||||
        error.plugin = plugin.postcssPlugin
 | 
			
		||||
        error.setMessage()
 | 
			
		||||
      } else if (plugin.postcssVersion) {
 | 
			
		||||
        if (process.env.NODE_ENV !== 'production') {
 | 
			
		||||
          let pluginName = plugin.postcssPlugin
 | 
			
		||||
          let pluginVer = plugin.postcssVersion
 | 
			
		||||
          let runtimeVer = this.result.processor.version
 | 
			
		||||
          let a = pluginVer.split('.')
 | 
			
		||||
          let b = runtimeVer.split('.')
 | 
			
		||||
 | 
			
		||||
          if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {
 | 
			
		||||
            // eslint-disable-next-line no-console
 | 
			
		||||
            console.error(
 | 
			
		||||
              'Unknown error from PostCSS plugin. Your current PostCSS ' +
 | 
			
		||||
                'version is ' +
 | 
			
		||||
                runtimeVer +
 | 
			
		||||
                ', but ' +
 | 
			
		||||
                pluginName +
 | 
			
		||||
                ' uses ' +
 | 
			
		||||
                pluginVer +
 | 
			
		||||
                '. Perhaps this is the source of the error below.'
 | 
			
		||||
            )
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    } catch (err) {
 | 
			
		||||
      /* c8 ignore next 3 */
 | 
			
		||||
      // eslint-disable-next-line no-console
 | 
			
		||||
      if (console && console.error) console.error(err)
 | 
			
		||||
    }
 | 
			
		||||
    return error
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  prepareVisitors() {
 | 
			
		||||
    this.listeners = {}
 | 
			
		||||
    let add = (plugin, type, cb) => {
 | 
			
		||||
      if (!this.listeners[type]) this.listeners[type] = []
 | 
			
		||||
      this.listeners[type].push([plugin, cb])
 | 
			
		||||
    }
 | 
			
		||||
    for (let plugin of this.plugins) {
 | 
			
		||||
      if (typeof plugin === 'object') {
 | 
			
		||||
        for (let event in plugin) {
 | 
			
		||||
          if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {
 | 
			
		||||
            throw new Error(
 | 
			
		||||
              `Unknown event ${event} in ${plugin.postcssPlugin}. ` +
 | 
			
		||||
                `Try to update PostCSS (${this.processor.version} now).`
 | 
			
		||||
            )
 | 
			
		||||
          }
 | 
			
		||||
          if (!NOT_VISITORS[event]) {
 | 
			
		||||
            if (typeof plugin[event] === 'object') {
 | 
			
		||||
              for (let filter in plugin[event]) {
 | 
			
		||||
                if (filter === '*') {
 | 
			
		||||
                  add(plugin, event, plugin[event][filter])
 | 
			
		||||
                } else {
 | 
			
		||||
                  add(
 | 
			
		||||
                    plugin,
 | 
			
		||||
                    event + '-' + filter.toLowerCase(),
 | 
			
		||||
                    plugin[event][filter]
 | 
			
		||||
                  )
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            } else if (typeof plugin[event] === 'function') {
 | 
			
		||||
              add(plugin, event, plugin[event])
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    this.hasListener = Object.keys(this.listeners).length > 0
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async runAsync() {
 | 
			
		||||
    this.plugin = 0
 | 
			
		||||
    for (let i = 0; i < this.plugins.length; i++) {
 | 
			
		||||
      let plugin = this.plugins[i]
 | 
			
		||||
      let promise = this.runOnRoot(plugin)
 | 
			
		||||
      if (isPromise(promise)) {
 | 
			
		||||
        try {
 | 
			
		||||
          await promise
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
          throw this.handleError(error)
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.prepareVisitors()
 | 
			
		||||
    if (this.hasListener) {
 | 
			
		||||
      let root = this.result.root
 | 
			
		||||
      while (!root[isClean]) {
 | 
			
		||||
        root[isClean] = true
 | 
			
		||||
        let stack = [toStack(root)]
 | 
			
		||||
        while (stack.length > 0) {
 | 
			
		||||
          let promise = this.visitTick(stack)
 | 
			
		||||
          if (isPromise(promise)) {
 | 
			
		||||
            try {
 | 
			
		||||
              await promise
 | 
			
		||||
            } catch (e) {
 | 
			
		||||
              let node = stack[stack.length - 1].node
 | 
			
		||||
              throw this.handleError(e, node)
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (this.listeners.OnceExit) {
 | 
			
		||||
        for (let [plugin, visitor] of this.listeners.OnceExit) {
 | 
			
		||||
          this.result.lastPlugin = plugin
 | 
			
		||||
          try {
 | 
			
		||||
            if (root.type === 'document') {
 | 
			
		||||
              let roots = root.nodes.map(subRoot =>
 | 
			
		||||
                visitor(subRoot, this.helpers)
 | 
			
		||||
              )
 | 
			
		||||
 | 
			
		||||
              await Promise.all(roots)
 | 
			
		||||
            } else {
 | 
			
		||||
              await visitor(root, this.helpers)
 | 
			
		||||
            }
 | 
			
		||||
          } catch (e) {
 | 
			
		||||
            throw this.handleError(e)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.processed = true
 | 
			
		||||
    return this.stringify()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  runOnRoot(plugin) {
 | 
			
		||||
    this.result.lastPlugin = plugin
 | 
			
		||||
    try {
 | 
			
		||||
      if (typeof plugin === 'object' && plugin.Once) {
 | 
			
		||||
        if (this.result.root.type === 'document') {
 | 
			
		||||
          let roots = this.result.root.nodes.map(root =>
 | 
			
		||||
            plugin.Once(root, this.helpers)
 | 
			
		||||
          )
 | 
			
		||||
 | 
			
		||||
          if (isPromise(roots[0])) {
 | 
			
		||||
            return Promise.all(roots)
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          return roots
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return plugin.Once(this.result.root, this.helpers)
 | 
			
		||||
      } else if (typeof plugin === 'function') {
 | 
			
		||||
        return plugin(this.result.root, this.result)
 | 
			
		||||
      }
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
      throw this.handleError(error)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  stringify() {
 | 
			
		||||
    if (this.error) throw this.error
 | 
			
		||||
    if (this.stringified) return this.result
 | 
			
		||||
    this.stringified = true
 | 
			
		||||
 | 
			
		||||
    this.sync()
 | 
			
		||||
 | 
			
		||||
    let opts = this.result.opts
 | 
			
		||||
    let str = stringify
 | 
			
		||||
    if (opts.syntax) str = opts.syntax.stringify
 | 
			
		||||
    if (opts.stringifier) str = opts.stringifier
 | 
			
		||||
    if (str.stringify) str = str.stringify
 | 
			
		||||
 | 
			
		||||
    let map = new MapGenerator(str, this.result.root, this.result.opts)
 | 
			
		||||
    let data = map.generate()
 | 
			
		||||
    this.result.css = data[0]
 | 
			
		||||
    this.result.map = data[1]
 | 
			
		||||
 | 
			
		||||
    return this.result
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  sync() {
 | 
			
		||||
    if (this.error) throw this.error
 | 
			
		||||
    if (this.processed) return this.result
 | 
			
		||||
    this.processed = true
 | 
			
		||||
 | 
			
		||||
    if (this.processing) {
 | 
			
		||||
      throw this.getAsyncError()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (let plugin of this.plugins) {
 | 
			
		||||
      let promise = this.runOnRoot(plugin)
 | 
			
		||||
      if (isPromise(promise)) {
 | 
			
		||||
        throw this.getAsyncError()
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.prepareVisitors()
 | 
			
		||||
    if (this.hasListener) {
 | 
			
		||||
      let root = this.result.root
 | 
			
		||||
      while (!root[isClean]) {
 | 
			
		||||
        root[isClean] = true
 | 
			
		||||
        this.walkSync(root)
 | 
			
		||||
      }
 | 
			
		||||
      if (this.listeners.OnceExit) {
 | 
			
		||||
        if (root.type === 'document') {
 | 
			
		||||
          for (let subRoot of root.nodes) {
 | 
			
		||||
            this.visitSync(this.listeners.OnceExit, subRoot)
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          this.visitSync(this.listeners.OnceExit, root)
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return this.result
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  then(onFulfilled, onRejected) {
 | 
			
		||||
    if (process.env.NODE_ENV !== 'production') {
 | 
			
		||||
      if (!('from' in this.opts)) {
 | 
			
		||||
        warnOnce(
 | 
			
		||||
          'Without `from` option PostCSS could generate wrong source map ' +
 | 
			
		||||
            'and will not find Browserslist config. Set it to CSS file path ' +
 | 
			
		||||
            'or to `undefined` to prevent this warning.'
 | 
			
		||||
        )
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return this.async().then(onFulfilled, onRejected)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toString() {
 | 
			
		||||
    return this.css
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  visitSync(visitors, node) {
 | 
			
		||||
    for (let [plugin, visitor] of visitors) {
 | 
			
		||||
      this.result.lastPlugin = plugin
 | 
			
		||||
      let promise
 | 
			
		||||
      try {
 | 
			
		||||
        promise = visitor(node, this.helpers)
 | 
			
		||||
      } catch (e) {
 | 
			
		||||
        throw this.handleError(e, node.proxyOf)
 | 
			
		||||
      }
 | 
			
		||||
      if (node.type !== 'root' && node.type !== 'document' && !node.parent) {
 | 
			
		||||
        return true
 | 
			
		||||
      }
 | 
			
		||||
      if (isPromise(promise)) {
 | 
			
		||||
        throw this.getAsyncError()
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  visitTick(stack) {
 | 
			
		||||
    let visit = stack[stack.length - 1]
 | 
			
		||||
    let { node, visitors } = visit
 | 
			
		||||
 | 
			
		||||
    if (node.type !== 'root' && node.type !== 'document' && !node.parent) {
 | 
			
		||||
      stack.pop()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (visitors.length > 0 && visit.visitorIndex < visitors.length) {
 | 
			
		||||
      let [plugin, visitor] = visitors[visit.visitorIndex]
 | 
			
		||||
      visit.visitorIndex += 1
 | 
			
		||||
      if (visit.visitorIndex === visitors.length) {
 | 
			
		||||
        visit.visitors = []
 | 
			
		||||
        visit.visitorIndex = 0
 | 
			
		||||
      }
 | 
			
		||||
      this.result.lastPlugin = plugin
 | 
			
		||||
      try {
 | 
			
		||||
        return visitor(node.toProxy(), this.helpers)
 | 
			
		||||
      } catch (e) {
 | 
			
		||||
        throw this.handleError(e, node)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (visit.iterator !== 0) {
 | 
			
		||||
      let iterator = visit.iterator
 | 
			
		||||
      let child
 | 
			
		||||
      while ((child = node.nodes[node.indexes[iterator]])) {
 | 
			
		||||
        node.indexes[iterator] += 1
 | 
			
		||||
        if (!child[isClean]) {
 | 
			
		||||
          child[isClean] = true
 | 
			
		||||
          stack.push(toStack(child))
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      visit.iterator = 0
 | 
			
		||||
      delete node.indexes[iterator]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let events = visit.events
 | 
			
		||||
    while (visit.eventIndex < events.length) {
 | 
			
		||||
      let event = events[visit.eventIndex]
 | 
			
		||||
      visit.eventIndex += 1
 | 
			
		||||
      if (event === CHILDREN) {
 | 
			
		||||
        if (node.nodes && node.nodes.length) {
 | 
			
		||||
          node[isClean] = true
 | 
			
		||||
          visit.iterator = node.getIterator()
 | 
			
		||||
        }
 | 
			
		||||
        return
 | 
			
		||||
      } else if (this.listeners[event]) {
 | 
			
		||||
        visit.visitors = this.listeners[event]
 | 
			
		||||
        return
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    stack.pop()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  walkSync(node) {
 | 
			
		||||
    node[isClean] = true
 | 
			
		||||
    let events = getEvents(node)
 | 
			
		||||
    for (let event of events) {
 | 
			
		||||
      if (event === CHILDREN) {
 | 
			
		||||
        if (node.nodes) {
 | 
			
		||||
          node.each(child => {
 | 
			
		||||
            if (!child[isClean]) this.walkSync(child)
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        let visitors = this.listeners[event]
 | 
			
		||||
        if (visitors) {
 | 
			
		||||
          if (this.visitSync(visitors, node.toProxy())) return
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  warnings() {
 | 
			
		||||
    return this.sync().warnings()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get content() {
 | 
			
		||||
    return this.stringify().content
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get css() {
 | 
			
		||||
    return this.stringify().css
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get map() {
 | 
			
		||||
    return this.stringify().map
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get messages() {
 | 
			
		||||
    return this.sync().messages
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get opts() {
 | 
			
		||||
    return this.result.opts
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get processor() {
 | 
			
		||||
    return this.result.processor
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get root() {
 | 
			
		||||
    return this.sync().root
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get [Symbol.toStringTag]() {
 | 
			
		||||
    return 'LazyResult'
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
LazyResult.registerPostcss = dependant => {
 | 
			
		||||
  postcss = dependant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = LazyResult
 | 
			
		||||
LazyResult.default = LazyResult
 | 
			
		||||
 | 
			
		||||
Root.registerLazyResult(LazyResult)
 | 
			
		||||
Document.registerLazyResult(LazyResult)
 | 
			
		||||
							
								
								
									
										57
									
								
								node_modules/postcss/lib/list.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								node_modules/postcss/lib/list.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
declare namespace list {
 | 
			
		||||
  type List = {
 | 
			
		||||
    /**
 | 
			
		||||
     * Safely splits comma-separated values (such as those for `transition-*`
 | 
			
		||||
     * and `background` properties).
 | 
			
		||||
     *
 | 
			
		||||
     * ```js
 | 
			
		||||
     * Once (root, { list }) {
 | 
			
		||||
     *   list.comma('black, linear-gradient(white, black)')
 | 
			
		||||
     *   //=> ['black', 'linear-gradient(white, black)']
 | 
			
		||||
     * }
 | 
			
		||||
     * ```
 | 
			
		||||
     *
 | 
			
		||||
     * @param str Comma-separated values.
 | 
			
		||||
     * @return Split values.
 | 
			
		||||
     */
 | 
			
		||||
    comma(str: string): string[]
 | 
			
		||||
 | 
			
		||||
    default: List
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Safely splits space-separated values (such as those for `background`,
 | 
			
		||||
     * `border-radius`, and other shorthand properties).
 | 
			
		||||
     *
 | 
			
		||||
     * ```js
 | 
			
		||||
     * Once (root, { list }) {
 | 
			
		||||
     *   list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']
 | 
			
		||||
     * }
 | 
			
		||||
     * ```
 | 
			
		||||
     *
 | 
			
		||||
     * @param str Space-separated values.
 | 
			
		||||
     * @return Split values.
 | 
			
		||||
     */
 | 
			
		||||
    space(str: string): string[]
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Safely splits values.
 | 
			
		||||
     *
 | 
			
		||||
     * ```js
 | 
			
		||||
     * Once (root, { list }) {
 | 
			
		||||
     *   list.split('1px calc(10% + 1px)', [' ', '\n', '\t']) //=> ['1px', 'calc(10% + 1px)']
 | 
			
		||||
     * }
 | 
			
		||||
     * ```
 | 
			
		||||
     *
 | 
			
		||||
     * @param string separated values.
 | 
			
		||||
     * @param separators array of separators.
 | 
			
		||||
     * @param last boolean indicator.
 | 
			
		||||
     * @return Split values.
 | 
			
		||||
     */
 | 
			
		||||
    split(string: string, separators: string[], last: boolean): string[]
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// eslint-disable-next-line @typescript-eslint/no-redeclare
 | 
			
		||||
declare const list: list.List
 | 
			
		||||
 | 
			
		||||
export = list
 | 
			
		||||
							
								
								
									
										58
									
								
								node_modules/postcss/lib/list.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								node_modules/postcss/lib/list.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let list = {
 | 
			
		||||
  comma(string) {
 | 
			
		||||
    return list.split(string, [','], true)
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  space(string) {
 | 
			
		||||
    let spaces = [' ', '\n', '\t']
 | 
			
		||||
    return list.split(string, spaces)
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  split(string, separators, last) {
 | 
			
		||||
    let array = []
 | 
			
		||||
    let current = ''
 | 
			
		||||
    let split = false
 | 
			
		||||
 | 
			
		||||
    let func = 0
 | 
			
		||||
    let inQuote = false
 | 
			
		||||
    let prevQuote = ''
 | 
			
		||||
    let escape = false
 | 
			
		||||
 | 
			
		||||
    for (let letter of string) {
 | 
			
		||||
      if (escape) {
 | 
			
		||||
        escape = false
 | 
			
		||||
      } else if (letter === '\\') {
 | 
			
		||||
        escape = true
 | 
			
		||||
      } else if (inQuote) {
 | 
			
		||||
        if (letter === prevQuote) {
 | 
			
		||||
          inQuote = false
 | 
			
		||||
        }
 | 
			
		||||
      } else if (letter === '"' || letter === "'") {
 | 
			
		||||
        inQuote = true
 | 
			
		||||
        prevQuote = letter
 | 
			
		||||
      } else if (letter === '(') {
 | 
			
		||||
        func += 1
 | 
			
		||||
      } else if (letter === ')') {
 | 
			
		||||
        if (func > 0) func -= 1
 | 
			
		||||
      } else if (func === 0) {
 | 
			
		||||
        if (separators.includes(letter)) split = true
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (split) {
 | 
			
		||||
        if (current !== '') array.push(current.trim())
 | 
			
		||||
        current = ''
 | 
			
		||||
        split = false
 | 
			
		||||
      } else {
 | 
			
		||||
        current += letter
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (last || current !== '') array.push(current.trim())
 | 
			
		||||
    return array
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = list
 | 
			
		||||
list.default = list
 | 
			
		||||
							
								
								
									
										360
									
								
								node_modules/postcss/lib/map-generator.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										360
									
								
								node_modules/postcss/lib/map-generator.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,360 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
 | 
			
		||||
let { dirname, relative, resolve, sep } = require('path')
 | 
			
		||||
let { pathToFileURL } = require('url')
 | 
			
		||||
 | 
			
		||||
let Input = require('./input')
 | 
			
		||||
 | 
			
		||||
let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)
 | 
			
		||||
let pathAvailable = Boolean(dirname && resolve && relative && sep)
 | 
			
		||||
 | 
			
		||||
class MapGenerator {
 | 
			
		||||
  constructor(stringify, root, opts, cssString) {
 | 
			
		||||
    this.stringify = stringify
 | 
			
		||||
    this.mapOpts = opts.map || {}
 | 
			
		||||
    this.root = root
 | 
			
		||||
    this.opts = opts
 | 
			
		||||
    this.css = cssString
 | 
			
		||||
    this.originalCSS = cssString
 | 
			
		||||
    this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute
 | 
			
		||||
 | 
			
		||||
    this.memoizedFileURLs = new Map()
 | 
			
		||||
    this.memoizedPaths = new Map()
 | 
			
		||||
    this.memoizedURLs = new Map()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  addAnnotation() {
 | 
			
		||||
    let content
 | 
			
		||||
 | 
			
		||||
    if (this.isInline()) {
 | 
			
		||||
      content =
 | 
			
		||||
        'data:application/json;base64,' + this.toBase64(this.map.toString())
 | 
			
		||||
    } else if (typeof this.mapOpts.annotation === 'string') {
 | 
			
		||||
      content = this.mapOpts.annotation
 | 
			
		||||
    } else if (typeof this.mapOpts.annotation === 'function') {
 | 
			
		||||
      content = this.mapOpts.annotation(this.opts.to, this.root)
 | 
			
		||||
    } else {
 | 
			
		||||
      content = this.outputFile() + '.map'
 | 
			
		||||
    }
 | 
			
		||||
    let eol = '\n'
 | 
			
		||||
    if (this.css.includes('\r\n')) eol = '\r\n'
 | 
			
		||||
 | 
			
		||||
    this.css += eol + '/*# sourceMappingURL=' + content + ' */'
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  applyPrevMaps() {
 | 
			
		||||
    for (let prev of this.previous()) {
 | 
			
		||||
      let from = this.toUrl(this.path(prev.file))
 | 
			
		||||
      let root = prev.root || dirname(prev.file)
 | 
			
		||||
      let map
 | 
			
		||||
 | 
			
		||||
      if (this.mapOpts.sourcesContent === false) {
 | 
			
		||||
        map = new SourceMapConsumer(prev.text)
 | 
			
		||||
        if (map.sourcesContent) {
 | 
			
		||||
          map.sourcesContent = null
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        map = prev.consumer()
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.map.applySourceMap(map, from, this.toUrl(this.path(root)))
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  clearAnnotation() {
 | 
			
		||||
    if (this.mapOpts.annotation === false) return
 | 
			
		||||
 | 
			
		||||
    if (this.root) {
 | 
			
		||||
      let node
 | 
			
		||||
      for (let i = this.root.nodes.length - 1; i >= 0; i--) {
 | 
			
		||||
        node = this.root.nodes[i]
 | 
			
		||||
        if (node.type !== 'comment') continue
 | 
			
		||||
        if (node.text.indexOf('# sourceMappingURL=') === 0) {
 | 
			
		||||
          this.root.removeChild(i)
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    } else if (this.css) {
 | 
			
		||||
      this.css = this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm, '')
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  generate() {
 | 
			
		||||
    this.clearAnnotation()
 | 
			
		||||
    if (pathAvailable && sourceMapAvailable && this.isMap()) {
 | 
			
		||||
      return this.generateMap()
 | 
			
		||||
    } else {
 | 
			
		||||
      let result = ''
 | 
			
		||||
      this.stringify(this.root, i => {
 | 
			
		||||
        result += i
 | 
			
		||||
      })
 | 
			
		||||
      return [result]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  generateMap() {
 | 
			
		||||
    if (this.root) {
 | 
			
		||||
      this.generateString()
 | 
			
		||||
    } else if (this.previous().length === 1) {
 | 
			
		||||
      let prev = this.previous()[0].consumer()
 | 
			
		||||
      prev.file = this.outputFile()
 | 
			
		||||
      this.map = SourceMapGenerator.fromSourceMap(prev)
 | 
			
		||||
    } else {
 | 
			
		||||
      this.map = new SourceMapGenerator({ file: this.outputFile() })
 | 
			
		||||
      this.map.addMapping({
 | 
			
		||||
        generated: { column: 0, line: 1 },
 | 
			
		||||
        original: { column: 0, line: 1 },
 | 
			
		||||
        source: this.opts.from
 | 
			
		||||
          ? this.toUrl(this.path(this.opts.from))
 | 
			
		||||
          : '<no source>'
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.isSourcesContent()) this.setSourcesContent()
 | 
			
		||||
    if (this.root && this.previous().length > 0) this.applyPrevMaps()
 | 
			
		||||
    if (this.isAnnotation()) this.addAnnotation()
 | 
			
		||||
 | 
			
		||||
    if (this.isInline()) {
 | 
			
		||||
      return [this.css]
 | 
			
		||||
    } else {
 | 
			
		||||
      return [this.css, this.map]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  generateString() {
 | 
			
		||||
    this.css = ''
 | 
			
		||||
    this.map = new SourceMapGenerator({ file: this.outputFile() })
 | 
			
		||||
 | 
			
		||||
    let line = 1
 | 
			
		||||
    let column = 1
 | 
			
		||||
 | 
			
		||||
    let noSource = '<no source>'
 | 
			
		||||
    let mapping = {
 | 
			
		||||
      generated: { column: 0, line: 0 },
 | 
			
		||||
      original: { column: 0, line: 0 },
 | 
			
		||||
      source: ''
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let lines, last
 | 
			
		||||
    this.stringify(this.root, (str, node, type) => {
 | 
			
		||||
      this.css += str
 | 
			
		||||
 | 
			
		||||
      if (node && type !== 'end') {
 | 
			
		||||
        mapping.generated.line = line
 | 
			
		||||
        mapping.generated.column = column - 1
 | 
			
		||||
        if (node.source && node.source.start) {
 | 
			
		||||
          mapping.source = this.sourcePath(node)
 | 
			
		||||
          mapping.original.line = node.source.start.line
 | 
			
		||||
          mapping.original.column = node.source.start.column - 1
 | 
			
		||||
          this.map.addMapping(mapping)
 | 
			
		||||
        } else {
 | 
			
		||||
          mapping.source = noSource
 | 
			
		||||
          mapping.original.line = 1
 | 
			
		||||
          mapping.original.column = 0
 | 
			
		||||
          this.map.addMapping(mapping)
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      lines = str.match(/\n/g)
 | 
			
		||||
      if (lines) {
 | 
			
		||||
        line += lines.length
 | 
			
		||||
        last = str.lastIndexOf('\n')
 | 
			
		||||
        column = str.length - last
 | 
			
		||||
      } else {
 | 
			
		||||
        column += str.length
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (node && type !== 'start') {
 | 
			
		||||
        let p = node.parent || { raws: {} }
 | 
			
		||||
        let childless =
 | 
			
		||||
          node.type === 'decl' || (node.type === 'atrule' && !node.nodes)
 | 
			
		||||
        if (!childless || node !== p.last || p.raws.semicolon) {
 | 
			
		||||
          if (node.source && node.source.end) {
 | 
			
		||||
            mapping.source = this.sourcePath(node)
 | 
			
		||||
            mapping.original.line = node.source.end.line
 | 
			
		||||
            mapping.original.column = node.source.end.column - 1
 | 
			
		||||
            mapping.generated.line = line
 | 
			
		||||
            mapping.generated.column = column - 2
 | 
			
		||||
            this.map.addMapping(mapping)
 | 
			
		||||
          } else {
 | 
			
		||||
            mapping.source = noSource
 | 
			
		||||
            mapping.original.line = 1
 | 
			
		||||
            mapping.original.column = 0
 | 
			
		||||
            mapping.generated.line = line
 | 
			
		||||
            mapping.generated.column = column - 1
 | 
			
		||||
            this.map.addMapping(mapping)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  isAnnotation() {
 | 
			
		||||
    if (this.isInline()) {
 | 
			
		||||
      return true
 | 
			
		||||
    }
 | 
			
		||||
    if (typeof this.mapOpts.annotation !== 'undefined') {
 | 
			
		||||
      return this.mapOpts.annotation
 | 
			
		||||
    }
 | 
			
		||||
    if (this.previous().length) {
 | 
			
		||||
      return this.previous().some(i => i.annotation)
 | 
			
		||||
    }
 | 
			
		||||
    return true
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  isInline() {
 | 
			
		||||
    if (typeof this.mapOpts.inline !== 'undefined') {
 | 
			
		||||
      return this.mapOpts.inline
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let annotation = this.mapOpts.annotation
 | 
			
		||||
    if (typeof annotation !== 'undefined' && annotation !== true) {
 | 
			
		||||
      return false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.previous().length) {
 | 
			
		||||
      return this.previous().some(i => i.inline)
 | 
			
		||||
    }
 | 
			
		||||
    return true
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  isMap() {
 | 
			
		||||
    if (typeof this.opts.map !== 'undefined') {
 | 
			
		||||
      return !!this.opts.map
 | 
			
		||||
    }
 | 
			
		||||
    return this.previous().length > 0
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  isSourcesContent() {
 | 
			
		||||
    if (typeof this.mapOpts.sourcesContent !== 'undefined') {
 | 
			
		||||
      return this.mapOpts.sourcesContent
 | 
			
		||||
    }
 | 
			
		||||
    if (this.previous().length) {
 | 
			
		||||
      return this.previous().some(i => i.withContent())
 | 
			
		||||
    }
 | 
			
		||||
    return true
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  outputFile() {
 | 
			
		||||
    if (this.opts.to) {
 | 
			
		||||
      return this.path(this.opts.to)
 | 
			
		||||
    } else if (this.opts.from) {
 | 
			
		||||
      return this.path(this.opts.from)
 | 
			
		||||
    } else {
 | 
			
		||||
      return 'to.css'
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  path(file) {
 | 
			
		||||
    if (this.mapOpts.absolute) return file
 | 
			
		||||
    if (file.charCodeAt(0) === 60 /* `<` */) return file
 | 
			
		||||
    if (/^\w+:\/\//.test(file)) return file
 | 
			
		||||
    let cached = this.memoizedPaths.get(file)
 | 
			
		||||
    if (cached) return cached
 | 
			
		||||
 | 
			
		||||
    let from = this.opts.to ? dirname(this.opts.to) : '.'
 | 
			
		||||
 | 
			
		||||
    if (typeof this.mapOpts.annotation === 'string') {
 | 
			
		||||
      from = dirname(resolve(from, this.mapOpts.annotation))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let path = relative(from, file)
 | 
			
		||||
    this.memoizedPaths.set(file, path)
 | 
			
		||||
 | 
			
		||||
    return path
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  previous() {
 | 
			
		||||
    if (!this.previousMaps) {
 | 
			
		||||
      this.previousMaps = []
 | 
			
		||||
      if (this.root) {
 | 
			
		||||
        this.root.walk(node => {
 | 
			
		||||
          if (node.source && node.source.input.map) {
 | 
			
		||||
            let map = node.source.input.map
 | 
			
		||||
            if (!this.previousMaps.includes(map)) {
 | 
			
		||||
              this.previousMaps.push(map)
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        let input = new Input(this.originalCSS, this.opts)
 | 
			
		||||
        if (input.map) this.previousMaps.push(input.map)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return this.previousMaps
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  setSourcesContent() {
 | 
			
		||||
    let already = {}
 | 
			
		||||
    if (this.root) {
 | 
			
		||||
      this.root.walk(node => {
 | 
			
		||||
        if (node.source) {
 | 
			
		||||
          let from = node.source.input.from
 | 
			
		||||
          if (from && !already[from]) {
 | 
			
		||||
            already[from] = true
 | 
			
		||||
            let fromUrl = this.usesFileUrls
 | 
			
		||||
              ? this.toFileUrl(from)
 | 
			
		||||
              : this.toUrl(this.path(from))
 | 
			
		||||
            this.map.setSourceContent(fromUrl, node.source.input.css)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    } else if (this.css) {
 | 
			
		||||
      let from = this.opts.from
 | 
			
		||||
        ? this.toUrl(this.path(this.opts.from))
 | 
			
		||||
        : '<no source>'
 | 
			
		||||
      this.map.setSourceContent(from, this.css)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  sourcePath(node) {
 | 
			
		||||
    if (this.mapOpts.from) {
 | 
			
		||||
      return this.toUrl(this.mapOpts.from)
 | 
			
		||||
    } else if (this.usesFileUrls) {
 | 
			
		||||
      return this.toFileUrl(node.source.input.from)
 | 
			
		||||
    } else {
 | 
			
		||||
      return this.toUrl(this.path(node.source.input.from))
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toBase64(str) {
 | 
			
		||||
    if (Buffer) {
 | 
			
		||||
      return Buffer.from(str).toString('base64')
 | 
			
		||||
    } else {
 | 
			
		||||
      return window.btoa(unescape(encodeURIComponent(str)))
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toFileUrl(path) {
 | 
			
		||||
    let cached = this.memoizedFileURLs.get(path)
 | 
			
		||||
    if (cached) return cached
 | 
			
		||||
 | 
			
		||||
    if (pathToFileURL) {
 | 
			
		||||
      let fileURL = pathToFileURL(path).toString()
 | 
			
		||||
      this.memoizedFileURLs.set(path, fileURL)
 | 
			
		||||
 | 
			
		||||
      return fileURL
 | 
			
		||||
    } else {
 | 
			
		||||
      throw new Error(
 | 
			
		||||
        '`map.absolute` option is not available in this PostCSS build'
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toUrl(path) {
 | 
			
		||||
    let cached = this.memoizedURLs.get(path)
 | 
			
		||||
    if (cached) return cached
 | 
			
		||||
 | 
			
		||||
    if (sep === '\\') {
 | 
			
		||||
      path = path.replace(/\\/g, '/')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)
 | 
			
		||||
    this.memoizedURLs.set(path, url)
 | 
			
		||||
 | 
			
		||||
    return url
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = MapGenerator
 | 
			
		||||
							
								
								
									
										46
									
								
								node_modules/postcss/lib/no-work-result.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								node_modules/postcss/lib/no-work-result.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
import LazyResult from './lazy-result.js'
 | 
			
		||||
import { SourceMap } from './postcss.js'
 | 
			
		||||
import Processor from './processor.js'
 | 
			
		||||
import Result, { Message, ResultOptions } from './result.js'
 | 
			
		||||
import Root from './root.js'
 | 
			
		||||
import Warning from './warning.js'
 | 
			
		||||
 | 
			
		||||
declare namespace NoWorkResult {
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { NoWorkResult_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A Promise proxy for the result of PostCSS transformations.
 | 
			
		||||
 * This lazy result instance doesn't parse css unless `NoWorkResult#root` or `Result#root`
 | 
			
		||||
 * are accessed. See the example below for details.
 | 
			
		||||
 * A `NoWork` instance is returned by `Processor#process` ONLY when no plugins defined.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const noWorkResult = postcss().process(css) // No plugins are defined.
 | 
			
		||||
 *                                             // CSS is not parsed
 | 
			
		||||
 * let root = noWorkResult.root // now css is parsed because we accessed the root
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class NoWorkResult_ implements LazyResult<Root> {
 | 
			
		||||
  catch: Promise<Result<Root>>['catch']
 | 
			
		||||
  finally: Promise<Result<Root>>['finally']
 | 
			
		||||
  then: Promise<Result<Root>>['then']
 | 
			
		||||
  constructor(processor: Processor, css: string, opts: ResultOptions)
 | 
			
		||||
  async(): Promise<Result<Root>>
 | 
			
		||||
  sync(): Result<Root>
 | 
			
		||||
  toString(): string
 | 
			
		||||
  warnings(): Warning[]
 | 
			
		||||
  get content(): string
 | 
			
		||||
  get css(): string
 | 
			
		||||
  get map(): SourceMap
 | 
			
		||||
  get messages(): Message[]
 | 
			
		||||
  get opts(): ResultOptions
 | 
			
		||||
  get processor(): Processor
 | 
			
		||||
  get root(): Root
 | 
			
		||||
  get [Symbol.toStringTag](): string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class NoWorkResult extends NoWorkResult_ {}
 | 
			
		||||
 | 
			
		||||
export = NoWorkResult
 | 
			
		||||
							
								
								
									
										138
									
								
								node_modules/postcss/lib/no-work-result.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								node_modules/postcss/lib/no-work-result.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,138 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let MapGenerator = require('./map-generator')
 | 
			
		||||
let stringify = require('./stringify')
 | 
			
		||||
let warnOnce = require('./warn-once')
 | 
			
		||||
let parse = require('./parse')
 | 
			
		||||
const Result = require('./result')
 | 
			
		||||
 | 
			
		||||
class NoWorkResult {
 | 
			
		||||
  constructor(processor, css, opts) {
 | 
			
		||||
    css = css.toString()
 | 
			
		||||
    this.stringified = false
 | 
			
		||||
 | 
			
		||||
    this._processor = processor
 | 
			
		||||
    this._css = css
 | 
			
		||||
    this._opts = opts
 | 
			
		||||
    this._map = undefined
 | 
			
		||||
    let root
 | 
			
		||||
 | 
			
		||||
    let str = stringify
 | 
			
		||||
    this.result = new Result(this._processor, root, this._opts)
 | 
			
		||||
    this.result.css = css
 | 
			
		||||
 | 
			
		||||
    let self = this
 | 
			
		||||
    Object.defineProperty(this.result, 'root', {
 | 
			
		||||
      get() {
 | 
			
		||||
        return self.root
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    let map = new MapGenerator(str, root, this._opts, css)
 | 
			
		||||
    if (map.isMap()) {
 | 
			
		||||
      let [generatedCSS, generatedMap] = map.generate()
 | 
			
		||||
      if (generatedCSS) {
 | 
			
		||||
        this.result.css = generatedCSS
 | 
			
		||||
      }
 | 
			
		||||
      if (generatedMap) {
 | 
			
		||||
        this.result.map = generatedMap
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      map.clearAnnotation()
 | 
			
		||||
      this.result.css = map.css
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async() {
 | 
			
		||||
    if (this.error) return Promise.reject(this.error)
 | 
			
		||||
    return Promise.resolve(this.result)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  catch(onRejected) {
 | 
			
		||||
    return this.async().catch(onRejected)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  finally(onFinally) {
 | 
			
		||||
    return this.async().then(onFinally, onFinally)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  sync() {
 | 
			
		||||
    if (this.error) throw this.error
 | 
			
		||||
    return this.result
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  then(onFulfilled, onRejected) {
 | 
			
		||||
    if (process.env.NODE_ENV !== 'production') {
 | 
			
		||||
      if (!('from' in this._opts)) {
 | 
			
		||||
        warnOnce(
 | 
			
		||||
          'Without `from` option PostCSS could generate wrong source map ' +
 | 
			
		||||
            'and will not find Browserslist config. Set it to CSS file path ' +
 | 
			
		||||
            'or to `undefined` to prevent this warning.'
 | 
			
		||||
        )
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return this.async().then(onFulfilled, onRejected)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toString() {
 | 
			
		||||
    return this._css
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  warnings() {
 | 
			
		||||
    return []
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get content() {
 | 
			
		||||
    return this.result.css
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get css() {
 | 
			
		||||
    return this.result.css
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get map() {
 | 
			
		||||
    return this.result.map
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get messages() {
 | 
			
		||||
    return []
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get opts() {
 | 
			
		||||
    return this.result.opts
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get processor() {
 | 
			
		||||
    return this.result.processor
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get root() {
 | 
			
		||||
    if (this._root) {
 | 
			
		||||
      return this._root
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let root
 | 
			
		||||
    let parser = parse
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      root = parser(this._css, this._opts)
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
      this.error = error
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.error) {
 | 
			
		||||
      throw this.error
 | 
			
		||||
    } else {
 | 
			
		||||
      this._root = root
 | 
			
		||||
      return root
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get [Symbol.toStringTag]() {
 | 
			
		||||
    return 'NoWorkResult'
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = NoWorkResult
 | 
			
		||||
NoWorkResult.default = NoWorkResult
 | 
			
		||||
							
								
								
									
										536
									
								
								node_modules/postcss/lib/node.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										536
									
								
								node_modules/postcss/lib/node.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,536 @@
 | 
			
		||||
import AtRule = require('./at-rule.js')
 | 
			
		||||
 | 
			
		||||
import { AtRuleProps } from './at-rule.js'
 | 
			
		||||
import Comment, { CommentProps } from './comment.js'
 | 
			
		||||
import Container from './container.js'
 | 
			
		||||
import CssSyntaxError from './css-syntax-error.js'
 | 
			
		||||
import Declaration, { DeclarationProps } from './declaration.js'
 | 
			
		||||
import Document from './document.js'
 | 
			
		||||
import Input from './input.js'
 | 
			
		||||
import { Stringifier, Syntax } from './postcss.js'
 | 
			
		||||
import Result from './result.js'
 | 
			
		||||
import Root from './root.js'
 | 
			
		||||
import Rule, { RuleProps } from './rule.js'
 | 
			
		||||
import Warning, { WarningOptions } from './warning.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Node {
 | 
			
		||||
  export type ChildNode = AtRule.default | Comment | Declaration | Rule
 | 
			
		||||
 | 
			
		||||
  export type AnyNode =
 | 
			
		||||
    | AtRule.default
 | 
			
		||||
    | Comment
 | 
			
		||||
    | Declaration
 | 
			
		||||
    | Document
 | 
			
		||||
    | Root
 | 
			
		||||
    | Rule
 | 
			
		||||
 | 
			
		||||
  export type ChildProps =
 | 
			
		||||
    | AtRuleProps
 | 
			
		||||
    | CommentProps
 | 
			
		||||
    | DeclarationProps
 | 
			
		||||
    | RuleProps
 | 
			
		||||
 | 
			
		||||
  export interface Position {
 | 
			
		||||
    /**
 | 
			
		||||
     * Source line in file. In contrast to `offset` it starts from 1.
 | 
			
		||||
     */
 | 
			
		||||
    column: number
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Source column in file.
 | 
			
		||||
     */
 | 
			
		||||
    line: number
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Source offset in file. It starts from 0.
 | 
			
		||||
     */
 | 
			
		||||
    offset: number
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface Range {
 | 
			
		||||
    /**
 | 
			
		||||
     * End position, exclusive.
 | 
			
		||||
     */
 | 
			
		||||
    end: Position
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Start position, inclusive.
 | 
			
		||||
     */
 | 
			
		||||
    start: Position
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Source represents an interface for the {@link Node.source} property.
 | 
			
		||||
   */
 | 
			
		||||
  export interface Source {
 | 
			
		||||
    /**
 | 
			
		||||
     * The inclusive ending position for the source
 | 
			
		||||
     * code of a node.
 | 
			
		||||
     */
 | 
			
		||||
    end?: Position
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The source file from where a node has originated.
 | 
			
		||||
     */
 | 
			
		||||
    input: Input
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The inclusive starting position for the source
 | 
			
		||||
     * code of a node.
 | 
			
		||||
     */
 | 
			
		||||
    start?: Position
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Interface represents an interface for an object received
 | 
			
		||||
   * as parameter by Node class constructor.
 | 
			
		||||
   */
 | 
			
		||||
  export interface NodeProps {
 | 
			
		||||
    source?: Source
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface NodeErrorOptions {
 | 
			
		||||
    /**
 | 
			
		||||
     * An ending index inside a node's string that should be highlighted as
 | 
			
		||||
     * source of error.
 | 
			
		||||
     */
 | 
			
		||||
    endIndex?: number
 | 
			
		||||
    /**
 | 
			
		||||
     * An index inside a node's string that should be highlighted as source
 | 
			
		||||
     * of error.
 | 
			
		||||
     */
 | 
			
		||||
    index?: number
 | 
			
		||||
    /**
 | 
			
		||||
     * Plugin name that created this error. PostCSS will set it automatically.
 | 
			
		||||
     */
 | 
			
		||||
    plugin?: string
 | 
			
		||||
    /**
 | 
			
		||||
     * A word inside a node's string, that should be highlighted as source
 | 
			
		||||
     * of error.
 | 
			
		||||
     */
 | 
			
		||||
    word?: string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-shadow
 | 
			
		||||
  class Node extends Node_ {}
 | 
			
		||||
  export { Node as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * It represents an abstract class that handles common
 | 
			
		||||
 * methods for other CSS abstract syntax tree nodes.
 | 
			
		||||
 *
 | 
			
		||||
 * Any node that represents CSS selector or value should
 | 
			
		||||
 * not extend the `Node` class.
 | 
			
		||||
 */
 | 
			
		||||
declare abstract class Node_ {
 | 
			
		||||
  /**
 | 
			
		||||
   * It represents parent of the current node.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.nodes[0].parent === root //=> true
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  parent: Container | Document | undefined
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * It represents unnecessary whitespace and characters present
 | 
			
		||||
   * in the css source code.
 | 
			
		||||
   *
 | 
			
		||||
   * Information to generate byte-to-byte equal node string as it was
 | 
			
		||||
   * in the origin input.
 | 
			
		||||
   *
 | 
			
		||||
   * The properties of the raws object are decided by parser,
 | 
			
		||||
   * the default parser uses the following properties:
 | 
			
		||||
   *
 | 
			
		||||
   * * `before`: the space symbols before the node. It also stores `*`
 | 
			
		||||
   *   and `_` symbols before the declaration (IE hack).
 | 
			
		||||
   * * `after`: the space symbols after the last child of the node
 | 
			
		||||
   *   to the end of the node.
 | 
			
		||||
   * * `between`: the symbols between the property and value
 | 
			
		||||
   *   for declarations, selector and `{` for rules, or last parameter
 | 
			
		||||
   *   and `{` for at-rules.
 | 
			
		||||
   * * `semicolon`: contains true if the last child has
 | 
			
		||||
   *   an (optional) semicolon.
 | 
			
		||||
   * * `afterName`: the space between the at-rule name and its parameters.
 | 
			
		||||
   * * `left`: the space symbols between `/*` and the comment’s text.
 | 
			
		||||
   * * `right`: the space symbols between the comment’s text
 | 
			
		||||
   *   and <code>*/</code>.
 | 
			
		||||
   * - `important`: the content of the important statement,
 | 
			
		||||
   *   if it is not just `!important`.
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS filters out the comments inside selectors, declaration values
 | 
			
		||||
   * and at-rule parameters but it stores the origin content in raws.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('a {\n  color:black\n}')
 | 
			
		||||
   * root.first.first.raws //=> { before: '\n  ', between: ':' }
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  raws: any
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * It represents information related to origin of a node and is required
 | 
			
		||||
   * for generating source maps.
 | 
			
		||||
   *
 | 
			
		||||
   * The nodes that are created manually using the public APIs
 | 
			
		||||
   * provided by PostCSS will have `source` undefined and
 | 
			
		||||
   * will be absent in the source map.
 | 
			
		||||
   *
 | 
			
		||||
   * For this reason, the plugin developer should consider
 | 
			
		||||
   * duplicating nodes as the duplicate node will have the
 | 
			
		||||
   * same source as the original node by default or assign
 | 
			
		||||
   * source to a node created manually.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * decl.source.input.from //=> '/home/ai/source.css'
 | 
			
		||||
   * decl.source.start      //=> { line: 10, column: 2 }
 | 
			
		||||
   * decl.source.end        //=> { line: 10, column: 12 }
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * // Incorrect method, source not specified!
 | 
			
		||||
   * const prefixed = postcss.decl({
 | 
			
		||||
   *   prop: '-moz-' + decl.prop,
 | 
			
		||||
   *   value: decl.value
 | 
			
		||||
   * })
 | 
			
		||||
   *
 | 
			
		||||
   * // Correct method, source is inherited when duplicating.
 | 
			
		||||
   * const prefixed = decl.clone({
 | 
			
		||||
   *   prop: '-moz-' + decl.prop
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * if (atrule.name === 'add-link') {
 | 
			
		||||
   *   const rule = postcss.rule({
 | 
			
		||||
   *     selector: 'a',
 | 
			
		||||
   *     source: atrule.source
 | 
			
		||||
   *   })
 | 
			
		||||
   *
 | 
			
		||||
   *  atrule.parent.insertBefore(atrule, rule)
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  source?: Node.Source
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * It represents type of a node in
 | 
			
		||||
   * an abstract syntax tree.
 | 
			
		||||
   *
 | 
			
		||||
   * A type of node helps in identification of a node
 | 
			
		||||
   * and perform operation based on it's type.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const declaration = new Declaration({
 | 
			
		||||
   *   prop: 'color',
 | 
			
		||||
   *   value: 'black'
 | 
			
		||||
   * })
 | 
			
		||||
   *
 | 
			
		||||
   * declaration.type //=> 'decl'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  type: string
 | 
			
		||||
 | 
			
		||||
  constructor(defaults?: object)
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Insert new node after current node to current node’s parent.
 | 
			
		||||
   *
 | 
			
		||||
   * Just alias for `node.parent.insertAfter(node, add)`.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * decl.after('color: black')
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param newNode New node.
 | 
			
		||||
   * @return This node for methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  after(newNode: Node | Node.ChildProps | Node[] | string): this
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * It assigns properties to an existing node instance.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * decl.assign({ prop: 'word-wrap', value: 'break-word' })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param overrides New properties to override the node.
 | 
			
		||||
   *
 | 
			
		||||
   * @return `this` for method chaining.
 | 
			
		||||
   */
 | 
			
		||||
  assign(overrides: object): this
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Insert new node before current node to current node’s parent.
 | 
			
		||||
   *
 | 
			
		||||
   * Just alias for `node.parent.insertBefore(node, add)`.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * decl.before('content: ""')
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param newNode New node.
 | 
			
		||||
   * @return This node for methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  before(newNode: Node | Node.ChildProps | Node[] | string): this
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Clear the code style properties for the node and its children.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * node.raws.before  //=> ' '
 | 
			
		||||
   * node.cleanRaws()
 | 
			
		||||
   * node.raws.before  //=> undefined
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param keepBetween Keep the `raws.between` symbols.
 | 
			
		||||
   */
 | 
			
		||||
  cleanRaws(keepBetween?: boolean): void
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * It creates clone of an existing node, which includes all the properties
 | 
			
		||||
   * and their values, that includes `raws` but not `type`.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * decl.raws.before    //=> "\n  "
 | 
			
		||||
   * const cloned = decl.clone({ prop: '-moz-' + decl.prop })
 | 
			
		||||
   * cloned.raws.before  //=> "\n  "
 | 
			
		||||
   * cloned.toString()   //=> -moz-transform: scale(0)
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param overrides New properties to override in the clone.
 | 
			
		||||
   *
 | 
			
		||||
   * @return Duplicate of the node instance.
 | 
			
		||||
   */
 | 
			
		||||
  clone(overrides?: object): Node
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Shortcut to clone the node and insert the resulting cloned node
 | 
			
		||||
   * after the current node.
 | 
			
		||||
   *
 | 
			
		||||
   * @param overrides New properties to override in the clone.
 | 
			
		||||
   * @return New node.
 | 
			
		||||
   */
 | 
			
		||||
  cloneAfter(overrides?: object): Node
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Shortcut to clone the node and insert the resulting cloned node
 | 
			
		||||
   * before the current node.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * decl.cloneBefore({ prop: '-moz-' + decl.prop })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param overrides Mew properties to override in the clone.
 | 
			
		||||
   *
 | 
			
		||||
   * @return New node
 | 
			
		||||
   */
 | 
			
		||||
  cloneBefore(overrides?: object): Node
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * It creates an instance of the class `CssSyntaxError` and parameters passed
 | 
			
		||||
   * to this method are assigned to the error instance.
 | 
			
		||||
   *
 | 
			
		||||
   * The error instance will have description for the
 | 
			
		||||
   * error, original position of the node in the
 | 
			
		||||
   * source, showing line and column number.
 | 
			
		||||
   *
 | 
			
		||||
   * If any previous map is present, it would be used
 | 
			
		||||
   * to get original position of the source.
 | 
			
		||||
   *
 | 
			
		||||
   * The Previous Map here is referred to the source map
 | 
			
		||||
   * generated by previous compilation, example: Less,
 | 
			
		||||
   * Stylus and Sass.
 | 
			
		||||
   *
 | 
			
		||||
   * This method returns the error instance instead of
 | 
			
		||||
   * throwing it.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * if (!variables[name]) {
 | 
			
		||||
   *   throw decl.error(`Unknown variable ${name}`, { word: name })
 | 
			
		||||
   *   // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black
 | 
			
		||||
   *   //   color: $black
 | 
			
		||||
   *   // a
 | 
			
		||||
   *   //          ^
 | 
			
		||||
   *   //   background: white
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param message Description for the error instance.
 | 
			
		||||
   * @param options Options for the error instance.
 | 
			
		||||
   *
 | 
			
		||||
   * @return Error instance is returned.
 | 
			
		||||
   */
 | 
			
		||||
  error(message: string, options?: Node.NodeErrorOptions): CssSyntaxError
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns the next child of the node’s parent.
 | 
			
		||||
   * Returns `undefined` if the current node is the last child.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * if (comment.text === 'delete next') {
 | 
			
		||||
   *   const next = comment.next()
 | 
			
		||||
   *   if (next) {
 | 
			
		||||
   *     next.remove()
 | 
			
		||||
   *   }
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @return Next node.
 | 
			
		||||
   */
 | 
			
		||||
  next(): Node.ChildNode | undefined
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Get the position for a word or an index inside the node.
 | 
			
		||||
   *
 | 
			
		||||
   * @param opts Options.
 | 
			
		||||
   * @return Position.
 | 
			
		||||
   */
 | 
			
		||||
  positionBy(opts?: Pick<WarningOptions, 'index' | 'word'>): Node.Position
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Convert string index to line/column.
 | 
			
		||||
   *
 | 
			
		||||
   * @param index The symbol number in the node’s string.
 | 
			
		||||
   * @return Symbol position in file.
 | 
			
		||||
   */
 | 
			
		||||
  positionInside(index: number): Node.Position
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns the previous child of the node’s parent.
 | 
			
		||||
   * Returns `undefined` if the current node is the first child.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const annotation = decl.prev()
 | 
			
		||||
   * if (annotation.type === 'comment') {
 | 
			
		||||
   *   readAnnotation(annotation.text)
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @return Previous node.
 | 
			
		||||
   */
 | 
			
		||||
  prev(): Node.ChildNode | undefined
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Get the range for a word or start and end index inside the node.
 | 
			
		||||
   * The start index is inclusive; the end index is exclusive.
 | 
			
		||||
   *
 | 
			
		||||
   * @param opts Options.
 | 
			
		||||
   * @return Range.
 | 
			
		||||
   */
 | 
			
		||||
  rangeBy(
 | 
			
		||||
    opts?: Pick<WarningOptions, 'endIndex' | 'index' | 'word'>
 | 
			
		||||
  ): Node.Range
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns a `raws` value. If the node is missing
 | 
			
		||||
   * the code style property (because the node was manually built or cloned),
 | 
			
		||||
   * PostCSS will try to autodetect the code style property by looking
 | 
			
		||||
   * at other nodes in the tree.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('a { background: white }')
 | 
			
		||||
   * root.nodes[0].append({ prop: 'color', value: 'black' })
 | 
			
		||||
   * root.nodes[0].nodes[1].raws.before   //=> undefined
 | 
			
		||||
   * root.nodes[0].nodes[1].raw('before') //=> ' '
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param prop        Name of code style property.
 | 
			
		||||
   * @param defaultType Name of default value, it can be missed
 | 
			
		||||
   *                    if the value is the same as prop.
 | 
			
		||||
   * @return {string} Code style value.
 | 
			
		||||
   */
 | 
			
		||||
  raw(prop: string, defaultType?: string): string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * It removes the node from its parent and deletes its parent property.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * if (decl.prop.match(/^-webkit-/)) {
 | 
			
		||||
   *   decl.remove()
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @return `this` for method chaining.
 | 
			
		||||
   */
 | 
			
		||||
  remove(): this
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Inserts node(s) before the current node and removes the current node.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * AtRule: {
 | 
			
		||||
   *   mixin: atrule => {
 | 
			
		||||
   *     atrule.replaceWith(mixinRules[atrule.params])
 | 
			
		||||
   *   }
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param nodes Mode(s) to replace current one.
 | 
			
		||||
   * @return Current node to methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  replaceWith(
 | 
			
		||||
    ...nodes: (
 | 
			
		||||
      | Node.ChildNode
 | 
			
		||||
      | Node.ChildNode[]
 | 
			
		||||
      | Node.ChildProps
 | 
			
		||||
      | Node.ChildProps[]
 | 
			
		||||
    )[]
 | 
			
		||||
  ): this
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Finds the Root instance of the node’s tree.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.nodes[0].nodes[0].root() === root
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @return Root parent.
 | 
			
		||||
   */
 | 
			
		||||
  root(): Root
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Fix circular links on `JSON.stringify()`.
 | 
			
		||||
   *
 | 
			
		||||
   * @return Cleaned object.
 | 
			
		||||
   */
 | 
			
		||||
  toJSON(): object
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * It compiles the node to browser readable cascading style sheets string
 | 
			
		||||
   * depending on it's type.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * new Rule({ selector: 'a' }).toString() //=> "a {}"
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param stringifier A syntax to use in string generation.
 | 
			
		||||
   * @return CSS string of this node.
 | 
			
		||||
   */
 | 
			
		||||
  toString(stringifier?: Stringifier | Syntax): string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * It is a wrapper for {@link Result#warn}, providing convenient
 | 
			
		||||
   * way of generating warnings.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   *   Declaration: {
 | 
			
		||||
   *     bad: (decl, { result }) => {
 | 
			
		||||
   *       decl.warn(result, 'Deprecated property: bad')
 | 
			
		||||
   *     }
 | 
			
		||||
   *   }
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param result The `Result` instance that will receive the warning.
 | 
			
		||||
   * @param message Description for the warning.
 | 
			
		||||
   * @param options Options for the warning.
 | 
			
		||||
   *
 | 
			
		||||
   * @return `Warning` instance is returned
 | 
			
		||||
   */
 | 
			
		||||
  warn(result: Result, message: string, options?: WarningOptions): Warning
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Node extends Node_ { }
 | 
			
		||||
 | 
			
		||||
export = Node
 | 
			
		||||
							
								
								
									
										381
									
								
								node_modules/postcss/lib/node.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										381
									
								
								node_modules/postcss/lib/node.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,381 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let { isClean, my } = require('./symbols')
 | 
			
		||||
let CssSyntaxError = require('./css-syntax-error')
 | 
			
		||||
let Stringifier = require('./stringifier')
 | 
			
		||||
let stringify = require('./stringify')
 | 
			
		||||
 | 
			
		||||
function cloneNode(obj, parent) {
 | 
			
		||||
  let cloned = new obj.constructor()
 | 
			
		||||
 | 
			
		||||
  for (let i in obj) {
 | 
			
		||||
    if (!Object.prototype.hasOwnProperty.call(obj, i)) {
 | 
			
		||||
      /* c8 ignore next 2 */
 | 
			
		||||
      continue
 | 
			
		||||
    }
 | 
			
		||||
    if (i === 'proxyCache') continue
 | 
			
		||||
    let value = obj[i]
 | 
			
		||||
    let type = typeof value
 | 
			
		||||
 | 
			
		||||
    if (i === 'parent' && type === 'object') {
 | 
			
		||||
      if (parent) cloned[i] = parent
 | 
			
		||||
    } else if (i === 'source') {
 | 
			
		||||
      cloned[i] = value
 | 
			
		||||
    } else if (Array.isArray(value)) {
 | 
			
		||||
      cloned[i] = value.map(j => cloneNode(j, cloned))
 | 
			
		||||
    } else {
 | 
			
		||||
      if (type === 'object' && value !== null) value = cloneNode(value)
 | 
			
		||||
      cloned[i] = value
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return cloned
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class Node {
 | 
			
		||||
  constructor(defaults = {}) {
 | 
			
		||||
    this.raws = {}
 | 
			
		||||
    this[isClean] = false
 | 
			
		||||
    this[my] = true
 | 
			
		||||
 | 
			
		||||
    for (let name in defaults) {
 | 
			
		||||
      if (name === 'nodes') {
 | 
			
		||||
        this.nodes = []
 | 
			
		||||
        for (let node of defaults[name]) {
 | 
			
		||||
          if (typeof node.clone === 'function') {
 | 
			
		||||
            this.append(node.clone())
 | 
			
		||||
          } else {
 | 
			
		||||
            this.append(node)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        this[name] = defaults[name]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  addToError(error) {
 | 
			
		||||
    error.postcssNode = this
 | 
			
		||||
    if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) {
 | 
			
		||||
      let s = this.source
 | 
			
		||||
      error.stack = error.stack.replace(
 | 
			
		||||
        /\n\s{4}at /,
 | 
			
		||||
        `$&${s.input.from}:${s.start.line}:${s.start.column}$&`
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
    return error
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  after(add) {
 | 
			
		||||
    this.parent.insertAfter(this, add)
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  assign(overrides = {}) {
 | 
			
		||||
    for (let name in overrides) {
 | 
			
		||||
      this[name] = overrides[name]
 | 
			
		||||
    }
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  before(add) {
 | 
			
		||||
    this.parent.insertBefore(this, add)
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  cleanRaws(keepBetween) {
 | 
			
		||||
    delete this.raws.before
 | 
			
		||||
    delete this.raws.after
 | 
			
		||||
    if (!keepBetween) delete this.raws.between
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  clone(overrides = {}) {
 | 
			
		||||
    let cloned = cloneNode(this)
 | 
			
		||||
    for (let name in overrides) {
 | 
			
		||||
      cloned[name] = overrides[name]
 | 
			
		||||
    }
 | 
			
		||||
    return cloned
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  cloneAfter(overrides = {}) {
 | 
			
		||||
    let cloned = this.clone(overrides)
 | 
			
		||||
    this.parent.insertAfter(this, cloned)
 | 
			
		||||
    return cloned
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  cloneBefore(overrides = {}) {
 | 
			
		||||
    let cloned = this.clone(overrides)
 | 
			
		||||
    this.parent.insertBefore(this, cloned)
 | 
			
		||||
    return cloned
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  error(message, opts = {}) {
 | 
			
		||||
    if (this.source) {
 | 
			
		||||
      let { end, start } = this.rangeBy(opts)
 | 
			
		||||
      return this.source.input.error(
 | 
			
		||||
        message,
 | 
			
		||||
        { column: start.column, line: start.line },
 | 
			
		||||
        { column: end.column, line: end.line },
 | 
			
		||||
        opts
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
    return new CssSyntaxError(message)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getProxyProcessor() {
 | 
			
		||||
    return {
 | 
			
		||||
      get(node, prop) {
 | 
			
		||||
        if (prop === 'proxyOf') {
 | 
			
		||||
          return node
 | 
			
		||||
        } else if (prop === 'root') {
 | 
			
		||||
          return () => node.root().toProxy()
 | 
			
		||||
        } else {
 | 
			
		||||
          return node[prop]
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      set(node, prop, value) {
 | 
			
		||||
        if (node[prop] === value) return true
 | 
			
		||||
        node[prop] = value
 | 
			
		||||
        if (
 | 
			
		||||
          prop === 'prop' ||
 | 
			
		||||
          prop === 'value' ||
 | 
			
		||||
          prop === 'name' ||
 | 
			
		||||
          prop === 'params' ||
 | 
			
		||||
          prop === 'important' ||
 | 
			
		||||
          /* c8 ignore next */
 | 
			
		||||
          prop === 'text'
 | 
			
		||||
        ) {
 | 
			
		||||
          node.markDirty()
 | 
			
		||||
        }
 | 
			
		||||
        return true
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  markDirty() {
 | 
			
		||||
    if (this[isClean]) {
 | 
			
		||||
      this[isClean] = false
 | 
			
		||||
      let next = this
 | 
			
		||||
      while ((next = next.parent)) {
 | 
			
		||||
        next[isClean] = false
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  next() {
 | 
			
		||||
    if (!this.parent) return undefined
 | 
			
		||||
    let index = this.parent.index(this)
 | 
			
		||||
    return this.parent.nodes[index + 1]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  positionBy(opts, stringRepresentation) {
 | 
			
		||||
    let pos = this.source.start
 | 
			
		||||
    if (opts.index) {
 | 
			
		||||
      pos = this.positionInside(opts.index, stringRepresentation)
 | 
			
		||||
    } else if (opts.word) {
 | 
			
		||||
      stringRepresentation = this.toString()
 | 
			
		||||
      let index = stringRepresentation.indexOf(opts.word)
 | 
			
		||||
      if (index !== -1) pos = this.positionInside(index, stringRepresentation)
 | 
			
		||||
    }
 | 
			
		||||
    return pos
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  positionInside(index, stringRepresentation) {
 | 
			
		||||
    let string = stringRepresentation || this.toString()
 | 
			
		||||
    let column = this.source.start.column
 | 
			
		||||
    let line = this.source.start.line
 | 
			
		||||
 | 
			
		||||
    for (let i = 0; i < index; i++) {
 | 
			
		||||
      if (string[i] === '\n') {
 | 
			
		||||
        column = 1
 | 
			
		||||
        line += 1
 | 
			
		||||
      } else {
 | 
			
		||||
        column += 1
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return { column, line }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  prev() {
 | 
			
		||||
    if (!this.parent) return undefined
 | 
			
		||||
    let index = this.parent.index(this)
 | 
			
		||||
    return this.parent.nodes[index - 1]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rangeBy(opts) {
 | 
			
		||||
    let start = {
 | 
			
		||||
      column: this.source.start.column,
 | 
			
		||||
      line: this.source.start.line
 | 
			
		||||
    }
 | 
			
		||||
    let end = this.source.end
 | 
			
		||||
      ? {
 | 
			
		||||
        column: this.source.end.column + 1,
 | 
			
		||||
        line: this.source.end.line
 | 
			
		||||
      }
 | 
			
		||||
      : {
 | 
			
		||||
        column: start.column + 1,
 | 
			
		||||
        line: start.line
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    if (opts.word) {
 | 
			
		||||
      let stringRepresentation = this.toString()
 | 
			
		||||
      let index = stringRepresentation.indexOf(opts.word)
 | 
			
		||||
      if (index !== -1) {
 | 
			
		||||
        start = this.positionInside(index, stringRepresentation)
 | 
			
		||||
        end = this.positionInside(index + opts.word.length, stringRepresentation)
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      if (opts.start) {
 | 
			
		||||
        start = {
 | 
			
		||||
          column: opts.start.column,
 | 
			
		||||
          line: opts.start.line
 | 
			
		||||
        }
 | 
			
		||||
      } else if (opts.index) {
 | 
			
		||||
        start = this.positionInside(opts.index)
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (opts.end) {
 | 
			
		||||
        end = {
 | 
			
		||||
          column: opts.end.column,
 | 
			
		||||
          line: opts.end.line
 | 
			
		||||
        }
 | 
			
		||||
      } else if (opts.endIndex) {
 | 
			
		||||
        end = this.positionInside(opts.endIndex)
 | 
			
		||||
      } else if (opts.index) {
 | 
			
		||||
        end = this.positionInside(opts.index + 1)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (
 | 
			
		||||
      end.line < start.line ||
 | 
			
		||||
      (end.line === start.line && end.column <= start.column)
 | 
			
		||||
    ) {
 | 
			
		||||
      end = { column: start.column + 1, line: start.line }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return { end, start }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  raw(prop, defaultType) {
 | 
			
		||||
    let str = new Stringifier()
 | 
			
		||||
    return str.raw(this, prop, defaultType)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  remove() {
 | 
			
		||||
    if (this.parent) {
 | 
			
		||||
      this.parent.removeChild(this)
 | 
			
		||||
    }
 | 
			
		||||
    this.parent = undefined
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  replaceWith(...nodes) {
 | 
			
		||||
    if (this.parent) {
 | 
			
		||||
      let bookmark = this
 | 
			
		||||
      let foundSelf = false
 | 
			
		||||
      for (let node of nodes) {
 | 
			
		||||
        if (node === this) {
 | 
			
		||||
          foundSelf = true
 | 
			
		||||
        } else if (foundSelf) {
 | 
			
		||||
          this.parent.insertAfter(bookmark, node)
 | 
			
		||||
          bookmark = node
 | 
			
		||||
        } else {
 | 
			
		||||
          this.parent.insertBefore(bookmark, node)
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!foundSelf) {
 | 
			
		||||
        this.remove()
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  root() {
 | 
			
		||||
    let result = this
 | 
			
		||||
    while (result.parent && result.parent.type !== 'document') {
 | 
			
		||||
      result = result.parent
 | 
			
		||||
    }
 | 
			
		||||
    return result
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toJSON(_, inputs) {
 | 
			
		||||
    let fixed = {}
 | 
			
		||||
    let emitInputs = inputs == null
 | 
			
		||||
    inputs = inputs || new Map()
 | 
			
		||||
    let inputsNextIndex = 0
 | 
			
		||||
 | 
			
		||||
    for (let name in this) {
 | 
			
		||||
      if (!Object.prototype.hasOwnProperty.call(this, name)) {
 | 
			
		||||
        /* c8 ignore next 2 */
 | 
			
		||||
        continue
 | 
			
		||||
      }
 | 
			
		||||
      if (name === 'parent' || name === 'proxyCache') continue
 | 
			
		||||
      let value = this[name]
 | 
			
		||||
 | 
			
		||||
      if (Array.isArray(value)) {
 | 
			
		||||
        fixed[name] = value.map(i => {
 | 
			
		||||
          if (typeof i === 'object' && i.toJSON) {
 | 
			
		||||
            return i.toJSON(null, inputs)
 | 
			
		||||
          } else {
 | 
			
		||||
            return i
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      } else if (typeof value === 'object' && value.toJSON) {
 | 
			
		||||
        fixed[name] = value.toJSON(null, inputs)
 | 
			
		||||
      } else if (name === 'source') {
 | 
			
		||||
        let inputId = inputs.get(value.input)
 | 
			
		||||
        if (inputId == null) {
 | 
			
		||||
          inputId = inputsNextIndex
 | 
			
		||||
          inputs.set(value.input, inputsNextIndex)
 | 
			
		||||
          inputsNextIndex++
 | 
			
		||||
        }
 | 
			
		||||
        fixed[name] = {
 | 
			
		||||
          end: value.end,
 | 
			
		||||
          inputId,
 | 
			
		||||
          start: value.start
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        fixed[name] = value
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (emitInputs) {
 | 
			
		||||
      fixed.inputs = [...inputs.keys()].map(input => input.toJSON())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return fixed
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toProxy() {
 | 
			
		||||
    if (!this.proxyCache) {
 | 
			
		||||
      this.proxyCache = new Proxy(this, this.getProxyProcessor())
 | 
			
		||||
    }
 | 
			
		||||
    return this.proxyCache
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toString(stringifier = stringify) {
 | 
			
		||||
    if (stringifier.stringify) stringifier = stringifier.stringify
 | 
			
		||||
    let result = ''
 | 
			
		||||
    stringifier(this, i => {
 | 
			
		||||
      result += i
 | 
			
		||||
    })
 | 
			
		||||
    return result
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  warn(result, text, opts) {
 | 
			
		||||
    let data = { node: this }
 | 
			
		||||
    for (let i in opts) data[i] = opts[i]
 | 
			
		||||
    return result.warn(text, data)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get proxyOf() {
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Node
 | 
			
		||||
Node.default = Node
 | 
			
		||||
							
								
								
									
										9
									
								
								node_modules/postcss/lib/parse.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								node_modules/postcss/lib/parse.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
import { Parser } from './postcss.js'
 | 
			
		||||
 | 
			
		||||
interface Parse extends Parser {
 | 
			
		||||
  default: Parse
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare const parse: Parse
 | 
			
		||||
 | 
			
		||||
export = parse
 | 
			
		||||
							
								
								
									
										42
									
								
								node_modules/postcss/lib/parse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								node_modules/postcss/lib/parse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Container = require('./container')
 | 
			
		||||
let Parser = require('./parser')
 | 
			
		||||
let Input = require('./input')
 | 
			
		||||
 | 
			
		||||
function parse(css, opts) {
 | 
			
		||||
  let input = new Input(css, opts)
 | 
			
		||||
  let parser = new Parser(input)
 | 
			
		||||
  try {
 | 
			
		||||
    parser.parse()
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    if (process.env.NODE_ENV !== 'production') {
 | 
			
		||||
      if (e.name === 'CssSyntaxError' && opts && opts.from) {
 | 
			
		||||
        if (/\.scss$/i.test(opts.from)) {
 | 
			
		||||
          e.message +=
 | 
			
		||||
            '\nYou tried to parse SCSS with ' +
 | 
			
		||||
            'the standard CSS parser; ' +
 | 
			
		||||
            'try again with the postcss-scss parser'
 | 
			
		||||
        } else if (/\.sass/i.test(opts.from)) {
 | 
			
		||||
          e.message +=
 | 
			
		||||
            '\nYou tried to parse Sass with ' +
 | 
			
		||||
            'the standard CSS parser; ' +
 | 
			
		||||
            'try again with the postcss-sass parser'
 | 
			
		||||
        } else if (/\.less$/i.test(opts.from)) {
 | 
			
		||||
          e.message +=
 | 
			
		||||
            '\nYou tried to parse Less with ' +
 | 
			
		||||
            'the standard CSS parser; ' +
 | 
			
		||||
            'try again with the postcss-less parser'
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    throw e
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return parser.root
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = parse
 | 
			
		||||
parse.default = parse
 | 
			
		||||
 | 
			
		||||
Container.registerParse(parse)
 | 
			
		||||
							
								
								
									
										609
									
								
								node_modules/postcss/lib/parser.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										609
									
								
								node_modules/postcss/lib/parser.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,609 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Declaration = require('./declaration')
 | 
			
		||||
let tokenizer = require('./tokenize')
 | 
			
		||||
let Comment = require('./comment')
 | 
			
		||||
let AtRule = require('./at-rule')
 | 
			
		||||
let Root = require('./root')
 | 
			
		||||
let Rule = require('./rule')
 | 
			
		||||
 | 
			
		||||
const SAFE_COMMENT_NEIGHBOR = {
 | 
			
		||||
  empty: true,
 | 
			
		||||
  space: true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function findLastWithPosition(tokens) {
 | 
			
		||||
  for (let i = tokens.length - 1; i >= 0; i--) {
 | 
			
		||||
    let token = tokens[i]
 | 
			
		||||
    let pos = token[3] || token[2]
 | 
			
		||||
    if (pos) return pos
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class Parser {
 | 
			
		||||
  constructor(input) {
 | 
			
		||||
    this.input = input
 | 
			
		||||
 | 
			
		||||
    this.root = new Root()
 | 
			
		||||
    this.current = this.root
 | 
			
		||||
    this.spaces = ''
 | 
			
		||||
    this.semicolon = false
 | 
			
		||||
 | 
			
		||||
    this.createTokenizer()
 | 
			
		||||
    this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  atrule(token) {
 | 
			
		||||
    let node = new AtRule()
 | 
			
		||||
    node.name = token[1].slice(1)
 | 
			
		||||
    if (node.name === '') {
 | 
			
		||||
      this.unnamedAtrule(node, token)
 | 
			
		||||
    }
 | 
			
		||||
    this.init(node, token[2])
 | 
			
		||||
 | 
			
		||||
    let type
 | 
			
		||||
    let prev
 | 
			
		||||
    let shift
 | 
			
		||||
    let last = false
 | 
			
		||||
    let open = false
 | 
			
		||||
    let params = []
 | 
			
		||||
    let brackets = []
 | 
			
		||||
 | 
			
		||||
    while (!this.tokenizer.endOfFile()) {
 | 
			
		||||
      token = this.tokenizer.nextToken()
 | 
			
		||||
      type = token[0]
 | 
			
		||||
 | 
			
		||||
      if (type === '(' || type === '[') {
 | 
			
		||||
        brackets.push(type === '(' ? ')' : ']')
 | 
			
		||||
      } else if (type === '{' && brackets.length > 0) {
 | 
			
		||||
        brackets.push('}')
 | 
			
		||||
      } else if (type === brackets[brackets.length - 1]) {
 | 
			
		||||
        brackets.pop()
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (brackets.length === 0) {
 | 
			
		||||
        if (type === ';') {
 | 
			
		||||
          node.source.end = this.getPosition(token[2])
 | 
			
		||||
          node.source.end.offset++
 | 
			
		||||
          this.semicolon = true
 | 
			
		||||
          break
 | 
			
		||||
        } else if (type === '{') {
 | 
			
		||||
          open = true
 | 
			
		||||
          break
 | 
			
		||||
        } else if (type === '}') {
 | 
			
		||||
          if (params.length > 0) {
 | 
			
		||||
            shift = params.length - 1
 | 
			
		||||
            prev = params[shift]
 | 
			
		||||
            while (prev && prev[0] === 'space') {
 | 
			
		||||
              prev = params[--shift]
 | 
			
		||||
            }
 | 
			
		||||
            if (prev) {
 | 
			
		||||
              node.source.end = this.getPosition(prev[3] || prev[2])
 | 
			
		||||
              node.source.end.offset++
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          this.end(token)
 | 
			
		||||
          break
 | 
			
		||||
        } else {
 | 
			
		||||
          params.push(token)
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        params.push(token)
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (this.tokenizer.endOfFile()) {
 | 
			
		||||
        last = true
 | 
			
		||||
        break
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    node.raws.between = this.spacesAndCommentsFromEnd(params)
 | 
			
		||||
    if (params.length) {
 | 
			
		||||
      node.raws.afterName = this.spacesAndCommentsFromStart(params)
 | 
			
		||||
      this.raw(node, 'params', params)
 | 
			
		||||
      if (last) {
 | 
			
		||||
        token = params[params.length - 1]
 | 
			
		||||
        node.source.end = this.getPosition(token[3] || token[2])
 | 
			
		||||
        node.source.end.offset++
 | 
			
		||||
        this.spaces = node.raws.between
 | 
			
		||||
        node.raws.between = ''
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      node.raws.afterName = ''
 | 
			
		||||
      node.params = ''
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (open) {
 | 
			
		||||
      node.nodes = []
 | 
			
		||||
      this.current = node
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  checkMissedSemicolon(tokens) {
 | 
			
		||||
    let colon = this.colon(tokens)
 | 
			
		||||
    if (colon === false) return
 | 
			
		||||
 | 
			
		||||
    let founded = 0
 | 
			
		||||
    let token
 | 
			
		||||
    for (let j = colon - 1; j >= 0; j--) {
 | 
			
		||||
      token = tokens[j]
 | 
			
		||||
      if (token[0] !== 'space') {
 | 
			
		||||
        founded += 1
 | 
			
		||||
        if (founded === 2) break
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    // If the token is a word, e.g. `!important`, `red` or any other valid property's value.
 | 
			
		||||
    // Then we need to return the colon after that word token. [3] is the "end" colon of that word.
 | 
			
		||||
    // And because we need it after that one we do +1 to get the next one.
 | 
			
		||||
    throw this.input.error(
 | 
			
		||||
      'Missed semicolon',
 | 
			
		||||
      token[0] === 'word' ? token[3] + 1 : token[2]
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  colon(tokens) {
 | 
			
		||||
    let brackets = 0
 | 
			
		||||
    let token, type, prev
 | 
			
		||||
    for (let [i, element] of tokens.entries()) {
 | 
			
		||||
      token = element
 | 
			
		||||
      type = token[0]
 | 
			
		||||
 | 
			
		||||
      if (type === '(') {
 | 
			
		||||
        brackets += 1
 | 
			
		||||
      }
 | 
			
		||||
      if (type === ')') {
 | 
			
		||||
        brackets -= 1
 | 
			
		||||
      }
 | 
			
		||||
      if (brackets === 0 && type === ':') {
 | 
			
		||||
        if (!prev) {
 | 
			
		||||
          this.doubleColon(token)
 | 
			
		||||
        } else if (prev[0] === 'word' && prev[1] === 'progid') {
 | 
			
		||||
          continue
 | 
			
		||||
        } else {
 | 
			
		||||
          return i
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      prev = token
 | 
			
		||||
    }
 | 
			
		||||
    return false
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  comment(token) {
 | 
			
		||||
    let node = new Comment()
 | 
			
		||||
    this.init(node, token[2])
 | 
			
		||||
    node.source.end = this.getPosition(token[3] || token[2])
 | 
			
		||||
    node.source.end.offset++
 | 
			
		||||
 | 
			
		||||
    let text = token[1].slice(2, -2)
 | 
			
		||||
    if (/^\s*$/.test(text)) {
 | 
			
		||||
      node.text = ''
 | 
			
		||||
      node.raws.left = text
 | 
			
		||||
      node.raws.right = ''
 | 
			
		||||
    } else {
 | 
			
		||||
      let match = text.match(/^(\s*)([^]*\S)(\s*)$/)
 | 
			
		||||
      node.text = match[2]
 | 
			
		||||
      node.raws.left = match[1]
 | 
			
		||||
      node.raws.right = match[3]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  createTokenizer() {
 | 
			
		||||
    this.tokenizer = tokenizer(this.input)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  decl(tokens, customProperty) {
 | 
			
		||||
    let node = new Declaration()
 | 
			
		||||
    this.init(node, tokens[0][2])
 | 
			
		||||
 | 
			
		||||
    let last = tokens[tokens.length - 1]
 | 
			
		||||
    if (last[0] === ';') {
 | 
			
		||||
      this.semicolon = true
 | 
			
		||||
      tokens.pop()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    node.source.end = this.getPosition(
 | 
			
		||||
      last[3] || last[2] || findLastWithPosition(tokens)
 | 
			
		||||
    )
 | 
			
		||||
    node.source.end.offset++
 | 
			
		||||
 | 
			
		||||
    while (tokens[0][0] !== 'word') {
 | 
			
		||||
      if (tokens.length === 1) this.unknownWord(tokens)
 | 
			
		||||
      node.raws.before += tokens.shift()[1]
 | 
			
		||||
    }
 | 
			
		||||
    node.source.start = this.getPosition(tokens[0][2])
 | 
			
		||||
 | 
			
		||||
    node.prop = ''
 | 
			
		||||
    while (tokens.length) {
 | 
			
		||||
      let type = tokens[0][0]
 | 
			
		||||
      if (type === ':' || type === 'space' || type === 'comment') {
 | 
			
		||||
        break
 | 
			
		||||
      }
 | 
			
		||||
      node.prop += tokens.shift()[1]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    node.raws.between = ''
 | 
			
		||||
 | 
			
		||||
    let token
 | 
			
		||||
    while (tokens.length) {
 | 
			
		||||
      token = tokens.shift()
 | 
			
		||||
 | 
			
		||||
      if (token[0] === ':') {
 | 
			
		||||
        node.raws.between += token[1]
 | 
			
		||||
        break
 | 
			
		||||
      } else {
 | 
			
		||||
        if (token[0] === 'word' && /\w/.test(token[1])) {
 | 
			
		||||
          this.unknownWord([token])
 | 
			
		||||
        }
 | 
			
		||||
        node.raws.between += token[1]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (node.prop[0] === '_' || node.prop[0] === '*') {
 | 
			
		||||
      node.raws.before += node.prop[0]
 | 
			
		||||
      node.prop = node.prop.slice(1)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let firstSpaces = []
 | 
			
		||||
    let next
 | 
			
		||||
    while (tokens.length) {
 | 
			
		||||
      next = tokens[0][0]
 | 
			
		||||
      if (next !== 'space' && next !== 'comment') break
 | 
			
		||||
      firstSpaces.push(tokens.shift())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.precheckMissedSemicolon(tokens)
 | 
			
		||||
 | 
			
		||||
    for (let i = tokens.length - 1; i >= 0; i--) {
 | 
			
		||||
      token = tokens[i]
 | 
			
		||||
      if (token[1].toLowerCase() === '!important') {
 | 
			
		||||
        node.important = true
 | 
			
		||||
        let string = this.stringFrom(tokens, i)
 | 
			
		||||
        string = this.spacesFromEnd(tokens) + string
 | 
			
		||||
        if (string !== ' !important') node.raws.important = string
 | 
			
		||||
        break
 | 
			
		||||
      } else if (token[1].toLowerCase() === 'important') {
 | 
			
		||||
        let cache = tokens.slice(0)
 | 
			
		||||
        let str = ''
 | 
			
		||||
        for (let j = i; j > 0; j--) {
 | 
			
		||||
          let type = cache[j][0]
 | 
			
		||||
          if (str.trim().indexOf('!') === 0 && type !== 'space') {
 | 
			
		||||
            break
 | 
			
		||||
          }
 | 
			
		||||
          str = cache.pop()[1] + str
 | 
			
		||||
        }
 | 
			
		||||
        if (str.trim().indexOf('!') === 0) {
 | 
			
		||||
          node.important = true
 | 
			
		||||
          node.raws.important = str
 | 
			
		||||
          tokens = cache
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (token[0] !== 'space' && token[0] !== 'comment') {
 | 
			
		||||
        break
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')
 | 
			
		||||
 | 
			
		||||
    if (hasWord) {
 | 
			
		||||
      node.raws.between += firstSpaces.map(i => i[1]).join('')
 | 
			
		||||
      firstSpaces = []
 | 
			
		||||
    }
 | 
			
		||||
    this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)
 | 
			
		||||
 | 
			
		||||
    if (node.value.includes(':') && !customProperty) {
 | 
			
		||||
      this.checkMissedSemicolon(tokens)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  doubleColon(token) {
 | 
			
		||||
    throw this.input.error(
 | 
			
		||||
      'Double colon',
 | 
			
		||||
      { offset: token[2] },
 | 
			
		||||
      { offset: token[2] + token[1].length }
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  emptyRule(token) {
 | 
			
		||||
    let node = new Rule()
 | 
			
		||||
    this.init(node, token[2])
 | 
			
		||||
    node.selector = ''
 | 
			
		||||
    node.raws.between = ''
 | 
			
		||||
    this.current = node
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  end(token) {
 | 
			
		||||
    if (this.current.nodes && this.current.nodes.length) {
 | 
			
		||||
      this.current.raws.semicolon = this.semicolon
 | 
			
		||||
    }
 | 
			
		||||
    this.semicolon = false
 | 
			
		||||
 | 
			
		||||
    this.current.raws.after = (this.current.raws.after || '') + this.spaces
 | 
			
		||||
    this.spaces = ''
 | 
			
		||||
 | 
			
		||||
    if (this.current.parent) {
 | 
			
		||||
      this.current.source.end = this.getPosition(token[2])
 | 
			
		||||
      this.current.source.end.offset++
 | 
			
		||||
      this.current = this.current.parent
 | 
			
		||||
    } else {
 | 
			
		||||
      this.unexpectedClose(token)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  endFile() {
 | 
			
		||||
    if (this.current.parent) this.unclosedBlock()
 | 
			
		||||
    if (this.current.nodes && this.current.nodes.length) {
 | 
			
		||||
      this.current.raws.semicolon = this.semicolon
 | 
			
		||||
    }
 | 
			
		||||
    this.current.raws.after = (this.current.raws.after || '') + this.spaces
 | 
			
		||||
    this.root.source.end = this.getPosition(this.tokenizer.position())
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  freeSemicolon(token) {
 | 
			
		||||
    this.spaces += token[1]
 | 
			
		||||
    if (this.current.nodes) {
 | 
			
		||||
      let prev = this.current.nodes[this.current.nodes.length - 1]
 | 
			
		||||
      if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {
 | 
			
		||||
        prev.raws.ownSemicolon = this.spaces
 | 
			
		||||
        this.spaces = ''
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Helpers
 | 
			
		||||
 | 
			
		||||
  getPosition(offset) {
 | 
			
		||||
    let pos = this.input.fromOffset(offset)
 | 
			
		||||
    return {
 | 
			
		||||
      column: pos.col,
 | 
			
		||||
      line: pos.line,
 | 
			
		||||
      offset
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  init(node, offset) {
 | 
			
		||||
    this.current.push(node)
 | 
			
		||||
    node.source = {
 | 
			
		||||
      input: this.input,
 | 
			
		||||
      start: this.getPosition(offset)
 | 
			
		||||
    }
 | 
			
		||||
    node.raws.before = this.spaces
 | 
			
		||||
    this.spaces = ''
 | 
			
		||||
    if (node.type !== 'comment') this.semicolon = false
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  other(start) {
 | 
			
		||||
    let end = false
 | 
			
		||||
    let type = null
 | 
			
		||||
    let colon = false
 | 
			
		||||
    let bracket = null
 | 
			
		||||
    let brackets = []
 | 
			
		||||
    let customProperty = start[1].startsWith('--')
 | 
			
		||||
 | 
			
		||||
    let tokens = []
 | 
			
		||||
    let token = start
 | 
			
		||||
    while (token) {
 | 
			
		||||
      type = token[0]
 | 
			
		||||
      tokens.push(token)
 | 
			
		||||
 | 
			
		||||
      if (type === '(' || type === '[') {
 | 
			
		||||
        if (!bracket) bracket = token
 | 
			
		||||
        brackets.push(type === '(' ? ')' : ']')
 | 
			
		||||
      } else if (customProperty && colon && type === '{') {
 | 
			
		||||
        if (!bracket) bracket = token
 | 
			
		||||
        brackets.push('}')
 | 
			
		||||
      } else if (brackets.length === 0) {
 | 
			
		||||
        if (type === ';') {
 | 
			
		||||
          if (colon) {
 | 
			
		||||
            this.decl(tokens, customProperty)
 | 
			
		||||
            return
 | 
			
		||||
          } else {
 | 
			
		||||
            break
 | 
			
		||||
          }
 | 
			
		||||
        } else if (type === '{') {
 | 
			
		||||
          this.rule(tokens)
 | 
			
		||||
          return
 | 
			
		||||
        } else if (type === '}') {
 | 
			
		||||
          this.tokenizer.back(tokens.pop())
 | 
			
		||||
          end = true
 | 
			
		||||
          break
 | 
			
		||||
        } else if (type === ':') {
 | 
			
		||||
          colon = true
 | 
			
		||||
        }
 | 
			
		||||
      } else if (type === brackets[brackets.length - 1]) {
 | 
			
		||||
        brackets.pop()
 | 
			
		||||
        if (brackets.length === 0) bracket = null
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      token = this.tokenizer.nextToken()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.tokenizer.endOfFile()) end = true
 | 
			
		||||
    if (brackets.length > 0) this.unclosedBracket(bracket)
 | 
			
		||||
 | 
			
		||||
    if (end && colon) {
 | 
			
		||||
      if (!customProperty) {
 | 
			
		||||
        while (tokens.length) {
 | 
			
		||||
          token = tokens[tokens.length - 1][0]
 | 
			
		||||
          if (token !== 'space' && token !== 'comment') break
 | 
			
		||||
          this.tokenizer.back(tokens.pop())
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      this.decl(tokens, customProperty)
 | 
			
		||||
    } else {
 | 
			
		||||
      this.unknownWord(tokens)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  parse() {
 | 
			
		||||
    let token
 | 
			
		||||
    while (!this.tokenizer.endOfFile()) {
 | 
			
		||||
      token = this.tokenizer.nextToken()
 | 
			
		||||
 | 
			
		||||
      switch (token[0]) {
 | 
			
		||||
        case 'space':
 | 
			
		||||
          this.spaces += token[1]
 | 
			
		||||
          break
 | 
			
		||||
 | 
			
		||||
        case ';':
 | 
			
		||||
          this.freeSemicolon(token)
 | 
			
		||||
          break
 | 
			
		||||
 | 
			
		||||
        case '}':
 | 
			
		||||
          this.end(token)
 | 
			
		||||
          break
 | 
			
		||||
 | 
			
		||||
        case 'comment':
 | 
			
		||||
          this.comment(token)
 | 
			
		||||
          break
 | 
			
		||||
 | 
			
		||||
        case 'at-word':
 | 
			
		||||
          this.atrule(token)
 | 
			
		||||
          break
 | 
			
		||||
 | 
			
		||||
        case '{':
 | 
			
		||||
          this.emptyRule(token)
 | 
			
		||||
          break
 | 
			
		||||
 | 
			
		||||
        default:
 | 
			
		||||
          this.other(token)
 | 
			
		||||
          break
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    this.endFile()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  precheckMissedSemicolon(/* tokens */) {
 | 
			
		||||
    // Hook for Safe Parser
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  raw(node, prop, tokens, customProperty) {
 | 
			
		||||
    let token, type
 | 
			
		||||
    let length = tokens.length
 | 
			
		||||
    let value = ''
 | 
			
		||||
    let clean = true
 | 
			
		||||
    let next, prev
 | 
			
		||||
 | 
			
		||||
    for (let i = 0; i < length; i += 1) {
 | 
			
		||||
      token = tokens[i]
 | 
			
		||||
      type = token[0]
 | 
			
		||||
      if (type === 'space' && i === length - 1 && !customProperty) {
 | 
			
		||||
        clean = false
 | 
			
		||||
      } else if (type === 'comment') {
 | 
			
		||||
        prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'
 | 
			
		||||
        next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'
 | 
			
		||||
        if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {
 | 
			
		||||
          if (value.slice(-1) === ',') {
 | 
			
		||||
            clean = false
 | 
			
		||||
          } else {
 | 
			
		||||
            value += token[1]
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          clean = false
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        value += token[1]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (!clean) {
 | 
			
		||||
      let raw = tokens.reduce((all, i) => all + i[1], '')
 | 
			
		||||
      node.raws[prop] = { raw, value }
 | 
			
		||||
    }
 | 
			
		||||
    node[prop] = value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rule(tokens) {
 | 
			
		||||
    tokens.pop()
 | 
			
		||||
 | 
			
		||||
    let node = new Rule()
 | 
			
		||||
    this.init(node, tokens[0][2])
 | 
			
		||||
 | 
			
		||||
    node.raws.between = this.spacesAndCommentsFromEnd(tokens)
 | 
			
		||||
    this.raw(node, 'selector', tokens)
 | 
			
		||||
    this.current = node
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  spacesAndCommentsFromEnd(tokens) {
 | 
			
		||||
    let lastTokenType
 | 
			
		||||
    let spaces = ''
 | 
			
		||||
    while (tokens.length) {
 | 
			
		||||
      lastTokenType = tokens[tokens.length - 1][0]
 | 
			
		||||
      if (lastTokenType !== 'space' && lastTokenType !== 'comment') break
 | 
			
		||||
      spaces = tokens.pop()[1] + spaces
 | 
			
		||||
    }
 | 
			
		||||
    return spaces
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Errors
 | 
			
		||||
 | 
			
		||||
  spacesAndCommentsFromStart(tokens) {
 | 
			
		||||
    let next
 | 
			
		||||
    let spaces = ''
 | 
			
		||||
    while (tokens.length) {
 | 
			
		||||
      next = tokens[0][0]
 | 
			
		||||
      if (next !== 'space' && next !== 'comment') break
 | 
			
		||||
      spaces += tokens.shift()[1]
 | 
			
		||||
    }
 | 
			
		||||
    return spaces
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  spacesFromEnd(tokens) {
 | 
			
		||||
    let lastTokenType
 | 
			
		||||
    let spaces = ''
 | 
			
		||||
    while (tokens.length) {
 | 
			
		||||
      lastTokenType = tokens[tokens.length - 1][0]
 | 
			
		||||
      if (lastTokenType !== 'space') break
 | 
			
		||||
      spaces = tokens.pop()[1] + spaces
 | 
			
		||||
    }
 | 
			
		||||
    return spaces
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  stringFrom(tokens, from) {
 | 
			
		||||
    let result = ''
 | 
			
		||||
    for (let i = from; i < tokens.length; i++) {
 | 
			
		||||
      result += tokens[i][1]
 | 
			
		||||
    }
 | 
			
		||||
    tokens.splice(from, tokens.length - from)
 | 
			
		||||
    return result
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  unclosedBlock() {
 | 
			
		||||
    let pos = this.current.source.start
 | 
			
		||||
    throw this.input.error('Unclosed block', pos.line, pos.column)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  unclosedBracket(bracket) {
 | 
			
		||||
    throw this.input.error(
 | 
			
		||||
      'Unclosed bracket',
 | 
			
		||||
      { offset: bracket[2] },
 | 
			
		||||
      { offset: bracket[2] + 1 }
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  unexpectedClose(token) {
 | 
			
		||||
    throw this.input.error(
 | 
			
		||||
      'Unexpected }',
 | 
			
		||||
      { offset: token[2] },
 | 
			
		||||
      { offset: token[2] + 1 }
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  unknownWord(tokens) {
 | 
			
		||||
    throw this.input.error(
 | 
			
		||||
      'Unknown word',
 | 
			
		||||
      { offset: tokens[0][2] },
 | 
			
		||||
      { offset: tokens[0][2] + tokens[0][1].length }
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  unnamedAtrule(node, token) {
 | 
			
		||||
    throw this.input.error(
 | 
			
		||||
      'At-rule without name',
 | 
			
		||||
      { offset: token[2] },
 | 
			
		||||
      { offset: token[2] + token[1].length }
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Parser
 | 
			
		||||
							
								
								
									
										72
									
								
								node_modules/postcss/lib/postcss.d.mts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								node_modules/postcss/lib/postcss.d.mts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,72 @@
 | 
			
		||||
export {
 | 
			
		||||
  // postcss function / namespace
 | 
			
		||||
  default,
 | 
			
		||||
 | 
			
		||||
  // Value exports from postcss.mjs
 | 
			
		||||
  stringify,
 | 
			
		||||
  fromJSON,
 | 
			
		||||
  // @ts-expect-error This value exists, but it’s untyped.
 | 
			
		||||
  plugin,
 | 
			
		||||
  parse,
 | 
			
		||||
  list,
 | 
			
		||||
 | 
			
		||||
  document,
 | 
			
		||||
  comment,
 | 
			
		||||
  atRule,
 | 
			
		||||
  rule,
 | 
			
		||||
  decl,
 | 
			
		||||
  root,
 | 
			
		||||
 | 
			
		||||
  CssSyntaxError,
 | 
			
		||||
  Declaration,
 | 
			
		||||
  Container,
 | 
			
		||||
  Processor,
 | 
			
		||||
  Document,
 | 
			
		||||
  Comment,
 | 
			
		||||
  Warning,
 | 
			
		||||
  AtRule,
 | 
			
		||||
  Result,
 | 
			
		||||
  Input,
 | 
			
		||||
  Rule,
 | 
			
		||||
  Root,
 | 
			
		||||
  Node,
 | 
			
		||||
 | 
			
		||||
  // Type-only exports
 | 
			
		||||
  AcceptedPlugin,
 | 
			
		||||
  AnyNode,
 | 
			
		||||
  AtRuleProps,
 | 
			
		||||
  Builder,
 | 
			
		||||
  ChildNode,
 | 
			
		||||
  ChildProps,
 | 
			
		||||
  CommentProps,
 | 
			
		||||
  ContainerProps,
 | 
			
		||||
  DeclarationProps,
 | 
			
		||||
  DocumentProps,
 | 
			
		||||
  FilePosition,
 | 
			
		||||
  Helpers,
 | 
			
		||||
  JSONHydrator,
 | 
			
		||||
  Message,
 | 
			
		||||
  NodeErrorOptions,
 | 
			
		||||
  NodeProps,
 | 
			
		||||
  OldPlugin,
 | 
			
		||||
  Parser,
 | 
			
		||||
  Plugin,
 | 
			
		||||
  PluginCreator,
 | 
			
		||||
  Position,
 | 
			
		||||
  Postcss,
 | 
			
		||||
  ProcessOptions,
 | 
			
		||||
  RootProps,
 | 
			
		||||
  RuleProps,
 | 
			
		||||
  Source,
 | 
			
		||||
  SourceMap,
 | 
			
		||||
  SourceMapOptions,
 | 
			
		||||
  Stringifier,
 | 
			
		||||
  Syntax,
 | 
			
		||||
  TransformCallback,
 | 
			
		||||
  Transformer,
 | 
			
		||||
  WarningOptions,
 | 
			
		||||
 | 
			
		||||
  // This is a class, but it’s not re-exported. That’s why it’s exported as type-only here.
 | 
			
		||||
  type LazyResult,
 | 
			
		||||
 | 
			
		||||
} from './postcss.js'
 | 
			
		||||
							
								
								
									
										441
									
								
								node_modules/postcss/lib/postcss.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										441
									
								
								node_modules/postcss/lib/postcss.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,441 @@
 | 
			
		||||
import { RawSourceMap, SourceMapGenerator } from 'source-map-js'
 | 
			
		||||
 | 
			
		||||
import AtRule, { AtRuleProps } from './at-rule.js'
 | 
			
		||||
import Comment, { CommentProps } from './comment.js'
 | 
			
		||||
import Container, { ContainerProps } from './container.js'
 | 
			
		||||
import CssSyntaxError from './css-syntax-error.js'
 | 
			
		||||
import Declaration, { DeclarationProps } from './declaration.js'
 | 
			
		||||
import Document, { DocumentProps } from './document.js'
 | 
			
		||||
import Input, { FilePosition } from './input.js'
 | 
			
		||||
import LazyResult from './lazy-result.js'
 | 
			
		||||
import list from './list.js'
 | 
			
		||||
import Node, {
 | 
			
		||||
  AnyNode,
 | 
			
		||||
  ChildNode,
 | 
			
		||||
  ChildProps,
 | 
			
		||||
  NodeErrorOptions,
 | 
			
		||||
  NodeProps,
 | 
			
		||||
  Position,
 | 
			
		||||
  Source
 | 
			
		||||
} from './node.js'
 | 
			
		||||
import Processor from './processor.js'
 | 
			
		||||
import Result, { Message } from './result.js'
 | 
			
		||||
import Root, { RootProps } from './root.js'
 | 
			
		||||
import Rule, { RuleProps } from './rule.js'
 | 
			
		||||
import Warning, { WarningOptions } from './warning.js'
 | 
			
		||||
 | 
			
		||||
type DocumentProcessor = (
 | 
			
		||||
  document: Document,
 | 
			
		||||
  helper: postcss.Helpers
 | 
			
		||||
) => Promise<void> | void
 | 
			
		||||
type RootProcessor = (root: Root, helper: postcss.Helpers) => Promise<void> | void
 | 
			
		||||
type DeclarationProcessor = (
 | 
			
		||||
  decl: Declaration,
 | 
			
		||||
  helper: postcss.Helpers
 | 
			
		||||
) => Promise<void> | void
 | 
			
		||||
type RuleProcessor = (rule: Rule, helper: postcss.Helpers) => Promise<void> | void
 | 
			
		||||
type AtRuleProcessor = (atRule: AtRule, helper: postcss.Helpers) => Promise<void> | void
 | 
			
		||||
type CommentProcessor = (
 | 
			
		||||
  comment: Comment,
 | 
			
		||||
  helper: postcss.Helpers
 | 
			
		||||
) => Promise<void> | void
 | 
			
		||||
 | 
			
		||||
interface Processors {
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on all`AtRule` nodes.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on node or children changes.
 | 
			
		||||
   */
 | 
			
		||||
  AtRule?: { [name: string]: AtRuleProcessor } | AtRuleProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on all `AtRule` nodes, when all children will be processed.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on node or children changes.
 | 
			
		||||
   */
 | 
			
		||||
  AtRuleExit?: { [name: string]: AtRuleProcessor } | AtRuleProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on all `Comment` nodes.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on node or children changes.
 | 
			
		||||
   */
 | 
			
		||||
  Comment?: CommentProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on all `Comment` nodes after listeners
 | 
			
		||||
   * for `Comment` event.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on node or children changes.
 | 
			
		||||
   */
 | 
			
		||||
  CommentExit?: CommentProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on all `Declaration` nodes after listeners
 | 
			
		||||
   * for `Declaration` event.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on node or children changes.
 | 
			
		||||
   */
 | 
			
		||||
  Declaration?: { [prop: string]: DeclarationProcessor } | DeclarationProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on all `Declaration` nodes.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on node or children changes.
 | 
			
		||||
   */
 | 
			
		||||
  DeclarationExit?:
 | 
			
		||||
    | { [prop: string]: DeclarationProcessor }
 | 
			
		||||
    | DeclarationProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on `Document` node.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on children changes.
 | 
			
		||||
   */
 | 
			
		||||
  Document?: DocumentProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on `Document` node, when all children will be processed.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on children changes.
 | 
			
		||||
   */
 | 
			
		||||
  DocumentExit?: DocumentProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on `Root` node once.
 | 
			
		||||
   */
 | 
			
		||||
  Once?: RootProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on `Root` node once, when all children will be processed.
 | 
			
		||||
   */
 | 
			
		||||
  OnceExit?: RootProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on `Root` node.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on children changes.
 | 
			
		||||
   */
 | 
			
		||||
  Root?: RootProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on `Root` node, when all children will be processed.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on children changes.
 | 
			
		||||
   */
 | 
			
		||||
  RootExit?: RootProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on all `Rule` nodes.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on node or children changes.
 | 
			
		||||
   */
 | 
			
		||||
  Rule?: RuleProcessor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Will be called on all `Rule` nodes, when all children will be processed.
 | 
			
		||||
   *
 | 
			
		||||
   * Will be called again on node or children changes.
 | 
			
		||||
   */
 | 
			
		||||
  RuleExit?: RuleProcessor
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare namespace postcss {
 | 
			
		||||
  export {
 | 
			
		||||
    AnyNode,
 | 
			
		||||
    AtRule,
 | 
			
		||||
    AtRuleProps,
 | 
			
		||||
    ChildNode,
 | 
			
		||||
    ChildProps,
 | 
			
		||||
    Comment,
 | 
			
		||||
    CommentProps,
 | 
			
		||||
    Container,
 | 
			
		||||
    ContainerProps,
 | 
			
		||||
    CssSyntaxError,
 | 
			
		||||
    Declaration,
 | 
			
		||||
    DeclarationProps,
 | 
			
		||||
    Document,
 | 
			
		||||
    DocumentProps,
 | 
			
		||||
    FilePosition,
 | 
			
		||||
    Input,
 | 
			
		||||
    LazyResult,
 | 
			
		||||
    list,
 | 
			
		||||
    Message,
 | 
			
		||||
    Node,
 | 
			
		||||
    NodeErrorOptions,
 | 
			
		||||
    NodeProps,
 | 
			
		||||
    Position,
 | 
			
		||||
    Processor,
 | 
			
		||||
    Result,
 | 
			
		||||
    Root,
 | 
			
		||||
    RootProps,
 | 
			
		||||
    Rule,
 | 
			
		||||
    RuleProps,
 | 
			
		||||
    Source,
 | 
			
		||||
    Warning,
 | 
			
		||||
    WarningOptions
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export type SourceMap = SourceMapGenerator & {
 | 
			
		||||
    toJSON(): RawSourceMap
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export type Helpers = { postcss: Postcss; result: Result } & Postcss
 | 
			
		||||
 | 
			
		||||
  export interface Plugin extends Processors {
 | 
			
		||||
    postcssPlugin: string
 | 
			
		||||
    prepare?: (result: Result) => Processors
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface PluginCreator<PluginOptions> {
 | 
			
		||||
    (opts?: PluginOptions): Plugin | Processor
 | 
			
		||||
    postcss: true
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface Transformer extends TransformCallback {
 | 
			
		||||
    postcssPlugin: string
 | 
			
		||||
    postcssVersion: string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface TransformCallback {
 | 
			
		||||
    (root: Root, result: Result): Promise<void> | void
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface OldPlugin<T> extends Transformer {
 | 
			
		||||
    (opts?: T): Transformer
 | 
			
		||||
    postcss: Transformer
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export type AcceptedPlugin =
 | 
			
		||||
    | {
 | 
			
		||||
        postcss: Processor | TransformCallback
 | 
			
		||||
      }
 | 
			
		||||
    | OldPlugin<any>
 | 
			
		||||
    | Plugin
 | 
			
		||||
    | PluginCreator<any>
 | 
			
		||||
    | Processor
 | 
			
		||||
    | TransformCallback
 | 
			
		||||
 | 
			
		||||
  export interface Parser<RootNode = Document | Root> {
 | 
			
		||||
    (
 | 
			
		||||
      css: { toString(): string } | string,
 | 
			
		||||
      opts?: Pick<ProcessOptions, 'from' | 'map'>
 | 
			
		||||
    ): RootNode
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface Builder {
 | 
			
		||||
    (part: string, node?: AnyNode, type?: 'end' | 'start'): void
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface Stringifier {
 | 
			
		||||
    (node: AnyNode, builder: Builder): void
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface JSONHydrator {
 | 
			
		||||
    (data: object): Node
 | 
			
		||||
    (data: object[]): Node[]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface Syntax<RootNode = Document | Root> {
 | 
			
		||||
    /**
 | 
			
		||||
     * Function to generate AST by string.
 | 
			
		||||
     */
 | 
			
		||||
    parse?: Parser<RootNode>
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Class to generate string by AST.
 | 
			
		||||
     */
 | 
			
		||||
    stringify?: Stringifier
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface SourceMapOptions {
 | 
			
		||||
    /**
 | 
			
		||||
     * Use absolute path in generated source map.
 | 
			
		||||
     */
 | 
			
		||||
    absolute?: boolean
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Indicates that PostCSS should add annotation comments to the CSS.
 | 
			
		||||
     * By default, PostCSS will always add a comment with a path
 | 
			
		||||
     * to the source map. PostCSS will not add annotations to CSS files
 | 
			
		||||
     * that do not contain any comments.
 | 
			
		||||
     *
 | 
			
		||||
     * By default, PostCSS presumes that you want to save the source map as
 | 
			
		||||
     * `opts.to + '.map'` and will use this path in the annotation comment.
 | 
			
		||||
     * A different path can be set by providing a string value for annotation.
 | 
			
		||||
     *
 | 
			
		||||
     * If you have set `inline: true`, annotation cannot be disabled.
 | 
			
		||||
     */
 | 
			
		||||
    annotation?: ((file: string, root: Root) => string) | boolean | string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Override `from` in map’s sources.
 | 
			
		||||
     */
 | 
			
		||||
    from?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Indicates that the source map should be embedded in the output CSS
 | 
			
		||||
     * as a Base64-encoded comment. By default, it is `true`.
 | 
			
		||||
     * But if all previous maps are external, not inline, PostCSS will not embed
 | 
			
		||||
     * the map even if you do not set this option.
 | 
			
		||||
     *
 | 
			
		||||
     * If you have an inline source map, the result.map property will be empty,
 | 
			
		||||
     * as the source map will be contained within the text of `result.css`.
 | 
			
		||||
     */
 | 
			
		||||
    inline?: boolean
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Source map content from a previous processing step (e.g., Sass).
 | 
			
		||||
     *
 | 
			
		||||
     * PostCSS will try to read the previous source map
 | 
			
		||||
     * automatically (based on comments within the source CSS), but you can use
 | 
			
		||||
     * this option to identify it manually.
 | 
			
		||||
     *
 | 
			
		||||
     * If desired, you can omit the previous map with prev: `false`.
 | 
			
		||||
     */
 | 
			
		||||
    prev?: ((file: string) => string) | boolean | object | string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Indicates that PostCSS should set the origin content (e.g., Sass source)
 | 
			
		||||
     * of the source map. By default, it is true. But if all previous maps do not
 | 
			
		||||
     * contain sources content, PostCSS will also leave it out even if you
 | 
			
		||||
     * do not set this option.
 | 
			
		||||
     */
 | 
			
		||||
    sourcesContent?: boolean
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface ProcessOptions<RootNode = Document | Root> {
 | 
			
		||||
    /**
 | 
			
		||||
     * The path of the CSS source file. You should always set `from`,
 | 
			
		||||
     * because it is used in source map generation and syntax error messages.
 | 
			
		||||
     */
 | 
			
		||||
    from?: string | undefined
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Source map options
 | 
			
		||||
     */
 | 
			
		||||
    map?: boolean | SourceMapOptions
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Function to generate AST by string.
 | 
			
		||||
     */
 | 
			
		||||
    parser?: Parser<RootNode> | Syntax<RootNode>
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Class to generate string by AST.
 | 
			
		||||
     */
 | 
			
		||||
    stringifier?: Stringifier | Syntax<RootNode>
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Object with parse and stringify.
 | 
			
		||||
     */
 | 
			
		||||
    syntax?: Syntax<RootNode>
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The path where you'll put the output CSS file. You should always set `to`
 | 
			
		||||
     * to generate correct source maps.
 | 
			
		||||
     */
 | 
			
		||||
    to?: string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export type Postcss = typeof postcss
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Default function to convert a node tree into a CSS string.
 | 
			
		||||
   */
 | 
			
		||||
  export let stringify: Stringifier
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Parses source css and returns a new `Root` or `Document` node,
 | 
			
		||||
   * which contains the source CSS nodes.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * // Simple CSS concatenation with source map support
 | 
			
		||||
   * const root1 = postcss.parse(css1, { from: file1 })
 | 
			
		||||
   * const root2 = postcss.parse(css2, { from: file2 })
 | 
			
		||||
   * root1.append(root2).toResult().css
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  export let parse: Parser<Root>
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Rehydrate a JSON AST (from `Node#toJSON`) back into the AST classes.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const json = root.toJSON()
 | 
			
		||||
   * // save to file, send by network, etc
 | 
			
		||||
   * const root2  = postcss.fromJSON(json)
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  export let fromJSON: JSONHydrator
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Creates a new `Comment` node.
 | 
			
		||||
   *
 | 
			
		||||
   * @param defaults Properties for the new node.
 | 
			
		||||
   * @return New comment node
 | 
			
		||||
   */
 | 
			
		||||
  export function comment(defaults?: CommentProps): Comment
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Creates a new `AtRule` node.
 | 
			
		||||
   *
 | 
			
		||||
   * @param defaults Properties for the new node.
 | 
			
		||||
   * @return New at-rule node.
 | 
			
		||||
   */
 | 
			
		||||
  export function atRule(defaults?: AtRuleProps): AtRule
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Creates a new `Declaration` node.
 | 
			
		||||
   *
 | 
			
		||||
   * @param defaults Properties for the new node.
 | 
			
		||||
   * @return New declaration node.
 | 
			
		||||
   */
 | 
			
		||||
  export function decl(defaults?: DeclarationProps): Declaration
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Creates a new `Rule` node.
 | 
			
		||||
   *
 | 
			
		||||
   * @param default Properties for the new node.
 | 
			
		||||
   * @return New rule node.
 | 
			
		||||
   */
 | 
			
		||||
  export function rule(defaults?: RuleProps): Rule
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Creates a new `Root` node.
 | 
			
		||||
   *
 | 
			
		||||
   * @param defaults Properties for the new node.
 | 
			
		||||
   * @return New root node.
 | 
			
		||||
   */
 | 
			
		||||
  export function root(defaults?: RootProps): Root
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Creates a new `Document` node.
 | 
			
		||||
   *
 | 
			
		||||
   * @param defaults Properties for the new node.
 | 
			
		||||
   * @return New document node.
 | 
			
		||||
   */
 | 
			
		||||
  export function document(defaults?: DocumentProps): Document
 | 
			
		||||
 | 
			
		||||
  export { postcss as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create a new `Processor` instance that will apply `plugins`
 | 
			
		||||
 * as CSS processors.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * let postcss = require('postcss')
 | 
			
		||||
 *
 | 
			
		||||
 * postcss(plugins).process(css, { from, to }).then(result => {
 | 
			
		||||
 *   console.log(result.css)
 | 
			
		||||
 * })
 | 
			
		||||
 * ```
 | 
			
		||||
 *
 | 
			
		||||
 * @param plugins PostCSS plugins.
 | 
			
		||||
 * @return Processor to process multiple CSS.
 | 
			
		||||
 */
 | 
			
		||||
declare function postcss(plugins?: postcss.AcceptedPlugin[]): Processor
 | 
			
		||||
declare function postcss(...plugins: postcss.AcceptedPlugin[]): Processor
 | 
			
		||||
 | 
			
		||||
export = postcss
 | 
			
		||||
							
								
								
									
										101
									
								
								node_modules/postcss/lib/postcss.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								node_modules/postcss/lib/postcss.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let CssSyntaxError = require('./css-syntax-error')
 | 
			
		||||
let Declaration = require('./declaration')
 | 
			
		||||
let LazyResult = require('./lazy-result')
 | 
			
		||||
let Container = require('./container')
 | 
			
		||||
let Processor = require('./processor')
 | 
			
		||||
let stringify = require('./stringify')
 | 
			
		||||
let fromJSON = require('./fromJSON')
 | 
			
		||||
let Document = require('./document')
 | 
			
		||||
let Warning = require('./warning')
 | 
			
		||||
let Comment = require('./comment')
 | 
			
		||||
let AtRule = require('./at-rule')
 | 
			
		||||
let Result = require('./result.js')
 | 
			
		||||
let Input = require('./input')
 | 
			
		||||
let parse = require('./parse')
 | 
			
		||||
let list = require('./list')
 | 
			
		||||
let Rule = require('./rule')
 | 
			
		||||
let Root = require('./root')
 | 
			
		||||
let Node = require('./node')
 | 
			
		||||
 | 
			
		||||
function postcss(...plugins) {
 | 
			
		||||
  if (plugins.length === 1 && Array.isArray(plugins[0])) {
 | 
			
		||||
    plugins = plugins[0]
 | 
			
		||||
  }
 | 
			
		||||
  return new Processor(plugins)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
postcss.plugin = function plugin(name, initializer) {
 | 
			
		||||
  let warningPrinted = false
 | 
			
		||||
  function creator(...args) {
 | 
			
		||||
    // eslint-disable-next-line no-console
 | 
			
		||||
    if (console && console.warn && !warningPrinted) {
 | 
			
		||||
      warningPrinted = true
 | 
			
		||||
      // eslint-disable-next-line no-console
 | 
			
		||||
      console.warn(
 | 
			
		||||
        name +
 | 
			
		||||
          ': postcss.plugin was deprecated. Migration guide:\n' +
 | 
			
		||||
          'https://evilmartians.com/chronicles/postcss-8-plugin-migration'
 | 
			
		||||
      )
 | 
			
		||||
      if (process.env.LANG && process.env.LANG.startsWith('cn')) {
 | 
			
		||||
        /* c8 ignore next 7 */
 | 
			
		||||
        // eslint-disable-next-line no-console
 | 
			
		||||
        console.warn(
 | 
			
		||||
          name +
 | 
			
		||||
            ': 里面 postcss.plugin 被弃用. 迁移指南:\n' +
 | 
			
		||||
            'https://www.w3ctech.com/topic/2226'
 | 
			
		||||
        )
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    let transformer = initializer(...args)
 | 
			
		||||
    transformer.postcssPlugin = name
 | 
			
		||||
    transformer.postcssVersion = new Processor().version
 | 
			
		||||
    return transformer
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  let cache
 | 
			
		||||
  Object.defineProperty(creator, 'postcss', {
 | 
			
		||||
    get() {
 | 
			
		||||
      if (!cache) cache = creator()
 | 
			
		||||
      return cache
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  creator.process = function (css, processOpts, pluginOpts) {
 | 
			
		||||
    return postcss([creator(pluginOpts)]).process(css, processOpts)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return creator
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
postcss.stringify = stringify
 | 
			
		||||
postcss.parse = parse
 | 
			
		||||
postcss.fromJSON = fromJSON
 | 
			
		||||
postcss.list = list
 | 
			
		||||
 | 
			
		||||
postcss.comment = defaults => new Comment(defaults)
 | 
			
		||||
postcss.atRule = defaults => new AtRule(defaults)
 | 
			
		||||
postcss.decl = defaults => new Declaration(defaults)
 | 
			
		||||
postcss.rule = defaults => new Rule(defaults)
 | 
			
		||||
postcss.root = defaults => new Root(defaults)
 | 
			
		||||
postcss.document = defaults => new Document(defaults)
 | 
			
		||||
 | 
			
		||||
postcss.CssSyntaxError = CssSyntaxError
 | 
			
		||||
postcss.Declaration = Declaration
 | 
			
		||||
postcss.Container = Container
 | 
			
		||||
postcss.Processor = Processor
 | 
			
		||||
postcss.Document = Document
 | 
			
		||||
postcss.Comment = Comment
 | 
			
		||||
postcss.Warning = Warning
 | 
			
		||||
postcss.AtRule = AtRule
 | 
			
		||||
postcss.Result = Result
 | 
			
		||||
postcss.Input = Input
 | 
			
		||||
postcss.Rule = Rule
 | 
			
		||||
postcss.Root = Root
 | 
			
		||||
postcss.Node = Node
 | 
			
		||||
 | 
			
		||||
LazyResult.registerPostcss(postcss)
 | 
			
		||||
 | 
			
		||||
module.exports = postcss
 | 
			
		||||
postcss.default = postcss
 | 
			
		||||
							
								
								
									
										30
									
								
								node_modules/postcss/lib/postcss.mjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								node_modules/postcss/lib/postcss.mjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
import postcss from './postcss.js'
 | 
			
		||||
 | 
			
		||||
export default postcss
 | 
			
		||||
 | 
			
		||||
export const stringify = postcss.stringify
 | 
			
		||||
export const fromJSON = postcss.fromJSON
 | 
			
		||||
export const plugin = postcss.plugin
 | 
			
		||||
export const parse = postcss.parse
 | 
			
		||||
export const list = postcss.list
 | 
			
		||||
 | 
			
		||||
export const document = postcss.document
 | 
			
		||||
export const comment = postcss.comment
 | 
			
		||||
export const atRule = postcss.atRule
 | 
			
		||||
export const rule = postcss.rule
 | 
			
		||||
export const decl = postcss.decl
 | 
			
		||||
export const root = postcss.root
 | 
			
		||||
 | 
			
		||||
export const CssSyntaxError = postcss.CssSyntaxError
 | 
			
		||||
export const Declaration = postcss.Declaration
 | 
			
		||||
export const Container = postcss.Container
 | 
			
		||||
export const Processor = postcss.Processor
 | 
			
		||||
export const Document = postcss.Document
 | 
			
		||||
export const Comment = postcss.Comment
 | 
			
		||||
export const Warning = postcss.Warning
 | 
			
		||||
export const AtRule = postcss.AtRule
 | 
			
		||||
export const Result = postcss.Result
 | 
			
		||||
export const Input = postcss.Input
 | 
			
		||||
export const Rule = postcss.Rule
 | 
			
		||||
export const Root = postcss.Root
 | 
			
		||||
export const Node = postcss.Node
 | 
			
		||||
							
								
								
									
										81
									
								
								node_modules/postcss/lib/previous-map.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								node_modules/postcss/lib/previous-map.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
import { SourceMapConsumer } from 'source-map-js'
 | 
			
		||||
 | 
			
		||||
import { ProcessOptions } from './postcss.js'
 | 
			
		||||
 | 
			
		||||
declare namespace PreviousMap {
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { PreviousMap_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source map information from input CSS.
 | 
			
		||||
 * For example, source map after Sass compiler.
 | 
			
		||||
 *
 | 
			
		||||
 * This class will automatically find source map in input CSS or in file system
 | 
			
		||||
 * near input file (according `from` option).
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const root = parse(css, { from: 'a.sass.css' })
 | 
			
		||||
 * root.input.map //=> PreviousMap
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class PreviousMap_ {
 | 
			
		||||
  /**
 | 
			
		||||
   * `sourceMappingURL` content.
 | 
			
		||||
   */
 | 
			
		||||
  annotation?: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The CSS source identifier. Contains `Input#file` if the user
 | 
			
		||||
   * set the `from` option, or `Input#id` if they did not.
 | 
			
		||||
   */
 | 
			
		||||
  file?: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Was source map inlined by data-uri to input CSS.
 | 
			
		||||
   */
 | 
			
		||||
  inline: boolean
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Path to source map file.
 | 
			
		||||
   */
 | 
			
		||||
  mapFile?: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The directory with source map file, if source map is in separated file.
 | 
			
		||||
   */
 | 
			
		||||
  root?: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Source map file content.
 | 
			
		||||
   */
 | 
			
		||||
  text?: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * @param css  Input CSS source.
 | 
			
		||||
   * @param opts Process options.
 | 
			
		||||
   */
 | 
			
		||||
  constructor(css: string, opts?: ProcessOptions)
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Create a instance of `SourceMapGenerator` class
 | 
			
		||||
   * from the `source-map` library to work with source map information.
 | 
			
		||||
   *
 | 
			
		||||
   * It is lazy method, so it will create object only on first call
 | 
			
		||||
   * and then it will use cache.
 | 
			
		||||
   *
 | 
			
		||||
   * @return Object with source map information.
 | 
			
		||||
   */
 | 
			
		||||
  consumer(): SourceMapConsumer
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Does source map contains `sourcesContent` with input source text.
 | 
			
		||||
   *
 | 
			
		||||
   * @return Is `sourcesContent` present.
 | 
			
		||||
   */
 | 
			
		||||
  withContent(): boolean
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class PreviousMap extends PreviousMap_ {}
 | 
			
		||||
 | 
			
		||||
export = PreviousMap
 | 
			
		||||
							
								
								
									
										142
									
								
								node_modules/postcss/lib/previous-map.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								node_modules/postcss/lib/previous-map.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,142 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
 | 
			
		||||
let { existsSync, readFileSync } = require('fs')
 | 
			
		||||
let { dirname, join } = require('path')
 | 
			
		||||
 | 
			
		||||
function fromBase64(str) {
 | 
			
		||||
  if (Buffer) {
 | 
			
		||||
    return Buffer.from(str, 'base64').toString()
 | 
			
		||||
  } else {
 | 
			
		||||
    /* c8 ignore next 2 */
 | 
			
		||||
    return window.atob(str)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class PreviousMap {
 | 
			
		||||
  constructor(css, opts) {
 | 
			
		||||
    if (opts.map === false) return
 | 
			
		||||
    this.loadAnnotation(css)
 | 
			
		||||
    this.inline = this.startWith(this.annotation, 'data:')
 | 
			
		||||
 | 
			
		||||
    let prev = opts.map ? opts.map.prev : undefined
 | 
			
		||||
    let text = this.loadMap(opts.from, prev)
 | 
			
		||||
    if (!this.mapFile && opts.from) {
 | 
			
		||||
      this.mapFile = opts.from
 | 
			
		||||
    }
 | 
			
		||||
    if (this.mapFile) this.root = dirname(this.mapFile)
 | 
			
		||||
    if (text) this.text = text
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  consumer() {
 | 
			
		||||
    if (!this.consumerCache) {
 | 
			
		||||
      this.consumerCache = new SourceMapConsumer(this.text)
 | 
			
		||||
    }
 | 
			
		||||
    return this.consumerCache
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  decodeInline(text) {
 | 
			
		||||
    let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/
 | 
			
		||||
    let baseUri = /^data:application\/json;base64,/
 | 
			
		||||
    let charsetUri = /^data:application\/json;charset=utf-?8,/
 | 
			
		||||
    let uri = /^data:application\/json,/
 | 
			
		||||
 | 
			
		||||
    if (charsetUri.test(text) || uri.test(text)) {
 | 
			
		||||
      return decodeURIComponent(text.substr(RegExp.lastMatch.length))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (baseCharsetUri.test(text) || baseUri.test(text)) {
 | 
			
		||||
      return fromBase64(text.substr(RegExp.lastMatch.length))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let encoding = text.match(/data:application\/json;([^,]+),/)[1]
 | 
			
		||||
    throw new Error('Unsupported source map encoding ' + encoding)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getAnnotationURL(sourceMapString) {
 | 
			
		||||
    return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, '').trim()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  isMap(map) {
 | 
			
		||||
    if (typeof map !== 'object') return false
 | 
			
		||||
    return (
 | 
			
		||||
      typeof map.mappings === 'string' ||
 | 
			
		||||
      typeof map._mappings === 'string' ||
 | 
			
		||||
      Array.isArray(map.sections)
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  loadAnnotation(css) {
 | 
			
		||||
    let comments = css.match(/\/\*\s*# sourceMappingURL=/gm)
 | 
			
		||||
    if (!comments) return
 | 
			
		||||
 | 
			
		||||
    // sourceMappingURLs from comments, strings, etc.
 | 
			
		||||
    let start = css.lastIndexOf(comments.pop())
 | 
			
		||||
    let end = css.indexOf('*/', start)
 | 
			
		||||
 | 
			
		||||
    if (start > -1 && end > -1) {
 | 
			
		||||
      // Locate the last sourceMappingURL to avoid pickin
 | 
			
		||||
      this.annotation = this.getAnnotationURL(css.substring(start, end))
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  loadFile(path) {
 | 
			
		||||
    this.root = dirname(path)
 | 
			
		||||
    if (existsSync(path)) {
 | 
			
		||||
      this.mapFile = path
 | 
			
		||||
      return readFileSync(path, 'utf-8').toString().trim()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  loadMap(file, prev) {
 | 
			
		||||
    if (prev === false) return false
 | 
			
		||||
 | 
			
		||||
    if (prev) {
 | 
			
		||||
      if (typeof prev === 'string') {
 | 
			
		||||
        return prev
 | 
			
		||||
      } else if (typeof prev === 'function') {
 | 
			
		||||
        let prevPath = prev(file)
 | 
			
		||||
        if (prevPath) {
 | 
			
		||||
          let map = this.loadFile(prevPath)
 | 
			
		||||
          if (!map) {
 | 
			
		||||
            throw new Error(
 | 
			
		||||
              'Unable to load previous source map: ' + prevPath.toString()
 | 
			
		||||
            )
 | 
			
		||||
          }
 | 
			
		||||
          return map
 | 
			
		||||
        }
 | 
			
		||||
      } else if (prev instanceof SourceMapConsumer) {
 | 
			
		||||
        return SourceMapGenerator.fromSourceMap(prev).toString()
 | 
			
		||||
      } else if (prev instanceof SourceMapGenerator) {
 | 
			
		||||
        return prev.toString()
 | 
			
		||||
      } else if (this.isMap(prev)) {
 | 
			
		||||
        return JSON.stringify(prev)
 | 
			
		||||
      } else {
 | 
			
		||||
        throw new Error(
 | 
			
		||||
          'Unsupported previous source map format: ' + prev.toString()
 | 
			
		||||
        )
 | 
			
		||||
      }
 | 
			
		||||
    } else if (this.inline) {
 | 
			
		||||
      return this.decodeInline(this.annotation)
 | 
			
		||||
    } else if (this.annotation) {
 | 
			
		||||
      let map = this.annotation
 | 
			
		||||
      if (file) map = join(dirname(file), map)
 | 
			
		||||
      return this.loadFile(map)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  startWith(string, start) {
 | 
			
		||||
    if (!string) return false
 | 
			
		||||
    return string.substr(0, start.length) === start
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  withContent() {
 | 
			
		||||
    return !!(
 | 
			
		||||
      this.consumer().sourcesContent &&
 | 
			
		||||
      this.consumer().sourcesContent.length > 0
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = PreviousMap
 | 
			
		||||
PreviousMap.default = PreviousMap
 | 
			
		||||
							
								
								
									
										115
									
								
								node_modules/postcss/lib/processor.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								node_modules/postcss/lib/processor.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,115 @@
 | 
			
		||||
import Document from './document.js'
 | 
			
		||||
import LazyResult from './lazy-result.js'
 | 
			
		||||
import NoWorkResult from './no-work-result.js'
 | 
			
		||||
import {
 | 
			
		||||
  AcceptedPlugin,
 | 
			
		||||
  Plugin,
 | 
			
		||||
  ProcessOptions,
 | 
			
		||||
  TransformCallback,
 | 
			
		||||
  Transformer
 | 
			
		||||
} from './postcss.js'
 | 
			
		||||
import Result from './result.js'
 | 
			
		||||
import Root from './root.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Processor {
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Processor_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Contains plugins to process CSS. Create one `Processor` instance,
 | 
			
		||||
 * initialize its plugins, and then use that instance on numerous CSS files.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const processor = postcss([autoprefixer, postcssNested])
 | 
			
		||||
 * processor.process(css1).then(result => console.log(result.css))
 | 
			
		||||
 * processor.process(css2).then(result => console.log(result.css))
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class Processor_ {
 | 
			
		||||
  /**
 | 
			
		||||
   * Plugins added to this processor.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const processor = postcss([autoprefixer, postcssNested])
 | 
			
		||||
   * processor.plugins.length //=> 2
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  plugins: (Plugin | TransformCallback | Transformer)[]
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Current PostCSS version.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * if (result.processor.version.split('.')[0] !== '6') {
 | 
			
		||||
   *   throw new Error('This plugin works only with PostCSS 6')
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  version: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * @param plugins PostCSS plugins
 | 
			
		||||
   */
 | 
			
		||||
  constructor(plugins?: AcceptedPlugin[])
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Parses source CSS and returns a `LazyResult` Promise proxy.
 | 
			
		||||
   * Because some plugins can be asynchronous it doesn’t make
 | 
			
		||||
   * any transformations. Transformations will be applied
 | 
			
		||||
   * in the `LazyResult` methods.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * processor.process(css, { from: 'a.css', to: 'a.out.css' })
 | 
			
		||||
   *   .then(result => {
 | 
			
		||||
   *      console.log(result.css)
 | 
			
		||||
   *   })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param css String with input CSS or any object with a `toString()` method,
 | 
			
		||||
   *            like a Buffer. Optionally, send a `Result` instance
 | 
			
		||||
   *            and the processor will take the `Root` from it.
 | 
			
		||||
   * @param opts Options.
 | 
			
		||||
   * @return Promise proxy.
 | 
			
		||||
   */
 | 
			
		||||
  process(
 | 
			
		||||
    css: { toString(): string } | LazyResult | Result | Root | string
 | 
			
		||||
  ): LazyResult | NoWorkResult
 | 
			
		||||
  process<RootNode extends Document | Root = Root>(
 | 
			
		||||
    css: { toString(): string } | LazyResult | Result | Root | string,
 | 
			
		||||
    options: ProcessOptions<RootNode>
 | 
			
		||||
  ): LazyResult<RootNode>
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Adds a plugin to be used as a CSS processor.
 | 
			
		||||
   *
 | 
			
		||||
   * PostCSS plugin can be in 4 formats:
 | 
			
		||||
   * * A plugin in `Plugin` format.
 | 
			
		||||
   * * A plugin creator function with `pluginCreator.postcss = true`.
 | 
			
		||||
   *   PostCSS will call this function without argument to get plugin.
 | 
			
		||||
   * * A function. PostCSS will pass the function a {@link Root}
 | 
			
		||||
   *   as the first argument and current `Result` instance
 | 
			
		||||
   *   as the second.
 | 
			
		||||
   * * Another `Processor` instance. PostCSS will copy plugins
 | 
			
		||||
   *   from that instance into this one.
 | 
			
		||||
   *
 | 
			
		||||
   * Plugins can also be added by passing them as arguments when creating
 | 
			
		||||
   * a `postcss` instance (see [`postcss(plugins)`]).
 | 
			
		||||
   *
 | 
			
		||||
   * Asynchronous plugins should return a `Promise` instance.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const processor = postcss()
 | 
			
		||||
   *   .use(autoprefixer)
 | 
			
		||||
   *   .use(postcssNested)
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param plugin PostCSS plugin or `Processor` with plugins.
 | 
			
		||||
   * @return Current processor to make methods chain.
 | 
			
		||||
   */
 | 
			
		||||
  use(plugin: AcceptedPlugin): this
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Processor extends Processor_ {}
 | 
			
		||||
 | 
			
		||||
export = Processor
 | 
			
		||||
							
								
								
									
										67
									
								
								node_modules/postcss/lib/processor.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								node_modules/postcss/lib/processor.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let NoWorkResult = require('./no-work-result')
 | 
			
		||||
let LazyResult = require('./lazy-result')
 | 
			
		||||
let Document = require('./document')
 | 
			
		||||
let Root = require('./root')
 | 
			
		||||
 | 
			
		||||
class Processor {
 | 
			
		||||
  constructor(plugins = []) {
 | 
			
		||||
    this.version = '8.4.34'
 | 
			
		||||
    this.plugins = this.normalize(plugins)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  normalize(plugins) {
 | 
			
		||||
    let normalized = []
 | 
			
		||||
    for (let i of plugins) {
 | 
			
		||||
      if (i.postcss === true) {
 | 
			
		||||
        i = i()
 | 
			
		||||
      } else if (i.postcss) {
 | 
			
		||||
        i = i.postcss
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof i === 'object' && Array.isArray(i.plugins)) {
 | 
			
		||||
        normalized = normalized.concat(i.plugins)
 | 
			
		||||
      } else if (typeof i === 'object' && i.postcssPlugin) {
 | 
			
		||||
        normalized.push(i)
 | 
			
		||||
      } else if (typeof i === 'function') {
 | 
			
		||||
        normalized.push(i)
 | 
			
		||||
      } else if (typeof i === 'object' && (i.parse || i.stringify)) {
 | 
			
		||||
        if (process.env.NODE_ENV !== 'production') {
 | 
			
		||||
          throw new Error(
 | 
			
		||||
            'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +
 | 
			
		||||
              'one of the syntax/parser/stringifier options as outlined ' +
 | 
			
		||||
              'in your PostCSS runner documentation.'
 | 
			
		||||
          )
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        throw new Error(i + ' is not a PostCSS plugin')
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return normalized
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  process(css, opts = {}) {
 | 
			
		||||
    if (
 | 
			
		||||
      !this.plugins.length &&
 | 
			
		||||
      !opts.parser &&
 | 
			
		||||
      !opts.stringifier &&
 | 
			
		||||
      !opts.syntax
 | 
			
		||||
    ) {
 | 
			
		||||
      return new NoWorkResult(this, css, opts)
 | 
			
		||||
    } else {
 | 
			
		||||
      return new LazyResult(this, css, opts)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  use(plugin) {
 | 
			
		||||
    this.plugins = this.plugins.concat(this.normalize([plugin]))
 | 
			
		||||
    return this
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Processor
 | 
			
		||||
Processor.default = Processor
 | 
			
		||||
 | 
			
		||||
Root.registerProcessor(Processor)
 | 
			
		||||
Document.registerProcessor(Processor)
 | 
			
		||||
							
								
								
									
										206
									
								
								node_modules/postcss/lib/result.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								node_modules/postcss/lib/result.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,206 @@
 | 
			
		||||
import {
 | 
			
		||||
  Document,
 | 
			
		||||
  Node,
 | 
			
		||||
  Plugin,
 | 
			
		||||
  ProcessOptions,
 | 
			
		||||
  Root,
 | 
			
		||||
  SourceMap,
 | 
			
		||||
  TransformCallback,
 | 
			
		||||
  Warning,
 | 
			
		||||
  WarningOptions
 | 
			
		||||
} from './postcss.js'
 | 
			
		||||
import Processor from './processor.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Result {
 | 
			
		||||
  export interface Message {
 | 
			
		||||
    [others: string]: any
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Source PostCSS plugin name.
 | 
			
		||||
     */
 | 
			
		||||
    plugin?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Message type.
 | 
			
		||||
     */
 | 
			
		||||
    type: string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface ResultOptions extends ProcessOptions {
 | 
			
		||||
    /**
 | 
			
		||||
     * The CSS node that was the source of the warning.
 | 
			
		||||
     */
 | 
			
		||||
    node?: Node
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Name of plugin that created this warning. `Result#warn` will fill it
 | 
			
		||||
     * automatically with `Plugin#postcssPlugin` value.
 | 
			
		||||
     */
 | 
			
		||||
    plugin?: string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Result_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Provides the result of the PostCSS transformations.
 | 
			
		||||
 *
 | 
			
		||||
 * A Result instance is returned by `LazyResult#then`
 | 
			
		||||
 * or `Root#toResult` methods.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * postcss([autoprefixer]).process(css).then(result => {
 | 
			
		||||
 *  console.log(result.css)
 | 
			
		||||
 * })
 | 
			
		||||
 * ```
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const result2 = postcss.parse(css).toResult()
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class Result_<RootNode = Document | Root> {
 | 
			
		||||
  /**
 | 
			
		||||
   * A CSS string representing of `Result#root`.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * postcss.parse('a{}').toResult().css //=> "a{}"
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  css: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Last runned PostCSS plugin.
 | 
			
		||||
   */
 | 
			
		||||
  lastPlugin: Plugin | TransformCallback
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * An instance of `SourceMapGenerator` class from the `source-map` library,
 | 
			
		||||
   * representing changes to the `Result#root` instance.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * result.map.toJSON() //=> { version: 3, file: 'a.css', … }
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * if (result.map) {
 | 
			
		||||
   *   fs.writeFileSync(result.opts.to + '.map', result.map.toString())
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  map: SourceMap
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Contains messages from plugins (e.g., warnings or custom messages).
 | 
			
		||||
   * Each message should have type and plugin properties.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * AtRule: {
 | 
			
		||||
   *   import: (atRule, { result }) {
 | 
			
		||||
   *     const importedFile = parseImport(atRule)
 | 
			
		||||
   *     result.messages.push({
 | 
			
		||||
   *       type: 'dependency',
 | 
			
		||||
   *       plugin: 'postcss-import',
 | 
			
		||||
   *       file: importedFile,
 | 
			
		||||
   *       parent: result.opts.from
 | 
			
		||||
   *     })
 | 
			
		||||
   *   }
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  messages: Result.Message[]
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Options from the `Processor#process` or `Root#toResult` call
 | 
			
		||||
   * that produced this Result instance.]
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.toResult(opts).opts === opts
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  opts: Result.ResultOptions
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The Processor instance used for this transformation.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * for (const plugin of result.processor.plugins) {
 | 
			
		||||
   *   if (plugin.postcssPlugin === 'postcss-bad') {
 | 
			
		||||
   *     throw 'postcss-good is incompatible with postcss-bad'
 | 
			
		||||
   *   }
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  processor: Processor
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Root node after all transformations.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * root.toResult().root === root
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  root: RootNode
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * @param processor Processor used for this transformation.
 | 
			
		||||
   * @param root      Root node after all transformations.
 | 
			
		||||
   * @param opts      Options from the `Processor#process` or `Root#toResult`.
 | 
			
		||||
   */
 | 
			
		||||
  constructor(processor: Processor, root: RootNode, opts: Result.ResultOptions)
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns for `Result#css` content.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * result + '' === result.css
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @return String representing of `Result#root`.
 | 
			
		||||
   */
 | 
			
		||||
  toString(): string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Creates an instance of `Warning` and adds it to `Result#messages`.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * if (decl.important) {
 | 
			
		||||
   *   result.warn('Avoid !important', { node: decl, word: '!important' })
 | 
			
		||||
   * }
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param text Warning message.
 | 
			
		||||
   * @param opts Warning options.
 | 
			
		||||
   * @return Created warning.
 | 
			
		||||
   */
 | 
			
		||||
  warn(message: string, options?: WarningOptions): Warning
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns warnings from plugins. Filters `Warning` instances
 | 
			
		||||
   * from `Result#messages`.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * result.warnings().forEach(warn => {
 | 
			
		||||
   *   console.warn(warn.toString())
 | 
			
		||||
   * })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @return Warnings from plugins.
 | 
			
		||||
   */
 | 
			
		||||
  warnings(): Warning[]
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * An alias for the `Result#css` property.
 | 
			
		||||
   * Use it with syntaxes that generate non-CSS output.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * result.css === result.content
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  get content(): string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Result<RootNode = Document | Root> extends Result_<RootNode> {}
 | 
			
		||||
 | 
			
		||||
export = Result
 | 
			
		||||
							
								
								
									
										42
									
								
								node_modules/postcss/lib/result.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								node_modules/postcss/lib/result.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Warning = require('./warning')
 | 
			
		||||
 | 
			
		||||
class Result {
 | 
			
		||||
  constructor(processor, root, opts) {
 | 
			
		||||
    this.processor = processor
 | 
			
		||||
    this.messages = []
 | 
			
		||||
    this.root = root
 | 
			
		||||
    this.opts = opts
 | 
			
		||||
    this.css = undefined
 | 
			
		||||
    this.map = undefined
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toString() {
 | 
			
		||||
    return this.css
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  warn(text, opts = {}) {
 | 
			
		||||
    if (!opts.plugin) {
 | 
			
		||||
      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {
 | 
			
		||||
        opts.plugin = this.lastPlugin.postcssPlugin
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let warning = new Warning(text, opts)
 | 
			
		||||
    this.messages.push(warning)
 | 
			
		||||
 | 
			
		||||
    return warning
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  warnings() {
 | 
			
		||||
    return this.messages.filter(i => i.type === 'warning')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get content() {
 | 
			
		||||
    return this.css
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Result
 | 
			
		||||
Result.default = Result
 | 
			
		||||
							
								
								
									
										87
									
								
								node_modules/postcss/lib/root.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								node_modules/postcss/lib/root.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,87 @@
 | 
			
		||||
import Container, { ContainerProps } from './container.js'
 | 
			
		||||
import Document from './document.js'
 | 
			
		||||
import { ProcessOptions } from './postcss.js'
 | 
			
		||||
import Result from './result.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Root {
 | 
			
		||||
  export interface RootRaws extends Record<string, any> {
 | 
			
		||||
    /**
 | 
			
		||||
     * The space symbols after the last child to the end of file.
 | 
			
		||||
     */
 | 
			
		||||
    after?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Non-CSS code after `Root`, when `Root` is inside `Document`.
 | 
			
		||||
     *
 | 
			
		||||
     * **Experimental:** some aspects of this node could change within minor
 | 
			
		||||
     * or patch version releases.
 | 
			
		||||
     */
 | 
			
		||||
    codeAfter?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Non-CSS code before `Root`, when `Root` is inside `Document`.
 | 
			
		||||
     *
 | 
			
		||||
     * **Experimental:** some aspects of this node could change within minor
 | 
			
		||||
     * or patch version releases.
 | 
			
		||||
     */
 | 
			
		||||
    codeBefore?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Is the last child has an (optional) semicolon.
 | 
			
		||||
     */
 | 
			
		||||
    semicolon?: boolean
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface RootProps extends ContainerProps {
 | 
			
		||||
    /**
 | 
			
		||||
     * Information used to generate byte-to-byte equal node string
 | 
			
		||||
     * as it was in the origin input.
 | 
			
		||||
     * */
 | 
			
		||||
    raws?: RootRaws
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Root_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Represents a CSS file and contains all its parsed nodes.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const root = postcss.parse('a{color:black} b{z-index:2}')
 | 
			
		||||
 * root.type         //=> 'root'
 | 
			
		||||
 * root.nodes.length //=> 2
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class Root_ extends Container {
 | 
			
		||||
  nodes: NonNullable<Container['nodes']>
 | 
			
		||||
  parent: Document | undefined
 | 
			
		||||
  raws: Root.RootRaws
 | 
			
		||||
  type: 'root'
 | 
			
		||||
 | 
			
		||||
  constructor(defaults?: Root.RootProps)
 | 
			
		||||
 | 
			
		||||
  assign(overrides: object | Root.RootProps): this
 | 
			
		||||
  clone(overrides?: Partial<Root.RootProps>): Root
 | 
			
		||||
  cloneAfter(overrides?: Partial<Root.RootProps>): Root
 | 
			
		||||
  cloneBefore(overrides?: Partial<Root.RootProps>): Root
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns a `Result` instance representing the root’s CSS.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root1 = postcss.parse(css1, { from: 'a.css' })
 | 
			
		||||
   * const root2 = postcss.parse(css2, { from: 'b.css' })
 | 
			
		||||
   * root1.append(root2)
 | 
			
		||||
   * const result = root1.toResult({ to: 'all.css', map: true })
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @param opts Options.
 | 
			
		||||
   * @return Result with current root’s CSS.
 | 
			
		||||
   */
 | 
			
		||||
  toResult(options?: ProcessOptions): Result
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Root extends Root_ {}
 | 
			
		||||
 | 
			
		||||
export = Root
 | 
			
		||||
							
								
								
									
										61
									
								
								node_modules/postcss/lib/root.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								node_modules/postcss/lib/root.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Container = require('./container')
 | 
			
		||||
 | 
			
		||||
let LazyResult, Processor
 | 
			
		||||
 | 
			
		||||
class Root extends Container {
 | 
			
		||||
  constructor(defaults) {
 | 
			
		||||
    super(defaults)
 | 
			
		||||
    this.type = 'root'
 | 
			
		||||
    if (!this.nodes) this.nodes = []
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  normalize(child, sample, type) {
 | 
			
		||||
    let nodes = super.normalize(child)
 | 
			
		||||
 | 
			
		||||
    if (sample) {
 | 
			
		||||
      if (type === 'prepend') {
 | 
			
		||||
        if (this.nodes.length > 1) {
 | 
			
		||||
          sample.raws.before = this.nodes[1].raws.before
 | 
			
		||||
        } else {
 | 
			
		||||
          delete sample.raws.before
 | 
			
		||||
        }
 | 
			
		||||
      } else if (this.first !== sample) {
 | 
			
		||||
        for (let node of nodes) {
 | 
			
		||||
          node.raws.before = sample.raws.before
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return nodes
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  removeChild(child, ignore) {
 | 
			
		||||
    let index = this.index(child)
 | 
			
		||||
 | 
			
		||||
    if (!ignore && index === 0 && this.nodes.length > 1) {
 | 
			
		||||
      this.nodes[1].raws.before = this.nodes[index].raws.before
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return super.removeChild(child)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toResult(opts = {}) {
 | 
			
		||||
    let lazy = new LazyResult(new Processor(), this, opts)
 | 
			
		||||
    return lazy.stringify()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Root.registerLazyResult = dependant => {
 | 
			
		||||
  LazyResult = dependant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Root.registerProcessor = dependant => {
 | 
			
		||||
  Processor = dependant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Root
 | 
			
		||||
Root.default = Root
 | 
			
		||||
 | 
			
		||||
Container.registerRoot(Root)
 | 
			
		||||
							
								
								
									
										114
									
								
								node_modules/postcss/lib/rule.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								node_modules/postcss/lib/rule.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,114 @@
 | 
			
		||||
import Container, { ContainerProps } from './container.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Rule {
 | 
			
		||||
  export interface RuleRaws extends Record<string, unknown> {
 | 
			
		||||
    /**
 | 
			
		||||
     * The space symbols after the last child of the node to the end of the node.
 | 
			
		||||
     */
 | 
			
		||||
    after?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The space symbols before the node. It also stores `*`
 | 
			
		||||
     * and `_` symbols before the declaration (IE hack).
 | 
			
		||||
     */
 | 
			
		||||
    before?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The symbols between the selector and `{` for rules.
 | 
			
		||||
     */
 | 
			
		||||
    between?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Contains `true` if there is semicolon after rule.
 | 
			
		||||
     */
 | 
			
		||||
    ownSemicolon?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The rule’s selector with comments.
 | 
			
		||||
     */
 | 
			
		||||
    selector?: {
 | 
			
		||||
      raw: string
 | 
			
		||||
      value: string
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Contains `true` if the last child has an (optional) semicolon.
 | 
			
		||||
     */
 | 
			
		||||
    semicolon?: boolean
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  export interface RuleProps extends ContainerProps {
 | 
			
		||||
    /** Information used to generate byte-to-byte equal node string as it was in the origin input. */
 | 
			
		||||
    raws?: RuleRaws
 | 
			
		||||
    /** Selector or selectors of the rule. */
 | 
			
		||||
    selector?: string
 | 
			
		||||
    /** Selectors of the rule represented as an array of strings. */
 | 
			
		||||
    selectors?: string[]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Rule_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Represents a CSS rule: a selector followed by a declaration block.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * Once (root, { Rule }) {
 | 
			
		||||
 *   let a = new Rule({ selector: 'a' })
 | 
			
		||||
 *   a.append(…)
 | 
			
		||||
 *   root.append(a)
 | 
			
		||||
 * }
 | 
			
		||||
 * ```
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * const root = postcss.parse('a{}')
 | 
			
		||||
 * const rule = root.first
 | 
			
		||||
 * rule.type       //=> 'rule'
 | 
			
		||||
 * rule.toString() //=> 'a{}'
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class Rule_ extends Container {
 | 
			
		||||
  nodes: NonNullable<Container['nodes']>
 | 
			
		||||
  parent: Container | undefined
 | 
			
		||||
  raws: Rule.RuleRaws
 | 
			
		||||
  /**
 | 
			
		||||
   * The rule’s full selector represented as a string.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('a, b { }')
 | 
			
		||||
   * const rule = root.first
 | 
			
		||||
   * rule.selector //=> 'a, b'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  selector: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * An array containing the rule’s individual selectors.
 | 
			
		||||
   * Groups of selectors are split at commas.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * const root = postcss.parse('a, b { }')
 | 
			
		||||
   * const rule = root.first
 | 
			
		||||
   *
 | 
			
		||||
   * rule.selector  //=> 'a, b'
 | 
			
		||||
   * rule.selectors //=> ['a', 'b']
 | 
			
		||||
   *
 | 
			
		||||
   * rule.selectors = ['a', 'strong']
 | 
			
		||||
   * rule.selector //=> 'a, strong'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  selectors: string[]
 | 
			
		||||
 | 
			
		||||
  type: 'rule'
 | 
			
		||||
 | 
			
		||||
  constructor(defaults?: Rule.RuleProps)
 | 
			
		||||
  assign(overrides: object | Rule.RuleProps): this
 | 
			
		||||
  clone(overrides?: Partial<Rule.RuleProps>): Rule
 | 
			
		||||
  cloneAfter(overrides?: Partial<Rule.RuleProps>): Rule
 | 
			
		||||
  cloneBefore(overrides?: Partial<Rule.RuleProps>): Rule
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Rule extends Rule_ {}
 | 
			
		||||
 | 
			
		||||
export = Rule
 | 
			
		||||
							
								
								
									
										27
									
								
								node_modules/postcss/lib/rule.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								node_modules/postcss/lib/rule.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Container = require('./container')
 | 
			
		||||
let list = require('./list')
 | 
			
		||||
 | 
			
		||||
class Rule extends Container {
 | 
			
		||||
  constructor(defaults) {
 | 
			
		||||
    super(defaults)
 | 
			
		||||
    this.type = 'rule'
 | 
			
		||||
    if (!this.nodes) this.nodes = []
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get selectors() {
 | 
			
		||||
    return list.comma(this.selector)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  set selectors(values) {
 | 
			
		||||
    let match = this.selector ? this.selector.match(/,\s*/) : null
 | 
			
		||||
    let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')
 | 
			
		||||
    this.selector = values.join(sep)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Rule
 | 
			
		||||
Rule.default = Rule
 | 
			
		||||
 | 
			
		||||
Container.registerRule(Rule)
 | 
			
		||||
							
								
								
									
										46
									
								
								node_modules/postcss/lib/stringifier.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								node_modules/postcss/lib/stringifier.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
import {
 | 
			
		||||
  AnyNode,
 | 
			
		||||
  AtRule,
 | 
			
		||||
  Builder,
 | 
			
		||||
  Comment,
 | 
			
		||||
  Container,
 | 
			
		||||
  Declaration,
 | 
			
		||||
  Document,
 | 
			
		||||
  Root,
 | 
			
		||||
  Rule
 | 
			
		||||
} from './postcss.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Stringifier {
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Stringifier_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Stringifier_ {
 | 
			
		||||
  builder: Builder
 | 
			
		||||
  constructor(builder: Builder)
 | 
			
		||||
  atrule(node: AtRule, semicolon?: boolean): void
 | 
			
		||||
  beforeAfter(node: AnyNode, detect: 'after' | 'before'): string
 | 
			
		||||
  block(node: AnyNode, start: string): void
 | 
			
		||||
  body(node: Container): void
 | 
			
		||||
  comment(node: Comment): void
 | 
			
		||||
  decl(node: Declaration, semicolon?: boolean): void
 | 
			
		||||
  document(node: Document): void
 | 
			
		||||
  raw(node: AnyNode, own: null | string, detect?: string): string
 | 
			
		||||
  rawBeforeClose(root: Root): string | undefined
 | 
			
		||||
  rawBeforeComment(root: Root, node: Comment): string | undefined
 | 
			
		||||
  rawBeforeDecl(root: Root, node: Declaration): string | undefined
 | 
			
		||||
  rawBeforeOpen(root: Root): string | undefined
 | 
			
		||||
  rawBeforeRule(root: Root): string | undefined
 | 
			
		||||
  rawColon(root: Root): string | undefined
 | 
			
		||||
  rawEmptyBody(root: Root): string | undefined
 | 
			
		||||
  rawIndent(root: Root): string | undefined
 | 
			
		||||
  rawSemicolon(root: Root): boolean | undefined
 | 
			
		||||
  rawValue(node: AnyNode, prop: string): string
 | 
			
		||||
  root(node: Root): void
 | 
			
		||||
  rule(node: Rule): void
 | 
			
		||||
  stringify(node: AnyNode, semicolon?: boolean): void
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Stringifier extends Stringifier_ {}
 | 
			
		||||
 | 
			
		||||
export = Stringifier
 | 
			
		||||
							
								
								
									
										353
									
								
								node_modules/postcss/lib/stringifier.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										353
									
								
								node_modules/postcss/lib/stringifier.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,353 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
const DEFAULT_RAW = {
 | 
			
		||||
  after: '\n',
 | 
			
		||||
  beforeClose: '\n',
 | 
			
		||||
  beforeComment: '\n',
 | 
			
		||||
  beforeDecl: '\n',
 | 
			
		||||
  beforeOpen: ' ',
 | 
			
		||||
  beforeRule: '\n',
 | 
			
		||||
  colon: ': ',
 | 
			
		||||
  commentLeft: ' ',
 | 
			
		||||
  commentRight: ' ',
 | 
			
		||||
  emptyBody: '',
 | 
			
		||||
  indent: '    ',
 | 
			
		||||
  semicolon: false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function capitalize(str) {
 | 
			
		||||
  return str[0].toUpperCase() + str.slice(1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class Stringifier {
 | 
			
		||||
  constructor(builder) {
 | 
			
		||||
    this.builder = builder
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  atrule(node, semicolon) {
 | 
			
		||||
    let name = '@' + node.name
 | 
			
		||||
    let params = node.params ? this.rawValue(node, 'params') : ''
 | 
			
		||||
 | 
			
		||||
    if (typeof node.raws.afterName !== 'undefined') {
 | 
			
		||||
      name += node.raws.afterName
 | 
			
		||||
    } else if (params) {
 | 
			
		||||
      name += ' '
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (node.nodes) {
 | 
			
		||||
      this.block(node, name + params)
 | 
			
		||||
    } else {
 | 
			
		||||
      let end = (node.raws.between || '') + (semicolon ? ';' : '')
 | 
			
		||||
      this.builder(name + params + end, node)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  beforeAfter(node, detect) {
 | 
			
		||||
    let value
 | 
			
		||||
    if (node.type === 'decl') {
 | 
			
		||||
      value = this.raw(node, null, 'beforeDecl')
 | 
			
		||||
    } else if (node.type === 'comment') {
 | 
			
		||||
      value = this.raw(node, null, 'beforeComment')
 | 
			
		||||
    } else if (detect === 'before') {
 | 
			
		||||
      value = this.raw(node, null, 'beforeRule')
 | 
			
		||||
    } else {
 | 
			
		||||
      value = this.raw(node, null, 'beforeClose')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let buf = node.parent
 | 
			
		||||
    let depth = 0
 | 
			
		||||
    while (buf && buf.type !== 'root') {
 | 
			
		||||
      depth += 1
 | 
			
		||||
      buf = buf.parent
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (value.includes('\n')) {
 | 
			
		||||
      let indent = this.raw(node, null, 'indent')
 | 
			
		||||
      if (indent.length) {
 | 
			
		||||
        for (let step = 0; step < depth; step++) value += indent
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  block(node, start) {
 | 
			
		||||
    let between = this.raw(node, 'between', 'beforeOpen')
 | 
			
		||||
    this.builder(start + between + '{', node, 'start')
 | 
			
		||||
 | 
			
		||||
    let after
 | 
			
		||||
    if (node.nodes && node.nodes.length) {
 | 
			
		||||
      this.body(node)
 | 
			
		||||
      after = this.raw(node, 'after')
 | 
			
		||||
    } else {
 | 
			
		||||
      after = this.raw(node, 'after', 'emptyBody')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (after) this.builder(after)
 | 
			
		||||
    this.builder('}', node, 'end')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  body(node) {
 | 
			
		||||
    let last = node.nodes.length - 1
 | 
			
		||||
    while (last > 0) {
 | 
			
		||||
      if (node.nodes[last].type !== 'comment') break
 | 
			
		||||
      last -= 1
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let semicolon = this.raw(node, 'semicolon')
 | 
			
		||||
    for (let i = 0; i < node.nodes.length; i++) {
 | 
			
		||||
      let child = node.nodes[i]
 | 
			
		||||
      let before = this.raw(child, 'before')
 | 
			
		||||
      if (before) this.builder(before)
 | 
			
		||||
      this.stringify(child, last !== i || semicolon)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  comment(node) {
 | 
			
		||||
    let left = this.raw(node, 'left', 'commentLeft')
 | 
			
		||||
    let right = this.raw(node, 'right', 'commentRight')
 | 
			
		||||
    this.builder('/*' + left + node.text + right + '*/', node)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  decl(node, semicolon) {
 | 
			
		||||
    let between = this.raw(node, 'between', 'colon')
 | 
			
		||||
    let string = node.prop + between + this.rawValue(node, 'value')
 | 
			
		||||
 | 
			
		||||
    if (node.important) {
 | 
			
		||||
      string += node.raws.important || ' !important'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (semicolon) string += ';'
 | 
			
		||||
    this.builder(string, node)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  document(node) {
 | 
			
		||||
    this.body(node)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  raw(node, own, detect) {
 | 
			
		||||
    let value
 | 
			
		||||
    if (!detect) detect = own
 | 
			
		||||
 | 
			
		||||
    // Already had
 | 
			
		||||
    if (own) {
 | 
			
		||||
      value = node.raws[own]
 | 
			
		||||
      if (typeof value !== 'undefined') return value
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let parent = node.parent
 | 
			
		||||
 | 
			
		||||
    if (detect === 'before') {
 | 
			
		||||
      // Hack for first rule in CSS
 | 
			
		||||
      if (!parent || (parent.type === 'root' && parent.first === node)) {
 | 
			
		||||
        return ''
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // `root` nodes in `document` should use only their own raws
 | 
			
		||||
      if (parent && parent.type === 'document') {
 | 
			
		||||
        return ''
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Floating child without parent
 | 
			
		||||
    if (!parent) return DEFAULT_RAW[detect]
 | 
			
		||||
 | 
			
		||||
    // Detect style by other nodes
 | 
			
		||||
    let root = node.root()
 | 
			
		||||
    if (!root.rawCache) root.rawCache = {}
 | 
			
		||||
    if (typeof root.rawCache[detect] !== 'undefined') {
 | 
			
		||||
      return root.rawCache[detect]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (detect === 'before' || detect === 'after') {
 | 
			
		||||
      return this.beforeAfter(node, detect)
 | 
			
		||||
    } else {
 | 
			
		||||
      let method = 'raw' + capitalize(detect)
 | 
			
		||||
      if (this[method]) {
 | 
			
		||||
        value = this[method](root, node)
 | 
			
		||||
      } else {
 | 
			
		||||
        root.walk(i => {
 | 
			
		||||
          value = i.raws[own]
 | 
			
		||||
          if (typeof value !== 'undefined') return false
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (typeof value === 'undefined') value = DEFAULT_RAW[detect]
 | 
			
		||||
 | 
			
		||||
    root.rawCache[detect] = value
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rawBeforeClose(root) {
 | 
			
		||||
    let value
 | 
			
		||||
    root.walk(i => {
 | 
			
		||||
      if (i.nodes && i.nodes.length > 0) {
 | 
			
		||||
        if (typeof i.raws.after !== 'undefined') {
 | 
			
		||||
          value = i.raws.after
 | 
			
		||||
          if (value.includes('\n')) {
 | 
			
		||||
            value = value.replace(/[^\n]+$/, '')
 | 
			
		||||
          }
 | 
			
		||||
          return false
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    if (value) value = value.replace(/\S/g, '')
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rawBeforeComment(root, node) {
 | 
			
		||||
    let value
 | 
			
		||||
    root.walkComments(i => {
 | 
			
		||||
      if (typeof i.raws.before !== 'undefined') {
 | 
			
		||||
        value = i.raws.before
 | 
			
		||||
        if (value.includes('\n')) {
 | 
			
		||||
          value = value.replace(/[^\n]+$/, '')
 | 
			
		||||
        }
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    if (typeof value === 'undefined') {
 | 
			
		||||
      value = this.raw(node, null, 'beforeDecl')
 | 
			
		||||
    } else if (value) {
 | 
			
		||||
      value = value.replace(/\S/g, '')
 | 
			
		||||
    }
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rawBeforeDecl(root, node) {
 | 
			
		||||
    let value
 | 
			
		||||
    root.walkDecls(i => {
 | 
			
		||||
      if (typeof i.raws.before !== 'undefined') {
 | 
			
		||||
        value = i.raws.before
 | 
			
		||||
        if (value.includes('\n')) {
 | 
			
		||||
          value = value.replace(/[^\n]+$/, '')
 | 
			
		||||
        }
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    if (typeof value === 'undefined') {
 | 
			
		||||
      value = this.raw(node, null, 'beforeRule')
 | 
			
		||||
    } else if (value) {
 | 
			
		||||
      value = value.replace(/\S/g, '')
 | 
			
		||||
    }
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rawBeforeOpen(root) {
 | 
			
		||||
    let value
 | 
			
		||||
    root.walk(i => {
 | 
			
		||||
      if (i.type !== 'decl') {
 | 
			
		||||
        value = i.raws.between
 | 
			
		||||
        if (typeof value !== 'undefined') return false
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rawBeforeRule(root) {
 | 
			
		||||
    let value
 | 
			
		||||
    root.walk(i => {
 | 
			
		||||
      if (i.nodes && (i.parent !== root || root.first !== i)) {
 | 
			
		||||
        if (typeof i.raws.before !== 'undefined') {
 | 
			
		||||
          value = i.raws.before
 | 
			
		||||
          if (value.includes('\n')) {
 | 
			
		||||
            value = value.replace(/[^\n]+$/, '')
 | 
			
		||||
          }
 | 
			
		||||
          return false
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    if (value) value = value.replace(/\S/g, '')
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rawColon(root) {
 | 
			
		||||
    let value
 | 
			
		||||
    root.walkDecls(i => {
 | 
			
		||||
      if (typeof i.raws.between !== 'undefined') {
 | 
			
		||||
        value = i.raws.between.replace(/[^\s:]/g, '')
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rawEmptyBody(root) {
 | 
			
		||||
    let value
 | 
			
		||||
    root.walk(i => {
 | 
			
		||||
      if (i.nodes && i.nodes.length === 0) {
 | 
			
		||||
        value = i.raws.after
 | 
			
		||||
        if (typeof value !== 'undefined') return false
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rawIndent(root) {
 | 
			
		||||
    if (root.raws.indent) return root.raws.indent
 | 
			
		||||
    let value
 | 
			
		||||
    root.walk(i => {
 | 
			
		||||
      let p = i.parent
 | 
			
		||||
      if (p && p !== root && p.parent && p.parent === root) {
 | 
			
		||||
        if (typeof i.raws.before !== 'undefined') {
 | 
			
		||||
          let parts = i.raws.before.split('\n')
 | 
			
		||||
          value = parts[parts.length - 1]
 | 
			
		||||
          value = value.replace(/\S/g, '')
 | 
			
		||||
          return false
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rawSemicolon(root) {
 | 
			
		||||
    let value
 | 
			
		||||
    root.walk(i => {
 | 
			
		||||
      if (i.nodes && i.nodes.length && i.last.type === 'decl') {
 | 
			
		||||
        value = i.raws.semicolon
 | 
			
		||||
        if (typeof value !== 'undefined') return false
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rawValue(node, prop) {
 | 
			
		||||
    let value = node[prop]
 | 
			
		||||
    let raw = node.raws[prop]
 | 
			
		||||
    if (raw && raw.value === value) {
 | 
			
		||||
      return raw.raw
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  root(node) {
 | 
			
		||||
    this.body(node)
 | 
			
		||||
    if (node.raws.after) this.builder(node.raws.after)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  rule(node) {
 | 
			
		||||
    this.block(node, this.rawValue(node, 'selector'))
 | 
			
		||||
    if (node.raws.ownSemicolon) {
 | 
			
		||||
      this.builder(node.raws.ownSemicolon, node, 'end')
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  stringify(node, semicolon) {
 | 
			
		||||
    /* c8 ignore start */
 | 
			
		||||
    if (!this[node.type]) {
 | 
			
		||||
      throw new Error(
 | 
			
		||||
        'Unknown AST node type ' +
 | 
			
		||||
          node.type +
 | 
			
		||||
          '. ' +
 | 
			
		||||
          'Maybe you need to change PostCSS stringifier.'
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
    /* c8 ignore stop */
 | 
			
		||||
    this[node.type](node, semicolon)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Stringifier
 | 
			
		||||
Stringifier.default = Stringifier
 | 
			
		||||
							
								
								
									
										9
									
								
								node_modules/postcss/lib/stringify.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								node_modules/postcss/lib/stringify.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
import { Stringifier } from './postcss.js'
 | 
			
		||||
 | 
			
		||||
interface Stringify extends Stringifier {
 | 
			
		||||
  default: Stringify
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare const stringify: Stringify
 | 
			
		||||
 | 
			
		||||
export = stringify
 | 
			
		||||
							
								
								
									
										11
									
								
								node_modules/postcss/lib/stringify.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								node_modules/postcss/lib/stringify.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let Stringifier = require('./stringifier')
 | 
			
		||||
 | 
			
		||||
function stringify(node, builder) {
 | 
			
		||||
  let str = new Stringifier(builder)
 | 
			
		||||
  str.stringify(node)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = stringify
 | 
			
		||||
stringify.default = stringify
 | 
			
		||||
							
								
								
									
										5
									
								
								node_modules/postcss/lib/symbols.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								node_modules/postcss/lib/symbols.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
module.exports.isClean = Symbol('isClean')
 | 
			
		||||
 | 
			
		||||
module.exports.my = Symbol('my')
 | 
			
		||||
							
								
								
									
										70
									
								
								node_modules/postcss/lib/terminal-highlight.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								node_modules/postcss/lib/terminal-highlight.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let pico = require('picocolors')
 | 
			
		||||
 | 
			
		||||
let tokenizer = require('./tokenize')
 | 
			
		||||
 | 
			
		||||
let Input
 | 
			
		||||
 | 
			
		||||
function registerInput(dependant) {
 | 
			
		||||
  Input = dependant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const HIGHLIGHT_THEME = {
 | 
			
		||||
  ';': pico.yellow,
 | 
			
		||||
  ':': pico.yellow,
 | 
			
		||||
  '(': pico.cyan,
 | 
			
		||||
  ')': pico.cyan,
 | 
			
		||||
  '[': pico.yellow,
 | 
			
		||||
  ']': pico.yellow,
 | 
			
		||||
  '{': pico.yellow,
 | 
			
		||||
  '}': pico.yellow,
 | 
			
		||||
  'at-word': pico.cyan,
 | 
			
		||||
  'brackets': pico.cyan,
 | 
			
		||||
  'call': pico.cyan,
 | 
			
		||||
  'class': pico.yellow,
 | 
			
		||||
  'comment': pico.gray,
 | 
			
		||||
  'hash': pico.magenta,
 | 
			
		||||
  'string': pico.green
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getTokenType([type, value], processor) {
 | 
			
		||||
  if (type === 'word') {
 | 
			
		||||
    if (value[0] === '.') {
 | 
			
		||||
      return 'class'
 | 
			
		||||
    }
 | 
			
		||||
    if (value[0] === '#') {
 | 
			
		||||
      return 'hash'
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!processor.endOfFile()) {
 | 
			
		||||
    let next = processor.nextToken()
 | 
			
		||||
    processor.back(next)
 | 
			
		||||
    if (next[0] === 'brackets' || next[0] === '(') return 'call'
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return type
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function terminalHighlight(css) {
 | 
			
		||||
  let processor = tokenizer(new Input(css), { ignoreErrors: true })
 | 
			
		||||
  let result = ''
 | 
			
		||||
  while (!processor.endOfFile()) {
 | 
			
		||||
    let token = processor.nextToken()
 | 
			
		||||
    let color = HIGHLIGHT_THEME[getTokenType(token, processor)]
 | 
			
		||||
    if (color) {
 | 
			
		||||
      result += token[1]
 | 
			
		||||
        .split(/\r?\n/)
 | 
			
		||||
        .map(i => color(i))
 | 
			
		||||
        .join('\n')
 | 
			
		||||
    } else {
 | 
			
		||||
      result += token[1]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return result
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
terminalHighlight.registerInput = registerInput
 | 
			
		||||
 | 
			
		||||
module.exports = terminalHighlight
 | 
			
		||||
							
								
								
									
										266
									
								
								node_modules/postcss/lib/tokenize.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										266
									
								
								node_modules/postcss/lib/tokenize.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,266 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
const SINGLE_QUOTE = "'".charCodeAt(0)
 | 
			
		||||
const DOUBLE_QUOTE = '"'.charCodeAt(0)
 | 
			
		||||
const BACKSLASH = '\\'.charCodeAt(0)
 | 
			
		||||
const SLASH = '/'.charCodeAt(0)
 | 
			
		||||
const NEWLINE = '\n'.charCodeAt(0)
 | 
			
		||||
const SPACE = ' '.charCodeAt(0)
 | 
			
		||||
const FEED = '\f'.charCodeAt(0)
 | 
			
		||||
const TAB = '\t'.charCodeAt(0)
 | 
			
		||||
const CR = '\r'.charCodeAt(0)
 | 
			
		||||
const OPEN_SQUARE = '['.charCodeAt(0)
 | 
			
		||||
const CLOSE_SQUARE = ']'.charCodeAt(0)
 | 
			
		||||
const OPEN_PARENTHESES = '('.charCodeAt(0)
 | 
			
		||||
const CLOSE_PARENTHESES = ')'.charCodeAt(0)
 | 
			
		||||
const OPEN_CURLY = '{'.charCodeAt(0)
 | 
			
		||||
const CLOSE_CURLY = '}'.charCodeAt(0)
 | 
			
		||||
const SEMICOLON = ';'.charCodeAt(0)
 | 
			
		||||
const ASTERISK = '*'.charCodeAt(0)
 | 
			
		||||
const COLON = ':'.charCodeAt(0)
 | 
			
		||||
const AT = '@'.charCodeAt(0)
 | 
			
		||||
 | 
			
		||||
const RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g
 | 
			
		||||
const RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g
 | 
			
		||||
const RE_BAD_BRACKET = /.[\r\n"'(/\\]/
 | 
			
		||||
const RE_HEX_ESCAPE = /[\da-f]/i
 | 
			
		||||
 | 
			
		||||
module.exports = function tokenizer(input, options = {}) {
 | 
			
		||||
  let css = input.css.valueOf()
 | 
			
		||||
  let ignore = options.ignoreErrors
 | 
			
		||||
 | 
			
		||||
  let code, next, quote, content, escape
 | 
			
		||||
  let escaped, escapePos, prev, n, currentToken
 | 
			
		||||
 | 
			
		||||
  let length = css.length
 | 
			
		||||
  let pos = 0
 | 
			
		||||
  let buffer = []
 | 
			
		||||
  let returned = []
 | 
			
		||||
 | 
			
		||||
  function position() {
 | 
			
		||||
    return pos
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function unclosed(what) {
 | 
			
		||||
    throw input.error('Unclosed ' + what, pos)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function endOfFile() {
 | 
			
		||||
    return returned.length === 0 && pos >= length
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function nextToken(opts) {
 | 
			
		||||
    if (returned.length) return returned.pop()
 | 
			
		||||
    if (pos >= length) return
 | 
			
		||||
 | 
			
		||||
    let ignoreUnclosed = opts ? opts.ignoreUnclosed : false
 | 
			
		||||
 | 
			
		||||
    code = css.charCodeAt(pos)
 | 
			
		||||
 | 
			
		||||
    switch (code) {
 | 
			
		||||
      case NEWLINE:
 | 
			
		||||
      case SPACE:
 | 
			
		||||
      case TAB:
 | 
			
		||||
      case CR:
 | 
			
		||||
      case FEED: {
 | 
			
		||||
        next = pos
 | 
			
		||||
        do {
 | 
			
		||||
          next += 1
 | 
			
		||||
          code = css.charCodeAt(next)
 | 
			
		||||
        } while (
 | 
			
		||||
          code === SPACE ||
 | 
			
		||||
          code === NEWLINE ||
 | 
			
		||||
          code === TAB ||
 | 
			
		||||
          code === CR ||
 | 
			
		||||
          code === FEED
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        currentToken = ['space', css.slice(pos, next)]
 | 
			
		||||
        pos = next - 1
 | 
			
		||||
        break
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      case OPEN_SQUARE:
 | 
			
		||||
      case CLOSE_SQUARE:
 | 
			
		||||
      case OPEN_CURLY:
 | 
			
		||||
      case CLOSE_CURLY:
 | 
			
		||||
      case COLON:
 | 
			
		||||
      case SEMICOLON:
 | 
			
		||||
      case CLOSE_PARENTHESES: {
 | 
			
		||||
        let controlChar = String.fromCharCode(code)
 | 
			
		||||
        currentToken = [controlChar, controlChar, pos]
 | 
			
		||||
        break
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      case OPEN_PARENTHESES: {
 | 
			
		||||
        prev = buffer.length ? buffer.pop()[1] : ''
 | 
			
		||||
        n = css.charCodeAt(pos + 1)
 | 
			
		||||
        if (
 | 
			
		||||
          prev === 'url' &&
 | 
			
		||||
          n !== SINGLE_QUOTE &&
 | 
			
		||||
          n !== DOUBLE_QUOTE &&
 | 
			
		||||
          n !== SPACE &&
 | 
			
		||||
          n !== NEWLINE &&
 | 
			
		||||
          n !== TAB &&
 | 
			
		||||
          n !== FEED &&
 | 
			
		||||
          n !== CR
 | 
			
		||||
        ) {
 | 
			
		||||
          next = pos
 | 
			
		||||
          do {
 | 
			
		||||
            escaped = false
 | 
			
		||||
            next = css.indexOf(')', next + 1)
 | 
			
		||||
            if (next === -1) {
 | 
			
		||||
              if (ignore || ignoreUnclosed) {
 | 
			
		||||
                next = pos
 | 
			
		||||
                break
 | 
			
		||||
              } else {
 | 
			
		||||
                unclosed('bracket')
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            escapePos = next
 | 
			
		||||
            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
 | 
			
		||||
              escapePos -= 1
 | 
			
		||||
              escaped = !escaped
 | 
			
		||||
            }
 | 
			
		||||
          } while (escaped)
 | 
			
		||||
 | 
			
		||||
          currentToken = ['brackets', css.slice(pos, next + 1), pos, next]
 | 
			
		||||
 | 
			
		||||
          pos = next
 | 
			
		||||
        } else {
 | 
			
		||||
          next = css.indexOf(')', pos + 1)
 | 
			
		||||
          content = css.slice(pos, next + 1)
 | 
			
		||||
 | 
			
		||||
          if (next === -1 || RE_BAD_BRACKET.test(content)) {
 | 
			
		||||
            currentToken = ['(', '(', pos]
 | 
			
		||||
          } else {
 | 
			
		||||
            currentToken = ['brackets', content, pos, next]
 | 
			
		||||
            pos = next
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        break
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      case SINGLE_QUOTE:
 | 
			
		||||
      case DOUBLE_QUOTE: {
 | 
			
		||||
        quote = code === SINGLE_QUOTE ? "'" : '"'
 | 
			
		||||
        next = pos
 | 
			
		||||
        do {
 | 
			
		||||
          escaped = false
 | 
			
		||||
          next = css.indexOf(quote, next + 1)
 | 
			
		||||
          if (next === -1) {
 | 
			
		||||
            if (ignore || ignoreUnclosed) {
 | 
			
		||||
              next = pos + 1
 | 
			
		||||
              break
 | 
			
		||||
            } else {
 | 
			
		||||
              unclosed('string')
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          escapePos = next
 | 
			
		||||
          while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
 | 
			
		||||
            escapePos -= 1
 | 
			
		||||
            escaped = !escaped
 | 
			
		||||
          }
 | 
			
		||||
        } while (escaped)
 | 
			
		||||
 | 
			
		||||
        currentToken = ['string', css.slice(pos, next + 1), pos, next]
 | 
			
		||||
        pos = next
 | 
			
		||||
        break
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      case AT: {
 | 
			
		||||
        RE_AT_END.lastIndex = pos + 1
 | 
			
		||||
        RE_AT_END.test(css)
 | 
			
		||||
        if (RE_AT_END.lastIndex === 0) {
 | 
			
		||||
          next = css.length - 1
 | 
			
		||||
        } else {
 | 
			
		||||
          next = RE_AT_END.lastIndex - 2
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        currentToken = ['at-word', css.slice(pos, next + 1), pos, next]
 | 
			
		||||
 | 
			
		||||
        pos = next
 | 
			
		||||
        break
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      case BACKSLASH: {
 | 
			
		||||
        next = pos
 | 
			
		||||
        escape = true
 | 
			
		||||
        while (css.charCodeAt(next + 1) === BACKSLASH) {
 | 
			
		||||
          next += 1
 | 
			
		||||
          escape = !escape
 | 
			
		||||
        }
 | 
			
		||||
        code = css.charCodeAt(next + 1)
 | 
			
		||||
        if (
 | 
			
		||||
          escape &&
 | 
			
		||||
          code !== SLASH &&
 | 
			
		||||
          code !== SPACE &&
 | 
			
		||||
          code !== NEWLINE &&
 | 
			
		||||
          code !== TAB &&
 | 
			
		||||
          code !== CR &&
 | 
			
		||||
          code !== FEED
 | 
			
		||||
        ) {
 | 
			
		||||
          next += 1
 | 
			
		||||
          if (RE_HEX_ESCAPE.test(css.charAt(next))) {
 | 
			
		||||
            while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {
 | 
			
		||||
              next += 1
 | 
			
		||||
            }
 | 
			
		||||
            if (css.charCodeAt(next + 1) === SPACE) {
 | 
			
		||||
              next += 1
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        currentToken = ['word', css.slice(pos, next + 1), pos, next]
 | 
			
		||||
 | 
			
		||||
        pos = next
 | 
			
		||||
        break
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      default: {
 | 
			
		||||
        if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {
 | 
			
		||||
          next = css.indexOf('*/', pos + 2) + 1
 | 
			
		||||
          if (next === 0) {
 | 
			
		||||
            if (ignore || ignoreUnclosed) {
 | 
			
		||||
              next = css.length
 | 
			
		||||
            } else {
 | 
			
		||||
              unclosed('comment')
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          currentToken = ['comment', css.slice(pos, next + 1), pos, next]
 | 
			
		||||
          pos = next
 | 
			
		||||
        } else {
 | 
			
		||||
          RE_WORD_END.lastIndex = pos + 1
 | 
			
		||||
          RE_WORD_END.test(css)
 | 
			
		||||
          if (RE_WORD_END.lastIndex === 0) {
 | 
			
		||||
            next = css.length - 1
 | 
			
		||||
          } else {
 | 
			
		||||
            next = RE_WORD_END.lastIndex - 2
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          currentToken = ['word', css.slice(pos, next + 1), pos, next]
 | 
			
		||||
          buffer.push(currentToken)
 | 
			
		||||
          pos = next
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        break
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pos++
 | 
			
		||||
    return currentToken
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function back(token) {
 | 
			
		||||
    returned.push(token)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return {
 | 
			
		||||
    back,
 | 
			
		||||
    endOfFile,
 | 
			
		||||
    nextToken,
 | 
			
		||||
    position
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								node_modules/postcss/lib/warn-once.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								node_modules/postcss/lib/warn-once.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
/* eslint-disable no-console */
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
let printed = {}
 | 
			
		||||
 | 
			
		||||
module.exports = function warnOnce(message) {
 | 
			
		||||
  if (printed[message]) return
 | 
			
		||||
  printed[message] = true
 | 
			
		||||
 | 
			
		||||
  if (typeof console !== 'undefined' && console.warn) {
 | 
			
		||||
    console.warn(message)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										147
									
								
								node_modules/postcss/lib/warning.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								node_modules/postcss/lib/warning.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,147 @@
 | 
			
		||||
import { RangePosition } from './css-syntax-error.js'
 | 
			
		||||
import Node from './node.js'
 | 
			
		||||
 | 
			
		||||
declare namespace Warning {
 | 
			
		||||
  export interface WarningOptions {
 | 
			
		||||
    /**
 | 
			
		||||
     * End position, exclusive, in CSS node string that caused the warning.
 | 
			
		||||
     */
 | 
			
		||||
    end?: RangePosition
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * End index, exclusive, in CSS node string that caused the warning.
 | 
			
		||||
     */
 | 
			
		||||
    endIndex?: number
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Start index, inclusive, in CSS node string that caused the warning.
 | 
			
		||||
     */
 | 
			
		||||
    index?: number
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * CSS node that caused the warning.
 | 
			
		||||
     */
 | 
			
		||||
    node?: Node
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Name of the plugin that created this warning. `Result#warn` fills
 | 
			
		||||
     * this property automatically.
 | 
			
		||||
     */
 | 
			
		||||
    plugin?: string
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Start position, inclusive, in CSS node string that caused the warning.
 | 
			
		||||
     */
 | 
			
		||||
    start?: RangePosition
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Word in CSS source that caused the warning.
 | 
			
		||||
     */
 | 
			
		||||
    word?: string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
			
		||||
  export { Warning_ as default }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Represents a plugin’s warning. It can be created using `Node#warn`.
 | 
			
		||||
 *
 | 
			
		||||
 * ```js
 | 
			
		||||
 * if (decl.important) {
 | 
			
		||||
 *   decl.warn(result, 'Avoid !important', { word: '!important' })
 | 
			
		||||
 * }
 | 
			
		||||
 * ```
 | 
			
		||||
 */
 | 
			
		||||
declare class Warning_ {
 | 
			
		||||
  /**
 | 
			
		||||
   * Column for inclusive start position in the input file with this warning’s source.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * warning.column //=> 6
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  column: number
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Column for exclusive end position in the input file with this warning’s source.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * warning.endColumn //=> 4
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  endColumn?: number
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Line for exclusive end position in the input file with this warning’s source.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * warning.endLine //=> 6
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  endLine?: number
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Line for inclusive start position in the input file with this warning’s source.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * warning.line //=> 5
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  line: number
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Contains the CSS node that caused the warning.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * warning.node.toString() //=> 'color: white !important'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  node: Node
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The name of the plugin that created this warning.
 | 
			
		||||
   * When you call `Node#warn` it will fill this property automatically.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * warning.plugin //=> 'postcss-important'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  plugin: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The warning message.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * warning.text //=> 'Try to avoid !important'
 | 
			
		||||
   * ```
 | 
			
		||||
   */
 | 
			
		||||
  text: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Type to filter warnings from `Result#messages`.
 | 
			
		||||
   * Always equal to `"warning"`.
 | 
			
		||||
   */
 | 
			
		||||
  type: 'warning'
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * @param text Warning message.
 | 
			
		||||
   * @param opts Warning options.
 | 
			
		||||
   */
 | 
			
		||||
  constructor(text: string, opts?: Warning.WarningOptions)
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns a warning position and message.
 | 
			
		||||
   *
 | 
			
		||||
   * ```js
 | 
			
		||||
   * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'
 | 
			
		||||
   * ```
 | 
			
		||||
   *
 | 
			
		||||
   * @return Warning position and message.
 | 
			
		||||
   */
 | 
			
		||||
  toString(): string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare class Warning extends Warning_ {}
 | 
			
		||||
 | 
			
		||||
export = Warning
 | 
			
		||||
							
								
								
									
										37
									
								
								node_modules/postcss/lib/warning.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								node_modules/postcss/lib/warning.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
class Warning {
 | 
			
		||||
  constructor(text, opts = {}) {
 | 
			
		||||
    this.type = 'warning'
 | 
			
		||||
    this.text = text
 | 
			
		||||
 | 
			
		||||
    if (opts.node && opts.node.source) {
 | 
			
		||||
      let range = opts.node.rangeBy(opts)
 | 
			
		||||
      this.line = range.start.line
 | 
			
		||||
      this.column = range.start.column
 | 
			
		||||
      this.endLine = range.end.line
 | 
			
		||||
      this.endColumn = range.end.column
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (let opt in opts) this[opt] = opts[opt]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  toString() {
 | 
			
		||||
    if (this.node) {
 | 
			
		||||
      return this.node.error(this.text, {
 | 
			
		||||
        index: this.index,
 | 
			
		||||
        plugin: this.plugin,
 | 
			
		||||
        word: this.word
 | 
			
		||||
      }).message
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.plugin) {
 | 
			
		||||
      return this.plugin + ': ' + this.text
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return this.text
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = Warning
 | 
			
		||||
Warning.default = Warning
 | 
			
		||||
		Reference in New Issue
	
	Block a user