aboutsummaryrefslogtreecommitdiff
path: root/node_modules/vue/src/server/bundle-renderer/source-map-support.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/vue/src/server/bundle-renderer/source-map-support.js')
-rw-r--r--node_modules/vue/src/server/bundle-renderer/source-map-support.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/node_modules/vue/src/server/bundle-renderer/source-map-support.js b/node_modules/vue/src/server/bundle-renderer/source-map-support.js
new file mode 100644
index 00000000..1010532e
--- /dev/null
+++ b/node_modules/vue/src/server/bundle-renderer/source-map-support.js
@@ -0,0 +1,45 @@
+/* @flow */
+
+const SourceMapConsumer = require('source-map').SourceMapConsumer
+
+const filenameRE = /\(([^)]+\.js):(\d+):(\d+)\)$/
+
+export function createSourceMapConsumers (rawMaps: Object) {
+ const maps = {}
+ Object.keys(rawMaps).forEach(file => {
+ maps[file] = new SourceMapConsumer(rawMaps[file])
+ })
+ return maps
+}
+
+export function rewriteErrorTrace (e: any, mapConsumers: {
+ [key: string]: SourceMapConsumer
+}) {
+ if (e && typeof e.stack === 'string') {
+ e.stack = e.stack.split('\n').map(line => {
+ return rewriteTraceLine(line, mapConsumers)
+ }).join('\n')
+ }
+}
+
+function rewriteTraceLine (trace: string, mapConsumers: {
+ [key: string]: SourceMapConsumer
+}) {
+ const m = trace.match(filenameRE)
+ const map = m && mapConsumers[m[1]]
+ if (m != null && map) {
+ const originalPosition = map.originalPositionFor({
+ line: Number(m[2]),
+ column: Number(m[3])
+ })
+ if (originalPosition.source != null) {
+ const { source, line, column } = originalPosition
+ const mappedPosition = `(${source.replace(/^webpack:\/\/\//, '')}:${String(line)}:${String(column)})`
+ return trace.replace(filenameRE, mappedPosition)
+ } else {
+ return trace
+ }
+ } else {
+ return trace
+ }
+}