diff --git a/package.json b/package.json index aa25dd9..95fd6f9 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "rollup-plugin-image": "^1.0.2", "rollup-plugin-node-resolve": "^3.3.0", "ts-jest": "^22.4.2", - "typescript": "^2.7.2", + "typescript": "^3.2.4", "typescript-eslint-parser": "^15.0.0", "vue": "^2.5.16", "vue-template-compiler": "^2.5.16" @@ -57,7 +57,7 @@ "vue-template-compiler": "*" }, "dependencies": { - "@vue/component-compiler-utils": "^2.1.0", + "@vue/component-compiler-utils": "^2.5.2", "clean-css": "^4.1.11", "hash-sum": "^1.0.2", "postcss-modules-sync": "^1.0.0", diff --git a/src/assembler.ts b/src/assembler.ts index e7cdb3b..750b409 100644 --- a/src/assembler.ts +++ b/src/assembler.ts @@ -74,7 +74,7 @@ export function assembleFromSource( script = script || { source: 'export default {}' } template = template || { source: '' } let map = undefined - const mapGenerator = new SourceMapGenerator({ file: filename }) + const mapGenerator = new SourceMapGenerator({ file: filename.replace(/\\/g, '/') }) const hasScopedStyle = styles.some(style => style.scoped === true) const hasStyle = styles.some(style => style.source || style.module) diff --git a/src/compiler.ts b/src/compiler.ts index f1b81da..42ed177 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -99,20 +99,23 @@ export class SFCCompiler { ? hash(path.basename(filename) + source) : hash(filename + source)) - const template = - descriptor.template && this.compileTemplate(filename, descriptor.template) + const template = descriptor.template + ? this.compileTemplate(filename, descriptor.template) + : undefined const styles = descriptor.styles.map(style => this.compileStyle(filename, scopeId, style) ) const { script: rawScript, customBlocks } = descriptor - const script = rawScript && { - code: rawScript.src - ? this.read(rawScript.src, filename) - : rawScript.content, - map: rawScript.map - } + const script = rawScript + ? { + code: rawScript.src + ? this.read(rawScript.src, filename) + : rawScript.content, + map: rawScript.map + } + : undefined return { scopeId, @@ -140,8 +143,9 @@ export class SFCCompiler { ? hash(path.basename(filename) + source) : hash(filename + source)) - const template = - descriptor.template && this.compileTemplate(filename, descriptor.template) + const template = descriptor.template + ? this.compileTemplate(filename, descriptor.template) + : undefined const styles = await Promise.all( descriptor.styles.map(style => @@ -150,12 +154,14 @@ export class SFCCompiler { ) const { script: rawScript, customBlocks } = descriptor - const script = rawScript && { - code: rawScript.src - ? this.read(rawScript.src, filename) - : rawScript.content, - map: rawScript.map - } + const script = rawScript + ? { + code: rawScript.src + ? this.read(rawScript.src, filename) + : rawScript.content, + map: rawScript.map + } + : undefined return { scopeId, @@ -260,7 +266,7 @@ export class SFCCompiler { }, prepare: result => ({ - media: style.attrs.media, + media: typeof style.attrs.media === 'string' ? style.attrs.media : undefined, scoped: style.scoped, moduleName: style.module === true ? '$style' : style.module, module: tokens, diff --git a/test/__snapshots__/compile.spec.ts.snap b/test/__snapshots__/compile.spec.ts.snap index 692f1bc..2bda97a 100644 --- a/test/__snapshots__/compile.spec.ts.snap +++ b/test/__snapshots__/compile.spec.ts.snap @@ -21,7 +21,7 @@ export default { "file": "foo.vue", "mappings": ";;;;;;AAMA;AACA;AACA;AACA;AACA", "names": Array [], - "sourceRoot": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler", + "sourceRoot": "", "sources": Array [ "foo.vue", ], @@ -59,10 +59,10 @@ export default { "errors": Array [], "map": Object { "file": "foo.vue", - "mappings": ";AAcA;EACA,WAAA;CACA", + "mappings": ";AAcA;EACA,UAAA;AACA", "names": Array [], "sources": Array [ - "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", + "foo.vue", ], "sourcesContent": Array [ " @@ -90,514 +90,6 @@ export default { "media": undefined, "module": undefined, "moduleName": undefined, - "rawResult": Result { - "css": " -.title { - color: red; -} -", - "lastPlugin": [Function], - "map": Object { - "file": "foo.vue", - "mappings": ";AAcA;EACA,WAAA;CACA", - "names": Array [], - "sources": Array [ - "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - ], - "sourcesContent": Array [ - " - - - - - -", - ], - "version": 3, - }, - "messages": Array [], - "opts": Object { - "from": "foo.vue", - "map": Object { - "annotation": false, - "inline": false, - "prev": Object { - "file": "foo.vue", - "mappings": ";;;;;;;;;;;;;;AAcA;AACA;AACA", - "names": Array [], - "sourceRoot": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler", - "sources": Array [ - "foo.vue", - ], - "sourcesContent": Array [ - " - - - - - -", - ], - "version": 3, - }, - }, - "to": "foo.vue", - }, - "processor": Processor { - "plugins": Array [ - [Function], - ], - "version": "6.0.21", - }, - "root": Object { - "indexes": Object {}, - "lastEach": 3, - "nodes": Array [ - Object { - "indexes": Object {}, - "lastEach": 3, - "nodes": Array [ - Object { - "prop": "color", - "raws": Object { - "before": " - ", - "between": ": ", - }, - "source": Object { - "end": Object { - "column": 13, - "line": 16, - }, - "input": Input { - "css": " - - - - - - - - - - - - - -.title { - color: red; -} -", - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "map": PreviousMap { - "consumerCache": SourceMapConsumer { - "__generatedMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "__originalMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "_absoluteSources": Array [ - "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - ], - "_mappings": ";;;;;;;;;;;;;;AAcA;AACA;AACA", - "_names": ArraySet { - "_array": Array [], - "_set": Map {}, - }, - "_sourceMapURL": undefined, - "_sources": ArraySet { - "_array": Array [ - "foo.vue", - ], - "_set": Map { - "foo.vue" => 0, - }, - }, - "file": "foo.vue", - "sourceRoot": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler", - "sourcesContent": Array [ - " - - - - - -", - ], - }, - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "inline": false, - "text": "{\\"version\\":3,\\"sources\\":[\\"foo.vue\\"],\\"names\\":[],\\"mappings\\":\\";;;;;;;;;;;;;;AAcA;AACA;AACA\\",\\"file\\":\\"foo.vue\\",\\"sourceRoot\\":\\"/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler\\",\\"sourcesContent\\":[\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\"]}", - }, - }, - "start": Object { - "column": 3, - "line": 16, - }, - }, - "type": "decl", - "value": "red", - }, - ], - "raws": Object { - "after": " -", - "before": " -", - "between": " ", - "semicolon": true, - }, - "selector": ".title", - "source": Object { - "end": Object { - "column": 1, - "line": 17, - }, - "input": Input { - "css": " - - - - - - - - - - - - - -.title { - color: red; -} -", - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "map": PreviousMap { - "consumerCache": SourceMapConsumer { - "__generatedMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "__originalMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "_absoluteSources": Array [ - "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - ], - "_mappings": ";;;;;;;;;;;;;;AAcA;AACA;AACA", - "_names": ArraySet { - "_array": Array [], - "_set": Map {}, - }, - "_sourceMapURL": undefined, - "_sources": ArraySet { - "_array": Array [ - "foo.vue", - ], - "_set": Map { - "foo.vue" => 0, - }, - }, - "file": "foo.vue", - "sourceRoot": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler", - "sourcesContent": Array [ - " - - - - - -", - ], - }, - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "inline": false, - "text": "{\\"version\\":3,\\"sources\\":[\\"foo.vue\\"],\\"names\\":[],\\"mappings\\":\\";;;;;;;;;;;;;;AAcA;AACA;AACA\\",\\"file\\":\\"foo.vue\\",\\"sourceRoot\\":\\"/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler\\",\\"sourcesContent\\":[\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\"]}", - }, - }, - "start": Object { - "column": 1, - "line": 15, - }, - }, - "type": "rule", - }, - ], - "raws": Object { - "after": " -", - "semicolon": false, - }, - "source": Object { - "input": Input { - "css": " - - - - - - - - - - - - - -.title { - color: red; -} -", - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "map": PreviousMap { - "consumerCache": SourceMapConsumer { - "__generatedMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "__originalMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "_absoluteSources": Array [ - "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - ], - "_mappings": ";;;;;;;;;;;;;;AAcA;AACA;AACA", - "_names": ArraySet { - "_array": Array [], - "_set": Map {}, - }, - "_sourceMapURL": undefined, - "_sources": ArraySet { - "_array": Array [ - "foo.vue", - ], - "_set": Map { - "foo.vue" => 0, - }, - }, - "file": "foo.vue", - "sourceRoot": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler", - "sourcesContent": Array [ - " - - - - - -", - ], - }, - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "inline": false, - "text": "{\\"version\\":3,\\"sources\\":[\\"foo.vue\\"],\\"names\\":[],\\"mappings\\":\\";;;;;;;;;;;;;;AAcA;AACA;AACA\\",\\"file\\":\\"foo.vue\\",\\"sourceRoot\\":\\"/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler\\",\\"sourcesContent\\":[\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\"]}", - }, - }, - "start": Object { - "column": 1, - "line": 1, - }, - }, - "type": "root", - }, - }, "scoped": undefined, }, ], @@ -644,7 +136,7 @@ export default { "file": "foo.vue", "mappings": ";;;;;;AAMA;AACA;AACA;AACA;AACA", "names": Array [], - "sourceRoot": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler", + "sourceRoot": "", "sources": Array [ "foo.vue", ], @@ -682,10 +174,10 @@ export default { "errors": Array [], "map": Object { "file": "foo.vue", - "mappings": ";AAcA;EACA,WAAA;CACA", + "mappings": ";AAcA;EACA,UAAA;AACA", "names": Array [], "sources": Array [ - "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", + "foo.vue", ], "sourcesContent": Array [ " @@ -713,518 +205,6 @@ export default { "media": undefined, "module": undefined, "moduleName": undefined, - "rawResult": LazyResult { - "processed": true, - "result": Result { - "css": " -.title { - color: red; -} -", - "lastPlugin": [Function], - "map": Object { - "file": "foo.vue", - "mappings": ";AAcA;EACA,WAAA;CACA", - "names": Array [], - "sources": Array [ - "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - ], - "sourcesContent": Array [ - " - - - - - -", - ], - "version": 3, - }, - "messages": Array [], - "opts": Object { - "from": "foo.vue", - "map": Object { - "annotation": false, - "inline": false, - "prev": Object { - "file": "foo.vue", - "mappings": ";;;;;;;;;;;;;;AAcA;AACA;AACA", - "names": Array [], - "sourceRoot": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler", - "sources": Array [ - "foo.vue", - ], - "sourcesContent": Array [ - " - - - - - -", - ], - "version": 3, - }, - }, - "to": "foo.vue", - }, - "processor": Processor { - "plugins": Array [ - [Function], - ], - "version": "6.0.21", - }, - "root": Object { - "indexes": Object {}, - "lastEach": 3, - "nodes": Array [ - Object { - "indexes": Object {}, - "lastEach": 3, - "nodes": Array [ - Object { - "prop": "color", - "raws": Object { - "before": " - ", - "between": ": ", - }, - "source": Object { - "end": Object { - "column": 13, - "line": 16, - }, - "input": Input { - "css": " - - - - - - - - - - - - - -.title { - color: red; -} -", - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "map": PreviousMap { - "consumerCache": SourceMapConsumer { - "__generatedMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "__originalMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "_absoluteSources": Array [ - "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - ], - "_mappings": ";;;;;;;;;;;;;;AAcA;AACA;AACA", - "_names": ArraySet { - "_array": Array [], - "_set": Map {}, - }, - "_sourceMapURL": undefined, - "_sources": ArraySet { - "_array": Array [ - "foo.vue", - ], - "_set": Map { - "foo.vue" => 0, - }, - }, - "file": "foo.vue", - "sourceRoot": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler", - "sourcesContent": Array [ - " - - - - - -", - ], - }, - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "inline": false, - "text": "{\\"version\\":3,\\"sources\\":[\\"foo.vue\\"],\\"names\\":[],\\"mappings\\":\\";;;;;;;;;;;;;;AAcA;AACA;AACA\\",\\"file\\":\\"foo.vue\\",\\"sourceRoot\\":\\"/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler\\",\\"sourcesContent\\":[\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\"]}", - }, - }, - "start": Object { - "column": 3, - "line": 16, - }, - }, - "type": "decl", - "value": "red", - }, - ], - "raws": Object { - "after": " -", - "before": " -", - "between": " ", - "semicolon": true, - }, - "selector": ".title", - "source": Object { - "end": Object { - "column": 1, - "line": 17, - }, - "input": Input { - "css": " - - - - - - - - - - - - - -.title { - color: red; -} -", - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "map": PreviousMap { - "consumerCache": SourceMapConsumer { - "__generatedMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "__originalMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "_absoluteSources": Array [ - "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - ], - "_mappings": ";;;;;;;;;;;;;;AAcA;AACA;AACA", - "_names": ArraySet { - "_array": Array [], - "_set": Map {}, - }, - "_sourceMapURL": undefined, - "_sources": ArraySet { - "_array": Array [ - "foo.vue", - ], - "_set": Map { - "foo.vue" => 0, - }, - }, - "file": "foo.vue", - "sourceRoot": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler", - "sourcesContent": Array [ - " - - - - - -", - ], - }, - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "inline": false, - "text": "{\\"version\\":3,\\"sources\\":[\\"foo.vue\\"],\\"names\\":[],\\"mappings\\":\\";;;;;;;;;;;;;;AAcA;AACA;AACA\\",\\"file\\":\\"foo.vue\\",\\"sourceRoot\\":\\"/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler\\",\\"sourcesContent\\":[\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\"]}", - }, - }, - "start": Object { - "column": 1, - "line": 15, - }, - }, - "type": "rule", - }, - ], - "raws": Object { - "after": " -", - "semicolon": false, - }, - "source": Object { - "input": Input { - "css": " - - - - - - - - - - - - - -.title { - color: red; -} -", - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "map": PreviousMap { - "consumerCache": SourceMapConsumer { - "__generatedMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "__originalMappings": Array [ - Mapping { - "generatedColumn": 0, - "generatedLine": 15, - "name": null, - "originalColumn": 0, - "originalLine": 15, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 16, - "name": null, - "originalColumn": 0, - "originalLine": 16, - "source": 0, - }, - Mapping { - "generatedColumn": 0, - "generatedLine": 17, - "name": null, - "originalColumn": 0, - "originalLine": 17, - "source": 0, - }, - ], - "_absoluteSources": Array [ - "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - ], - "_mappings": ";;;;;;;;;;;;;;AAcA;AACA;AACA", - "_names": ArraySet { - "_array": Array [], - "_set": Map {}, - }, - "_sourceMapURL": undefined, - "_sources": ArraySet { - "_array": Array [ - "foo.vue", - ], - "_set": Map { - "foo.vue" => 0, - }, - }, - "file": "foo.vue", - "sourceRoot": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler", - "sourcesContent": Array [ - " - - - - - -", - ], - }, - "file": "/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler/foo.vue", - "inline": false, - "text": "{\\"version\\":3,\\"sources\\":[\\"foo.vue\\"],\\"names\\":[],\\"mappings\\":\\";;;;;;;;;;;;;;AAcA;AACA;AACA\\",\\"file\\":\\"foo.vue\\",\\"sourceRoot\\":\\"/Users/300005163/Workspace/OpenSource/vuejs/vue-component-compiler\\",\\"sourcesContent\\":[\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\"]}", - }, - }, - "start": Object { - "column": 1, - "line": 1, - }, - }, - "type": "root", - }, - }, - "stringified": true, - }, "scoped": undefined, }, ], diff --git a/test/compile.spec.ts b/test/compile.spec.ts index 858037f..00e3a99 100644 --- a/test/compile.spec.ts +++ b/test/compile.spec.ts @@ -41,7 +41,7 @@ it('should compile to descriptor', () => { const compiler = createDefaultCompiler() const result = compiler.compileToDescriptor('foo.vue', source) - expect(result).toMatchSnapshot() + expect(removeRawResult(result)).toMatchSnapshot() }) it('should compile to descriptor (async)', async () => { @@ -49,14 +49,14 @@ it('should compile to descriptor (async)', async () => { const expected = compiler.compileToDescriptor('foo.vue', source) const result = await compiler.compileToDescriptorAsync('foo.vue', source) - function removeRawResult(result: DescriptorCompileResult): DescriptorCompileResult { - result.styles.map(style => { - delete style.rawResult - }) - - return result - } - - expect(result).toMatchSnapshot() + expect(removeRawResult(result)).toMatchSnapshot() expect(removeRawResult(result)).toEqual(removeRawResult(expected)) }) + +function removeRawResult(result: DescriptorCompileResult): DescriptorCompileResult { + result.styles.map(style => { + delete style.rawResult + }) + + return result +} diff --git a/yarn.lock b/yarn.lock index f9507a7..f1340ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -46,19 +46,20 @@ version "9.6.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.7.tgz#5f3816d1db2155edcde1b2e3aa5d0e5c520cb564" -"@vue/component-compiler-utils@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.1.0.tgz#8331eadc8acdbc35aace5a61d2153e6f6434bfe2" +"@vue/component-compiler-utils@^2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.5.2.tgz#a8d57e773354ab10e4742c7d6a8dd86184d4d7be" + integrity sha512-3exq9O89GXo9E+CGKzgURCbasG15FtFMs8QRrCUVWGaKue4Egpw41MHb3Avtikv1VykKfBq3FvAnf9Nx3sdVJg== dependencies: consolidate "^0.15.1" hash-sum "^1.0.2" lru-cache "^4.1.2" merge-source-map "^1.1.0" - postcss "^6.0.20" - postcss-selector-parser "^3.1.1" - prettier "^1.13.7" - source-map "^0.5.6" - vue-template-es2015-compiler "^1.6.0" + postcss "^7.0.14" + postcss-selector-parser "^5.0.0" + prettier "1.16.3" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.8.2" JSONStream@^1.0.4: version "1.3.2" @@ -145,6 +146,7 @@ ansi-styles@^2.2.1: ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" @@ -837,8 +839,9 @@ block-stream@*: inherits "~2.0.0" bluebird@^3.1.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== boom@2.x.x: version "2.10.1" @@ -1001,7 +1004,7 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.2: +chalk@^2.0.0, chalk@^2.0.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -1009,6 +1012,15 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^2.3.2, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + character-parser@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" @@ -1093,14 +1105,16 @@ collection-visit@^1.0.0: object-visit "^1.0.0" color-convert@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: - color-name "^1.1.1" + color-name "1.1.3" -color-name@^1.1.1: +color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.6" @@ -1146,6 +1160,7 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: consolidate@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== dependencies: bluebird "^3.1.1" @@ -1357,6 +1372,11 @@ cssesc@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.2" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" @@ -1510,12 +1530,6 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" -dot-prop@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - dependencies: - is-obj "^1.0.0" - duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -2074,6 +2088,7 @@ has-flag@^1.0.0: has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-unicode@^2.0.0: version "2.0.1" @@ -2234,6 +2249,7 @@ indent-string@^3.0.0: indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= inflight@^1.0.4: version "1.0.6" @@ -2428,6 +2444,7 @@ is-number@^4.0.0: is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-odd@^2.0.0: version "2.0.0" @@ -3112,13 +3129,21 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lru-cache@^4.0.1, lru-cache@^4.1.2: +lru-cache@^4.0.1: version "4.1.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" dependencies: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^4.1.2: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + magic-string@^0.22.4: version "0.22.5" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" @@ -3187,6 +3212,7 @@ meow@^4.0.0: merge-source-map@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== dependencies: source-map "^0.6.1" @@ -3738,11 +3764,12 @@ postcss-modules-sync@^1.0.0: postcss-modules-scope "^1.0.2" string-hash "^1.1.0" -postcss-selector-parser@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" +postcss-selector-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== dependencies: - dot-prop "^4.1.1" + cssesc "^2.0.0" indexes-of "^1.0.1" uniq "^1.0.1" @@ -3755,7 +3782,7 @@ postcss@^5.2.5: source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6.0.1, postcss@^6.0.20: +postcss@^6.0.1: version "6.0.21" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.21.tgz#8265662694eddf9e9a5960db6da33c39e4cd069d" dependencies: @@ -3763,6 +3790,15 @@ postcss@^6.0.1, postcss@^6.0.20: source-map "^0.6.1" supports-color "^5.3.0" +postcss@^7.0.14: + version "7.0.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" + integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -3771,9 +3807,10 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@^1.13.7: - version "1.13.7" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281" +prettier@1.16.3: + version "1.16.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" + integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw== pretty-format@^22.4.3: version "22.4.3" @@ -3807,6 +3844,7 @@ proxy-from-env@^1.0.0: pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= pug-attrs@^2.0.3: version "2.0.3" @@ -4448,6 +4486,7 @@ source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, sourc source-map@0.6.*, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.4.2, source-map@^0.4.4: version "0.4.4" @@ -4627,8 +4666,16 @@ supports-color@^3.1.2, supports-color@^3.2.3: has-flag "^1.0.0" supports-color@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" @@ -4798,9 +4845,10 @@ typescript-eslint-parser@^15.0.0: lodash.unescape "4.0.1" semver "5.5.0" -typescript@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3.tgz#5d817f9b6f31bb871835f4edf0089f21abe6c170" +typescript@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz#c585cb952912263d915b462726ce244ba510ef3d" + integrity sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg== uglify-js@^2.6, uglify-js@^2.6.1: version "2.8.29" @@ -4831,6 +4879,7 @@ union-value@^1.0.0: uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= universalify@^0.1.0: version "0.1.1" @@ -4898,9 +4947,10 @@ vue-template-compiler@^2.5.16: de-indent "^1.0.2" he "^1.1.0" -vue-template-es2015-compiler@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18" +vue-template-es2015-compiler@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.8.2.tgz#dd73e80ba58bb65dd7a8aa2aeef6089cf6116f2a" + integrity sha512-cliV19VHLJqFUYbz/XeWXe5CO6guzwd0yrrqqp0bmjlMP3ZZULY7fu8RTC4+3lmHwo6ESVDHFDsvjB15hcR5IA== vue@^2.5.16: version "2.5.16" @@ -5039,6 +5089,7 @@ y18n@^3.2.1: yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2: version "3.0.2"