Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a63d5f0

Browse filesBrowse files
authored
fix: support constructor function (vuejs#143)
1 parent 128a241 commit a63d5f0
Copy full SHA for a63d5f0

File tree

Expand file treeCollapse file tree

6 files changed

+54
-39
lines changed
Filter options
Expand file treeCollapse file tree

6 files changed

+54
-39
lines changed

‎e2e/__projects__/babel-config/__snapshots__/test.js.snap

Copy file name to clipboardExpand all lines: e2e/__projects__/babel-config/__snapshots__/test.js.snap
+12-18Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`generates source maps for .vue files 1`] = `
4-
"var exports = {}
5-
\\"use strict\\";
4+
"\\"use strict\\";
65
76
Object.defineProperty(exports, \\"__esModule\\", {
87
value: true
@@ -54,12 +53,10 @@ var _default = {
5453
}
5554
};
5655
exports.default = _default;
57-
58-
if(!exports.default) {
59-
exports.default = {}
60-
}
61-
var __options__ = module.exports = exports.default
62-
Object.keys(exports).forEach(k => module.exports[k] = exports[k])
56+
;
57+
var __options__ = typeof exports.default === 'function'
58+
? exports.default.options
59+
: exports.default
6360
var render = function() {
6461
var _vm = this
6562
var _h = _vm.$createElement
@@ -89,12 +86,11 @@ this['$style'], {\\"testB\\":\\"testB\\"});
8986
__options__.beforeCreate = beforeCreate ? [].concat(beforeCreate, styleFn) : [styleFn]
9087
})()
9188
92-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJhc2ljLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBUEE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBakJBIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiaGVsbG9cIj5cbiAgICA8aDEgOmNsYXNzPVwiaGVhZGluZ0NsYXNzZXNcIj57eyBtc2cgfX08L2gxPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBtb2R1bGU9XCJjc3NcIj5cbi50ZXN0QSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJlZDtcbn1cbjwvc3R5bGU+XG48c3R5bGUgbW9kdWxlPlxuLnRlc3RCIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTtcbn1cbjwvc3R5bGU+XG48c3R5bGU+XG4udGVzdEMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlO1xufVxuPC9zdHlsZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2Jhc2ljJyxcbiAgY29tcHV0ZWQ6IHtcbiAgICBoZWFkaW5nQ2xhc3NlczogZnVuY3Rpb24gaGVhZGluZ0NsYXNzZXMoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZWQ6IHRoaXMuaXNDcmF6eSxcbiAgICAgICAgYmx1ZTogIXRoaXMuaXNDcmF6eSxcbiAgICAgICAgc2hhZG93OiB0aGlzLmlzQ3JhenlcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1zZzogJ1dlbGNvbWUgdG8gWW91ciBWdWUuanMgQXBwJyxcbiAgICAgIGlzQ3Jhenk6IGZhbHNlXG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uIHRvZ2dsZUNsYXNzKCkge1xuICAgICAgdGhpcy5pc0NyYXp5ID0gIXRoaXMuaXNDcmF6eVxuICAgIH1cbiAgfVxufVxuPC9zY3JpcHQ+XG4iXX0="
89+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJhc2ljLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFQQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFqQkEiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJoZWxsb1wiPlxuICAgIDxoMSA6Y2xhc3M9XCJoZWFkaW5nQ2xhc3Nlc1wiPnt7IG1zZyB9fTwvaDE+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIG1vZHVsZT1cImNzc1wiPlxuLnRlc3RBIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xufVxuPC9zdHlsZT5cbjxzdHlsZSBtb2R1bGU+XG4udGVzdEIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlO1xufVxuPC9zdHlsZT5cbjxzdHlsZT5cbi50ZXN0QyB7XG4gIGJhY2tncm91bmQtY29sb3I6IGJsdWU7XG59XG48L3N0eWxlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYmFzaWMnLFxuICBjb21wdXRlZDoge1xuICAgIGhlYWRpbmdDbGFzc2VzOiBmdW5jdGlvbiBoZWFkaW5nQ2xhc3NlcygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlZDogdGhpcy5pc0NyYXp5LFxuICAgICAgICBibHVlOiAhdGhpcy5pc0NyYXp5LFxuICAgICAgICBzaGFkb3c6IHRoaXMuaXNDcmF6eVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbXNnOiAnV2VsY29tZSB0byBZb3VyIFZ1ZS5qcyBBcHAnLFxuICAgICAgaXNDcmF6eTogZmFsc2VcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICB0b2dnbGVDbGFzczogZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoKSB7XG4gICAgICB0aGlzLmlzQ3JhenkgPSAhdGhpcy5pc0NyYXp5XG4gICAgfVxuICB9XG59XG48L3NjcmlwdD5cbiJdfQ=="
9390
`;
9491

9592
exports[`generates source maps using src attributes 1`] = `
96-
"var exports = {}
97-
\\"use strict\\";
93+
"\\"use strict\\";
9894
9995
Object.defineProperty(exports, \\"__esModule\\", {
10096
value: true
@@ -124,12 +120,10 @@ var _default = {
124120
}
125121
};
126122
exports.default = _default;
127-
128-
if(!exports.default) {
129-
exports.default = {}
130-
}
131-
var __options__ = module.exports = exports.default
132-
Object.keys(exports).forEach(k => module.exports[k] = exports[k])
123+
;
124+
var __options__ = typeof exports.default === 'function'
125+
? exports.default.options
126+
: exports.default
133127
var render = function() {
134128
var _vm = this
135129
var _h = _vm.$createElement
@@ -144,5 +138,5 @@ render._withStripped = true
144138
__options__.render = render
145139
__options__.staticRenderFns = staticRenderFns
146140
147-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJhc2ljU3JjLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBUEE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBakJBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYmFzaWMnLFxuICBjb21wdXRlZDoge1xuICAgIGhlYWRpbmdDbGFzc2VzOiBmdW5jdGlvbiBoZWFkaW5nQ2xhc3NlcygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlZDogdGhpcy5pc0NyYXp5LFxuICAgICAgICBibHVlOiAhdGhpcy5pc0NyYXp5LFxuICAgICAgICBzaGFkb3c6IHRoaXMuaXNDcmF6eVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbXNnOiAnV2VsY29tZSB0byBZb3VyIFZ1ZS5qcyBBcHAnLFxuICAgICAgaXNDcmF6eTogZmFsc2VcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICB0b2dnbGVDbGFzczogZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoKSB7XG4gICAgICB0aGlzLmlzQ3JhenkgPSAhdGhpcy5pc0NyYXp5XG4gICAgfVxuICB9XG59XG4iXX0="
141+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJhc2ljU3JjLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFQQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFqQkEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdiYXNpYycsXG4gIGNvbXB1dGVkOiB7XG4gICAgaGVhZGluZ0NsYXNzZXM6IGZ1bmN0aW9uIGhlYWRpbmdDbGFzc2VzKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVkOiB0aGlzLmlzQ3JhenksXG4gICAgICAgIGJsdWU6ICF0aGlzLmlzQ3JhenksXG4gICAgICAgIHNoYWRvdzogdGhpcy5pc0NyYXp5XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBtc2c6ICdXZWxjb21lIHRvIFlvdXIgVnVlLmpzIEFwcCcsXG4gICAgICBpc0NyYXp5OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiB0b2dnbGVDbGFzcygpIHtcbiAgICAgIHRoaXMuaXNDcmF6eSA9ICF0aGlzLmlzQ3JhenlcbiAgICB9XG4gIH1cbn1cbiJdfQ=="
148142
`;

‎e2e/__projects__/babel-config/components/CoffeeScript.vue

Copy file name to clipboardExpand all lines: e2e/__projects__/babel-config/components/CoffeeScript.vue
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
</template>
44

55
<script lang="coffeescript">
6-
module.exports =
6+
export default
77
data: -> {}
88
</script>
+9Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<template>
2+
<div />
3+
</template>
4+
5+
<script>
6+
import Vue from 'vue'
7+
8+
export default Vue.extend()
9+
</script>

‎e2e/__projects__/babel-config/test.js

Copy file name to clipboardExpand all lines: e2e/__projects__/babel-config/test.js
+15-9Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import PostCss from './components/PostCss.vue'
2121
import Pug from './components/Pug.vue'
2222
import PugRelative from './components/PugRelativeExtends.vue'
2323
import Jsx from './components/Jsx.vue'
24+
import Constructor from './components/Constructor.vue'
2425

2526
test('processes .vue files', () => {
2627
const wrapper = mount(Basic)
@@ -60,22 +61,27 @@ test('generates source maps using src attributes', () => {
6061

6162
test('processes .vue file using jsx', () => {
6263
const wrapper = mount(Jsx)
63-
expect(wrapper.vm).toBeTruthy()
64+
expect(wrapper.is('div')).toBeTruthy()
65+
})
66+
67+
test('processes extended functions', () => {
68+
const wrapper = mount(Constructor)
69+
expect(wrapper.is('div')).toBeTruthy()
6470
})
6571

6672
test('processes .vue file with lang set to coffee', () => {
6773
const wrapper = mount(Coffee)
68-
expect(wrapper.vm).toBeTruthy()
74+
expect(wrapper.is('div')).toBeTruthy()
6975
})
7076

7177
test('processes .vue file with lang set to coffeescript', () => {
7278
const wrapper = mount(CoffeeScript)
73-
expect(wrapper.vm).toBeTruthy()
79+
expect(wrapper.is('div')).toBeTruthy()
7480
})
7581

7682
test('processes .vue files with lang set to typescript', () => {
7783
const wrapper = mount(TypeScript)
78-
expect(wrapper.vm).toBeTruthy()
84+
expect(wrapper.is('div')).toBeTruthy()
7985
})
8086

8187
test('processes functional components', () => {
@@ -102,30 +108,30 @@ test('handles missing script block', () => {
102108

103109
test('processes .vue file with jade template', () => {
104110
const wrapper = mount(Jade)
105-
expect(wrapper.is('div')).toBe(true)
111+
expect(wrapper.is('div')).toBeTruthy()
106112
expect(wrapper.classes()).toContain('jade')
107113
})
108114

109115
it('processes Less', () => {
110116
const wrapper = mount(Less)
111-
expect(wrapper.vm).toBeTruthy()
117+
expect(wrapper.is('div')).toBeTruthy()
112118
})
113119

114120
it('processes PostCSS', () => {
115121
const wrapper = mount(PostCss)
116-
expect(wrapper.vm).toBeTruthy()
122+
expect(wrapper.is('div')).toBeTruthy()
117123
})
118124

119125
test('processes pug templates', () => {
120126
const wrapper = mount(Pug)
121-
expect(wrapper.is('div')).toBe(true)
127+
expect(wrapper.is('div')).toBeTruthy()
122128
expect(wrapper.classes()).toContain('pug-base')
123129
expect(wrapper.find('.pug-extended').exists()).toBeTruthy()
124130
})
125131

126132
test('supports relative paths when extending templates from .pug files', () => {
127133
const wrapper = mount(PugRelative)
128-
expect(wrapper.is('div')).toBe(true)
134+
expect(wrapper.is('div')).toBeTruthy()
129135
expect(wrapper.find('.pug-relative-base').exists()).toBeTruthy()
130136
})
131137

‎lib/generate-source-map.js

Copy file name to clipboardExpand all lines: lib/generate-source-map.js
+1-3Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ module.exports = function generateSourceMap(
1414

1515
map.setSourceContent(filename, content)
1616
// check input source map from babel/coffee etc
17-
1817
let inputMapConsumer = inputMap && new sourceMap.SourceMapConsumer(inputMap)
19-
const generatedOffset = 1
2018
script.split(splitRE).forEach(function(line, index) {
2119
let ln = index + 1
2220
let originalLine = inputMapConsumer
@@ -26,7 +24,7 @@ module.exports = function generateSourceMap(
2624
map.addMapping({
2725
source: filename,
2826
generated: {
29-
line: ln + generatedOffset,
27+
line: ln,
3028
column: 0
3129
},
3230
original: {

‎lib/process.js

Copy file name to clipboardExpand all lines: lib/process.js
+16-8Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,22 @@ module.exports = function(src, filePath, config) {
6565
inputMap
6666
)
6767

68-
let output =
69-
`var exports = {}\n` +
70-
`${compiledScriptContent}\n` +
71-
`if(!exports.default) {\n` +
72-
` exports.default = {}\n` +
73-
`}\n` +
74-
`var __options__ = module.exports = exports.default\n` +
75-
`Object.keys(exports).forEach(k => module.exports[k] = exports[k])\n`
68+
let output = ''
69+
70+
if (compiledScriptContent) {
71+
output += `${compiledScriptContent};\n`
72+
} else {
73+
output +=
74+
`Object.defineProperty(exports, "__esModule", {\n` +
75+
` value: true\n` +
76+
`});\n` +
77+
'module.exports.default = {};\n'
78+
}
79+
80+
output +=
81+
`var __options__ = typeof exports.default === 'function'\n` +
82+
`? exports.default.options\n` +
83+
`: exports.default\n`
7684

7785
if (parts.template) {
7886
parts.template.filename = filePath

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.