postcss 8.4.27 → 8.4.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of postcss might be problematic. Click here for more details.

@@ -1,3 +1,4 @@
1
+ import Document from './document.js'
1
2
  import { SourceMap } from './postcss.js'
2
3
  import Processor from './processor.js'
3
4
  import Result, { Message, ResultOptions } from './result.js'
@@ -18,7 +19,9 @@ declare namespace LazyResult {
18
19
  * const lazy = postcss([autoprefixer]).process(css)
19
20
  * ```
20
21
  */
21
- declare class LazyResult_ implements PromiseLike<Result> {
22
+ declare class LazyResult_<RootNode = Document | Root>
23
+ implements PromiseLike<Result<RootNode>>
24
+ {
22
25
  /**
23
26
  * Processes input CSS through synchronous and asynchronous plugins
24
27
  * and calls onRejected for each error thrown in any plugin.
@@ -33,7 +36,7 @@ declare class LazyResult_ implements PromiseLike<Result> {
33
36
  * })
34
37
  * ```
35
38
  */
36
- catch: Promise<Result>['catch']
39
+ catch: Promise<Result<RootNode>>['catch']
37
40
 
38
41
  /**
39
42
  * Processes input CSS through synchronous and asynchronous plugins
@@ -47,7 +50,7 @@ declare class LazyResult_ implements PromiseLike<Result> {
47
50
  * })
48
51
  * ```
49
52
  */
50
- finally: Promise<Result>['finally']
53
+ finally: Promise<Result<RootNode>>['finally']
51
54
 
52
55
  /**
53
56
  * Processes input CSS through synchronous and asynchronous plugins
@@ -62,7 +65,7 @@ declare class LazyResult_ implements PromiseLike<Result> {
62
65
  * })
63
66
  * ```
64
67
  */
65
- then: Promise<Result>['then']
68
+ then: Promise<Result<RootNode>>['then']
66
69
 
67
70
  /**
68
71
  * @param processor Processor used for this transformation.
@@ -76,7 +79,7 @@ declare class LazyResult_ implements PromiseLike<Result> {
76
79
  *
77
80
  * @return Result with output content.
78
81
  */
79
- async(): Promise<Result>
82
+ async(): Promise<Result<RootNode>>
80
83
 
81
84
  /**
82
85
  * An alias for the `css` property. Use it with syntaxes
@@ -145,7 +148,7 @@ declare class LazyResult_ implements PromiseLike<Result> {
145
148
  *
146
149
  * PostCSS runners should always use `LazyResult#then`.
147
150
  */
148
- get root(): Root
151
+ get root(): RootNode
149
152
 
150
153
  /**
151
154
  * Returns the default string description of an object.
@@ -158,7 +161,7 @@ declare class LazyResult_ implements PromiseLike<Result> {
158
161
  *
159
162
  * @return Result with output content.
160
163
  */
161
- sync(): Result
164
+ sync(): Result<RootNode>
162
165
 
163
166
  /**
164
167
  * Alias for the `LazyResult#css` property.
@@ -180,6 +183,8 @@ declare class LazyResult_ implements PromiseLike<Result> {
180
183
  warnings(): Warning[]
181
184
  }
182
185
 
183
- declare class LazyResult extends LazyResult_ {}
186
+ declare class LazyResult<
187
+ RootNode = Document | Root
188
+ > extends LazyResult_<RootNode> {}
184
189
 
185
190
  export = LazyResult
@@ -22,12 +22,12 @@ declare namespace NoWorkResult {
22
22
  * let root = noWorkResult.root // now css is parsed because we accessed the root
23
23
  * ```
24
24
  */
25
- declare class NoWorkResult_ implements LazyResult {
26
- catch: Promise<Result>['catch']
27
- finally: Promise<Result>['finally']
28
- then: Promise<Result>['then']
25
+ declare class NoWorkResult_ implements LazyResult<Root> {
26
+ catch: Promise<Result<Root>>['catch']
27
+ finally: Promise<Result<Root>>['finally']
28
+ then: Promise<Result<Root>>['then']
29
29
  constructor(processor: Processor, css: string, opts: ResultOptions)
30
- async(): Promise<Result>
30
+ async(): Promise<Result<Root>>
31
31
  get content(): string
32
32
  get css(): string
33
33
  get map(): SourceMap
@@ -36,7 +36,7 @@ declare class NoWorkResult_ implements LazyResult {
36
36
  get processor(): Processor
37
37
  get root(): Root
38
38
  get [Symbol.toStringTag](): string
39
- sync(): Result
39
+ sync(): Result<Root>
40
40
  toString(): string
41
41
  warnings(): Warning[]
42
42
  }
package/lib/parser.js CHANGED
@@ -65,6 +65,7 @@ class Parser {
65
65
  if (brackets.length === 0) {
66
66
  if (type === ';') {
67
67
  node.source.end = this.getPosition(token[2])
68
+ node.source.end.offset++
68
69
  this.semicolon = true
69
70
  break
70
71
  } else if (type === '{') {
@@ -79,6 +80,7 @@ class Parser {
79
80
  }
80
81
  if (prev) {
81
82
  node.source.end = this.getPosition(prev[3] || prev[2])
83
+ node.source.end.offset++
82
84
  }
83
85
  }
84
86
  this.end(token)
@@ -103,6 +105,7 @@ class Parser {
103
105
  if (last) {
104
106
  token = params[params.length - 1]
105
107
  node.source.end = this.getPosition(token[3] || token[2])
108
+ node.source.end.offset++
106
109
  this.spaces = node.raws.between
107
110
  node.raws.between = ''
108
111
  }
@@ -171,6 +174,7 @@ class Parser {
171
174
  let node = new Comment()
172
175
  this.init(node, token[2])
173
176
  node.source.end = this.getPosition(token[3] || token[2])
177
+ node.source.end.offset++
174
178
 
175
179
  let text = token[1].slice(2, -2)
176
180
  if (/^\s*$/.test(text)) {
@@ -202,6 +206,7 @@ class Parser {
202
206
  node.source.end = this.getPosition(
203
207
  last[3] || last[2] || findLastWithPosition(tokens)
204
208
  )
209
+ node.source.end.offset++
205
210
 
206
211
  while (tokens[0][0] !== 'word') {
207
212
  if (tokens.length === 1) this.unknownWord(tokens)
@@ -320,6 +325,7 @@ class Parser {
320
325
 
321
326
  if (this.current.parent) {
322
327
  this.current.source.end = this.getPosition(token[2])
328
+ this.current.source.end.offset++
323
329
  this.current = this.current.parent
324
330
  } else {
325
331
  this.unexpectedClose(token)
@@ -332,6 +338,7 @@ class Parser {
332
338
  this.current.raws.semicolon = this.semicolon
333
339
  }
334
340
  this.current.raws.after = (this.current.raws.after || '') + this.spaces
341
+ this.root.source.end = this.getPosition(this.tokenizer.position())
335
342
  }
336
343
 
337
344
  freeSemicolon(token) {
package/lib/postcss.d.ts CHANGED
@@ -236,11 +236,11 @@ declare namespace postcss {
236
236
  (data: object[]): Node[]
237
237
  }
238
238
 
239
- export interface Syntax {
239
+ export interface Syntax<RootNode = Document | Root> {
240
240
  /**
241
241
  * Function to generate AST by string.
242
242
  */
243
- parse?: Parser
243
+ parse?: Parser<RootNode>
244
244
 
245
245
  /**
246
246
  * Class to generate string by AST.
@@ -304,7 +304,7 @@ declare namespace postcss {
304
304
  sourcesContent?: boolean
305
305
  }
306
306
 
307
- export interface ProcessOptions {
307
+ export interface ProcessOptions<RootNode = Document | Root> {
308
308
  /**
309
309
  * The path of the CSS source file. You should always set `from`,
310
310
  * because it is used in source map generation and syntax error messages.
@@ -319,17 +319,17 @@ declare namespace postcss {
319
319
  /**
320
320
  * Function to generate AST by string.
321
321
  */
322
- parser?: Parser | Syntax
322
+ parser?: Parser<RootNode> | Syntax<RootNode>
323
323
 
324
324
  /**
325
325
  * Class to generate string by AST.
326
326
  */
327
- stringifier?: Stringifier | Syntax
327
+ stringifier?: Stringifier | Syntax<RootNode>
328
328
 
329
329
  /**
330
330
  * Object with parse and stringify.
331
331
  */
332
- syntax?: Syntax
332
+ syntax?: Syntax<RootNode>
333
333
 
334
334
  /**
335
335
  * The path where you'll put the output CSS file. You should always set `to`
@@ -1,3 +1,4 @@
1
+ import Document from './document.js'
1
2
  import LazyResult from './lazy-result.js'
2
3
  import NoWorkResult from './no-work-result.js'
3
4
  import {
@@ -72,9 +73,12 @@ declare class Processor_ {
72
73
  * @return Promise proxy.
73
74
  */
74
75
  process(
75
- css: { toString(): string } | LazyResult | Result | Root | string,
76
- options?: ProcessOptions
76
+ css: { toString(): string } | LazyResult | Result | Root | string
77
77
  ): LazyResult | NoWorkResult
78
+ process<RootNode extends Document | Root = Root>(
79
+ css: { toString(): string } | LazyResult | Result | Root | string,
80
+ options: ProcessOptions<RootNode>
81
+ ): LazyResult<RootNode>
78
82
 
79
83
  /**
80
84
  * Adds a plugin to be used as a CSS processor.
package/lib/processor.js CHANGED
@@ -7,7 +7,7 @@ let Root = require('./root')
7
7
 
8
8
  class Processor {
9
9
  constructor(plugins = []) {
10
- this.version = '8.4.27'
10
+ this.version = '8.4.29'
11
11
  this.plugins = this.normalize(plugins)
12
12
  }
13
13
 
package/lib/result.d.ts CHANGED
@@ -60,7 +60,7 @@ declare namespace Result {
60
60
  * const result2 = postcss.parse(css).toResult()
61
61
  * ```
62
62
  */
63
- declare class Result_ {
63
+ declare class Result_<RootNode = Document | Root> {
64
64
  /**
65
65
  * A CSS string representing of `Result#root`.
66
66
  *
@@ -141,14 +141,14 @@ declare class Result_ {
141
141
  * root.toResult().root === root
142
142
  * ```
143
143
  */
144
- root: Document | Root
144
+ root: RootNode
145
145
 
146
146
  /**
147
147
  * @param processor Processor used for this transformation.
148
148
  * @param root Root node after all transformations.
149
149
  * @param opts Options from the `Processor#process` or `Root#toResult`.
150
150
  */
151
- constructor(processor: Processor, root: Document | Root, opts: Result.ResultOptions)
151
+ constructor(processor: Processor, root: RootNode, opts: Result.ResultOptions)
152
152
 
153
153
  /**
154
154
  * An alias for the `Result#css` property.
@@ -201,6 +201,6 @@ declare class Result_ {
201
201
  warnings(): Warning[]
202
202
  }
203
203
 
204
- declare class Result extends Result_ {}
204
+ declare class Result<RootNode = Document | Root> extends Result_<RootNode> {}
205
205
 
206
206
  export = Result
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "postcss",
3
- "version": "8.4.27",
3
+ "version": "8.4.29",
4
4
  "description": "Tool for transforming styles with JS plugins",
5
5
  "engines": {
6
6
  "node": "^10 || ^12 || >=14"