aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/postcss/lib
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
commitafa87af01c79a9baa539f2992d32154d2a4739bd (patch)
tree92c7416db734270a2fee1d72ee9cc119379ff8e1 /vanilla/node_modules/postcss/lib
parent3b927e84d200402281f68181cd4253bc77e5528d (diff)
downloadneko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.gz
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.bz2
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.zip
task: delete vanilla js prototype\n\n- Removed vanilla/ directory and web/dist/vanilla directory\n- Updated Makefile, Dockerfile, and CI workflow to remove vanilla references\n- Cleaned up web/web.go to remove vanilla embed and routes\n- Verified build and tests pass\n\nCloses NK-2tcnmq
Diffstat (limited to 'vanilla/node_modules/postcss/lib')
-rw-r--r--vanilla/node_modules/postcss/lib/at-rule.d.ts140
-rw-r--r--vanilla/node_modules/postcss/lib/at-rule.js25
-rw-r--r--vanilla/node_modules/postcss/lib/comment.d.ts68
-rw-r--r--vanilla/node_modules/postcss/lib/comment.js13
-rw-r--r--vanilla/node_modules/postcss/lib/container.d.ts483
-rw-r--r--vanilla/node_modules/postcss/lib/container.js447
-rw-r--r--vanilla/node_modules/postcss/lib/css-syntax-error.d.ts248
-rw-r--r--vanilla/node_modules/postcss/lib/css-syntax-error.js133
-rw-r--r--vanilla/node_modules/postcss/lib/declaration.d.ts151
-rw-r--r--vanilla/node_modules/postcss/lib/declaration.js24
-rw-r--r--vanilla/node_modules/postcss/lib/document.d.ts69
-rw-r--r--vanilla/node_modules/postcss/lib/document.js33
-rw-r--r--vanilla/node_modules/postcss/lib/fromJSON.d.ts9
-rw-r--r--vanilla/node_modules/postcss/lib/fromJSON.js54
-rw-r--r--vanilla/node_modules/postcss/lib/input.d.ts227
-rw-r--r--vanilla/node_modules/postcss/lib/input.js265
-rw-r--r--vanilla/node_modules/postcss/lib/lazy-result.d.ts190
-rw-r--r--vanilla/node_modules/postcss/lib/lazy-result.js550
-rw-r--r--vanilla/node_modules/postcss/lib/list.d.ts60
-rw-r--r--vanilla/node_modules/postcss/lib/list.js58
-rw-r--r--vanilla/node_modules/postcss/lib/map-generator.js368
-rw-r--r--vanilla/node_modules/postcss/lib/no-work-result.d.ts46
-rw-r--r--vanilla/node_modules/postcss/lib/no-work-result.js138
-rw-r--r--vanilla/node_modules/postcss/lib/node.d.ts556
-rw-r--r--vanilla/node_modules/postcss/lib/node.js449
-rw-r--r--vanilla/node_modules/postcss/lib/parse.d.ts9
-rw-r--r--vanilla/node_modules/postcss/lib/parse.js42
-rw-r--r--vanilla/node_modules/postcss/lib/parser.js611
-rw-r--r--vanilla/node_modules/postcss/lib/postcss.d.mts69
-rw-r--r--vanilla/node_modules/postcss/lib/postcss.d.ts458
-rw-r--r--vanilla/node_modules/postcss/lib/postcss.js101
-rw-r--r--vanilla/node_modules/postcss/lib/postcss.mjs30
-rw-r--r--vanilla/node_modules/postcss/lib/previous-map.d.ts81
-rw-r--r--vanilla/node_modules/postcss/lib/previous-map.js144
-rw-r--r--vanilla/node_modules/postcss/lib/processor.d.ts115
-rw-r--r--vanilla/node_modules/postcss/lib/processor.js67
-rw-r--r--vanilla/node_modules/postcss/lib/result.d.ts205
-rw-r--r--vanilla/node_modules/postcss/lib/result.js42
-rw-r--r--vanilla/node_modules/postcss/lib/root.d.ts87
-rw-r--r--vanilla/node_modules/postcss/lib/root.js61
-rw-r--r--vanilla/node_modules/postcss/lib/rule.d.ts126
-rw-r--r--vanilla/node_modules/postcss/lib/rule.js27
-rw-r--r--vanilla/node_modules/postcss/lib/stringifier.d.ts46
-rw-r--r--vanilla/node_modules/postcss/lib/stringifier.js353
-rw-r--r--vanilla/node_modules/postcss/lib/stringify.d.ts9
-rw-r--r--vanilla/node_modules/postcss/lib/stringify.js11
-rw-r--r--vanilla/node_modules/postcss/lib/symbols.js5
-rw-r--r--vanilla/node_modules/postcss/lib/terminal-highlight.js70
-rw-r--r--vanilla/node_modules/postcss/lib/tokenize.js266
-rw-r--r--vanilla/node_modules/postcss/lib/warn-once.js13
-rw-r--r--vanilla/node_modules/postcss/lib/warning.d.ts147
-rw-r--r--vanilla/node_modules/postcss/lib/warning.js37
52 files changed, 0 insertions, 8036 deletions
diff --git a/vanilla/node_modules/postcss/lib/at-rule.d.ts b/vanilla/node_modules/postcss/lib/at-rule.d.ts
deleted file mode 100644
index 89fb505..0000000
--- a/vanilla/node_modules/postcss/lib/at-rule.d.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-import Container, {
- ContainerProps,
- ContainerWithChildren
-} 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 {
- /**
- * 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'] | undefined
- parent: ContainerWithChildren | undefined
-
- raws: AtRule.AtRuleRaws
- type: 'atrule'
- /**
- * The at-rule’s name immediately follows the `@`.
- *
- * ```js
- * const root = postcss.parse('@media print {}')
- * const media = root.first
- * media.name //=> 'media'
- * ```
- */
- get name(): string
- set name(value: string)
-
- /**
- * 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'
- * ```
- */
- get params(): string
-
- set params(value: string)
-
- constructor(defaults?: AtRule.AtRuleProps)
- assign(overrides: AtRule.AtRuleProps | object): this
- clone(overrides?: Partial<AtRule.AtRuleProps>): this
- cloneAfter(overrides?: Partial<AtRule.AtRuleProps>): this
- cloneBefore(overrides?: Partial<AtRule.AtRuleProps>): this
-}
-
-declare class AtRule extends AtRule_ {}
-
-export = AtRule
diff --git a/vanilla/node_modules/postcss/lib/at-rule.js b/vanilla/node_modules/postcss/lib/at-rule.js
deleted file mode 100644
index 9486447..0000000
--- a/vanilla/node_modules/postcss/lib/at-rule.js
+++ /dev/null
@@ -1,25 +0,0 @@
-'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)
diff --git a/vanilla/node_modules/postcss/lib/comment.d.ts b/vanilla/node_modules/postcss/lib/comment.d.ts
deleted file mode 100644
index 6f1f66f..0000000
--- a/vanilla/node_modules/postcss/lib/comment.d.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-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
- type: 'comment'
- /**
- * The comment's text.
- */
- get text(): string
-
- set text(value: string)
-
- constructor(defaults?: Comment.CommentProps)
- assign(overrides: Comment.CommentProps | object): this
- clone(overrides?: Partial<Comment.CommentProps>): this
- cloneAfter(overrides?: Partial<Comment.CommentProps>): this
- cloneBefore(overrides?: Partial<Comment.CommentProps>): this
-}
-
-declare class Comment extends Comment_ {}
-
-export = Comment
diff --git a/vanilla/node_modules/postcss/lib/comment.js b/vanilla/node_modules/postcss/lib/comment.js
deleted file mode 100644
index c566506..0000000
--- a/vanilla/node_modules/postcss/lib/comment.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict'
-
-let Node = require('./node')
-
-class Comment extends Node {
- constructor(defaults) {
- super(defaults)
- this.type = 'comment'
- }
-}
-
-module.exports = Comment
-Comment.default = Comment
diff --git a/vanilla/node_modules/postcss/lib/container.d.ts b/vanilla/node_modules/postcss/lib/container.d.ts
deleted file mode 100644
index c2b310b..0000000
--- a/vanilla/node_modules/postcss/lib/container.d.ts
+++ /dev/null
@@ -1,483 +0,0 @@
-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 { Root } from './postcss.js'
-import Rule from './rule.js'
-
-declare namespace Container {
- export type ContainerWithChildren<Child extends Node = ChildNode> = {
- nodes: Child[]
- } & (
- | AtRule
- | Root
- | Rule
- )
-
- 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?: readonly string[]
- }
-
- export interface ContainerProps extends NodeProps {
- nodes?: readonly (ChildProps | Node)[]
- }
-
- /**
- * All types that can be passed into container methods to create or add a new
- * child node.
- */
- export type NewChild =
- | ChildProps
- | Node
- | readonly ChildProps[]
- | readonly Node[]
- | readonly string[]
- | string
- | undefined
-
- // 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
-
- /**
- * 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
- /**
- * 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: Container.NewChild[]): this
- assign(overrides: Container.ContainerProps | object): this
- clone(overrides?: Partial<Container.ContainerProps>): this
-
- cloneAfter(overrides?: Partial<Container.ContainerProps>): this
-
- cloneBefore(overrides?: Partial<Container.ContainerProps>): this
- /**
- * 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: Container.NewChild): 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.
- */
-
- /**
- * 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: Container.NewChild): this
- /**
- * 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: Container.NewChild[]): 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} options Options to speed up the search.
- * @param replaced 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
- /**
- * An internal method that converts a {@link NewChild} into a list of actual
- * child nodes that can then be added to this container.
- *
- * This ensures that the nodes' parent is set to this container, that they use
- * the correct prototype chain, and that they're marked as dirty.
- *
- * @param mnodes The new node or nodes to add.
- * @param sample A node from whose raws the new node's `before` raw should be
- * taken.
- * @param type This should be set to `'prepend'` if the new nodes will be
- * inserted at the beginning of the container.
- * @hidden
- */
- protected normalize(
- nodes: Container.NewChild,
- sample: Node | undefined,
- type?: 'prepend' | false
- ): Child[]
-}
-
-declare class Container<
- Child extends Node = ChildNode
-> extends Container_<Child> {}
-
-export = Container
diff --git a/vanilla/node_modules/postcss/lib/container.js b/vanilla/node_modules/postcss/lib/container.js
deleted file mode 100644
index edb07cc..0000000
--- a/vanilla/node_modules/postcss/lib/container.js
+++ /dev/null
@@ -1,447 +0,0 @@
-'use strict'
-
-let Comment = require('./comment')
-let Declaration = require('./declaration')
-let Node = require('./node')
-let { isClean, my } = require('./symbols')
-
-let AtRule, parse, Root, Rule
-
-function cleanSource(nodes) {
- return nodes.map(i => {
- if (i.nodes) i.nodes = cleanSource(i.nodes)
- delete i.source
- return i
- })
-}
-
-function markTreeDirty(node) {
- node[isClean] = false
- if (node.proxyOf.nodes) {
- for (let i of node.proxyOf.nodes) {
- markTreeDirty(i)
- }
- }
-}
-
-class Container extends Node {
- 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]
- }
-
- 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 (typeof nodes === 'undefined') {
- 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.selectors) {
- 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]) markTreeDirty(i)
-
- if (!i.raws) i.raws = {}
- 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)
- }
- })
- }
-}
-
-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 */
diff --git a/vanilla/node_modules/postcss/lib/css-syntax-error.d.ts b/vanilla/node_modules/postcss/lib/css-syntax-error.d.ts
deleted file mode 100644
index e540d84..0000000
--- a/vanilla/node_modules/postcss/lib/css-syntax-error.d.ts
+++ /dev/null
@@ -1,248 +0,0 @@
-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_ extends Error {
- /**
- * 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
diff --git a/vanilla/node_modules/postcss/lib/css-syntax-error.js b/vanilla/node_modules/postcss/lib/css-syntax-error.js
deleted file mode 100644
index 275a4f6..0000000
--- a/vanilla/node_modules/postcss/lib/css-syntax-error.js
+++ /dev/null
@@ -1,133 +0,0 @@
-'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
-
- let aside = text => text
- let mark = text => text
- let highlight = text => text
- if (color) {
- let { bold, gray, red } = pico.createColors(true)
- mark = text => bold(red(text))
- aside = text => gray(text)
- if (terminalHighlight) {
- highlight = text => terminalHighlight(text)
- }
- }
-
- 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
-
- return lines
- .slice(start, end)
- .map((line, index) => {
- let number = start + 1 + index
- let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '
- if (number === this.line) {
- if (line.length > 160) {
- let padding = 20
- let subLineStart = Math.max(0, this.column - padding)
- let subLineEnd = Math.max(
- this.column + padding,
- this.endColumn + padding
- )
- let subLine = line.slice(subLineStart, subLineEnd)
-
- let spacing =
- aside(gutter.replace(/\d/g, ' ')) +
- line
- .slice(0, Math.min(this.column - 1, padding - 1))
- .replace(/[^\t]/g, ' ')
-
- return (
- mark('>') +
- aside(gutter) +
- highlight(subLine) +
- '\n ' +
- spacing +
- mark('^')
- )
- }
-
- let spacing =
- aside(gutter.replace(/\d/g, ' ')) +
- line.slice(0, this.column - 1).replace(/[^\t]/g, ' ')
-
- return (
- mark('>') +
- aside(gutter) +
- highlight(line) +
- '\n ' +
- spacing +
- mark('^')
- )
- }
-
- return ' ' + aside(gutter) + highlight(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
diff --git a/vanilla/node_modules/postcss/lib/declaration.d.ts b/vanilla/node_modules/postcss/lib/declaration.d.ts
deleted file mode 100644
index d489b42..0000000
--- a/vanilla/node_modules/postcss/lib/declaration.d.ts
+++ /dev/null
@@ -1,151 +0,0 @@
-import { ContainerWithChildren } 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 {
- parent: ContainerWithChildren | undefined
- raws: Declaration.DeclarationRaws
-
- type: 'decl'
-
- /**
- * 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
- * ```
- */
- get important(): boolean
- set important(value: boolean)
-
- /**
- * The property name for a CSS declaration.
- *
- * ```js
- * const root = postcss.parse('a { color: black }')
- * const decl = root.first.first
- *
- * decl.prop //=> 'color'
- * ```
- */
- get prop(): string
-
- set prop(value: string)
-
- /**
- * 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'
- * ```
- */
- get value(): string
- set value(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
- * ```
- */
- get variable(): boolean
- constructor(defaults?: Declaration.DeclarationProps)
-
- assign(overrides: Declaration.DeclarationProps | object): this
- clone(overrides?: Partial<Declaration.DeclarationProps>): this
- cloneAfter(overrides?: Partial<Declaration.DeclarationProps>): this
- cloneBefore(overrides?: Partial<Declaration.DeclarationProps>): this
-}
-
-declare class Declaration extends Declaration_ {}
-
-export = Declaration
diff --git a/vanilla/node_modules/postcss/lib/declaration.js b/vanilla/node_modules/postcss/lib/declaration.js
deleted file mode 100644
index 65a03aa..0000000
--- a/vanilla/node_modules/postcss/lib/declaration.js
+++ /dev/null
@@ -1,24 +0,0 @@
-'use strict'
-
-let Node = require('./node')
-
-class Declaration extends Node {
- get variable() {
- return this.prop.startsWith('--') || this.prop[0] === '$'
- }
-
- constructor(defaults) {
- if (
- defaults &&
- typeof defaults.value !== 'undefined' &&
- typeof defaults.value !== 'string'
- ) {
- defaults = { ...defaults, value: String(defaults.value) }
- }
- super(defaults)
- this.type = 'decl'
- }
-}
-
-module.exports = Declaration
-Declaration.default = Declaration
diff --git a/vanilla/node_modules/postcss/lib/document.d.ts b/vanilla/node_modules/postcss/lib/document.d.ts
deleted file mode 100644
index f9e8063..0000000
--- a/vanilla/node_modules/postcss/lib/document.d.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-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?: readonly 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>): this
- cloneAfter(overrides?: Partial<Document.DocumentProps>): this
- cloneBefore(overrides?: Partial<Document.DocumentProps>): this
-
- /**
- * 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
diff --git a/vanilla/node_modules/postcss/lib/document.js b/vanilla/node_modules/postcss/lib/document.js
deleted file mode 100644
index 4468991..0000000
--- a/vanilla/node_modules/postcss/lib/document.js
+++ /dev/null
@@ -1,33 +0,0 @@
-'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
diff --git a/vanilla/node_modules/postcss/lib/fromJSON.d.ts b/vanilla/node_modules/postcss/lib/fromJSON.d.ts
deleted file mode 100644
index e1deedb..0000000
--- a/vanilla/node_modules/postcss/lib/fromJSON.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { JSONHydrator } from './postcss.js'
-
-interface FromJSON extends JSONHydrator {
- default: FromJSON
-}
-
-declare const fromJSON: FromJSON
-
-export = fromJSON
diff --git a/vanilla/node_modules/postcss/lib/fromJSON.js b/vanilla/node_modules/postcss/lib/fromJSON.js
deleted file mode 100644
index c9ac1a8..0000000
--- a/vanilla/node_modules/postcss/lib/fromJSON.js
+++ /dev/null
@@ -1,54 +0,0 @@
-'use strict'
-
-let AtRule = require('./at-rule')
-let Comment = require('./comment')
-let Declaration = require('./declaration')
-let Input = require('./input')
-let PreviousMap = require('./previous-map')
-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
diff --git a/vanilla/node_modules/postcss/lib/input.d.ts b/vanilla/node_modules/postcss/lib/input.d.ts
deleted file mode 100644
index 3207da3..0000000
--- a/vanilla/node_modules/postcss/lib/input.d.ts
+++ /dev/null
@@ -1,227 +0,0 @@
-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
-
- /**
- * Offset of exclusive end position in source file.
- */
- endOffset?: number
-
- /**
- * Absolute path to the source file.
- */
- file?: string
-
- /**
- * Line of inclusive start position in source file.
- */
- line: number
-
- /**
- * Offset of inclusive start position in source file.
- */
- offset: 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
-
- /**
- * Input source with support for non-CSS documents.
- *
- * ```js
- * const input = postcss.parse('a{}', { from: file, document: '<style>a {}</style>' }).input
- * input.document //=> "<style>a {}</style>"
- * input.css //=> "a{}"
- * ```
- */
- document: 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
-
- /**
- * 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
-
- /**
- * @param css Input CSS source.
- * @param opts Process options.
- */
- constructor(css: string, opts?: ProcessOptions)
-
- /**
- * Returns `CssSyntaxError` with information about the error and its position.
- */
- error(
- message: string,
- start:
- | {
- column: number
- line: number
- }
- | {
- offset: number
- },
- end:
- | {
- column: number
- line: number
- }
- | {
- offset: number
- },
- opts?: { plugin?: CssSyntaxError['plugin'] }
- ): CssSyntaxError
- error(
- message: string,
- line: number,
- column: number,
- opts?: { plugin?: CssSyntaxError['plugin'] }
- ): CssSyntaxError
- error(
- message: string,
- offset: number,
- opts?: { plugin?: CssSyntaxError['plugin'] }
- ): CssSyntaxError
-
- /**
- * Converts source line and column to offset.
- *
- * @param line Source line.
- * @param column Source column.
- * @return Source offset.
- */
- fromLineAndColumn(line: number, column: number): number
-
- /**
- * 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
-
- /** Converts this to a JSON-friendly object representation. */
- toJSON(): object
-}
-
-declare class Input extends Input_ {}
-
-export = Input
diff --git a/vanilla/node_modules/postcss/lib/input.js b/vanilla/node_modules/postcss/lib/input.js
deleted file mode 100644
index bb0ccf5..0000000
--- a/vanilla/node_modules/postcss/lib/input.js
+++ /dev/null
@@ -1,265 +0,0 @@
-'use strict'
-
-let { nanoid } = require('nanoid/non-secure')
-let { isAbsolute, resolve } = require('path')
-let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
-let { fileURLToPath, pathToFileURL } = require('url')
-
-let CssSyntaxError = require('./css-syntax-error')
-let PreviousMap = require('./previous-map')
-let terminalHighlight = require('./terminal-highlight')
-
-let lineToIndexCache = Symbol('lineToIndexCache')
-
-let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)
-let pathAvailable = Boolean(resolve && isAbsolute)
-
-function getLineToIndex(input) {
- if (input[lineToIndexCache]) return input[lineToIndexCache]
- let lines = input.css.split('\n')
- let 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
- }
-
- input[lineToIndexCache] = lineToIndex
- return lineToIndex
-}
-
-class Input {
- get from() {
- return this.file || this.id
- }
-
- 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
- }
-
- this.document = this.css
- if (opts.document) this.document = opts.document.toString()
-
- 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 endColumn, endLine, endOffset, offset, result
-
- if (line && typeof line === 'object') {
- let start = line
- let end = column
- if (typeof start.offset === 'number') {
- offset = start.offset
- let pos = this.fromOffset(offset)
- line = pos.line
- column = pos.col
- } else {
- line = start.line
- column = start.column
- offset = this.fromLineAndColumn(line, column)
- }
- if (typeof end.offset === 'number') {
- endOffset = end.offset
- let pos = this.fromOffset(endOffset)
- endLine = pos.line
- endColumn = pos.col
- } else {
- endLine = end.line
- endColumn = end.column
- endOffset = this.fromLineAndColumn(end.line, end.column)
- }
- } else if (!column) {
- offset = line
- let pos = this.fromOffset(offset)
- line = pos.line
- column = pos.col
- } else {
- offset = this.fromLineAndColumn(line, column)
- }
-
- 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, endOffset, line, offset, source: this.css }
- if (this.file) {
- if (pathToFileURL) {
- result.input.url = pathToFileURL(this.file).toString()
- }
- result.input.file = this.file
- }
-
- return result
- }
-
- fromLineAndColumn(line, column) {
- let lineToIndex = getLineToIndex(this)
- let index = lineToIndex[line - 1]
- return index + column - 1
- }
-
- fromOffset(offset) {
- let lineToIndex = getLineToIndex(this)
- let 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
- }
-}
-
-module.exports = Input
-Input.default = Input
-
-if (terminalHighlight && terminalHighlight.registerInput) {
- terminalHighlight.registerInput(Input)
-}
diff --git a/vanilla/node_modules/postcss/lib/lazy-result.d.ts b/vanilla/node_modules/postcss/lib/lazy-result.d.ts
deleted file mode 100644
index 2eb7279..0000000
--- a/vanilla/node_modules/postcss/lib/lazy-result.d.ts
+++ /dev/null
@@ -1,190 +0,0 @@
-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']
-
- /**
- * 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
-
- /**
- * @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[]
-}
-
-declare class LazyResult<
- RootNode = Document | Root
-> extends LazyResult_<RootNode> {}
-
-export = LazyResult
diff --git a/vanilla/node_modules/postcss/lib/lazy-result.js b/vanilla/node_modules/postcss/lib/lazy-result.js
deleted file mode 100644
index 1ea52b8..0000000
--- a/vanilla/node_modules/postcss/lib/lazy-result.js
+++ /dev/null
@@ -1,550 +0,0 @@
-'use strict'
-
-let Container = require('./container')
-let Document = require('./document')
-let MapGenerator = require('./map-generator')
-let parse = require('./parse')
-let Result = require('./result')
-let Root = require('./root')
-let stringify = require('./stringify')
-let { isClean, my } = require('./symbols')
-let warnOnce = require('./warn-once')
-
-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 {
- 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'
- }
-
- 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()
- }
-}
-
-LazyResult.registerPostcss = dependant => {
- postcss = dependant
-}
-
-module.exports = LazyResult
-LazyResult.default = LazyResult
-
-Root.registerLazyResult(LazyResult)
-Document.registerLazyResult(LazyResult)
diff --git a/vanilla/node_modules/postcss/lib/list.d.ts b/vanilla/node_modules/postcss/lib/list.d.ts
deleted file mode 100644
index e262ad3..0000000
--- a/vanilla/node_modules/postcss/lib/list.d.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-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: readonly string[],
- last: boolean
- ): string[]
- }
-}
-
-declare const list: list.List
-
-export = list
diff --git a/vanilla/node_modules/postcss/lib/list.js b/vanilla/node_modules/postcss/lib/list.js
deleted file mode 100644
index 1b31f98..0000000
--- a/vanilla/node_modules/postcss/lib/list.js
+++ /dev/null
@@ -1,58 +0,0 @@
-'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
diff --git a/vanilla/node_modules/postcss/lib/map-generator.js b/vanilla/node_modules/postcss/lib/map-generator.js
deleted file mode 100644
index 89069d3..0000000
--- a/vanilla/node_modules/postcss/lib/map-generator.js
+++ /dev/null
@@ -1,368 +0,0 @@
-'use strict'
-
-let { dirname, relative, resolve, sep } = require('path')
-let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
-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.startsWith('# sourceMappingURL=')) {
- 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, {
- ignoreInvalidMapping: true
- })
- } else {
- this.map = new SourceMapGenerator({
- file: this.outputFile(),
- ignoreInvalidMapping: true
- })
- 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(),
- ignoreInvalidMapping: true
- })
-
- let line = 1
- let column = 1
-
- let noSource = '<no source>'
- let mapping = {
- generated: { column: 0, line: 0 },
- original: { column: 0, line: 0 },
- source: ''
- }
-
- let last, lines
- 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
diff --git a/vanilla/node_modules/postcss/lib/no-work-result.d.ts b/vanilla/node_modules/postcss/lib/no-work-result.d.ts
deleted file mode 100644
index 094f30a..0000000
--- a/vanilla/node_modules/postcss/lib/no-work-result.d.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-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']
- 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
- constructor(processor: Processor, css: string, opts: ResultOptions)
- async(): Promise<Result<Root>>
- sync(): Result<Root>
- toString(): string
- warnings(): Warning[]
-}
-
-declare class NoWorkResult extends NoWorkResult_ {}
-
-export = NoWorkResult
diff --git a/vanilla/node_modules/postcss/lib/no-work-result.js b/vanilla/node_modules/postcss/lib/no-work-result.js
deleted file mode 100644
index dd46182..0000000
--- a/vanilla/node_modules/postcss/lib/no-work-result.js
+++ /dev/null
@@ -1,138 +0,0 @@
-'use strict'
-
-let MapGenerator = require('./map-generator')
-let parse = require('./parse')
-const Result = require('./result')
-let stringify = require('./stringify')
-let warnOnce = require('./warn-once')
-
-class NoWorkResult {
- 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'
- }
-
- 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 []
- }
-}
-
-module.exports = NoWorkResult
-NoWorkResult.default = NoWorkResult
diff --git a/vanilla/node_modules/postcss/lib/node.d.ts b/vanilla/node_modules/postcss/lib/node.d.ts
deleted file mode 100644
index a09fe4d..0000000
--- a/vanilla/node_modules/postcss/lib/node.d.ts
+++ /dev/null
@@ -1,556 +0,0 @@
-import AtRule = require('./at-rule.js')
-import { AtRuleProps } from './at-rule.js'
-import Comment, { CommentProps } from './comment.js'
-import Container, { NewChild } 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.
- *
- * However, `end.offset` of a non `Root` node is the exclusive position.
- * See https://github.com/postcss/postcss/pull/1879 for details.
- *
- * ```js
- * const root = postcss.parse('a { color: black }')
- * const a = root.first
- * const color = a.first
- *
- * // The offset of `Root` node is the inclusive position
- * css.source.end // { line: 1, column: 19, offset: 18 }
- *
- * // The offset of non `Root` node is the exclusive position
- * a.source.end // { line: 1, column: 18, offset: 18 }
- * color.source.end // { line: 1, column: 16, offset: 16 }
- * ```
- */
- 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>*&#47;</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 | readonly Node[] | string | undefined
- ): 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 | readonly Node[] | string | undefined
- ): 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): this
-
- /**
- * 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): this
-
- /**
- * 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): this
-
- /**
- * 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, 'end' | 'endIndex' | 'index' | 'start' | '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: NewChild[]): 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
-
- /**
- * If this node isn't already dirty, marks it and its ancestors as such. This
- * indicates to the LazyResult processor that the {@link Root} has been
- * modified by the current plugin and may need to be processed again by other
- * plugins.
- */
- protected markDirty(): void
-}
-
-declare class Node extends Node_ {}
-
-export = Node
diff --git a/vanilla/node_modules/postcss/lib/node.js b/vanilla/node_modules/postcss/lib/node.js
deleted file mode 100644
index b403b71..0000000
--- a/vanilla/node_modules/postcss/lib/node.js
+++ /dev/null
@@ -1,449 +0,0 @@
-'use strict'
-
-let CssSyntaxError = require('./css-syntax-error')
-let Stringifier = require('./stringifier')
-let stringify = require('./stringify')
-let { isClean, my } = require('./symbols')
-
-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
-}
-
-function sourceOffset(inputCSS, position) {
- // Not all custom syntaxes support `offset` in `source.start` and `source.end`
- if (position && typeof position.offset !== 'undefined') {
- return position.offset
- }
-
- let column = 1
- let line = 1
- let offset = 0
-
- for (let i = 0; i < inputCSS.length; i++) {
- if (line === position.line && column === position.column) {
- offset = i
- break
- }
-
- if (inputCSS[i] === '\n') {
- column = 1
- line += 1
- } else {
- column += 1
- }
- }
-
- return offset
-}
-
-class Node {
- get proxyOf() {
- return this
- }
-
- 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
- }
- }
- }
-
- /* c8 ignore next 3 */
- markClean() {
- this[isClean] = 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 = {}) {
- let pos = this.source.start
- if (opts.index) {
- pos = this.positionInside(opts.index)
- } else if (opts.word) {
- let inputString =
- 'document' in this.source.input
- ? this.source.input.document
- : this.source.input.css
- let stringRepresentation = inputString.slice(
- sourceOffset(inputString, this.source.start),
- sourceOffset(inputString, this.source.end)
- )
- let index = stringRepresentation.indexOf(opts.word)
- if (index !== -1) pos = this.positionInside(index)
- }
- return pos
- }
-
- positionInside(index) {
- let column = this.source.start.column
- let line = this.source.start.line
- let inputString =
- 'document' in this.source.input
- ? this.source.input.document
- : this.source.input.css
- let offset = sourceOffset(inputString, this.source.start)
- let end = offset + index
-
- for (let i = offset; i < end; i++) {
- if (inputString[i] === '\n') {
- column = 1
- line += 1
- } else {
- column += 1
- }
- }
-
- return { column, line, offset: end }
- }
-
- prev() {
- if (!this.parent) return undefined
- let index = this.parent.index(this)
- return this.parent.nodes[index - 1]
- }
-
- rangeBy(opts = {}) {
- let inputString =
- 'document' in this.source.input
- ? this.source.input.document
- : this.source.input.css
- let start = {
- column: this.source.start.column,
- line: this.source.start.line,
- offset: sourceOffset(inputString, this.source.start)
- }
- let end = this.source.end
- ? {
- column: this.source.end.column + 1,
- line: this.source.end.line,
- offset:
- typeof this.source.end.offset === 'number'
- ? // `source.end.offset` is exclusive, so we don't need to add 1
- this.source.end.offset
- : // Since line/column in this.source.end is inclusive,
- // the `sourceOffset(... , this.source.end)` returns an inclusive offset.
- // So, we add 1 to convert it to exclusive.
- sourceOffset(inputString, this.source.end) + 1
- }
- : {
- column: start.column + 1,
- line: start.line,
- offset: start.offset + 1
- }
-
- if (opts.word) {
- let stringRepresentation = inputString.slice(
- sourceOffset(inputString, this.source.start),
- sourceOffset(inputString, this.source.end)
- )
- let index = stringRepresentation.indexOf(opts.word)
- if (index !== -1) {
- start = this.positionInside(index)
- end = this.positionInside(index + opts.word.length)
- }
- } else {
- if (opts.start) {
- start = {
- column: opts.start.column,
- line: opts.start.line,
- offset: sourceOffset(inputString, opts.start)
- }
- } else if (opts.index) {
- start = this.positionInside(opts.index)
- }
-
- if (opts.end) {
- end = {
- column: opts.end.column,
- line: opts.end.line,
- offset: sourceOffset(inputString, opts.end)
- }
- } else if (typeof opts.endIndex === 'number') {
- 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,
- offset: start.offset + 1
- }
- }
-
- 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') {
- if (value == null) continue
- 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)
- }
-}
-
-module.exports = Node
-Node.default = Node
diff --git a/vanilla/node_modules/postcss/lib/parse.d.ts b/vanilla/node_modules/postcss/lib/parse.d.ts
deleted file mode 100644
index 4c943a4..0000000
--- a/vanilla/node_modules/postcss/lib/parse.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Parser } from './postcss.js'
-
-interface Parse extends Parser {
- default: Parse
-}
-
-declare const parse: Parse
-
-export = parse
diff --git a/vanilla/node_modules/postcss/lib/parse.js b/vanilla/node_modules/postcss/lib/parse.js
deleted file mode 100644
index 00a1037..0000000
--- a/vanilla/node_modules/postcss/lib/parse.js
+++ /dev/null
@@ -1,42 +0,0 @@
-'use strict'
-
-let Container = require('./container')
-let Input = require('./input')
-let Parser = require('./parser')
-
-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)
diff --git a/vanilla/node_modules/postcss/lib/parser.js b/vanilla/node_modules/postcss/lib/parser.js
deleted file mode 100644
index 64fb5d8..0000000
--- a/vanilla/node_modules/postcss/lib/parser.js
+++ /dev/null
@@ -1,611 +0,0 @@
-'use strict'
-
-let AtRule = require('./at-rule')
-let Comment = require('./comment')
-let Declaration = require('./declaration')
-let Root = require('./root')
-let Rule = require('./rule')
-let tokenizer = require('./tokenize')
-
-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 prev, token, type
- 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().startsWith('!') && type !== 'space') {
- break
- }
- str = cache.pop()[1] + str
- }
- if (str.trim().startsWith('!')) {
- 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 = ''
- prev.source.end = this.getPosition(token[2])
- prev.source.end.offset += prev.raws.ownSemicolon.length
- }
- }
- }
-
- // 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 ' + tokens[0][1],
- { 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
diff --git a/vanilla/node_modules/postcss/lib/postcss.d.mts b/vanilla/node_modules/postcss/lib/postcss.d.mts
deleted file mode 100644
index d343f3c..0000000
--- a/vanilla/node_modules/postcss/lib/postcss.d.mts
+++ /dev/null
@@ -1,69 +0,0 @@
-export {
- // Type-only exports
- AcceptedPlugin,
-
- AnyNode,
- atRule,
- AtRule,
- AtRuleProps,
- Builder,
- ChildNode,
- ChildProps,
- comment,
- Comment,
- CommentProps,
- Container,
- ContainerProps,
- CssSyntaxError,
- decl,
- Declaration,
- DeclarationProps,
- // postcss function / namespace
- default,
- document,
- Document,
- DocumentProps,
- FilePosition,
- fromJSON,
- Helpers,
- Input,
-
- JSONHydrator,
- // This is a class, but it’s not re-exported. That’s why it’s exported as type-only here.
- type LazyResult,
- list,
- Message,
- Node,
- NodeErrorOptions,
- NodeProps,
- OldPlugin,
- parse,
- Parser,
- // @ts-expect-error This value exists, but it’s untyped.
- plugin,
- Plugin,
- PluginCreator,
- Position,
- Postcss,
- ProcessOptions,
- Processor,
- Result,
- root,
- Root,
- RootProps,
- rule,
- Rule,
- RuleProps,
- Source,
- SourceMap,
- SourceMapOptions,
- Stringifier,
- // Value exports from postcss.mjs
- stringify,
- Syntax,
- TransformCallback,
- Transformer,
- Warning,
-
- WarningOptions
-} from './postcss.js'
diff --git a/vanilla/node_modules/postcss/lib/postcss.d.ts b/vanilla/node_modules/postcss/lib/postcss.d.ts
deleted file mode 100644
index c5e3605..0000000
--- a/vanilla/node_modules/postcss/lib/postcss.d.ts
+++ /dev/null
@@ -1,458 +0,0 @@
-import { RawSourceMap, SourceMapGenerator } from 'source-map-js'
-
-import AtRule, { AtRuleProps } from './at-rule.js'
-import Comment, { CommentProps } from './comment.js'
-import Container, { ContainerProps, NewChild } 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,
- NewChild,
- Node,
- NodeErrorOptions,
- NodeProps,
- Position,
- Processor,
- Result,
- Root,
- RootProps,
- Rule,
- RuleProps,
- Source,
- Warning,
- WarningOptions
- }
-
- export type SourceMap = {
- toJSON(): RawSourceMap
- } & SourceMapGenerator
-
- 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, 'document' | '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> {
- /**
- * Input file if it is not simple CSS file, but HTML with <style> or JS with CSS-in-JS blocks.
- */
- document?: string
-
- /**
- * 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?: readonly postcss.AcceptedPlugin[]
-): Processor
-declare function postcss(...plugins: postcss.AcceptedPlugin[]): Processor
-
-export = postcss
diff --git a/vanilla/node_modules/postcss/lib/postcss.js b/vanilla/node_modules/postcss/lib/postcss.js
deleted file mode 100644
index 8f0773b..0000000
--- a/vanilla/node_modules/postcss/lib/postcss.js
+++ /dev/null
@@ -1,101 +0,0 @@
-'use strict'
-
-let AtRule = require('./at-rule')
-let Comment = require('./comment')
-let Container = require('./container')
-let CssSyntaxError = require('./css-syntax-error')
-let Declaration = require('./declaration')
-let Document = require('./document')
-let fromJSON = require('./fromJSON')
-let Input = require('./input')
-let LazyResult = require('./lazy-result')
-let list = require('./list')
-let Node = require('./node')
-let parse = require('./parse')
-let Processor = require('./processor')
-let Result = require('./result.js')
-let Root = require('./root')
-let Rule = require('./rule')
-let stringify = require('./stringify')
-let Warning = require('./warning')
-
-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
diff --git a/vanilla/node_modules/postcss/lib/postcss.mjs b/vanilla/node_modules/postcss/lib/postcss.mjs
deleted file mode 100644
index 3507598..0000000
--- a/vanilla/node_modules/postcss/lib/postcss.mjs
+++ /dev/null
@@ -1,30 +0,0 @@
-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
diff --git a/vanilla/node_modules/postcss/lib/previous-map.d.ts b/vanilla/node_modules/postcss/lib/previous-map.d.ts
deleted file mode 100644
index 23edeb5..0000000
--- a/vanilla/node_modules/postcss/lib/previous-map.d.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-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
diff --git a/vanilla/node_modules/postcss/lib/previous-map.js b/vanilla/node_modules/postcss/lib/previous-map.js
deleted file mode 100644
index b123dcd..0000000
--- a/vanilla/node_modules/postcss/lib/previous-map.js
+++ /dev/null
@@ -1,144 +0,0 @@
-'use strict'
-
-let { existsSync, readFileSync } = require('fs')
-let { dirname, join } = require('path')
-let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
-
-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,/
-
- let uriMatch = text.match(charsetUri) || text.match(uri)
- if (uriMatch) {
- return decodeURIComponent(text.substr(uriMatch[0].length))
- }
-
- let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri)
- if (baseUriMatch) {
- return fromBase64(text.substr(baseUriMatch[0].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=/g)
- 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
diff --git a/vanilla/node_modules/postcss/lib/processor.d.ts b/vanilla/node_modules/postcss/lib/processor.d.ts
deleted file mode 100644
index aa2942c..0000000
--- a/vanilla/node_modules/postcss/lib/processor.d.ts
+++ /dev/null
@@ -1,115 +0,0 @@
-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?: readonly 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
diff --git a/vanilla/node_modules/postcss/lib/processor.js b/vanilla/node_modules/postcss/lib/processor.js
deleted file mode 100644
index 8493687..0000000
--- a/vanilla/node_modules/postcss/lib/processor.js
+++ /dev/null
@@ -1,67 +0,0 @@
-'use strict'
-
-let Document = require('./document')
-let LazyResult = require('./lazy-result')
-let NoWorkResult = require('./no-work-result')
-let Root = require('./root')
-
-class Processor {
- constructor(plugins = []) {
- this.version = '8.5.6'
- 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)
diff --git a/vanilla/node_modules/postcss/lib/result.d.ts b/vanilla/node_modules/postcss/lib/result.d.ts
deleted file mode 100644
index 3f52efb..0000000
--- a/vanilla/node_modules/postcss/lib/result.d.ts
+++ /dev/null
@@ -1,205 +0,0 @@
-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
-
- /**
- * An alias for the `Result#css` property.
- * Use it with syntaxes that generate non-CSS output.
- *
- * ```js
- * result.css === result.content
- * ```
- */
- get content(): string
-
- /**
- * @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[]
-}
-
-declare class Result<RootNode = Document | Root> extends Result_<RootNode> {}
-
-export = Result
diff --git a/vanilla/node_modules/postcss/lib/result.js b/vanilla/node_modules/postcss/lib/result.js
deleted file mode 100644
index c6af4e8..0000000
--- a/vanilla/node_modules/postcss/lib/result.js
+++ /dev/null
@@ -1,42 +0,0 @@
-'use strict'
-
-let Warning = require('./warning')
-
-class Result {
- get content() {
- return this.css
- }
-
- constructor(processor, root, opts) {
- this.processor = processor
- this.messages = []
- this.root = root
- this.opts = opts
- this.css = ''
- 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')
- }
-}
-
-module.exports = Result
-Result.default = Result
diff --git a/vanilla/node_modules/postcss/lib/root.d.ts b/vanilla/node_modules/postcss/lib/root.d.ts
deleted file mode 100644
index 5c91139..0000000
--- a/vanilla/node_modules/postcss/lib/root.d.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-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>): this
- cloneAfter(overrides?: Partial<Root.RootProps>): this
- cloneBefore(overrides?: Partial<Root.RootProps>): this
-
- /**
- * 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 options Options.
- * @return Result with current root’s CSS.
- */
- toResult(options?: ProcessOptions): Result
-}
-
-declare class Root extends Root_ {}
-
-export = Root
diff --git a/vanilla/node_modules/postcss/lib/root.js b/vanilla/node_modules/postcss/lib/root.js
deleted file mode 100644
index ea574ed..0000000
--- a/vanilla/node_modules/postcss/lib/root.js
+++ /dev/null
@@ -1,61 +0,0 @@
-'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)
diff --git a/vanilla/node_modules/postcss/lib/rule.d.ts b/vanilla/node_modules/postcss/lib/rule.d.ts
deleted file mode 100644
index 9a951e7..0000000
--- a/vanilla/node_modules/postcss/lib/rule.d.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-import Container, {
- ContainerProps,
- ContainerWithChildren
-} 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 the text of the semicolon after this 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 type RuleProps = {
- /** 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?: never
- }
- | {
- selector?: never
- /** Selectors of the rule represented as an array of strings. */
- selectors: readonly string[]
- }
- ) & ContainerProps
-
- // 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: ContainerWithChildren | undefined
- raws: Rule.RuleRaws
- type: 'rule'
- /**
- * The rule’s full selector represented as a string.
- *
- * ```js
- * const root = postcss.parse('a, b { }')
- * const rule = root.first
- * rule.selector //=> 'a, b'
- * ```
- */
- get selector(): string
-
- set selector(value: 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'
- * ```
- */
- get selectors(): string[]
-
- set selectors(values: string[])
-
- constructor(defaults?: Rule.RuleProps)
- assign(overrides: object | Rule.RuleProps): this
- clone(overrides?: Partial<Rule.RuleProps>): this
- cloneAfter(overrides?: Partial<Rule.RuleProps>): this
- cloneBefore(overrides?: Partial<Rule.RuleProps>): this
-}
-
-declare class Rule extends Rule_ {}
-
-export = Rule
diff --git a/vanilla/node_modules/postcss/lib/rule.js b/vanilla/node_modules/postcss/lib/rule.js
deleted file mode 100644
index 3b9b7e9..0000000
--- a/vanilla/node_modules/postcss/lib/rule.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict'
-
-let Container = require('./container')
-let list = require('./list')
-
-class Rule extends Container {
- 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)
- }
-
- constructor(defaults) {
- super(defaults)
- this.type = 'rule'
- if (!this.nodes) this.nodes = []
- }
-}
-
-module.exports = Rule
-Rule.default = Rule
-
-Container.registerRule(Rule)
diff --git a/vanilla/node_modules/postcss/lib/stringifier.d.ts b/vanilla/node_modules/postcss/lib/stringifier.d.ts
deleted file mode 100644
index b5a6f86..0000000
--- a/vanilla/node_modules/postcss/lib/stringifier.d.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-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): boolean | 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): number | string
- root(node: Root): void
- rule(node: Rule): void
- stringify(node: AnyNode, semicolon?: boolean): void
-}
-
-declare class Stringifier extends Stringifier_ {}
-
-export = Stringifier
diff --git a/vanilla/node_modules/postcss/lib/stringifier.js b/vanilla/node_modules/postcss/lib/stringifier.js
deleted file mode 100644
index e07ad12..0000000
--- a/vanilla/node_modules/postcss/lib/stringifier.js
+++ /dev/null
@@ -1,353 +0,0 @@
-'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
diff --git a/vanilla/node_modules/postcss/lib/stringify.d.ts b/vanilla/node_modules/postcss/lib/stringify.d.ts
deleted file mode 100644
index 06ad0b4..0000000
--- a/vanilla/node_modules/postcss/lib/stringify.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Stringifier } from './postcss.js'
-
-interface Stringify extends Stringifier {
- default: Stringify
-}
-
-declare const stringify: Stringify
-
-export = stringify
diff --git a/vanilla/node_modules/postcss/lib/stringify.js b/vanilla/node_modules/postcss/lib/stringify.js
deleted file mode 100644
index 77bd017..0000000
--- a/vanilla/node_modules/postcss/lib/stringify.js
+++ /dev/null
@@ -1,11 +0,0 @@
-'use strict'
-
-let Stringifier = require('./stringifier')
-
-function stringify(node, builder) {
- let str = new Stringifier(builder)
- str.stringify(node)
-}
-
-module.exports = stringify
-stringify.default = stringify
diff --git a/vanilla/node_modules/postcss/lib/symbols.js b/vanilla/node_modules/postcss/lib/symbols.js
deleted file mode 100644
index a142c26..0000000
--- a/vanilla/node_modules/postcss/lib/symbols.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict'
-
-module.exports.isClean = Symbol('isClean')
-
-module.exports.my = Symbol('my')
diff --git a/vanilla/node_modules/postcss/lib/terminal-highlight.js b/vanilla/node_modules/postcss/lib/terminal-highlight.js
deleted file mode 100644
index 6196c9d..0000000
--- a/vanilla/node_modules/postcss/lib/terminal-highlight.js
+++ /dev/null
@@ -1,70 +0,0 @@
-'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
diff --git a/vanilla/node_modules/postcss/lib/tokenize.js b/vanilla/node_modules/postcss/lib/tokenize.js
deleted file mode 100644
index 1d41284..0000000
--- a/vanilla/node_modules/postcss/lib/tokenize.js
+++ /dev/null
@@ -1,266 +0,0 @@
-'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, content, escape, next, quote
- let currentToken, escaped, escapePos, n, prev
-
- 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
- }
-}
diff --git a/vanilla/node_modules/postcss/lib/warn-once.js b/vanilla/node_modules/postcss/lib/warn-once.js
deleted file mode 100644
index 316e1cf..0000000
--- a/vanilla/node_modules/postcss/lib/warn-once.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/* 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)
- }
-}
diff --git a/vanilla/node_modules/postcss/lib/warning.d.ts b/vanilla/node_modules/postcss/lib/warning.d.ts
deleted file mode 100644
index b25bba8..0000000
--- a/vanilla/node_modules/postcss/lib/warning.d.ts
+++ /dev/null
@@ -1,147 +0,0 @@
-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
diff --git a/vanilla/node_modules/postcss/lib/warning.js b/vanilla/node_modules/postcss/lib/warning.js
deleted file mode 100644
index 3a3d79c..0000000
--- a/vanilla/node_modules/postcss/lib/warning.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'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