@opengsd/gsd-pi 1.2.0-dev.5457a158 → 1.2.0-dev.84c56d87
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.
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/browser-tools/engine/managed-gsd-browser.js +209 -88
- package/dist/resources/extensions/browser-tools/engine/selection.js +73 -5
- package/dist/resources/extensions/browser-tools/index.js +69 -12
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +3 -2
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +19 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +27 -9
- package/dist/resources/extensions/gsd/browser-evidence.js +8 -2
- package/dist/resources/extensions/gsd/mcp-filter.js +2 -19
- package/dist/resources/extensions/gsd/uat-policy.js +2 -1
- package/dist/resources/extensions/gsd/unit-registry.js +7 -20
- package/dist/resources/extensions/gsd/web-app-uat.js +45 -8
- package/dist/resources/extensions/search-the-web/native-search.js +5 -3
- package/dist/resources/extensions/shared/browser-contract.js +59 -0
- package/dist/resources/extensions/shared/gsd-browser-cli.js +72 -4
- package/dist/resources/skills/create-skill/references/executable-code.md +1 -1
- package/dist/resources/skills/create-skill/workflows/add-reference.md +8 -3
- package/dist/resources/skills/create-skill/workflows/add-script.md +4 -2
- package/dist/resources/skills/create-skill/workflows/add-template.md +3 -1
- package/dist/resources/skills/create-skill/workflows/add-workflow.md +8 -3
- package/dist/resources/skills/create-skill/workflows/upgrade-to-router.md +10 -5
- package/dist/resources/skills/create-skill/workflows/verify-skill.md +9 -4
- package/dist/resources/skills/spike-wrap-up/SKILL.md +9 -9
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +9 -9
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +9 -9
- package/dist/web/standalone/.next/server/chunks/8357.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
- package/dist/web/standalone/node_modules/postcss/lib/container.js +18 -26
- package/dist/web/standalone/node_modules/postcss/lib/css-syntax-error.js +14 -47
- package/dist/web/standalone/node_modules/postcss/lib/declaration.js +4 -4
- package/dist/web/standalone/node_modules/postcss/lib/fromJSON.js +3 -3
- package/dist/web/standalone/node_modules/postcss/lib/input.js +29 -54
- package/dist/web/standalone/node_modules/postcss/lib/lazy-result.js +37 -47
- package/dist/web/standalone/node_modules/postcss/lib/map-generator.js +9 -26
- package/dist/web/standalone/node_modules/postcss/lib/no-work-result.js +55 -57
- package/dist/web/standalone/node_modules/postcss/lib/node.js +31 -99
- package/dist/web/standalone/node_modules/postcss/lib/parse.js +1 -1
- package/dist/web/standalone/node_modules/postcss/lib/parser.js +9 -10
- package/dist/web/standalone/node_modules/postcss/lib/postcss.js +12 -12
- package/dist/web/standalone/node_modules/postcss/lib/previous-map.js +11 -30
- package/dist/web/standalone/node_modules/postcss/lib/processor.js +7 -7
- package/dist/web/standalone/node_modules/postcss/lib/result.js +5 -5
- package/dist/web/standalone/node_modules/postcss/lib/rule.js +6 -6
- package/dist/web/standalone/node_modules/postcss/lib/stringifier.js +28 -69
- package/dist/web/standalone/node_modules/postcss/lib/tokenize.js +2 -6
- package/dist/web/standalone/node_modules/postcss/package.json +48 -48
- package/dist/web/standalone/package.json +1 -1
- package/package.json +1 -1
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/package.json +4 -4
- package/packages/gsd-agent-core/package.json +5 -5
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/package.json +3 -3
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +66 -178
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +116 -204
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/dist/tui.d.ts.map +1 -1
- package/packages/pi-tui/dist/tui.js +9 -0
- package/packages/pi-tui/dist/tui.js.map +1 -1
- package/packages/pi-tui/package.json +2 -2
- package/packages/rpc-client/package.json +2 -2
- package/pkg/package.json +1 -1
- package/src/resources/extensions/browser-tools/engine/managed-gsd-browser.ts +265 -98
- package/src/resources/extensions/browser-tools/engine/selection.ts +90 -4
- package/src/resources/extensions/browser-tools/index.ts +71 -13
- package/src/resources/extensions/browser-tools/tests/browser-engine-selection.test.mjs +83 -13
- package/src/resources/extensions/browser-tools/tests/managed-gsd-browser-tools.test.mjs +136 -0
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +3 -2
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +24 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +48 -4
- package/src/resources/extensions/gsd/browser-evidence.ts +18 -2
- package/src/resources/extensions/gsd/mcp-filter.ts +2 -23
- package/src/resources/extensions/gsd/tests/browser-automation-contract-fixture.ts +39 -0
- package/src/resources/extensions/gsd/tests/browser-contract.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/dispatch-run-uat-browser-tools.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +35 -1
- package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +7 -11
- package/src/resources/extensions/gsd/tests/integration/auto-worktree.test.ts +20 -58
- package/src/resources/extensions/gsd/tests/integration/gsd-integration-fixture.ts +80 -0
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/uat-policy.test.ts +24 -29
- package/src/resources/extensions/gsd/tests/web-app-uat.test.ts +44 -1
- package/src/resources/extensions/gsd/uat-policy.ts +2 -1
- package/src/resources/extensions/gsd/unit-registry.ts +7 -20
- package/src/resources/extensions/gsd/web-app-uat.ts +51 -8
- package/src/resources/extensions/search-the-web/native-search.ts +5 -3
- package/src/resources/extensions/shared/browser-contract.ts +66 -0
- package/src/resources/extensions/shared/gsd-browser-cli.ts +88 -4
- package/src/resources/skills/create-skill/references/executable-code.md +1 -1
- package/src/resources/skills/create-skill/workflows/add-reference.md +8 -3
- package/src/resources/skills/create-skill/workflows/add-script.md +4 -2
- package/src/resources/skills/create-skill/workflows/add-template.md +3 -1
- package/src/resources/skills/create-skill/workflows/add-workflow.md +8 -3
- package/src/resources/skills/create-skill/workflows/upgrade-to-router.md +10 -5
- package/src/resources/skills/create-skill/workflows/verify-skill.md +9 -4
- package/src/resources/skills/spike-wrap-up/SKILL.md +9 -9
- /package/dist/web/standalone/.next/static/{2p9Rv9pQflAxCBbGVI2vb → AOpDeK_gJHU8OZjRo31gQ}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{2p9Rv9pQflAxCBbGVI2vb → AOpDeK_gJHU8OZjRo31gQ}/_ssgManifest.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
let { dirname, relative, resolve, sep } = require('path')
|
|
4
3
|
let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
|
|
4
|
+
let { dirname, relative, resolve, sep } = require('path')
|
|
5
5
|
let { pathToFileURL } = require('url')
|
|
6
6
|
|
|
7
7
|
let Input = require('./input')
|
|
@@ -16,7 +16,6 @@ class MapGenerator {
|
|
|
16
16
|
this.root = root
|
|
17
17
|
this.opts = opts
|
|
18
18
|
this.css = cssString
|
|
19
|
-
this.originalCSS = cssString
|
|
20
19
|
this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute
|
|
21
20
|
|
|
22
21
|
this.memoizedFileURLs = new Map()
|
|
@@ -52,7 +51,7 @@ class MapGenerator {
|
|
|
52
51
|
if (this.mapOpts.sourcesContent === false) {
|
|
53
52
|
map = new SourceMapConsumer(prev.text)
|
|
54
53
|
if (map.sourcesContent) {
|
|
55
|
-
map.sourcesContent = null
|
|
54
|
+
map.sourcesContent = map.sourcesContent.map(() => null)
|
|
56
55
|
}
|
|
57
56
|
} else {
|
|
58
57
|
map = prev.consumer()
|
|
@@ -70,20 +69,12 @@ class MapGenerator {
|
|
|
70
69
|
for (let i = this.root.nodes.length - 1; i >= 0; i--) {
|
|
71
70
|
node = this.root.nodes[i]
|
|
72
71
|
if (node.type !== 'comment') continue
|
|
73
|
-
if (node.text.
|
|
72
|
+
if (node.text.indexOf('# sourceMappingURL=') === 0) {
|
|
74
73
|
this.root.removeChild(i)
|
|
75
74
|
}
|
|
76
75
|
}
|
|
77
76
|
} else if (this.css) {
|
|
78
|
-
|
|
79
|
-
while ((startIndex = this.css.lastIndexOf('/*#')) !== -1) {
|
|
80
|
-
let endIndex = this.css.indexOf('*/', startIndex + 3)
|
|
81
|
-
if (endIndex === -1) break
|
|
82
|
-
while (startIndex > 0 && this.css[startIndex - 1] === '\n') {
|
|
83
|
-
startIndex--
|
|
84
|
-
}
|
|
85
|
-
this.css = this.css.slice(0, startIndex) + this.css.slice(endIndex + 2)
|
|
86
|
-
}
|
|
77
|
+
this.css = this.css.replace(/(\n)?\/\*#[\S\s]*?\*\/$/gm, '')
|
|
87
78
|
}
|
|
88
79
|
}
|
|
89
80
|
|
|
@@ -106,14 +97,9 @@ class MapGenerator {
|
|
|
106
97
|
} else if (this.previous().length === 1) {
|
|
107
98
|
let prev = this.previous()[0].consumer()
|
|
108
99
|
prev.file = this.outputFile()
|
|
109
|
-
this.map = SourceMapGenerator.fromSourceMap(prev
|
|
110
|
-
ignoreInvalidMapping: true
|
|
111
|
-
})
|
|
100
|
+
this.map = SourceMapGenerator.fromSourceMap(prev)
|
|
112
101
|
} else {
|
|
113
|
-
this.map = new SourceMapGenerator({
|
|
114
|
-
file: this.outputFile(),
|
|
115
|
-
ignoreInvalidMapping: true
|
|
116
|
-
})
|
|
102
|
+
this.map = new SourceMapGenerator({ file: this.outputFile() })
|
|
117
103
|
this.map.addMapping({
|
|
118
104
|
generated: { column: 0, line: 1 },
|
|
119
105
|
original: { column: 0, line: 1 },
|
|
@@ -136,10 +122,7 @@ class MapGenerator {
|
|
|
136
122
|
|
|
137
123
|
generateString() {
|
|
138
124
|
this.css = ''
|
|
139
|
-
this.map = new SourceMapGenerator({
|
|
140
|
-
file: this.outputFile(),
|
|
141
|
-
ignoreInvalidMapping: true
|
|
142
|
-
})
|
|
125
|
+
this.map = new SourceMapGenerator({ file: this.outputFile() })
|
|
143
126
|
|
|
144
127
|
let line = 1
|
|
145
128
|
let column = 1
|
|
@@ -151,7 +134,7 @@ class MapGenerator {
|
|
|
151
134
|
source: ''
|
|
152
135
|
}
|
|
153
136
|
|
|
154
|
-
let
|
|
137
|
+
let lines, last
|
|
155
138
|
this.stringify(this.root, (str, node, type) => {
|
|
156
139
|
this.css += str
|
|
157
140
|
|
|
@@ -293,7 +276,7 @@ class MapGenerator {
|
|
|
293
276
|
}
|
|
294
277
|
})
|
|
295
278
|
} else {
|
|
296
|
-
let input = new Input(this.
|
|
279
|
+
let input = new Input(this.css, this.opts)
|
|
297
280
|
if (input.map) this.previousMaps.push(input.map)
|
|
298
281
|
}
|
|
299
282
|
}
|
|
@@ -1,62 +1,12 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
let MapGenerator = require('./map-generator')
|
|
4
|
-
let parse = require('./parse')
|
|
5
|
-
let Result = require('./result')
|
|
6
4
|
let stringify = require('./stringify')
|
|
7
5
|
let warnOnce = require('./warn-once')
|
|
6
|
+
let parse = require('./parse')
|
|
7
|
+
const Result = require('./result')
|
|
8
8
|
|
|
9
9
|
class NoWorkResult {
|
|
10
|
-
get content() {
|
|
11
|
-
return this.result.css
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
get css() {
|
|
15
|
-
return this.result.css
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
get map() {
|
|
19
|
-
return this.result.map
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
get messages() {
|
|
23
|
-
return []
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
get opts() {
|
|
27
|
-
return this.result.opts
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
get processor() {
|
|
31
|
-
return this.result.processor
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
get root() {
|
|
35
|
-
if (this._root) {
|
|
36
|
-
return this._root
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
let root
|
|
40
|
-
let parser = parse
|
|
41
|
-
|
|
42
|
-
try {
|
|
43
|
-
root = parser(this._css, this._opts)
|
|
44
|
-
} catch (error) {
|
|
45
|
-
this.error = error
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (this.error) {
|
|
49
|
-
throw this.error
|
|
50
|
-
} else {
|
|
51
|
-
this._root = root
|
|
52
|
-
return root
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
get [Symbol.toStringTag]() {
|
|
57
|
-
return 'NoWorkResult'
|
|
58
|
-
}
|
|
59
|
-
|
|
60
10
|
constructor(processor, css, opts) {
|
|
61
11
|
css = css.toString()
|
|
62
12
|
this.stringified = false
|
|
@@ -65,9 +15,10 @@ class NoWorkResult {
|
|
|
65
15
|
this._css = css
|
|
66
16
|
this._opts = opts
|
|
67
17
|
this._map = undefined
|
|
18
|
+
let root
|
|
68
19
|
|
|
69
20
|
let str = stringify
|
|
70
|
-
this.result = new Result(this._processor,
|
|
21
|
+
this.result = new Result(this._processor, root, this._opts)
|
|
71
22
|
this.result.css = css
|
|
72
23
|
|
|
73
24
|
let self = this
|
|
@@ -77,7 +28,7 @@ class NoWorkResult {
|
|
|
77
28
|
}
|
|
78
29
|
})
|
|
79
30
|
|
|
80
|
-
let map = new MapGenerator(str,
|
|
31
|
+
let map = new MapGenerator(str, root, this._opts, css)
|
|
81
32
|
if (map.isMap()) {
|
|
82
33
|
let [generatedCSS, generatedMap] = map.generate()
|
|
83
34
|
if (generatedCSS) {
|
|
@@ -86,9 +37,6 @@ class NoWorkResult {
|
|
|
86
37
|
if (generatedMap) {
|
|
87
38
|
this.result.map = generatedMap
|
|
88
39
|
}
|
|
89
|
-
} else {
|
|
90
|
-
map.clearAnnotation()
|
|
91
|
-
this.result.css = map.css
|
|
92
40
|
}
|
|
93
41
|
}
|
|
94
42
|
|
|
@@ -131,6 +79,56 @@ class NoWorkResult {
|
|
|
131
79
|
warnings() {
|
|
132
80
|
return []
|
|
133
81
|
}
|
|
82
|
+
|
|
83
|
+
get content() {
|
|
84
|
+
return this.result.css
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
get css() {
|
|
88
|
+
return this.result.css
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
get map() {
|
|
92
|
+
return this.result.map
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
get messages() {
|
|
96
|
+
return []
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
get opts() {
|
|
100
|
+
return this.result.opts
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
get processor() {
|
|
104
|
+
return this.result.processor
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
get root() {
|
|
108
|
+
if (this._root) {
|
|
109
|
+
return this._root
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
let root
|
|
113
|
+
let parser = parse
|
|
114
|
+
|
|
115
|
+
try {
|
|
116
|
+
root = parser(this._css, this._opts)
|
|
117
|
+
} catch (error) {
|
|
118
|
+
this.error = error
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (this.error) {
|
|
122
|
+
throw this.error
|
|
123
|
+
} else {
|
|
124
|
+
this._root = root
|
|
125
|
+
return root
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
get [Symbol.toStringTag]() {
|
|
130
|
+
return 'NoWorkResult'
|
|
131
|
+
}
|
|
134
132
|
}
|
|
135
133
|
|
|
136
134
|
module.exports = NoWorkResult
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
let { isClean, my } = require('./symbols')
|
|
3
4
|
let CssSyntaxError = require('./css-syntax-error')
|
|
4
5
|
let Stringifier = require('./stringifier')
|
|
5
6
|
let stringify = require('./stringify')
|
|
6
|
-
let { isClean, my } = require('./symbols')
|
|
7
7
|
|
|
8
8
|
function cloneNode(obj, parent) {
|
|
9
9
|
let cloned = new obj.constructor()
|
|
@@ -32,38 +32,7 @@ function cloneNode(obj, parent) {
|
|
|
32
32
|
return cloned
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
function sourceOffset(inputCSS, position) {
|
|
36
|
-
// Not all custom syntaxes support `offset` in `source.start` and `source.end`
|
|
37
|
-
if (position && typeof position.offset !== 'undefined') {
|
|
38
|
-
return position.offset
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
let column = 1
|
|
42
|
-
let line = 1
|
|
43
|
-
let offset = 0
|
|
44
|
-
|
|
45
|
-
for (let i = 0; i < inputCSS.length; i++) {
|
|
46
|
-
if (line === position.line && column === position.column) {
|
|
47
|
-
offset = i
|
|
48
|
-
break
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (inputCSS[i] === '\n') {
|
|
52
|
-
column = 1
|
|
53
|
-
line += 1
|
|
54
|
-
} else {
|
|
55
|
-
column += 1
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return offset
|
|
60
|
-
}
|
|
61
|
-
|
|
62
35
|
class Node {
|
|
63
|
-
get proxyOf() {
|
|
64
|
-
return this
|
|
65
|
-
}
|
|
66
|
-
|
|
67
36
|
constructor(defaults = {}) {
|
|
68
37
|
this.raws = {}
|
|
69
38
|
this[isClean] = false
|
|
@@ -184,11 +153,6 @@ class Node {
|
|
|
184
153
|
}
|
|
185
154
|
}
|
|
186
155
|
|
|
187
|
-
/* c8 ignore next 3 */
|
|
188
|
-
markClean() {
|
|
189
|
-
this[isClean] = true
|
|
190
|
-
}
|
|
191
|
-
|
|
192
156
|
markDirty() {
|
|
193
157
|
if (this[isClean]) {
|
|
194
158
|
this[isClean] = false
|
|
@@ -205,37 +169,25 @@ class Node {
|
|
|
205
169
|
return this.parent.nodes[index + 1]
|
|
206
170
|
}
|
|
207
171
|
|
|
208
|
-
positionBy(opts
|
|
172
|
+
positionBy(opts, stringRepresentation) {
|
|
209
173
|
let pos = this.source.start
|
|
210
174
|
if (opts.index) {
|
|
211
|
-
pos = this.positionInside(opts.index)
|
|
175
|
+
pos = this.positionInside(opts.index, stringRepresentation)
|
|
212
176
|
} else if (opts.word) {
|
|
213
|
-
|
|
214
|
-
'document' in this.source.input
|
|
215
|
-
? this.source.input.document
|
|
216
|
-
: this.source.input.css
|
|
217
|
-
let stringRepresentation = inputString.slice(
|
|
218
|
-
sourceOffset(inputString, this.source.start),
|
|
219
|
-
sourceOffset(inputString, this.source.end)
|
|
220
|
-
)
|
|
177
|
+
stringRepresentation = this.toString()
|
|
221
178
|
let index = stringRepresentation.indexOf(opts.word)
|
|
222
|
-
if (index !== -1) pos = this.positionInside(index)
|
|
179
|
+
if (index !== -1) pos = this.positionInside(index, stringRepresentation)
|
|
223
180
|
}
|
|
224
181
|
return pos
|
|
225
182
|
}
|
|
226
183
|
|
|
227
|
-
positionInside(index) {
|
|
184
|
+
positionInside(index, stringRepresentation) {
|
|
185
|
+
let string = stringRepresentation || this.toString()
|
|
228
186
|
let column = this.source.start.column
|
|
229
187
|
let line = this.source.start.line
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
: this.source.input.css
|
|
234
|
-
let offset = sourceOffset(inputString, this.source.start)
|
|
235
|
-
let end = offset + index
|
|
236
|
-
|
|
237
|
-
for (let i = offset; i < end; i++) {
|
|
238
|
-
if (inputString[i] === '\n') {
|
|
188
|
+
|
|
189
|
+
for (let i = 0; i < index; i++) {
|
|
190
|
+
if (string[i] === '\n') {
|
|
239
191
|
column = 1
|
|
240
192
|
line += 1
|
|
241
193
|
} else {
|
|
@@ -243,7 +195,7 @@ class Node {
|
|
|
243
195
|
}
|
|
244
196
|
}
|
|
245
197
|
|
|
246
|
-
return { column, line
|
|
198
|
+
return { column, line }
|
|
247
199
|
}
|
|
248
200
|
|
|
249
201
|
prev() {
|
|
@@ -252,51 +204,33 @@ class Node {
|
|
|
252
204
|
return this.parent.nodes[index - 1]
|
|
253
205
|
}
|
|
254
206
|
|
|
255
|
-
rangeBy(opts
|
|
256
|
-
let inputString =
|
|
257
|
-
'document' in this.source.input
|
|
258
|
-
? this.source.input.document
|
|
259
|
-
: this.source.input.css
|
|
207
|
+
rangeBy(opts) {
|
|
260
208
|
let start = {
|
|
261
209
|
column: this.source.start.column,
|
|
262
|
-
line: this.source.start.line
|
|
263
|
-
offset: sourceOffset(inputString, this.source.start)
|
|
210
|
+
line: this.source.start.line
|
|
264
211
|
}
|
|
265
212
|
let end = this.source.end
|
|
266
213
|
? {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
typeof this.source.end.offset === 'number'
|
|
271
|
-
? // `source.end.offset` is exclusive, so we don't need to add 1
|
|
272
|
-
this.source.end.offset
|
|
273
|
-
: // Since line/column in this.source.end is inclusive,
|
|
274
|
-
// the `sourceOffset(... , this.source.end)` returns an inclusive offset.
|
|
275
|
-
// So, we add 1 to convert it to exclusive.
|
|
276
|
-
sourceOffset(inputString, this.source.end) + 1
|
|
277
|
-
}
|
|
214
|
+
column: this.source.end.column + 1,
|
|
215
|
+
line: this.source.end.line
|
|
216
|
+
}
|
|
278
217
|
: {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
}
|
|
218
|
+
column: start.column + 1,
|
|
219
|
+
line: start.line
|
|
220
|
+
}
|
|
283
221
|
|
|
284
222
|
if (opts.word) {
|
|
285
|
-
let stringRepresentation =
|
|
286
|
-
sourceOffset(inputString, this.source.start),
|
|
287
|
-
sourceOffset(inputString, this.source.end)
|
|
288
|
-
)
|
|
223
|
+
let stringRepresentation = this.toString()
|
|
289
224
|
let index = stringRepresentation.indexOf(opts.word)
|
|
290
225
|
if (index !== -1) {
|
|
291
|
-
start = this.positionInside(index)
|
|
292
|
-
end = this.positionInside(index + opts.word.length)
|
|
226
|
+
start = this.positionInside(index, stringRepresentation)
|
|
227
|
+
end = this.positionInside(index + opts.word.length, stringRepresentation)
|
|
293
228
|
}
|
|
294
229
|
} else {
|
|
295
230
|
if (opts.start) {
|
|
296
231
|
start = {
|
|
297
232
|
column: opts.start.column,
|
|
298
|
-
line: opts.start.line
|
|
299
|
-
offset: sourceOffset(inputString, opts.start)
|
|
233
|
+
line: opts.start.line
|
|
300
234
|
}
|
|
301
235
|
} else if (opts.index) {
|
|
302
236
|
start = this.positionInside(opts.index)
|
|
@@ -305,10 +239,9 @@ class Node {
|
|
|
305
239
|
if (opts.end) {
|
|
306
240
|
end = {
|
|
307
241
|
column: opts.end.column,
|
|
308
|
-
line: opts.end.line
|
|
309
|
-
offset: sourceOffset(inputString, opts.end)
|
|
242
|
+
line: opts.end.line
|
|
310
243
|
}
|
|
311
|
-
} else if (
|
|
244
|
+
} else if (opts.endIndex) {
|
|
312
245
|
end = this.positionInside(opts.endIndex)
|
|
313
246
|
} else if (opts.index) {
|
|
314
247
|
end = this.positionInside(opts.index + 1)
|
|
@@ -319,11 +252,7 @@ class Node {
|
|
|
319
252
|
end.line < start.line ||
|
|
320
253
|
(end.line === start.line && end.column <= start.column)
|
|
321
254
|
) {
|
|
322
|
-
end = {
|
|
323
|
-
column: start.column + 1,
|
|
324
|
-
line: start.line,
|
|
325
|
-
offset: start.offset + 1
|
|
326
|
-
}
|
|
255
|
+
end = { column: start.column + 1, line: start.line }
|
|
327
256
|
}
|
|
328
257
|
|
|
329
258
|
return { end, start }
|
|
@@ -398,7 +327,6 @@ class Node {
|
|
|
398
327
|
} else if (typeof value === 'object' && value.toJSON) {
|
|
399
328
|
fixed[name] = value.toJSON(null, inputs)
|
|
400
329
|
} else if (name === 'source') {
|
|
401
|
-
if (value == null) continue
|
|
402
330
|
let inputId = inputs.get(value.input)
|
|
403
331
|
if (inputId == null) {
|
|
404
332
|
inputId = inputsNextIndex
|
|
@@ -438,11 +366,15 @@ class Node {
|
|
|
438
366
|
return result
|
|
439
367
|
}
|
|
440
368
|
|
|
441
|
-
warn(result, text, opts
|
|
369
|
+
warn(result, text, opts) {
|
|
442
370
|
let data = { node: this }
|
|
443
371
|
for (let i in opts) data[i] = opts[i]
|
|
444
372
|
return result.warn(text, data)
|
|
445
373
|
}
|
|
374
|
+
|
|
375
|
+
get proxyOf() {
|
|
376
|
+
return this
|
|
377
|
+
}
|
|
446
378
|
}
|
|
447
379
|
|
|
448
380
|
module.exports = Node
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
let AtRule = require('./at-rule')
|
|
4
|
-
let Comment = require('./comment')
|
|
5
3
|
let Declaration = require('./declaration')
|
|
4
|
+
let tokenizer = require('./tokenize')
|
|
5
|
+
let Comment = require('./comment')
|
|
6
|
+
let AtRule = require('./at-rule')
|
|
6
7
|
let Root = require('./root')
|
|
7
8
|
let Rule = require('./rule')
|
|
8
|
-
let tokenizer = require('./tokenize')
|
|
9
9
|
|
|
10
10
|
const SAFE_COMMENT_NEIGHBOR = {
|
|
11
11
|
empty: true,
|
|
@@ -28,6 +28,7 @@ class Parser {
|
|
|
28
28
|
this.current = this.root
|
|
29
29
|
this.spaces = ''
|
|
30
30
|
this.semicolon = false
|
|
31
|
+
this.customProperty = false
|
|
31
32
|
|
|
32
33
|
this.createTokenizer()
|
|
33
34
|
this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }
|
|
@@ -143,7 +144,7 @@ class Parser {
|
|
|
143
144
|
|
|
144
145
|
colon(tokens) {
|
|
145
146
|
let brackets = 0
|
|
146
|
-
let
|
|
147
|
+
let token, type, prev
|
|
147
148
|
for (let [i, element] of tokens.entries()) {
|
|
148
149
|
token = element
|
|
149
150
|
type = token[0]
|
|
@@ -176,7 +177,7 @@ class Parser {
|
|
|
176
177
|
node.source.end.offset++
|
|
177
178
|
|
|
178
179
|
let text = token[1].slice(2, -2)
|
|
179
|
-
if (
|
|
180
|
+
if (/^\s*$/.test(text)) {
|
|
180
181
|
node.text = ''
|
|
181
182
|
node.raws.left = text
|
|
182
183
|
node.raws.right = ''
|
|
@@ -267,12 +268,12 @@ class Parser {
|
|
|
267
268
|
let str = ''
|
|
268
269
|
for (let j = i; j > 0; j--) {
|
|
269
270
|
let type = cache[j][0]
|
|
270
|
-
if (str.trim().
|
|
271
|
+
if (str.trim().indexOf('!') === 0 && type !== 'space') {
|
|
271
272
|
break
|
|
272
273
|
}
|
|
273
274
|
str = cache.pop()[1] + str
|
|
274
275
|
}
|
|
275
|
-
if (str.trim().
|
|
276
|
+
if (str.trim().indexOf('!') === 0) {
|
|
276
277
|
node.important = true
|
|
277
278
|
node.raws.important = str
|
|
278
279
|
tokens = cache
|
|
@@ -347,8 +348,6 @@ class Parser {
|
|
|
347
348
|
if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {
|
|
348
349
|
prev.raws.ownSemicolon = this.spaces
|
|
349
350
|
this.spaces = ''
|
|
350
|
-
prev.source.end = this.getPosition(token[2])
|
|
351
|
-
prev.source.end.offset += prev.raws.ownSemicolon.length
|
|
352
351
|
}
|
|
353
352
|
}
|
|
354
353
|
}
|
|
@@ -593,7 +592,7 @@ class Parser {
|
|
|
593
592
|
|
|
594
593
|
unknownWord(tokens) {
|
|
595
594
|
throw this.input.error(
|
|
596
|
-
'Unknown word
|
|
595
|
+
'Unknown word',
|
|
597
596
|
{ offset: tokens[0][2] },
|
|
598
597
|
{ offset: tokens[0][2] + tokens[0][1].length }
|
|
599
598
|
)
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
let AtRule = require('./at-rule')
|
|
4
|
-
let Comment = require('./comment')
|
|
5
|
-
let Container = require('./container')
|
|
6
3
|
let CssSyntaxError = require('./css-syntax-error')
|
|
7
4
|
let Declaration = require('./declaration')
|
|
8
|
-
let Document = require('./document')
|
|
9
|
-
let fromJSON = require('./fromJSON')
|
|
10
|
-
let Input = require('./input')
|
|
11
5
|
let LazyResult = require('./lazy-result')
|
|
12
|
-
let
|
|
13
|
-
let Node = require('./node')
|
|
14
|
-
let parse = require('./parse')
|
|
6
|
+
let Container = require('./container')
|
|
15
7
|
let Processor = require('./processor')
|
|
16
|
-
let Result = require('./result.js')
|
|
17
|
-
let Root = require('./root')
|
|
18
|
-
let Rule = require('./rule')
|
|
19
8
|
let stringify = require('./stringify')
|
|
9
|
+
let fromJSON = require('./fromJSON')
|
|
10
|
+
let Document = require('./document')
|
|
20
11
|
let Warning = require('./warning')
|
|
12
|
+
let Comment = require('./comment')
|
|
13
|
+
let AtRule = require('./at-rule')
|
|
14
|
+
let Result = require('./result.js')
|
|
15
|
+
let Input = require('./input')
|
|
16
|
+
let parse = require('./parse')
|
|
17
|
+
let list = require('./list')
|
|
18
|
+
let Rule = require('./rule')
|
|
19
|
+
let Root = require('./root')
|
|
20
|
+
let Node = require('./node')
|
|
21
21
|
|
|
22
22
|
function postcss(...plugins) {
|
|
23
23
|
if (plugins.length === 1 && Array.isArray(plugins[0])) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
|
|
3
4
|
let { existsSync, readFileSync } = require('fs')
|
|
4
5
|
let { dirname, join } = require('path')
|
|
5
|
-
let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
|
|
6
6
|
|
|
7
7
|
function fromBase64(str) {
|
|
8
8
|
if (Buffer) {
|
|
@@ -16,7 +16,6 @@ function fromBase64(str) {
|
|
|
16
16
|
class PreviousMap {
|
|
17
17
|
constructor(css, opts) {
|
|
18
18
|
if (opts.map === false) return
|
|
19
|
-
if (opts.unsafeMap) this.unsafeMap = true
|
|
20
19
|
this.loadAnnotation(css)
|
|
21
20
|
this.inline = this.startWith(this.annotation, 'data:')
|
|
22
21
|
|
|
@@ -31,7 +30,7 @@ class PreviousMap {
|
|
|
31
30
|
|
|
32
31
|
consumer() {
|
|
33
32
|
if (!this.consumerCache) {
|
|
34
|
-
this.consumerCache = new SourceMapConsumer(this.
|
|
33
|
+
this.consumerCache = new SourceMapConsumer(this.text)
|
|
35
34
|
}
|
|
36
35
|
return this.consumerCache
|
|
37
36
|
}
|
|
@@ -42,18 +41,15 @@ class PreviousMap {
|
|
|
42
41
|
let charsetUri = /^data:application\/json;charset=utf-?8,/
|
|
43
42
|
let uri = /^data:application\/json,/
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return decodeURIComponent(text.substr(uriMatch[0].length))
|
|
44
|
+
if (charsetUri.test(text) || uri.test(text)) {
|
|
45
|
+
return decodeURIComponent(text.substr(RegExp.lastMatch.length))
|
|
48
46
|
}
|
|
49
47
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return fromBase64(text.substr(baseUriMatch[0].length))
|
|
48
|
+
if (baseCharsetUri.test(text) || baseUri.test(text)) {
|
|
49
|
+
return fromBase64(text.substr(RegExp.lastMatch.length))
|
|
53
50
|
}
|
|
54
51
|
|
|
55
|
-
let encoding = text.
|
|
56
|
-
encoding = encoding.slice(0, encoding.indexOf(','))
|
|
52
|
+
let encoding = text.match(/data:application\/json;([^,]+),/)[1]
|
|
57
53
|
throw new Error('Unsupported source map encoding ' + encoding)
|
|
58
54
|
}
|
|
59
55
|
|
|
@@ -71,7 +67,7 @@ class PreviousMap {
|
|
|
71
67
|
}
|
|
72
68
|
|
|
73
69
|
loadAnnotation(css) {
|
|
74
|
-
let comments = css.match(/\/\*\s*# sourceMappingURL=/
|
|
70
|
+
let comments = css.match(/\/\*\s*# sourceMappingURL=/gm)
|
|
75
71
|
if (!comments) return
|
|
76
72
|
|
|
77
73
|
// sourceMappingURLs from comments, strings, etc.
|
|
@@ -84,13 +80,7 @@ class PreviousMap {
|
|
|
84
80
|
}
|
|
85
81
|
}
|
|
86
82
|
|
|
87
|
-
loadFile(path
|
|
88
|
-
/* c8 ignore next 5 */
|
|
89
|
-
if (!trusted && !this.unsafeMap) {
|
|
90
|
-
if (!/\.map$/i.test(path)) {
|
|
91
|
-
return undefined
|
|
92
|
-
}
|
|
93
|
-
}
|
|
83
|
+
loadFile(path) {
|
|
94
84
|
this.root = dirname(path)
|
|
95
85
|
if (existsSync(path)) {
|
|
96
86
|
this.mapFile = path
|
|
@@ -107,7 +97,7 @@ class PreviousMap {
|
|
|
107
97
|
} else if (typeof prev === 'function') {
|
|
108
98
|
let prevPath = prev(file)
|
|
109
99
|
if (prevPath) {
|
|
110
|
-
let map = this.loadFile(prevPath
|
|
100
|
+
let map = this.loadFile(prevPath)
|
|
111
101
|
if (!map) {
|
|
112
102
|
throw new Error(
|
|
113
103
|
'Unable to load previous source map: ' + prevPath.toString()
|
|
@@ -131,16 +121,7 @@ class PreviousMap {
|
|
|
131
121
|
} else if (this.annotation) {
|
|
132
122
|
let map = this.annotation
|
|
133
123
|
if (file) map = join(dirname(file), map)
|
|
134
|
-
|
|
135
|
-
if (unknown) {
|
|
136
|
-
try {
|
|
137
|
-
/* c8 ignore next 4 */
|
|
138
|
-
this.json = JSON.parse(unknown.replace(/^\)]}'[^\n]*\n/, ''))
|
|
139
|
-
} catch {
|
|
140
|
-
return undefined
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
return unknown
|
|
124
|
+
return this.loadFile(map)
|
|
144
125
|
}
|
|
145
126
|
}
|
|
146
127
|
|