@opengsd/gsd-pi 1.1.1-dev.b2556262 → 1.2.0-dev.844675c9
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/project-sessions.js +4 -2
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +17 -9
- package/dist/resources/extensions/gsd/auto/contracts.js +8 -1
- package/dist/resources/extensions/gsd/auto/orchestrator.js +659 -57
- package/dist/resources/extensions/gsd/auto-prompts.js +110 -1
- package/dist/resources/extensions/gsd/auto-runtime-state.js +3 -0
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +5 -0
- package/dist/resources/extensions/gsd/auto-unit-tool-scope.js +29 -0
- package/dist/resources/extensions/gsd/auto-worktree.js +24 -17
- package/dist/resources/extensions/gsd/auto.js +62 -464
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +4 -1
- package/dist/resources/extensions/gsd/debug-logger.js +10 -0
- package/dist/resources/extensions/gsd/doctor-proactive.js +7 -2
- package/dist/resources/extensions/gsd/guided-flow.js +2 -2
- package/dist/resources/extensions/gsd/markdown-renderer.js +31 -32
- package/dist/resources/extensions/gsd/mcp-filter.js +6 -0
- package/dist/resources/extensions/gsd/native-git-bridge.js +45 -0
- package/dist/resources/extensions/gsd/prompts/discuss.md +6 -7
- package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +5 -7
- package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +3 -5
- package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +1 -2
- package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +5 -6
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/research-milestone.md +2 -2
- package/dist/resources/extensions/gsd/prompts/validate-milestone.md +5 -3
- package/dist/resources/extensions/gsd/schemas/parsers.js +6 -1
- package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +21 -1
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +169 -20
- package/dist/resources/extensions/gsd/user-input-boundary.js +42 -4
- package/dist/tsconfig.extensions.tsbuildinfo +1 -0
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +8 -8
- 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/api/boot/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/mcp-connections/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +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 +8 -8
- package/dist/web/standalone/.next/server/chunks/5047.js +2 -0
- package/dist/web/standalone/.next/server/chunks/5124.js +1 -0
- package/dist/web/standalone/.next/server/chunks/8357.js +2 -2
- 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/@gsd/native/package.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 +26 -18
- package/dist/web/standalone/node_modules/postcss/lib/css-syntax-error.js +47 -14
- 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 +54 -29
- package/dist/web/standalone/node_modules/postcss/lib/lazy-result.js +47 -37
- package/dist/web/standalone/node_modules/postcss/lib/map-generator.js +26 -9
- package/dist/web/standalone/node_modules/postcss/lib/no-work-result.js +57 -55
- package/dist/web/standalone/node_modules/postcss/lib/node.js +99 -31
- package/dist/web/standalone/node_modules/postcss/lib/parse.js +1 -1
- package/dist/web/standalone/node_modules/postcss/lib/parser.js +10 -9
- package/dist/web/standalone/node_modules/postcss/lib/postcss.js +12 -12
- package/dist/web/standalone/node_modules/postcss/lib/previous-map.js +30 -11
- 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 +69 -28
- package/dist/web/standalone/node_modules/postcss/lib/tokenize.js +6 -2
- package/dist/web/standalone/node_modules/postcss/package.json +48 -48
- package/package.json +16 -11
- 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/dist/modes/interactive/components/transcript-design.js +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js.map +1 -1
- 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 +0 -34
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +12 -46
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.js +11 -3
- package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/package.json +2 -2
- package/packages/rpc-client/package.json +2 -2
- package/pkg/package.json +1 -1
- package/scripts/install/deps.js +10 -0
- package/scripts/link-workspace-packages.cjs +7 -40
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +18 -8
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +2 -2
- package/src/resources/extensions/gsd/auto/contracts.ts +8 -119
- package/src/resources/extensions/gsd/auto/orchestrator.ts +794 -58
- package/src/resources/extensions/gsd/auto-prompts.ts +114 -1
- package/src/resources/extensions/gsd/auto-runtime-state.ts +4 -0
- package/src/resources/extensions/gsd/auto-tool-tracking.ts +5 -0
- package/src/resources/extensions/gsd/auto-unit-tool-scope.ts +33 -0
- package/src/resources/extensions/gsd/auto-worktree.ts +24 -16
- package/src/resources/extensions/gsd/auto.ts +81 -500
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +4 -0
- package/src/resources/extensions/gsd/debug-logger.ts +11 -0
- package/src/resources/extensions/gsd/doctor-proactive.ts +8 -2
- package/src/resources/extensions/gsd/guided-flow.ts +2 -2
- package/src/resources/extensions/gsd/markdown-renderer.ts +38 -19
- package/src/resources/extensions/gsd/mcp-filter.ts +7 -0
- package/src/resources/extensions/gsd/native-git-bridge.ts +48 -0
- package/src/resources/extensions/gsd/prompts/discuss.md +6 -7
- package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +5 -7
- package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +3 -5
- package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +1 -2
- package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +5 -6
- package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/research-milestone.md +2 -2
- package/src/resources/extensions/gsd/prompts/validate-milestone.md +5 -3
- package/src/resources/extensions/gsd/schemas/parsers.ts +6 -1
- package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +31 -10
- package/src/resources/extensions/gsd/tests/artifact-db-drift-memo.test.ts +66 -0
- package/src/resources/extensions/gsd/tests/auto-dispatch-baseline-harness.test.ts +53 -0
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +590 -855
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +38 -10
- package/src/resources/extensions/gsd/tests/debug-logger.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/execute-summary-save-empty-project.test.ts +64 -1
- package/src/resources/extensions/gsd/tests/integration/merge-strategy-regular.test.ts +157 -0
- package/src/resources/extensions/gsd/tests/markdown-renderer-parse-cache.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/native-merge-regular.test.ts +139 -0
- package/src/resources/extensions/gsd/tests/orchestrator-legacy-parity.test.ts +127 -0
- package/src/resources/extensions/gsd/tests/parse-project-milestone-bridge.test.ts +77 -0
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +4 -2
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +29 -2
- package/src/resources/extensions/gsd/tests/research-milestone-composer.test.ts +65 -0
- package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +19 -5
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/user-input-boundary.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/worktree-safety.test.ts +24 -0
- package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +15 -3
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +183 -21
- package/src/resources/extensions/gsd/user-input-boundary.ts +37 -5
- package/dist/web/standalone/.next/server/chunks/678.js +0 -2
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts +0 -21
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js +0 -213
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.d.ts +0 -28
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.js +0 -249
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-density-prototype.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.d.ts +0 -19
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.js +0 -797
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/transcript-design-prototype.js.map +0 -1
- package/scripts/ensure-workspace-builds.cjs +0 -129
- /package/dist/web/standalone/.next/static/{tJOKQbQRO-9MiFDO8DIDS → Qbr81pQ-pbQXP4bq2VXLv}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{tJOKQbQRO-9MiFDO8DIDS → Qbr81pQ-pbQXP4bq2VXLv}/_ssgManifest.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
|
|
4
3
|
let { dirname, relative, resolve, sep } = require('path')
|
|
4
|
+
let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')
|
|
5
5
|
let { pathToFileURL } = require('url')
|
|
6
6
|
|
|
7
7
|
let Input = require('./input')
|
|
@@ -16,6 +16,7 @@ class MapGenerator {
|
|
|
16
16
|
this.root = root
|
|
17
17
|
this.opts = opts
|
|
18
18
|
this.css = cssString
|
|
19
|
+
this.originalCSS = cssString
|
|
19
20
|
this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute
|
|
20
21
|
|
|
21
22
|
this.memoizedFileURLs = new Map()
|
|
@@ -51,7 +52,7 @@ class MapGenerator {
|
|
|
51
52
|
if (this.mapOpts.sourcesContent === false) {
|
|
52
53
|
map = new SourceMapConsumer(prev.text)
|
|
53
54
|
if (map.sourcesContent) {
|
|
54
|
-
map.sourcesContent =
|
|
55
|
+
map.sourcesContent = null
|
|
55
56
|
}
|
|
56
57
|
} else {
|
|
57
58
|
map = prev.consumer()
|
|
@@ -69,12 +70,20 @@ class MapGenerator {
|
|
|
69
70
|
for (let i = this.root.nodes.length - 1; i >= 0; i--) {
|
|
70
71
|
node = this.root.nodes[i]
|
|
71
72
|
if (node.type !== 'comment') continue
|
|
72
|
-
if (node.text.
|
|
73
|
+
if (node.text.startsWith('# sourceMappingURL=')) {
|
|
73
74
|
this.root.removeChild(i)
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
} else if (this.css) {
|
|
77
|
-
|
|
78
|
+
let startIndex
|
|
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
|
+
}
|
|
78
87
|
}
|
|
79
88
|
}
|
|
80
89
|
|
|
@@ -97,9 +106,14 @@ class MapGenerator {
|
|
|
97
106
|
} else if (this.previous().length === 1) {
|
|
98
107
|
let prev = this.previous()[0].consumer()
|
|
99
108
|
prev.file = this.outputFile()
|
|
100
|
-
this.map = SourceMapGenerator.fromSourceMap(prev
|
|
109
|
+
this.map = SourceMapGenerator.fromSourceMap(prev, {
|
|
110
|
+
ignoreInvalidMapping: true
|
|
111
|
+
})
|
|
101
112
|
} else {
|
|
102
|
-
this.map = new SourceMapGenerator({
|
|
113
|
+
this.map = new SourceMapGenerator({
|
|
114
|
+
file: this.outputFile(),
|
|
115
|
+
ignoreInvalidMapping: true
|
|
116
|
+
})
|
|
103
117
|
this.map.addMapping({
|
|
104
118
|
generated: { column: 0, line: 1 },
|
|
105
119
|
original: { column: 0, line: 1 },
|
|
@@ -122,7 +136,10 @@ class MapGenerator {
|
|
|
122
136
|
|
|
123
137
|
generateString() {
|
|
124
138
|
this.css = ''
|
|
125
|
-
this.map = new SourceMapGenerator({
|
|
139
|
+
this.map = new SourceMapGenerator({
|
|
140
|
+
file: this.outputFile(),
|
|
141
|
+
ignoreInvalidMapping: true
|
|
142
|
+
})
|
|
126
143
|
|
|
127
144
|
let line = 1
|
|
128
145
|
let column = 1
|
|
@@ -134,7 +151,7 @@ class MapGenerator {
|
|
|
134
151
|
source: ''
|
|
135
152
|
}
|
|
136
153
|
|
|
137
|
-
let
|
|
154
|
+
let last, lines
|
|
138
155
|
this.stringify(this.root, (str, node, type) => {
|
|
139
156
|
this.css += str
|
|
140
157
|
|
|
@@ -276,7 +293,7 @@ class MapGenerator {
|
|
|
276
293
|
}
|
|
277
294
|
})
|
|
278
295
|
} else {
|
|
279
|
-
let input = new Input(this.
|
|
296
|
+
let input = new Input(this.originalCSS, this.opts)
|
|
280
297
|
if (input.map) this.previousMaps.push(input.map)
|
|
281
298
|
}
|
|
282
299
|
}
|
|
@@ -1,12 +1,62 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
let MapGenerator = require('./map-generator')
|
|
4
|
+
let parse = require('./parse')
|
|
5
|
+
let Result = require('./result')
|
|
4
6
|
let stringify = require('./stringify')
|
|
5
7
|
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
|
+
|
|
10
60
|
constructor(processor, css, opts) {
|
|
11
61
|
css = css.toString()
|
|
12
62
|
this.stringified = false
|
|
@@ -15,10 +65,9 @@ class NoWorkResult {
|
|
|
15
65
|
this._css = css
|
|
16
66
|
this._opts = opts
|
|
17
67
|
this._map = undefined
|
|
18
|
-
let root
|
|
19
68
|
|
|
20
69
|
let str = stringify
|
|
21
|
-
this.result = new Result(this._processor,
|
|
70
|
+
this.result = new Result(this._processor, undefined, this._opts)
|
|
22
71
|
this.result.css = css
|
|
23
72
|
|
|
24
73
|
let self = this
|
|
@@ -28,7 +77,7 @@ class NoWorkResult {
|
|
|
28
77
|
}
|
|
29
78
|
})
|
|
30
79
|
|
|
31
|
-
let map = new MapGenerator(str,
|
|
80
|
+
let map = new MapGenerator(str, undefined, this._opts, css)
|
|
32
81
|
if (map.isMap()) {
|
|
33
82
|
let [generatedCSS, generatedMap] = map.generate()
|
|
34
83
|
if (generatedCSS) {
|
|
@@ -37,6 +86,9 @@ class NoWorkResult {
|
|
|
37
86
|
if (generatedMap) {
|
|
38
87
|
this.result.map = generatedMap
|
|
39
88
|
}
|
|
89
|
+
} else {
|
|
90
|
+
map.clearAnnotation()
|
|
91
|
+
this.result.css = map.css
|
|
40
92
|
}
|
|
41
93
|
}
|
|
42
94
|
|
|
@@ -79,56 +131,6 @@ class NoWorkResult {
|
|
|
79
131
|
warnings() {
|
|
80
132
|
return []
|
|
81
133
|
}
|
|
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
|
-
}
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
module.exports = NoWorkResult
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
let { isClean, my } = require('./symbols')
|
|
4
3
|
let CssSyntaxError = require('./css-syntax-error')
|
|
5
4
|
let Stringifier = require('./stringifier')
|
|
6
5
|
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,7 +32,38 @@ 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
|
+
|
|
35
62
|
class Node {
|
|
63
|
+
get proxyOf() {
|
|
64
|
+
return this
|
|
65
|
+
}
|
|
66
|
+
|
|
36
67
|
constructor(defaults = {}) {
|
|
37
68
|
this.raws = {}
|
|
38
69
|
this[isClean] = false
|
|
@@ -153,6 +184,11 @@ class Node {
|
|
|
153
184
|
}
|
|
154
185
|
}
|
|
155
186
|
|
|
187
|
+
/* c8 ignore next 3 */
|
|
188
|
+
markClean() {
|
|
189
|
+
this[isClean] = true
|
|
190
|
+
}
|
|
191
|
+
|
|
156
192
|
markDirty() {
|
|
157
193
|
if (this[isClean]) {
|
|
158
194
|
this[isClean] = false
|
|
@@ -169,25 +205,37 @@ class Node {
|
|
|
169
205
|
return this.parent.nodes[index + 1]
|
|
170
206
|
}
|
|
171
207
|
|
|
172
|
-
positionBy(opts
|
|
208
|
+
positionBy(opts = {}) {
|
|
173
209
|
let pos = this.source.start
|
|
174
210
|
if (opts.index) {
|
|
175
|
-
pos = this.positionInside(opts.index
|
|
211
|
+
pos = this.positionInside(opts.index)
|
|
176
212
|
} else if (opts.word) {
|
|
177
|
-
|
|
213
|
+
let inputString =
|
|
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
|
+
)
|
|
178
221
|
let index = stringRepresentation.indexOf(opts.word)
|
|
179
|
-
if (index !== -1) pos = this.positionInside(index
|
|
222
|
+
if (index !== -1) pos = this.positionInside(index)
|
|
180
223
|
}
|
|
181
224
|
return pos
|
|
182
225
|
}
|
|
183
226
|
|
|
184
|
-
positionInside(index
|
|
185
|
-
let string = stringRepresentation || this.toString()
|
|
227
|
+
positionInside(index) {
|
|
186
228
|
let column = this.source.start.column
|
|
187
229
|
let line = this.source.start.line
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
230
|
+
let inputString =
|
|
231
|
+
'document' in this.source.input
|
|
232
|
+
? this.source.input.document
|
|
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') {
|
|
191
239
|
column = 1
|
|
192
240
|
line += 1
|
|
193
241
|
} else {
|
|
@@ -195,7 +243,7 @@ class Node {
|
|
|
195
243
|
}
|
|
196
244
|
}
|
|
197
245
|
|
|
198
|
-
return { column, line }
|
|
246
|
+
return { column, line, offset: end }
|
|
199
247
|
}
|
|
200
248
|
|
|
201
249
|
prev() {
|
|
@@ -204,33 +252,51 @@ class Node {
|
|
|
204
252
|
return this.parent.nodes[index - 1]
|
|
205
253
|
}
|
|
206
254
|
|
|
207
|
-
rangeBy(opts) {
|
|
255
|
+
rangeBy(opts = {}) {
|
|
256
|
+
let inputString =
|
|
257
|
+
'document' in this.source.input
|
|
258
|
+
? this.source.input.document
|
|
259
|
+
: this.source.input.css
|
|
208
260
|
let start = {
|
|
209
261
|
column: this.source.start.column,
|
|
210
|
-
line: this.source.start.line
|
|
262
|
+
line: this.source.start.line,
|
|
263
|
+
offset: sourceOffset(inputString, this.source.start)
|
|
211
264
|
}
|
|
212
265
|
let end = this.source.end
|
|
213
266
|
? {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
267
|
+
column: this.source.end.column + 1,
|
|
268
|
+
line: this.source.end.line,
|
|
269
|
+
offset:
|
|
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
|
+
}
|
|
217
278
|
: {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
279
|
+
column: start.column + 1,
|
|
280
|
+
line: start.line,
|
|
281
|
+
offset: start.offset + 1
|
|
282
|
+
}
|
|
221
283
|
|
|
222
284
|
if (opts.word) {
|
|
223
|
-
let stringRepresentation =
|
|
285
|
+
let stringRepresentation = inputString.slice(
|
|
286
|
+
sourceOffset(inputString, this.source.start),
|
|
287
|
+
sourceOffset(inputString, this.source.end)
|
|
288
|
+
)
|
|
224
289
|
let index = stringRepresentation.indexOf(opts.word)
|
|
225
290
|
if (index !== -1) {
|
|
226
|
-
start = this.positionInside(index
|
|
227
|
-
end = this.positionInside(index + opts.word.length
|
|
291
|
+
start = this.positionInside(index)
|
|
292
|
+
end = this.positionInside(index + opts.word.length)
|
|
228
293
|
}
|
|
229
294
|
} else {
|
|
230
295
|
if (opts.start) {
|
|
231
296
|
start = {
|
|
232
297
|
column: opts.start.column,
|
|
233
|
-
line: opts.start.line
|
|
298
|
+
line: opts.start.line,
|
|
299
|
+
offset: sourceOffset(inputString, opts.start)
|
|
234
300
|
}
|
|
235
301
|
} else if (opts.index) {
|
|
236
302
|
start = this.positionInside(opts.index)
|
|
@@ -239,9 +305,10 @@ class Node {
|
|
|
239
305
|
if (opts.end) {
|
|
240
306
|
end = {
|
|
241
307
|
column: opts.end.column,
|
|
242
|
-
line: opts.end.line
|
|
308
|
+
line: opts.end.line,
|
|
309
|
+
offset: sourceOffset(inputString, opts.end)
|
|
243
310
|
}
|
|
244
|
-
} else if (opts.endIndex) {
|
|
311
|
+
} else if (typeof opts.endIndex === 'number') {
|
|
245
312
|
end = this.positionInside(opts.endIndex)
|
|
246
313
|
} else if (opts.index) {
|
|
247
314
|
end = this.positionInside(opts.index + 1)
|
|
@@ -252,7 +319,11 @@ class Node {
|
|
|
252
319
|
end.line < start.line ||
|
|
253
320
|
(end.line === start.line && end.column <= start.column)
|
|
254
321
|
) {
|
|
255
|
-
end = {
|
|
322
|
+
end = {
|
|
323
|
+
column: start.column + 1,
|
|
324
|
+
line: start.line,
|
|
325
|
+
offset: start.offset + 1
|
|
326
|
+
}
|
|
256
327
|
}
|
|
257
328
|
|
|
258
329
|
return { end, start }
|
|
@@ -327,6 +398,7 @@ class Node {
|
|
|
327
398
|
} else if (typeof value === 'object' && value.toJSON) {
|
|
328
399
|
fixed[name] = value.toJSON(null, inputs)
|
|
329
400
|
} else if (name === 'source') {
|
|
401
|
+
if (value == null) continue
|
|
330
402
|
let inputId = inputs.get(value.input)
|
|
331
403
|
if (inputId == null) {
|
|
332
404
|
inputId = inputsNextIndex
|
|
@@ -366,15 +438,11 @@ class Node {
|
|
|
366
438
|
return result
|
|
367
439
|
}
|
|
368
440
|
|
|
369
|
-
warn(result, text, opts) {
|
|
441
|
+
warn(result, text, opts = {}) {
|
|
370
442
|
let data = { node: this }
|
|
371
443
|
for (let i in opts) data[i] = opts[i]
|
|
372
444
|
return result.warn(text, data)
|
|
373
445
|
}
|
|
374
|
-
|
|
375
|
-
get proxyOf() {
|
|
376
|
-
return this
|
|
377
|
-
}
|
|
378
446
|
}
|
|
379
447
|
|
|
380
448
|
module.exports = Node
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
let Declaration = require('./declaration')
|
|
4
|
-
let tokenizer = require('./tokenize')
|
|
5
|
-
let Comment = require('./comment')
|
|
6
3
|
let AtRule = require('./at-rule')
|
|
4
|
+
let Comment = require('./comment')
|
|
5
|
+
let Declaration = require('./declaration')
|
|
7
6
|
let Root = require('./root')
|
|
8
7
|
let Rule = require('./rule')
|
|
8
|
+
let tokenizer = require('./tokenize')
|
|
9
9
|
|
|
10
10
|
const SAFE_COMMENT_NEIGHBOR = {
|
|
11
11
|
empty: true,
|
|
@@ -28,7 +28,6 @@ class Parser {
|
|
|
28
28
|
this.current = this.root
|
|
29
29
|
this.spaces = ''
|
|
30
30
|
this.semicolon = false
|
|
31
|
-
this.customProperty = false
|
|
32
31
|
|
|
33
32
|
this.createTokenizer()
|
|
34
33
|
this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }
|
|
@@ -144,7 +143,7 @@ class Parser {
|
|
|
144
143
|
|
|
145
144
|
colon(tokens) {
|
|
146
145
|
let brackets = 0
|
|
147
|
-
let token, type
|
|
146
|
+
let prev, token, type
|
|
148
147
|
for (let [i, element] of tokens.entries()) {
|
|
149
148
|
token = element
|
|
150
149
|
type = token[0]
|
|
@@ -177,7 +176,7 @@ class Parser {
|
|
|
177
176
|
node.source.end.offset++
|
|
178
177
|
|
|
179
178
|
let text = token[1].slice(2, -2)
|
|
180
|
-
if (
|
|
179
|
+
if (!text.trim()) {
|
|
181
180
|
node.text = ''
|
|
182
181
|
node.raws.left = text
|
|
183
182
|
node.raws.right = ''
|
|
@@ -268,12 +267,12 @@ class Parser {
|
|
|
268
267
|
let str = ''
|
|
269
268
|
for (let j = i; j > 0; j--) {
|
|
270
269
|
let type = cache[j][0]
|
|
271
|
-
if (str.trim().
|
|
270
|
+
if (str.trim().startsWith('!') && type !== 'space') {
|
|
272
271
|
break
|
|
273
272
|
}
|
|
274
273
|
str = cache.pop()[1] + str
|
|
275
274
|
}
|
|
276
|
-
if (str.trim().
|
|
275
|
+
if (str.trim().startsWith('!')) {
|
|
277
276
|
node.important = true
|
|
278
277
|
node.raws.important = str
|
|
279
278
|
tokens = cache
|
|
@@ -348,6 +347,8 @@ class Parser {
|
|
|
348
347
|
if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {
|
|
349
348
|
prev.raws.ownSemicolon = this.spaces
|
|
350
349
|
this.spaces = ''
|
|
350
|
+
prev.source.end = this.getPosition(token[2])
|
|
351
|
+
prev.source.end.offset += prev.raws.ownSemicolon.length
|
|
351
352
|
}
|
|
352
353
|
}
|
|
353
354
|
}
|
|
@@ -592,7 +593,7 @@ class Parser {
|
|
|
592
593
|
|
|
593
594
|
unknownWord(tokens) {
|
|
594
595
|
throw this.input.error(
|
|
595
|
-
'Unknown word',
|
|
596
|
+
'Unknown word ' + tokens[0][1],
|
|
596
597
|
{ offset: tokens[0][2] },
|
|
597
598
|
{ offset: tokens[0][2] + tokens[0][1].length }
|
|
598
599
|
)
|
|
@@ -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')
|
|
3
6
|
let CssSyntaxError = require('./css-syntax-error')
|
|
4
7
|
let Declaration = require('./declaration')
|
|
5
|
-
let LazyResult = require('./lazy-result')
|
|
6
|
-
let Container = require('./container')
|
|
7
|
-
let Processor = require('./processor')
|
|
8
|
-
let stringify = require('./stringify')
|
|
9
|
-
let fromJSON = require('./fromJSON')
|
|
10
8
|
let Document = require('./document')
|
|
11
|
-
let
|
|
12
|
-
let Comment = require('./comment')
|
|
13
|
-
let AtRule = require('./at-rule')
|
|
14
|
-
let Result = require('./result.js')
|
|
9
|
+
let fromJSON = require('./fromJSON')
|
|
15
10
|
let Input = require('./input')
|
|
16
|
-
let
|
|
11
|
+
let LazyResult = require('./lazy-result')
|
|
17
12
|
let list = require('./list')
|
|
18
|
-
let Rule = require('./rule')
|
|
19
|
-
let Root = require('./root')
|
|
20
13
|
let Node = require('./node')
|
|
14
|
+
let parse = require('./parse')
|
|
15
|
+
let Processor = require('./processor')
|
|
16
|
+
let Result = require('./result.js')
|
|
17
|
+
let Root = require('./root')
|
|
18
|
+
let Rule = require('./rule')
|
|
19
|
+
let stringify = require('./stringify')
|
|
20
|
+
let Warning = require('./warning')
|
|
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')
|
|
4
3
|
let { existsSync, readFileSync } = require('fs')
|
|
5
4
|
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,6 +16,7 @@ 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
|
|
19
20
|
this.loadAnnotation(css)
|
|
20
21
|
this.inline = this.startWith(this.annotation, 'data:')
|
|
21
22
|
|
|
@@ -30,7 +31,7 @@ class PreviousMap {
|
|
|
30
31
|
|
|
31
32
|
consumer() {
|
|
32
33
|
if (!this.consumerCache) {
|
|
33
|
-
this.consumerCache = new SourceMapConsumer(this.text)
|
|
34
|
+
this.consumerCache = new SourceMapConsumer(this.json || this.text)
|
|
34
35
|
}
|
|
35
36
|
return this.consumerCache
|
|
36
37
|
}
|
|
@@ -41,15 +42,18 @@ class PreviousMap {
|
|
|
41
42
|
let charsetUri = /^data:application\/json;charset=utf-?8,/
|
|
42
43
|
let uri = /^data:application\/json,/
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
let uriMatch = text.match(charsetUri) || text.match(uri)
|
|
46
|
+
if (uriMatch) {
|
|
47
|
+
return decodeURIComponent(text.substr(uriMatch[0].length))
|
|
46
48
|
}
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri)
|
|
51
|
+
if (baseUriMatch) {
|
|
52
|
+
return fromBase64(text.substr(baseUriMatch[0].length))
|
|
50
53
|
}
|
|
51
54
|
|
|
52
|
-
let encoding = text.
|
|
55
|
+
let encoding = text.slice('data:application/json;'.length)
|
|
56
|
+
encoding = encoding.slice(0, encoding.indexOf(','))
|
|
53
57
|
throw new Error('Unsupported source map encoding ' + encoding)
|
|
54
58
|
}
|
|
55
59
|
|
|
@@ -67,7 +71,7 @@ class PreviousMap {
|
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
loadAnnotation(css) {
|
|
70
|
-
let comments = css.match(/\/\*\s*# sourceMappingURL=/
|
|
74
|
+
let comments = css.match(/\/\*\s*# sourceMappingURL=/g)
|
|
71
75
|
if (!comments) return
|
|
72
76
|
|
|
73
77
|
// sourceMappingURLs from comments, strings, etc.
|
|
@@ -80,7 +84,13 @@ class PreviousMap {
|
|
|
80
84
|
}
|
|
81
85
|
}
|
|
82
86
|
|
|
83
|
-
loadFile(path) {
|
|
87
|
+
loadFile(path, cssFile, trusted) {
|
|
88
|
+
/* c8 ignore next 5 */
|
|
89
|
+
if (!trusted && !this.unsafeMap) {
|
|
90
|
+
if (!/\.map$/i.test(path)) {
|
|
91
|
+
return undefined
|
|
92
|
+
}
|
|
93
|
+
}
|
|
84
94
|
this.root = dirname(path)
|
|
85
95
|
if (existsSync(path)) {
|
|
86
96
|
this.mapFile = path
|
|
@@ -97,7 +107,7 @@ class PreviousMap {
|
|
|
97
107
|
} else if (typeof prev === 'function') {
|
|
98
108
|
let prevPath = prev(file)
|
|
99
109
|
if (prevPath) {
|
|
100
|
-
let map = this.loadFile(prevPath)
|
|
110
|
+
let map = this.loadFile(prevPath, file, true)
|
|
101
111
|
if (!map) {
|
|
102
112
|
throw new Error(
|
|
103
113
|
'Unable to load previous source map: ' + prevPath.toString()
|
|
@@ -121,7 +131,16 @@ class PreviousMap {
|
|
|
121
131
|
} else if (this.annotation) {
|
|
122
132
|
let map = this.annotation
|
|
123
133
|
if (file) map = join(dirname(file), map)
|
|
124
|
-
|
|
134
|
+
let unknown = this.loadFile(map, file, false)
|
|
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
|
|
125
144
|
}
|
|
126
145
|
}
|
|
127
146
|
|