From b1b85ed688804ef51cffe43349ef3fadb10bff2b Mon Sep 17 00:00:00 2001 From: zhouhuafei Date: Tue, 8 Oct 2019 12:29:57 +0800 Subject: [PATCH 01/16] fix: filter out the comments of sass --- .gitignore | 1 + src/app/converter/converter.ts | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 77d8bb8..24b2be5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea dist/ .DS_Store node_modules/ diff --git a/src/app/converter/converter.ts b/src/app/converter/converter.ts index af43317..58ca7b0 100644 --- a/src/app/converter/converter.ts +++ b/src/app/converter/converter.ts @@ -86,7 +86,11 @@ export class Converter { let contents = inputs.map((filePath) => fs.readFileSync(String(filePath))); - return contents.join(LINE_BREAK); + let strContents = contents.join(LINE_BREAK); + strContents = strContents.replace(/\/\*[\w\W\r\n]*?\*\//g, ''); + strContents = strContents.split(LINE_BREAK).filter(v=> v.indexOf('//') === -1).join(LINE_BREAK); + + return strContents; } From 6da7919250152c079db8785f61897c140b582990 Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Thu, 1 Apr 2021 22:35:01 +0800 Subject: [PATCH 02/16] =?UTF-8?q?fix:=20=F0=9F=90=9B=20fixed=20build=20err?= =?UTF-8?q?or?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 24b2be5..3615992 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,4 @@ dist/ node_modules/ .vscode npm-debug.log -.package-lock.json +package-lock.json diff --git a/package.json b/package.json index 6f5cdee..a507004 100644 --- a/package.json +++ b/package.json @@ -46,11 +46,11 @@ "devDependencies": { "@types/chai": "^3.5.2", "@types/mocha": "^2.2.41", - "@types/node": "^7.0.14", + "@types/node": "^14.14.37", "@types/node-sass": "^3.10.32", "chai": "^3.5.0", "mocha": "^3.3.0", "ts-node": "^3.0.2", - "typescript": "^2.3.1" + "typescript": "^4.2.3" } } From a5c17bc45ad2c041ce304a17c40dc7cfce62913e Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Thu, 1 Apr 2021 23:13:19 +0800 Subject: [PATCH 03/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20dist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - dist/app/converter/converter-buffer.js | 28 +++++ dist/app/converter/converter-buffer.js.map | 1 + dist/app/converter/converter.js | 98 ++++++++++++++++ dist/app/converter/converter.js.map | 1 + dist/app/converter/index.js | 15 +++ dist/app/converter/index.js.map | 1 + dist/app/parser/index.js | 15 +++ dist/app/parser/index.js.map | 1 + dist/app/parser/mixins.js | 49 ++++++++ dist/app/parser/mixins.js.map | 1 + dist/app/parser/parser.js | 110 ++++++++++++++++++ dist/app/parser/parser.js.map | 1 + dist/app/utils/index.js | 14 +++ dist/app/utils/index.js.map | 1 + dist/app/utils/utils.js | 26 +++++ dist/app/utils/utils.js.map | 1 + .../app/converter/converter-buffer.d.ts | 8 ++ .../declarations/app/converter/converter.d.ts | 10 ++ dist/declarations/app/converter/index.d.ts | 2 + dist/declarations/app/parser/index.d.ts | 2 + dist/declarations/app/parser/mixins.d.ts | 7 ++ dist/declarations/app/parser/parser.d.ts | 12 ++ dist/declarations/app/utils/index.d.ts | 1 + dist/declarations/app/utils/utils.d.ts | 5 + dist/declarations/index.d.ts | 1 + dist/index.js | 15 +++ dist/index.js.map | 1 + 28 files changed, 427 insertions(+), 1 deletion(-) create mode 100644 dist/app/converter/converter-buffer.js create mode 100644 dist/app/converter/converter-buffer.js.map create mode 100644 dist/app/converter/converter.js create mode 100644 dist/app/converter/converter.js.map create mode 100644 dist/app/converter/index.js create mode 100644 dist/app/converter/index.js.map create mode 100644 dist/app/parser/index.js create mode 100644 dist/app/parser/index.js.map create mode 100644 dist/app/parser/mixins.js create mode 100644 dist/app/parser/mixins.js.map create mode 100644 dist/app/parser/parser.js create mode 100644 dist/app/parser/parser.js.map create mode 100644 dist/app/utils/index.js create mode 100644 dist/app/utils/index.js.map create mode 100644 dist/app/utils/utils.js create mode 100644 dist/app/utils/utils.js.map create mode 100644 dist/declarations/app/converter/converter-buffer.d.ts create mode 100644 dist/declarations/app/converter/converter.d.ts create mode 100644 dist/declarations/app/converter/index.d.ts create mode 100644 dist/declarations/app/parser/index.d.ts create mode 100644 dist/declarations/app/parser/mixins.d.ts create mode 100644 dist/declarations/app/parser/parser.d.ts create mode 100644 dist/declarations/app/utils/index.d.ts create mode 100644 dist/declarations/app/utils/utils.d.ts create mode 100644 dist/declarations/index.d.ts create mode 100644 dist/index.js create mode 100644 dist/index.js.map diff --git a/.gitignore b/.gitignore index 3615992..20e6ab2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .idea -dist/ .DS_Store node_modules/ .vscode diff --git a/dist/app/converter/converter-buffer.js b/dist/app/converter/converter-buffer.js new file mode 100644 index 0000000..2ab5781 --- /dev/null +++ b/dist/app/converter/converter-buffer.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConverterBuffer = void 0; +const converter_1 = require("./converter"); +const Types = { + STRUCTURED: 'structured', + ARRAY: 'array' +}; +class ConverterBuffer extends converter_1.Converter { + constructor(inputBuffers, options) { + super(options); + this.inputBuffers = inputBuffers; + } + getData() { + if (this.options && this.options.type === Types.ARRAY) { + return Promise.resolve(this.getArray()); + } + else { + return Promise.resolve(this.getStructured()); + } + } + getContent() { + let contents = this.inputBuffers.map((buffer) => buffer.toString()); + return contents.join('\n'); + } +} +exports.ConverterBuffer = ConverterBuffer; +//# sourceMappingURL=converter-buffer.js.map \ No newline at end of file diff --git a/dist/app/converter/converter-buffer.js.map b/dist/app/converter/converter-buffer.js.map new file mode 100644 index 0000000..19918f6 --- /dev/null +++ b/dist/app/converter/converter-buffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"converter-buffer.js","sourceRoot":"","sources":["../../../src/app/converter/converter-buffer.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAIxC,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAa,eAAgB,SAAQ,qBAAS;IAG5C,YAAY,YAAsB,EAAE,OAAkB;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE;YACrD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzC;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC9C;IACH,CAAC;IAGM,UAAU;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AArBD,0CAqBC"} \ No newline at end of file diff --git a/dist/app/converter/converter.js b/dist/app/converter/converter.js new file mode 100644 index 0000000..74e9ab3 --- /dev/null +++ b/dist/app/converter/converter.js @@ -0,0 +1,98 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Converter = void 0; +const fs = require("fs"); +const sass = require("node-sass"); +const glob = require("glob"); +const parser_1 = require("../parser"); +const utils_1 = require("../utils"); +const LINE_BREAK = '\n'; +class Converter { + constructor(options) { + this.options = options; + this.options = options || {}; + } + getArray() { + let content = this.getContent(); + let parsedDeclarations = new parser_1.Parser(content).parse(); + return parsedDeclarations.map((declaration) => { + declaration.compiledValue = this.renderPropertyValue(content, declaration); + declaration.name = `$${declaration.name}`; + if (declaration.mapValue) { + declaration.mapValue.map((mapDeclaration) => { + mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); + return mapDeclaration; + }); + } + return declaration; + }); + } + getStructured() { + let content = this.getContent(); + let structuredDeclaration = new parser_1.Parser(content).parseStructured(); + structuredDeclaration = this.compileStructure(structuredDeclaration); + return structuredDeclaration; + } + compileStructure(structuredDeclaration) { + let groups = Object.keys(structuredDeclaration); + groups.forEach((group) => { + let content = this.getContent(); + let compiledGroup = structuredDeclaration[group].map((declaration) => { + declaration.compiledValue = this.renderPropertyValue(content, declaration); + declaration.name = `$${declaration.name}`; + if (declaration.mapValue) { + declaration.mapValue.map((mapDeclaration) => { + mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); + return mapDeclaration; + }); + } + return declaration; + }); + }); + return this.checkForMixins(structuredDeclaration); + } + getContent() { + let inputFiles = []; + let inputs = []; + if (!Array.isArray(this.options.inputFiles)) { + inputFiles.push(this.options.inputFiles); + } + else { + inputFiles = this.options.inputFiles; + } + inputFiles.forEach((path) => { + let files = glob.sync(String(path)); + inputs.push(...files); + }); + let contents = inputs.map((filePath) => fs.readFileSync(String(filePath))); + let strContents = contents.join(LINE_BREAK); + strContents = strContents.replace(/\/\*[\w\W\r\n]*?\*\//g, ''); + strContents = strContents.split(LINE_BREAK).filter(v => v.indexOf('//') === -1).join(LINE_BREAK); + return strContents; + } + checkForMixins(structuredDeclaration) { + let mixinsGroup = 'mixins'; + let parsedMixins = new parser_1.Mixins(this.getContent()).parse(); + if (parsedMixins && parsedMixins.length) { + structuredDeclaration[mixinsGroup] = parsedMixins; + } + return structuredDeclaration; + } + renderPropertyValue(content, declaration) { + try { + let rendered = sass.renderSync({ + data: content + LINE_BREAK + utils_1.Utils.wrapCss(declaration), + includePaths: this.options.includePaths, + outputStyle: 'compact' + }); + let wrappedRendered = String(rendered.css); + return utils_1.Utils.unWrapValue(wrappedRendered); + } + catch (err) { + console.error(err); + return ''; + } + } +} +exports.Converter = Converter; +//# sourceMappingURL=converter.js.map \ No newline at end of file diff --git a/dist/app/converter/converter.js.map b/dist/app/converter/converter.js.map new file mode 100644 index 0000000..53cfdce --- /dev/null +++ b/dist/app/converter/converter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/app/converter/converter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/converter/index.js b/dist/app/converter/index.js new file mode 100644 index 0000000..bccc23e --- /dev/null +++ b/dist/app/converter/index.js @@ -0,0 +1,15 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./converter"), exports); +__exportStar(require("./converter-buffer"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/converter/index.js.map b/dist/app/converter/index.js.map new file mode 100644 index 0000000..771cd6c --- /dev/null +++ b/dist/app/converter/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/converter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC"} \ No newline at end of file diff --git a/dist/app/parser/index.js b/dist/app/parser/index.js new file mode 100644 index 0000000..363baed --- /dev/null +++ b/dist/app/parser/index.js @@ -0,0 +1,15 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./parser"), exports); +__exportStar(require("./mixins"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/parser/index.js.map b/dist/app/parser/index.js.map new file mode 100644 index 0000000..4e3a664 --- /dev/null +++ b/dist/app/parser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB"} \ No newline at end of file diff --git a/dist/app/parser/mixins.js b/dist/app/parser/mixins.js new file mode 100644 index 0000000..d0003d4 --- /dev/null +++ b/dist/app/parser/mixins.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Mixins = void 0; +const MIXIN_VALUES_REGEX = /@mixin ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; +const FUNC_VALUES_REGEX = /@function ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; +const MIXIN_DECLARATION_REGEX = '@mixin.[^\{]+|@function.[^\{]+'; +class Mixins { + constructor(rawContent) { + this.rawContent = rawContent; + } + parse() { + let matches = this.extractDeclarations(this.rawContent); + let declarations = []; + matches.forEach((match) => { + let mixins = this.parseSingle(match); + let functions = this.parseSingle(match, true); + if (mixins) { + declarations.push(mixins); + } + if (functions) { + declarations.push(functions); + } + }); + return declarations; + } + extractDeclarations(content) { + let matches = content.match(new RegExp(MIXIN_DECLARATION_REGEX, 'gi')); + if (!matches) { + return []; + } + return matches; + } + parseSingle(declaration, checkFunctions = false) { + let regex = checkFunctions ? FUNC_VALUES_REGEX : MIXIN_VALUES_REGEX; + let matches = (new RegExp(regex, 'gi')).exec(declaration); + if (!matches) { + return null; + } + let name = matches[1].trim(); + let parameters = []; + if (matches.length > 2 && matches[2]) { + let params = matches[2].split(',').map((param) => param.trim().replace(/[\(\)]/g, '')); + parameters.push(...params); + } + return { name, parameters }; + } +} +exports.Mixins = Mixins; +//# sourceMappingURL=mixins.js.map \ No newline at end of file diff --git a/dist/app/parser/mixins.js.map b/dist/app/parser/mixins.js.map new file mode 100644 index 0000000..99af839 --- /dev/null +++ b/dist/app/parser/mixins.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/app/parser/mixins.ts"],"names":[],"mappings":";;;AAEA,MAAM,kBAAkB,GAAG,gDAAgD,CAAC;AAC5E,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AAEjE,MAAa,MAAM;IAEjB,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAEtC,CAAC;IAEM,KAAK;QACV,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE9C,IAAI,MAAM,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAAE;YAC1C,IAAI,SAAS,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAAE;QAClD,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,EAAS,CAAC;SAClB;QAED,OAAO,OAAc,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,WAAmB,EAAE,cAAc,GAAG,KAAK;QAC7D,IAAI,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACpE,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACvF,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SAC5B;QAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAY,CAAC;IACxC,CAAC;CACF;AAhDD,wBAgDC"} \ No newline at end of file diff --git a/dist/app/parser/parser.js b/dist/app/parser/parser.js new file mode 100644 index 0000000..45b3d46 --- /dev/null +++ b/dist/app/parser/parser.js @@ -0,0 +1,110 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Parser = void 0; +const VARIABLE_PATERN = '(?!\\d)[\\w_-][\\w\\d_-]*'; +const VALUE_PATERN = '[^;]+|"(?:[^"]+|(?:\\\\"|[^"])*)"'; +const DECLARATION_PATTERN = `\\$['"]?(${VARIABLE_PATERN})['"]?\\s*:\\s*(${VALUE_PATERN})(?:\\s*!(global|default)\\s*;|\\s*;(?![^\\{]*\\}))`; +const MAP_DECLARATIOM_REGEX = /['"]?((?!\d)[\w_-][\w\d_-]*)['"]?\s*:\s*([a-z\-]+\([^\)]+\)|[^\),\/]+)/gi; +const QUOTES_PATTERN = /^(['"]).*\1$/; +const QUOTES_REPLACE = /^(['"])|(['"])$/g; +const SECTION_TAG = 'sass-export-section'; +const SECTION_PATTERN = `(@${SECTION_TAG}=)(".+")`; +const END_SECTION_PATTERN = `(@end-${SECTION_TAG})`; +const DEFAULT_SECTION = 'variables'; +class Parser { + constructor(rawContent) { + this.rawContent = rawContent; + } + parse() { + let matches = this.extractDeclarations(this.rawContent); + let declarations = []; + for (let match of matches) { + if (!this.checkIsSectionStart(match) && !this.checkIsSectionStart(match)) { + let parsed = this.parseSingleDeclaration(match); + if (parsed) { + let map = this.extractMapDeclarations(parsed.value); + if (map.length) { + parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); + } + declarations.push(parsed); + } + } + } + return declarations; + } + parseStructured() { + let matches = this.extractDeclarationsStructured(this.rawContent); + let currentSection = DEFAULT_SECTION; + let declarations = {}; + if (!matches || !matches.length) { + return {}; + } + declarations[currentSection] = []; + for (let match of matches) { + if (this.checkIsSectionStart(match)) { + let sectionName = String(new RegExp(SECTION_PATTERN, 'gi').exec(match)[2]); + if (sectionName) { + currentSection = sectionName.replace(/"/g, ''); + declarations[currentSection] = declarations[currentSection] || []; + } + } + else if (this.checkIsSectionEnd(match)) { + currentSection = DEFAULT_SECTION; + } + else { + let parsed = this.parseSingleDeclaration(match); + if (parsed) { + let map = this.extractMapDeclarations(parsed.value); + if (map.length) { + parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); + } + declarations[currentSection].push(parsed); + } + } + } + return declarations; + } + extractDeclarationsStructured(content) { + const matches = content.match(new RegExp(`${DECLARATION_PATTERN}|${SECTION_PATTERN}|${END_SECTION_PATTERN}`, 'g')); + if (!matches) { + return []; + } + return matches; + } + extractDeclarations(content) { + const matches = content.match(new RegExp(DECLARATION_PATTERN, 'g')); + if (!matches) { + return []; + } + return matches; + } + extractMapDeclarations(content) { + const matches = content.match(new RegExp(MAP_DECLARATIOM_REGEX, 'g')); + if (!matches) { + return []; + } + return matches; + } + parseSingleDeclaration(matchDeclaration) { + let matches = matchDeclaration + .replace(/\s*!(default|global)\s*;/, ';') + .match(new RegExp(DECLARATION_PATTERN)); + if (!matches) { + return; + } + let name = matches[1].trim().replace('_', '-'); + let value = matches[2].trim().replace(/\s*\n+\s*/g, ' '); + if (value.match(QUOTES_PATTERN)) { + value = value.replace(QUOTES_REPLACE, ''); + } + return { name, value }; + } + checkIsSectionStart(content) { + return (new RegExp(SECTION_PATTERN, 'gi')).test(content); + } + checkIsSectionEnd(content) { + return (new RegExp(END_SECTION_PATTERN, 'gi')).test(content); + } +} +exports.Parser = Parser; +//# sourceMappingURL=parser.js.map \ No newline at end of file diff --git a/dist/app/parser/parser.js.map b/dist/app/parser/parser.js.map new file mode 100644 index 0000000..3f4e569 --- /dev/null +++ b/dist/app/parser/parser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/app/parser/parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/utils/index.js b/dist/app/utils/index.js new file mode 100644 index 0000000..e6f0868 --- /dev/null +++ b/dist/app/utils/index.js @@ -0,0 +1,14 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./utils"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/utils/index.js.map b/dist/app/utils/index.js.map new file mode 100644 index 0000000..8a11e90 --- /dev/null +++ b/dist/app/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB"} \ No newline at end of file diff --git a/dist/app/utils/utils.js b/dist/app/utils/utils.js new file mode 100644 index 0000000..c02a089 --- /dev/null +++ b/dist/app/utils/utils.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Utils = void 0; +const WRAPPER_CSS_ID = '#sass-export-id'; +const UNWRAPPER_PATTERN = `${WRAPPER_CSS_ID}\\.(.+)\\s*\\{\\s*content:\\s*["'](.+)["']`; +class Utils { + static getDeclarationByName(declarations = [], name) { + let filtered = declarations.filter((declaration) => declaration.name === name); + return filtered[0]; + } + static wrapCss(cssDeclaration) { + return `${WRAPPER_CSS_ID}.${cssDeclaration.name}{content:"#{${cssDeclaration.value}}";}`; + } + static unWrapValue(wrappedContent) { + wrappedContent = wrappedContent.replace(/\n/g, ''); + let matches = wrappedContent.match(UNWRAPPER_PATTERN); + if (matches && matches.length > 2) { + return matches[2].trim(); + } + else { + return ''; + } + } +} +exports.Utils = Utils; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/app/utils/utils.js.map b/dist/app/utils/utils.js.map new file mode 100644 index 0000000..b12c635 --- /dev/null +++ b/dist/app/utils/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/app/utils/utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,iBAAiB,GAAG,GAAG,cAAc,4CAA4C,CAAC;AAOxF,MAAa,KAAK;IAET,MAAM,CAAC,oBAAoB,CAAC,eAA+B,EAAE,EAAE,IAAY;QAChF,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAE/E,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAGM,MAAM,CAAC,OAAO,CAAC,cAA4B;QAChD,OAAO,GAAG,cAAc,IAAI,cAAc,CAAC,IAAI,eAAe,cAAc,CAAC,KAAK,MAAM,CAAC;IAC3F,CAAC;IAGM,MAAM,CAAC,WAAW,CAAC,cAAsB;QAC9C,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnD,IAAI,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1B;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAzBD,sBAyBC"} \ No newline at end of file diff --git a/dist/declarations/app/converter/converter-buffer.d.ts b/dist/declarations/app/converter/converter-buffer.d.ts new file mode 100644 index 0000000..f5012b1 --- /dev/null +++ b/dist/declarations/app/converter/converter-buffer.d.ts @@ -0,0 +1,8 @@ +/// +import { Converter } from './converter'; +export declare class ConverterBuffer extends Converter { + private inputBuffers; + constructor(inputBuffers: Buffer[], options?: IOptions); + getData(): Promise; + getContent(): string; +} diff --git a/dist/declarations/app/converter/converter.d.ts b/dist/declarations/app/converter/converter.d.ts new file mode 100644 index 0000000..dbb305a --- /dev/null +++ b/dist/declarations/app/converter/converter.d.ts @@ -0,0 +1,10 @@ +export declare class Converter { + options?: IOptions; + constructor(options?: IOptions); + getArray(): IDeclaration[]; + getStructured(): any; + compileStructure(structuredDeclaration: IDeclaration): object; + getContent(): string; + private checkForMixins; + private renderPropertyValue; +} diff --git a/dist/declarations/app/converter/index.d.ts b/dist/declarations/app/converter/index.d.ts new file mode 100644 index 0000000..00c0e3d --- /dev/null +++ b/dist/declarations/app/converter/index.d.ts @@ -0,0 +1,2 @@ +export * from './converter'; +export * from './converter-buffer'; diff --git a/dist/declarations/app/parser/index.d.ts b/dist/declarations/app/parser/index.d.ts new file mode 100644 index 0000000..3e440b0 --- /dev/null +++ b/dist/declarations/app/parser/index.d.ts @@ -0,0 +1,2 @@ +export * from './parser'; +export * from './mixins'; diff --git a/dist/declarations/app/parser/mixins.d.ts b/dist/declarations/app/parser/mixins.d.ts new file mode 100644 index 0000000..16cc505 --- /dev/null +++ b/dist/declarations/app/parser/mixins.d.ts @@ -0,0 +1,7 @@ +export declare class Mixins { + private rawContent; + constructor(rawContent: string); + parse(): any[]; + private extractDeclarations; + private parseSingle; +} diff --git a/dist/declarations/app/parser/parser.d.ts b/dist/declarations/app/parser/parser.d.ts new file mode 100644 index 0000000..7a264da --- /dev/null +++ b/dist/declarations/app/parser/parser.d.ts @@ -0,0 +1,12 @@ +export declare class Parser { + private rawContent; + constructor(rawContent: string); + parse(): IDeclaration[]; + parseStructured(): any; + private extractDeclarationsStructured; + private extractDeclarations; + private extractMapDeclarations; + private parseSingleDeclaration; + private checkIsSectionStart; + private checkIsSectionEnd; +} diff --git a/dist/declarations/app/utils/index.d.ts b/dist/declarations/app/utils/index.d.ts new file mode 100644 index 0000000..04bca77 --- /dev/null +++ b/dist/declarations/app/utils/index.d.ts @@ -0,0 +1 @@ +export * from './utils'; diff --git a/dist/declarations/app/utils/utils.d.ts b/dist/declarations/app/utils/utils.d.ts new file mode 100644 index 0000000..58dfb39 --- /dev/null +++ b/dist/declarations/app/utils/utils.d.ts @@ -0,0 +1,5 @@ +export declare class Utils { + static getDeclarationByName(declarations: IDeclaration[], name: string): IDeclaration; + static wrapCss(cssDeclaration: IDeclaration): string; + static unWrapValue(wrappedContent: string): string; +} diff --git a/dist/declarations/index.d.ts b/dist/declarations/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/declarations/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..10268a3 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const converter_1 = require("./app/converter"); +let sassExporter = (options) => { + return new converter_1.Converter(options); +}; +let bufferExporter = (input, options) => { + let converter = new converter_1.ConverterBuffer(input, options); + return converter.getData(); +}; +module.exports = { + exporter: sassExporter, + buffer: bufferExporter +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..d27a92c --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+CAA6D;AAE7D,IAAI,YAAY,GAAG,CAAC,OAAiB,EAAE,EAAE;IACvC,OAAO,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,cAAc,GAAG,CAAC,KAAe,EAAE,OAAiB,EAAE,EAAE;IAC1D,IAAI,SAAS,GAAG,IAAI,2BAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG;IACf,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,cAAc;CACvB,CAAC"} \ No newline at end of file From 5ab86024cff0658964494a32ad057bdf836d3624 Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Thu, 1 Apr 2021 23:31:13 +0800 Subject: [PATCH 04/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20prepare=E8=A1=A8?= =?UTF-8?q?=E7=8E=B0=E5=BD=A2=E5=BC=8F=E5=BE=88=E6=80=AA=E5=BC=82=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E7=94=B5=E8=84=91=E8=A1=A8=E7=8E=B0=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=EF=BC=8C=E8=BF=98=E6=98=AF=E4=BD=BF=E7=94=A8prepublis?= =?UTF-8?q?h=E5=90=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a507004..ea04f3f 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "scripts": { "build": "tsc --p tsconfig.json", "dev": "npm run build & npm run test", - "prepare": "npm run build", + "prepublish": "npm run build", "prestart": "npm run build", "watch": "npm run build -- --watch", "test": "mocha -r ts-node/register src/**/*.test.ts" From cc25f4702c037d5ead8a89f064e2d12c7c570567 Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Thu, 1 Apr 2021 23:39:59 +0800 Subject: [PATCH 05/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20del=20dist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/app/converter/converter-buffer.js | 28 ----- dist/app/converter/converter-buffer.js.map | 1 - dist/app/converter/converter.js | 98 ---------------- dist/app/converter/converter.js.map | 1 - dist/app/converter/index.js | 15 --- dist/app/converter/index.js.map | 1 - dist/app/parser/index.js | 15 --- dist/app/parser/index.js.map | 1 - dist/app/parser/mixins.js | 49 -------- dist/app/parser/mixins.js.map | 1 - dist/app/parser/parser.js | 110 ------------------ dist/app/parser/parser.js.map | 1 - dist/app/utils/index.js | 14 --- dist/app/utils/index.js.map | 1 - dist/app/utils/utils.js | 26 ----- dist/app/utils/utils.js.map | 1 - .../app/converter/converter-buffer.d.ts | 8 -- .../declarations/app/converter/converter.d.ts | 10 -- dist/declarations/app/converter/index.d.ts | 2 - dist/declarations/app/parser/index.d.ts | 2 - dist/declarations/app/parser/mixins.d.ts | 7 -- dist/declarations/app/parser/parser.d.ts | 12 -- dist/declarations/app/utils/index.d.ts | 1 - dist/declarations/app/utils/utils.d.ts | 5 - dist/declarations/index.d.ts | 1 - dist/index.js | 15 --- dist/index.js.map | 1 - 27 files changed, 427 deletions(-) delete mode 100644 dist/app/converter/converter-buffer.js delete mode 100644 dist/app/converter/converter-buffer.js.map delete mode 100644 dist/app/converter/converter.js delete mode 100644 dist/app/converter/converter.js.map delete mode 100644 dist/app/converter/index.js delete mode 100644 dist/app/converter/index.js.map delete mode 100644 dist/app/parser/index.js delete mode 100644 dist/app/parser/index.js.map delete mode 100644 dist/app/parser/mixins.js delete mode 100644 dist/app/parser/mixins.js.map delete mode 100644 dist/app/parser/parser.js delete mode 100644 dist/app/parser/parser.js.map delete mode 100644 dist/app/utils/index.js delete mode 100644 dist/app/utils/index.js.map delete mode 100644 dist/app/utils/utils.js delete mode 100644 dist/app/utils/utils.js.map delete mode 100644 dist/declarations/app/converter/converter-buffer.d.ts delete mode 100644 dist/declarations/app/converter/converter.d.ts delete mode 100644 dist/declarations/app/converter/index.d.ts delete mode 100644 dist/declarations/app/parser/index.d.ts delete mode 100644 dist/declarations/app/parser/mixins.d.ts delete mode 100644 dist/declarations/app/parser/parser.d.ts delete mode 100644 dist/declarations/app/utils/index.d.ts delete mode 100644 dist/declarations/app/utils/utils.d.ts delete mode 100644 dist/declarations/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map diff --git a/dist/app/converter/converter-buffer.js b/dist/app/converter/converter-buffer.js deleted file mode 100644 index 2ab5781..0000000 --- a/dist/app/converter/converter-buffer.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ConverterBuffer = void 0; -const converter_1 = require("./converter"); -const Types = { - STRUCTURED: 'structured', - ARRAY: 'array' -}; -class ConverterBuffer extends converter_1.Converter { - constructor(inputBuffers, options) { - super(options); - this.inputBuffers = inputBuffers; - } - getData() { - if (this.options && this.options.type === Types.ARRAY) { - return Promise.resolve(this.getArray()); - } - else { - return Promise.resolve(this.getStructured()); - } - } - getContent() { - let contents = this.inputBuffers.map((buffer) => buffer.toString()); - return contents.join('\n'); - } -} -exports.ConverterBuffer = ConverterBuffer; -//# sourceMappingURL=converter-buffer.js.map \ No newline at end of file diff --git a/dist/app/converter/converter-buffer.js.map b/dist/app/converter/converter-buffer.js.map deleted file mode 100644 index 19918f6..0000000 --- a/dist/app/converter/converter-buffer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"converter-buffer.js","sourceRoot":"","sources":["../../../src/app/converter/converter-buffer.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAIxC,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAa,eAAgB,SAAQ,qBAAS;IAG5C,YAAY,YAAsB,EAAE,OAAkB;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE;YACrD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzC;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC9C;IACH,CAAC;IAGM,UAAU;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AArBD,0CAqBC"} \ No newline at end of file diff --git a/dist/app/converter/converter.js b/dist/app/converter/converter.js deleted file mode 100644 index 74e9ab3..0000000 --- a/dist/app/converter/converter.js +++ /dev/null @@ -1,98 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Converter = void 0; -const fs = require("fs"); -const sass = require("node-sass"); -const glob = require("glob"); -const parser_1 = require("../parser"); -const utils_1 = require("../utils"); -const LINE_BREAK = '\n'; -class Converter { - constructor(options) { - this.options = options; - this.options = options || {}; - } - getArray() { - let content = this.getContent(); - let parsedDeclarations = new parser_1.Parser(content).parse(); - return parsedDeclarations.map((declaration) => { - declaration.compiledValue = this.renderPropertyValue(content, declaration); - declaration.name = `$${declaration.name}`; - if (declaration.mapValue) { - declaration.mapValue.map((mapDeclaration) => { - mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); - return mapDeclaration; - }); - } - return declaration; - }); - } - getStructured() { - let content = this.getContent(); - let structuredDeclaration = new parser_1.Parser(content).parseStructured(); - structuredDeclaration = this.compileStructure(structuredDeclaration); - return structuredDeclaration; - } - compileStructure(structuredDeclaration) { - let groups = Object.keys(structuredDeclaration); - groups.forEach((group) => { - let content = this.getContent(); - let compiledGroup = structuredDeclaration[group].map((declaration) => { - declaration.compiledValue = this.renderPropertyValue(content, declaration); - declaration.name = `$${declaration.name}`; - if (declaration.mapValue) { - declaration.mapValue.map((mapDeclaration) => { - mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); - return mapDeclaration; - }); - } - return declaration; - }); - }); - return this.checkForMixins(structuredDeclaration); - } - getContent() { - let inputFiles = []; - let inputs = []; - if (!Array.isArray(this.options.inputFiles)) { - inputFiles.push(this.options.inputFiles); - } - else { - inputFiles = this.options.inputFiles; - } - inputFiles.forEach((path) => { - let files = glob.sync(String(path)); - inputs.push(...files); - }); - let contents = inputs.map((filePath) => fs.readFileSync(String(filePath))); - let strContents = contents.join(LINE_BREAK); - strContents = strContents.replace(/\/\*[\w\W\r\n]*?\*\//g, ''); - strContents = strContents.split(LINE_BREAK).filter(v => v.indexOf('//') === -1).join(LINE_BREAK); - return strContents; - } - checkForMixins(structuredDeclaration) { - let mixinsGroup = 'mixins'; - let parsedMixins = new parser_1.Mixins(this.getContent()).parse(); - if (parsedMixins && parsedMixins.length) { - structuredDeclaration[mixinsGroup] = parsedMixins; - } - return structuredDeclaration; - } - renderPropertyValue(content, declaration) { - try { - let rendered = sass.renderSync({ - data: content + LINE_BREAK + utils_1.Utils.wrapCss(declaration), - includePaths: this.options.includePaths, - outputStyle: 'compact' - }); - let wrappedRendered = String(rendered.css); - return utils_1.Utils.unWrapValue(wrappedRendered); - } - catch (err) { - console.error(err); - return ''; - } - } -} -exports.Converter = Converter; -//# sourceMappingURL=converter.js.map \ No newline at end of file diff --git a/dist/app/converter/converter.js.map b/dist/app/converter/converter.js.map deleted file mode 100644 index 53cfdce..0000000 --- a/dist/app/converter/converter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/app/converter/converter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/converter/index.js b/dist/app/converter/index.js deleted file mode 100644 index bccc23e..0000000 --- a/dist/app/converter/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./converter"), exports); -__exportStar(require("./converter-buffer"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/converter/index.js.map b/dist/app/converter/index.js.map deleted file mode 100644 index 771cd6c..0000000 --- a/dist/app/converter/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/converter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC"} \ No newline at end of file diff --git a/dist/app/parser/index.js b/dist/app/parser/index.js deleted file mode 100644 index 363baed..0000000 --- a/dist/app/parser/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./parser"), exports); -__exportStar(require("./mixins"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/parser/index.js.map b/dist/app/parser/index.js.map deleted file mode 100644 index 4e3a664..0000000 --- a/dist/app/parser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB"} \ No newline at end of file diff --git a/dist/app/parser/mixins.js b/dist/app/parser/mixins.js deleted file mode 100644 index d0003d4..0000000 --- a/dist/app/parser/mixins.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Mixins = void 0; -const MIXIN_VALUES_REGEX = /@mixin ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; -const FUNC_VALUES_REGEX = /@function ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; -const MIXIN_DECLARATION_REGEX = '@mixin.[^\{]+|@function.[^\{]+'; -class Mixins { - constructor(rawContent) { - this.rawContent = rawContent; - } - parse() { - let matches = this.extractDeclarations(this.rawContent); - let declarations = []; - matches.forEach((match) => { - let mixins = this.parseSingle(match); - let functions = this.parseSingle(match, true); - if (mixins) { - declarations.push(mixins); - } - if (functions) { - declarations.push(functions); - } - }); - return declarations; - } - extractDeclarations(content) { - let matches = content.match(new RegExp(MIXIN_DECLARATION_REGEX, 'gi')); - if (!matches) { - return []; - } - return matches; - } - parseSingle(declaration, checkFunctions = false) { - let regex = checkFunctions ? FUNC_VALUES_REGEX : MIXIN_VALUES_REGEX; - let matches = (new RegExp(regex, 'gi')).exec(declaration); - if (!matches) { - return null; - } - let name = matches[1].trim(); - let parameters = []; - if (matches.length > 2 && matches[2]) { - let params = matches[2].split(',').map((param) => param.trim().replace(/[\(\)]/g, '')); - parameters.push(...params); - } - return { name, parameters }; - } -} -exports.Mixins = Mixins; -//# sourceMappingURL=mixins.js.map \ No newline at end of file diff --git a/dist/app/parser/mixins.js.map b/dist/app/parser/mixins.js.map deleted file mode 100644 index 99af839..0000000 --- a/dist/app/parser/mixins.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/app/parser/mixins.ts"],"names":[],"mappings":";;;AAEA,MAAM,kBAAkB,GAAG,gDAAgD,CAAC;AAC5E,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AAEjE,MAAa,MAAM;IAEjB,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAEtC,CAAC;IAEM,KAAK;QACV,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE9C,IAAI,MAAM,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAAE;YAC1C,IAAI,SAAS,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAAE;QAClD,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,EAAS,CAAC;SAClB;QAED,OAAO,OAAc,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,WAAmB,EAAE,cAAc,GAAG,KAAK;QAC7D,IAAI,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACpE,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACvF,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SAC5B;QAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAY,CAAC;IACxC,CAAC;CACF;AAhDD,wBAgDC"} \ No newline at end of file diff --git a/dist/app/parser/parser.js b/dist/app/parser/parser.js deleted file mode 100644 index 45b3d46..0000000 --- a/dist/app/parser/parser.js +++ /dev/null @@ -1,110 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Parser = void 0; -const VARIABLE_PATERN = '(?!\\d)[\\w_-][\\w\\d_-]*'; -const VALUE_PATERN = '[^;]+|"(?:[^"]+|(?:\\\\"|[^"])*)"'; -const DECLARATION_PATTERN = `\\$['"]?(${VARIABLE_PATERN})['"]?\\s*:\\s*(${VALUE_PATERN})(?:\\s*!(global|default)\\s*;|\\s*;(?![^\\{]*\\}))`; -const MAP_DECLARATIOM_REGEX = /['"]?((?!\d)[\w_-][\w\d_-]*)['"]?\s*:\s*([a-z\-]+\([^\)]+\)|[^\),\/]+)/gi; -const QUOTES_PATTERN = /^(['"]).*\1$/; -const QUOTES_REPLACE = /^(['"])|(['"])$/g; -const SECTION_TAG = 'sass-export-section'; -const SECTION_PATTERN = `(@${SECTION_TAG}=)(".+")`; -const END_SECTION_PATTERN = `(@end-${SECTION_TAG})`; -const DEFAULT_SECTION = 'variables'; -class Parser { - constructor(rawContent) { - this.rawContent = rawContent; - } - parse() { - let matches = this.extractDeclarations(this.rawContent); - let declarations = []; - for (let match of matches) { - if (!this.checkIsSectionStart(match) && !this.checkIsSectionStart(match)) { - let parsed = this.parseSingleDeclaration(match); - if (parsed) { - let map = this.extractMapDeclarations(parsed.value); - if (map.length) { - parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); - } - declarations.push(parsed); - } - } - } - return declarations; - } - parseStructured() { - let matches = this.extractDeclarationsStructured(this.rawContent); - let currentSection = DEFAULT_SECTION; - let declarations = {}; - if (!matches || !matches.length) { - return {}; - } - declarations[currentSection] = []; - for (let match of matches) { - if (this.checkIsSectionStart(match)) { - let sectionName = String(new RegExp(SECTION_PATTERN, 'gi').exec(match)[2]); - if (sectionName) { - currentSection = sectionName.replace(/"/g, ''); - declarations[currentSection] = declarations[currentSection] || []; - } - } - else if (this.checkIsSectionEnd(match)) { - currentSection = DEFAULT_SECTION; - } - else { - let parsed = this.parseSingleDeclaration(match); - if (parsed) { - let map = this.extractMapDeclarations(parsed.value); - if (map.length) { - parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); - } - declarations[currentSection].push(parsed); - } - } - } - return declarations; - } - extractDeclarationsStructured(content) { - const matches = content.match(new RegExp(`${DECLARATION_PATTERN}|${SECTION_PATTERN}|${END_SECTION_PATTERN}`, 'g')); - if (!matches) { - return []; - } - return matches; - } - extractDeclarations(content) { - const matches = content.match(new RegExp(DECLARATION_PATTERN, 'g')); - if (!matches) { - return []; - } - return matches; - } - extractMapDeclarations(content) { - const matches = content.match(new RegExp(MAP_DECLARATIOM_REGEX, 'g')); - if (!matches) { - return []; - } - return matches; - } - parseSingleDeclaration(matchDeclaration) { - let matches = matchDeclaration - .replace(/\s*!(default|global)\s*;/, ';') - .match(new RegExp(DECLARATION_PATTERN)); - if (!matches) { - return; - } - let name = matches[1].trim().replace('_', '-'); - let value = matches[2].trim().replace(/\s*\n+\s*/g, ' '); - if (value.match(QUOTES_PATTERN)) { - value = value.replace(QUOTES_REPLACE, ''); - } - return { name, value }; - } - checkIsSectionStart(content) { - return (new RegExp(SECTION_PATTERN, 'gi')).test(content); - } - checkIsSectionEnd(content) { - return (new RegExp(END_SECTION_PATTERN, 'gi')).test(content); - } -} -exports.Parser = Parser; -//# sourceMappingURL=parser.js.map \ No newline at end of file diff --git a/dist/app/parser/parser.js.map b/dist/app/parser/parser.js.map deleted file mode 100644 index 3f4e569..0000000 --- a/dist/app/parser/parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/app/parser/parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/utils/index.js b/dist/app/utils/index.js deleted file mode 100644 index e6f0868..0000000 --- a/dist/app/utils/index.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./utils"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/utils/index.js.map b/dist/app/utils/index.js.map deleted file mode 100644 index 8a11e90..0000000 --- a/dist/app/utils/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB"} \ No newline at end of file diff --git a/dist/app/utils/utils.js b/dist/app/utils/utils.js deleted file mode 100644 index c02a089..0000000 --- a/dist/app/utils/utils.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Utils = void 0; -const WRAPPER_CSS_ID = '#sass-export-id'; -const UNWRAPPER_PATTERN = `${WRAPPER_CSS_ID}\\.(.+)\\s*\\{\\s*content:\\s*["'](.+)["']`; -class Utils { - static getDeclarationByName(declarations = [], name) { - let filtered = declarations.filter((declaration) => declaration.name === name); - return filtered[0]; - } - static wrapCss(cssDeclaration) { - return `${WRAPPER_CSS_ID}.${cssDeclaration.name}{content:"#{${cssDeclaration.value}}";}`; - } - static unWrapValue(wrappedContent) { - wrappedContent = wrappedContent.replace(/\n/g, ''); - let matches = wrappedContent.match(UNWRAPPER_PATTERN); - if (matches && matches.length > 2) { - return matches[2].trim(); - } - else { - return ''; - } - } -} -exports.Utils = Utils; -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/app/utils/utils.js.map b/dist/app/utils/utils.js.map deleted file mode 100644 index b12c635..0000000 --- a/dist/app/utils/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/app/utils/utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,iBAAiB,GAAG,GAAG,cAAc,4CAA4C,CAAC;AAOxF,MAAa,KAAK;IAET,MAAM,CAAC,oBAAoB,CAAC,eAA+B,EAAE,EAAE,IAAY;QAChF,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAE/E,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAGM,MAAM,CAAC,OAAO,CAAC,cAA4B;QAChD,OAAO,GAAG,cAAc,IAAI,cAAc,CAAC,IAAI,eAAe,cAAc,CAAC,KAAK,MAAM,CAAC;IAC3F,CAAC;IAGM,MAAM,CAAC,WAAW,CAAC,cAAsB;QAC9C,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnD,IAAI,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1B;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAzBD,sBAyBC"} \ No newline at end of file diff --git a/dist/declarations/app/converter/converter-buffer.d.ts b/dist/declarations/app/converter/converter-buffer.d.ts deleted file mode 100644 index f5012b1..0000000 --- a/dist/declarations/app/converter/converter-buffer.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -/// -import { Converter } from './converter'; -export declare class ConverterBuffer extends Converter { - private inputBuffers; - constructor(inputBuffers: Buffer[], options?: IOptions); - getData(): Promise; - getContent(): string; -} diff --git a/dist/declarations/app/converter/converter.d.ts b/dist/declarations/app/converter/converter.d.ts deleted file mode 100644 index dbb305a..0000000 --- a/dist/declarations/app/converter/converter.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export declare class Converter { - options?: IOptions; - constructor(options?: IOptions); - getArray(): IDeclaration[]; - getStructured(): any; - compileStructure(structuredDeclaration: IDeclaration): object; - getContent(): string; - private checkForMixins; - private renderPropertyValue; -} diff --git a/dist/declarations/app/converter/index.d.ts b/dist/declarations/app/converter/index.d.ts deleted file mode 100644 index 00c0e3d..0000000 --- a/dist/declarations/app/converter/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './converter'; -export * from './converter-buffer'; diff --git a/dist/declarations/app/parser/index.d.ts b/dist/declarations/app/parser/index.d.ts deleted file mode 100644 index 3e440b0..0000000 --- a/dist/declarations/app/parser/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './parser'; -export * from './mixins'; diff --git a/dist/declarations/app/parser/mixins.d.ts b/dist/declarations/app/parser/mixins.d.ts deleted file mode 100644 index 16cc505..0000000 --- a/dist/declarations/app/parser/mixins.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export declare class Mixins { - private rawContent; - constructor(rawContent: string); - parse(): any[]; - private extractDeclarations; - private parseSingle; -} diff --git a/dist/declarations/app/parser/parser.d.ts b/dist/declarations/app/parser/parser.d.ts deleted file mode 100644 index 7a264da..0000000 --- a/dist/declarations/app/parser/parser.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export declare class Parser { - private rawContent; - constructor(rawContent: string); - parse(): IDeclaration[]; - parseStructured(): any; - private extractDeclarationsStructured; - private extractDeclarations; - private extractMapDeclarations; - private parseSingleDeclaration; - private checkIsSectionStart; - private checkIsSectionEnd; -} diff --git a/dist/declarations/app/utils/index.d.ts b/dist/declarations/app/utils/index.d.ts deleted file mode 100644 index 04bca77..0000000 --- a/dist/declarations/app/utils/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './utils'; diff --git a/dist/declarations/app/utils/utils.d.ts b/dist/declarations/app/utils/utils.d.ts deleted file mode 100644 index 58dfb39..0000000 --- a/dist/declarations/app/utils/utils.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare class Utils { - static getDeclarationByName(declarations: IDeclaration[], name: string): IDeclaration; - static wrapCss(cssDeclaration: IDeclaration): string; - static unWrapValue(wrappedContent: string): string; -} diff --git a/dist/declarations/index.d.ts b/dist/declarations/index.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/dist/declarations/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 10268a3..0000000 --- a/dist/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const converter_1 = require("./app/converter"); -let sassExporter = (options) => { - return new converter_1.Converter(options); -}; -let bufferExporter = (input, options) => { - let converter = new converter_1.ConverterBuffer(input, options); - return converter.getData(); -}; -module.exports = { - exporter: sassExporter, - buffer: bufferExporter -}; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index d27a92c..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+CAA6D;AAE7D,IAAI,YAAY,GAAG,CAAC,OAAiB,EAAE,EAAE;IACvC,OAAO,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,cAAc,GAAG,CAAC,KAAe,EAAE,OAAiB,EAAE,EAAE;IAC1D,IAAI,SAAS,GAAG,IAAI,2BAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG;IACf,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,cAAc;CACvB,CAAC"} \ No newline at end of file From 6f5fb2b4ea7cab1dd452ac1d5809ffdd4e9ec47c Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Thu, 1 Apr 2021 23:40:43 +0800 Subject: [PATCH 06/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20dist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/app/converter/converter-buffer.js | 28 +++++ dist/app/converter/converter-buffer.js.map | 1 + dist/app/converter/converter.js | 98 ++++++++++++++++ dist/app/converter/converter.js.map | 1 + dist/app/converter/index.js | 15 +++ dist/app/converter/index.js.map | 1 + dist/app/parser/index.js | 15 +++ dist/app/parser/index.js.map | 1 + dist/app/parser/mixins.js | 49 ++++++++ dist/app/parser/mixins.js.map | 1 + dist/app/parser/parser.js | 110 ++++++++++++++++++ dist/app/parser/parser.js.map | 1 + dist/app/utils/index.js | 14 +++ dist/app/utils/index.js.map | 1 + dist/app/utils/utils.js | 26 +++++ dist/app/utils/utils.js.map | 1 + .../app/converter/converter-buffer.d.ts | 8 ++ .../declarations/app/converter/converter.d.ts | 10 ++ dist/declarations/app/converter/index.d.ts | 2 + dist/declarations/app/parser/index.d.ts | 2 + dist/declarations/app/parser/mixins.d.ts | 7 ++ dist/declarations/app/parser/parser.d.ts | 12 ++ dist/declarations/app/utils/index.d.ts | 1 + dist/declarations/app/utils/utils.d.ts | 5 + dist/declarations/index.d.ts | 1 + dist/index.js | 15 +++ dist/index.js.map | 1 + 27 files changed, 427 insertions(+) create mode 100644 dist/app/converter/converter-buffer.js create mode 100644 dist/app/converter/converter-buffer.js.map create mode 100644 dist/app/converter/converter.js create mode 100644 dist/app/converter/converter.js.map create mode 100644 dist/app/converter/index.js create mode 100644 dist/app/converter/index.js.map create mode 100644 dist/app/parser/index.js create mode 100644 dist/app/parser/index.js.map create mode 100644 dist/app/parser/mixins.js create mode 100644 dist/app/parser/mixins.js.map create mode 100644 dist/app/parser/parser.js create mode 100644 dist/app/parser/parser.js.map create mode 100644 dist/app/utils/index.js create mode 100644 dist/app/utils/index.js.map create mode 100644 dist/app/utils/utils.js create mode 100644 dist/app/utils/utils.js.map create mode 100644 dist/declarations/app/converter/converter-buffer.d.ts create mode 100644 dist/declarations/app/converter/converter.d.ts create mode 100644 dist/declarations/app/converter/index.d.ts create mode 100644 dist/declarations/app/parser/index.d.ts create mode 100644 dist/declarations/app/parser/mixins.d.ts create mode 100644 dist/declarations/app/parser/parser.d.ts create mode 100644 dist/declarations/app/utils/index.d.ts create mode 100644 dist/declarations/app/utils/utils.d.ts create mode 100644 dist/declarations/index.d.ts create mode 100644 dist/index.js create mode 100644 dist/index.js.map diff --git a/dist/app/converter/converter-buffer.js b/dist/app/converter/converter-buffer.js new file mode 100644 index 0000000..2ab5781 --- /dev/null +++ b/dist/app/converter/converter-buffer.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConverterBuffer = void 0; +const converter_1 = require("./converter"); +const Types = { + STRUCTURED: 'structured', + ARRAY: 'array' +}; +class ConverterBuffer extends converter_1.Converter { + constructor(inputBuffers, options) { + super(options); + this.inputBuffers = inputBuffers; + } + getData() { + if (this.options && this.options.type === Types.ARRAY) { + return Promise.resolve(this.getArray()); + } + else { + return Promise.resolve(this.getStructured()); + } + } + getContent() { + let contents = this.inputBuffers.map((buffer) => buffer.toString()); + return contents.join('\n'); + } +} +exports.ConverterBuffer = ConverterBuffer; +//# sourceMappingURL=converter-buffer.js.map \ No newline at end of file diff --git a/dist/app/converter/converter-buffer.js.map b/dist/app/converter/converter-buffer.js.map new file mode 100644 index 0000000..19918f6 --- /dev/null +++ b/dist/app/converter/converter-buffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"converter-buffer.js","sourceRoot":"","sources":["../../../src/app/converter/converter-buffer.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAIxC,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAa,eAAgB,SAAQ,qBAAS;IAG5C,YAAY,YAAsB,EAAE,OAAkB;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE;YACrD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzC;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC9C;IACH,CAAC;IAGM,UAAU;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AArBD,0CAqBC"} \ No newline at end of file diff --git a/dist/app/converter/converter.js b/dist/app/converter/converter.js new file mode 100644 index 0000000..74e9ab3 --- /dev/null +++ b/dist/app/converter/converter.js @@ -0,0 +1,98 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Converter = void 0; +const fs = require("fs"); +const sass = require("node-sass"); +const glob = require("glob"); +const parser_1 = require("../parser"); +const utils_1 = require("../utils"); +const LINE_BREAK = '\n'; +class Converter { + constructor(options) { + this.options = options; + this.options = options || {}; + } + getArray() { + let content = this.getContent(); + let parsedDeclarations = new parser_1.Parser(content).parse(); + return parsedDeclarations.map((declaration) => { + declaration.compiledValue = this.renderPropertyValue(content, declaration); + declaration.name = `$${declaration.name}`; + if (declaration.mapValue) { + declaration.mapValue.map((mapDeclaration) => { + mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); + return mapDeclaration; + }); + } + return declaration; + }); + } + getStructured() { + let content = this.getContent(); + let structuredDeclaration = new parser_1.Parser(content).parseStructured(); + structuredDeclaration = this.compileStructure(structuredDeclaration); + return structuredDeclaration; + } + compileStructure(structuredDeclaration) { + let groups = Object.keys(structuredDeclaration); + groups.forEach((group) => { + let content = this.getContent(); + let compiledGroup = structuredDeclaration[group].map((declaration) => { + declaration.compiledValue = this.renderPropertyValue(content, declaration); + declaration.name = `$${declaration.name}`; + if (declaration.mapValue) { + declaration.mapValue.map((mapDeclaration) => { + mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); + return mapDeclaration; + }); + } + return declaration; + }); + }); + return this.checkForMixins(structuredDeclaration); + } + getContent() { + let inputFiles = []; + let inputs = []; + if (!Array.isArray(this.options.inputFiles)) { + inputFiles.push(this.options.inputFiles); + } + else { + inputFiles = this.options.inputFiles; + } + inputFiles.forEach((path) => { + let files = glob.sync(String(path)); + inputs.push(...files); + }); + let contents = inputs.map((filePath) => fs.readFileSync(String(filePath))); + let strContents = contents.join(LINE_BREAK); + strContents = strContents.replace(/\/\*[\w\W\r\n]*?\*\//g, ''); + strContents = strContents.split(LINE_BREAK).filter(v => v.indexOf('//') === -1).join(LINE_BREAK); + return strContents; + } + checkForMixins(structuredDeclaration) { + let mixinsGroup = 'mixins'; + let parsedMixins = new parser_1.Mixins(this.getContent()).parse(); + if (parsedMixins && parsedMixins.length) { + structuredDeclaration[mixinsGroup] = parsedMixins; + } + return structuredDeclaration; + } + renderPropertyValue(content, declaration) { + try { + let rendered = sass.renderSync({ + data: content + LINE_BREAK + utils_1.Utils.wrapCss(declaration), + includePaths: this.options.includePaths, + outputStyle: 'compact' + }); + let wrappedRendered = String(rendered.css); + return utils_1.Utils.unWrapValue(wrappedRendered); + } + catch (err) { + console.error(err); + return ''; + } + } +} +exports.Converter = Converter; +//# sourceMappingURL=converter.js.map \ No newline at end of file diff --git a/dist/app/converter/converter.js.map b/dist/app/converter/converter.js.map new file mode 100644 index 0000000..53cfdce --- /dev/null +++ b/dist/app/converter/converter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/app/converter/converter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/converter/index.js b/dist/app/converter/index.js new file mode 100644 index 0000000..bccc23e --- /dev/null +++ b/dist/app/converter/index.js @@ -0,0 +1,15 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./converter"), exports); +__exportStar(require("./converter-buffer"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/converter/index.js.map b/dist/app/converter/index.js.map new file mode 100644 index 0000000..771cd6c --- /dev/null +++ b/dist/app/converter/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/converter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC"} \ No newline at end of file diff --git a/dist/app/parser/index.js b/dist/app/parser/index.js new file mode 100644 index 0000000..363baed --- /dev/null +++ b/dist/app/parser/index.js @@ -0,0 +1,15 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./parser"), exports); +__exportStar(require("./mixins"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/parser/index.js.map b/dist/app/parser/index.js.map new file mode 100644 index 0000000..4e3a664 --- /dev/null +++ b/dist/app/parser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB"} \ No newline at end of file diff --git a/dist/app/parser/mixins.js b/dist/app/parser/mixins.js new file mode 100644 index 0000000..d0003d4 --- /dev/null +++ b/dist/app/parser/mixins.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Mixins = void 0; +const MIXIN_VALUES_REGEX = /@mixin ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; +const FUNC_VALUES_REGEX = /@function ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; +const MIXIN_DECLARATION_REGEX = '@mixin.[^\{]+|@function.[^\{]+'; +class Mixins { + constructor(rawContent) { + this.rawContent = rawContent; + } + parse() { + let matches = this.extractDeclarations(this.rawContent); + let declarations = []; + matches.forEach((match) => { + let mixins = this.parseSingle(match); + let functions = this.parseSingle(match, true); + if (mixins) { + declarations.push(mixins); + } + if (functions) { + declarations.push(functions); + } + }); + return declarations; + } + extractDeclarations(content) { + let matches = content.match(new RegExp(MIXIN_DECLARATION_REGEX, 'gi')); + if (!matches) { + return []; + } + return matches; + } + parseSingle(declaration, checkFunctions = false) { + let regex = checkFunctions ? FUNC_VALUES_REGEX : MIXIN_VALUES_REGEX; + let matches = (new RegExp(regex, 'gi')).exec(declaration); + if (!matches) { + return null; + } + let name = matches[1].trim(); + let parameters = []; + if (matches.length > 2 && matches[2]) { + let params = matches[2].split(',').map((param) => param.trim().replace(/[\(\)]/g, '')); + parameters.push(...params); + } + return { name, parameters }; + } +} +exports.Mixins = Mixins; +//# sourceMappingURL=mixins.js.map \ No newline at end of file diff --git a/dist/app/parser/mixins.js.map b/dist/app/parser/mixins.js.map new file mode 100644 index 0000000..99af839 --- /dev/null +++ b/dist/app/parser/mixins.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/app/parser/mixins.ts"],"names":[],"mappings":";;;AAEA,MAAM,kBAAkB,GAAG,gDAAgD,CAAC;AAC5E,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AAEjE,MAAa,MAAM;IAEjB,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAEtC,CAAC;IAEM,KAAK;QACV,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE9C,IAAI,MAAM,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAAE;YAC1C,IAAI,SAAS,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAAE;QAClD,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,EAAS,CAAC;SAClB;QAED,OAAO,OAAc,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,WAAmB,EAAE,cAAc,GAAG,KAAK;QAC7D,IAAI,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACpE,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACvF,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SAC5B;QAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAY,CAAC;IACxC,CAAC;CACF;AAhDD,wBAgDC"} \ No newline at end of file diff --git a/dist/app/parser/parser.js b/dist/app/parser/parser.js new file mode 100644 index 0000000..45b3d46 --- /dev/null +++ b/dist/app/parser/parser.js @@ -0,0 +1,110 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Parser = void 0; +const VARIABLE_PATERN = '(?!\\d)[\\w_-][\\w\\d_-]*'; +const VALUE_PATERN = '[^;]+|"(?:[^"]+|(?:\\\\"|[^"])*)"'; +const DECLARATION_PATTERN = `\\$['"]?(${VARIABLE_PATERN})['"]?\\s*:\\s*(${VALUE_PATERN})(?:\\s*!(global|default)\\s*;|\\s*;(?![^\\{]*\\}))`; +const MAP_DECLARATIOM_REGEX = /['"]?((?!\d)[\w_-][\w\d_-]*)['"]?\s*:\s*([a-z\-]+\([^\)]+\)|[^\),\/]+)/gi; +const QUOTES_PATTERN = /^(['"]).*\1$/; +const QUOTES_REPLACE = /^(['"])|(['"])$/g; +const SECTION_TAG = 'sass-export-section'; +const SECTION_PATTERN = `(@${SECTION_TAG}=)(".+")`; +const END_SECTION_PATTERN = `(@end-${SECTION_TAG})`; +const DEFAULT_SECTION = 'variables'; +class Parser { + constructor(rawContent) { + this.rawContent = rawContent; + } + parse() { + let matches = this.extractDeclarations(this.rawContent); + let declarations = []; + for (let match of matches) { + if (!this.checkIsSectionStart(match) && !this.checkIsSectionStart(match)) { + let parsed = this.parseSingleDeclaration(match); + if (parsed) { + let map = this.extractMapDeclarations(parsed.value); + if (map.length) { + parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); + } + declarations.push(parsed); + } + } + } + return declarations; + } + parseStructured() { + let matches = this.extractDeclarationsStructured(this.rawContent); + let currentSection = DEFAULT_SECTION; + let declarations = {}; + if (!matches || !matches.length) { + return {}; + } + declarations[currentSection] = []; + for (let match of matches) { + if (this.checkIsSectionStart(match)) { + let sectionName = String(new RegExp(SECTION_PATTERN, 'gi').exec(match)[2]); + if (sectionName) { + currentSection = sectionName.replace(/"/g, ''); + declarations[currentSection] = declarations[currentSection] || []; + } + } + else if (this.checkIsSectionEnd(match)) { + currentSection = DEFAULT_SECTION; + } + else { + let parsed = this.parseSingleDeclaration(match); + if (parsed) { + let map = this.extractMapDeclarations(parsed.value); + if (map.length) { + parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); + } + declarations[currentSection].push(parsed); + } + } + } + return declarations; + } + extractDeclarationsStructured(content) { + const matches = content.match(new RegExp(`${DECLARATION_PATTERN}|${SECTION_PATTERN}|${END_SECTION_PATTERN}`, 'g')); + if (!matches) { + return []; + } + return matches; + } + extractDeclarations(content) { + const matches = content.match(new RegExp(DECLARATION_PATTERN, 'g')); + if (!matches) { + return []; + } + return matches; + } + extractMapDeclarations(content) { + const matches = content.match(new RegExp(MAP_DECLARATIOM_REGEX, 'g')); + if (!matches) { + return []; + } + return matches; + } + parseSingleDeclaration(matchDeclaration) { + let matches = matchDeclaration + .replace(/\s*!(default|global)\s*;/, ';') + .match(new RegExp(DECLARATION_PATTERN)); + if (!matches) { + return; + } + let name = matches[1].trim().replace('_', '-'); + let value = matches[2].trim().replace(/\s*\n+\s*/g, ' '); + if (value.match(QUOTES_PATTERN)) { + value = value.replace(QUOTES_REPLACE, ''); + } + return { name, value }; + } + checkIsSectionStart(content) { + return (new RegExp(SECTION_PATTERN, 'gi')).test(content); + } + checkIsSectionEnd(content) { + return (new RegExp(END_SECTION_PATTERN, 'gi')).test(content); + } +} +exports.Parser = Parser; +//# sourceMappingURL=parser.js.map \ No newline at end of file diff --git a/dist/app/parser/parser.js.map b/dist/app/parser/parser.js.map new file mode 100644 index 0000000..3f4e569 --- /dev/null +++ b/dist/app/parser/parser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/app/parser/parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/utils/index.js b/dist/app/utils/index.js new file mode 100644 index 0000000..e6f0868 --- /dev/null +++ b/dist/app/utils/index.js @@ -0,0 +1,14 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./utils"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/utils/index.js.map b/dist/app/utils/index.js.map new file mode 100644 index 0000000..8a11e90 --- /dev/null +++ b/dist/app/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB"} \ No newline at end of file diff --git a/dist/app/utils/utils.js b/dist/app/utils/utils.js new file mode 100644 index 0000000..c02a089 --- /dev/null +++ b/dist/app/utils/utils.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Utils = void 0; +const WRAPPER_CSS_ID = '#sass-export-id'; +const UNWRAPPER_PATTERN = `${WRAPPER_CSS_ID}\\.(.+)\\s*\\{\\s*content:\\s*["'](.+)["']`; +class Utils { + static getDeclarationByName(declarations = [], name) { + let filtered = declarations.filter((declaration) => declaration.name === name); + return filtered[0]; + } + static wrapCss(cssDeclaration) { + return `${WRAPPER_CSS_ID}.${cssDeclaration.name}{content:"#{${cssDeclaration.value}}";}`; + } + static unWrapValue(wrappedContent) { + wrappedContent = wrappedContent.replace(/\n/g, ''); + let matches = wrappedContent.match(UNWRAPPER_PATTERN); + if (matches && matches.length > 2) { + return matches[2].trim(); + } + else { + return ''; + } + } +} +exports.Utils = Utils; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/app/utils/utils.js.map b/dist/app/utils/utils.js.map new file mode 100644 index 0000000..b12c635 --- /dev/null +++ b/dist/app/utils/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/app/utils/utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,iBAAiB,GAAG,GAAG,cAAc,4CAA4C,CAAC;AAOxF,MAAa,KAAK;IAET,MAAM,CAAC,oBAAoB,CAAC,eAA+B,EAAE,EAAE,IAAY;QAChF,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAE/E,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAGM,MAAM,CAAC,OAAO,CAAC,cAA4B;QAChD,OAAO,GAAG,cAAc,IAAI,cAAc,CAAC,IAAI,eAAe,cAAc,CAAC,KAAK,MAAM,CAAC;IAC3F,CAAC;IAGM,MAAM,CAAC,WAAW,CAAC,cAAsB;QAC9C,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnD,IAAI,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1B;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAzBD,sBAyBC"} \ No newline at end of file diff --git a/dist/declarations/app/converter/converter-buffer.d.ts b/dist/declarations/app/converter/converter-buffer.d.ts new file mode 100644 index 0000000..f5012b1 --- /dev/null +++ b/dist/declarations/app/converter/converter-buffer.d.ts @@ -0,0 +1,8 @@ +/// +import { Converter } from './converter'; +export declare class ConverterBuffer extends Converter { + private inputBuffers; + constructor(inputBuffers: Buffer[], options?: IOptions); + getData(): Promise; + getContent(): string; +} diff --git a/dist/declarations/app/converter/converter.d.ts b/dist/declarations/app/converter/converter.d.ts new file mode 100644 index 0000000..dbb305a --- /dev/null +++ b/dist/declarations/app/converter/converter.d.ts @@ -0,0 +1,10 @@ +export declare class Converter { + options?: IOptions; + constructor(options?: IOptions); + getArray(): IDeclaration[]; + getStructured(): any; + compileStructure(structuredDeclaration: IDeclaration): object; + getContent(): string; + private checkForMixins; + private renderPropertyValue; +} diff --git a/dist/declarations/app/converter/index.d.ts b/dist/declarations/app/converter/index.d.ts new file mode 100644 index 0000000..00c0e3d --- /dev/null +++ b/dist/declarations/app/converter/index.d.ts @@ -0,0 +1,2 @@ +export * from './converter'; +export * from './converter-buffer'; diff --git a/dist/declarations/app/parser/index.d.ts b/dist/declarations/app/parser/index.d.ts new file mode 100644 index 0000000..3e440b0 --- /dev/null +++ b/dist/declarations/app/parser/index.d.ts @@ -0,0 +1,2 @@ +export * from './parser'; +export * from './mixins'; diff --git a/dist/declarations/app/parser/mixins.d.ts b/dist/declarations/app/parser/mixins.d.ts new file mode 100644 index 0000000..16cc505 --- /dev/null +++ b/dist/declarations/app/parser/mixins.d.ts @@ -0,0 +1,7 @@ +export declare class Mixins { + private rawContent; + constructor(rawContent: string); + parse(): any[]; + private extractDeclarations; + private parseSingle; +} diff --git a/dist/declarations/app/parser/parser.d.ts b/dist/declarations/app/parser/parser.d.ts new file mode 100644 index 0000000..7a264da --- /dev/null +++ b/dist/declarations/app/parser/parser.d.ts @@ -0,0 +1,12 @@ +export declare class Parser { + private rawContent; + constructor(rawContent: string); + parse(): IDeclaration[]; + parseStructured(): any; + private extractDeclarationsStructured; + private extractDeclarations; + private extractMapDeclarations; + private parseSingleDeclaration; + private checkIsSectionStart; + private checkIsSectionEnd; +} diff --git a/dist/declarations/app/utils/index.d.ts b/dist/declarations/app/utils/index.d.ts new file mode 100644 index 0000000..04bca77 --- /dev/null +++ b/dist/declarations/app/utils/index.d.ts @@ -0,0 +1 @@ +export * from './utils'; diff --git a/dist/declarations/app/utils/utils.d.ts b/dist/declarations/app/utils/utils.d.ts new file mode 100644 index 0000000..58dfb39 --- /dev/null +++ b/dist/declarations/app/utils/utils.d.ts @@ -0,0 +1,5 @@ +export declare class Utils { + static getDeclarationByName(declarations: IDeclaration[], name: string): IDeclaration; + static wrapCss(cssDeclaration: IDeclaration): string; + static unWrapValue(wrappedContent: string): string; +} diff --git a/dist/declarations/index.d.ts b/dist/declarations/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/declarations/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..10268a3 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const converter_1 = require("./app/converter"); +let sassExporter = (options) => { + return new converter_1.Converter(options); +}; +let bufferExporter = (input, options) => { + let converter = new converter_1.ConverterBuffer(input, options); + return converter.getData(); +}; +module.exports = { + exporter: sassExporter, + buffer: bufferExporter +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..d27a92c --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+CAA6D;AAE7D,IAAI,YAAY,GAAG,CAAC,OAAiB,EAAE,EAAE;IACvC,OAAO,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,cAAc,GAAG,CAAC,KAAe,EAAE,OAAiB,EAAE,EAAE;IAC1D,IAAI,SAAS,GAAG,IAAI,2BAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG;IACf,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,cAAc;CACvB,CAAC"} \ No newline at end of file From 6a0bf49583794d3330c28a5f16a615e7e00de782 Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Thu, 1 Apr 2021 23:53:44 +0800 Subject: [PATCH 07/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20del=20dist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/app/converter/converter-buffer.js | 28 ----- dist/app/converter/converter-buffer.js.map | 1 - dist/app/converter/converter.js | 98 ---------------- dist/app/converter/converter.js.map | 1 - dist/app/converter/index.js | 15 --- dist/app/converter/index.js.map | 1 - dist/app/parser/index.js | 15 --- dist/app/parser/index.js.map | 1 - dist/app/parser/mixins.js | 49 -------- dist/app/parser/mixins.js.map | 1 - dist/app/parser/parser.js | 110 ------------------ dist/app/parser/parser.js.map | 1 - dist/app/utils/index.js | 14 --- dist/app/utils/index.js.map | 1 - dist/app/utils/utils.js | 26 ----- dist/app/utils/utils.js.map | 1 - .../app/converter/converter-buffer.d.ts | 8 -- .../declarations/app/converter/converter.d.ts | 10 -- dist/declarations/app/converter/index.d.ts | 2 - dist/declarations/app/parser/index.d.ts | 2 - dist/declarations/app/parser/mixins.d.ts | 7 -- dist/declarations/app/parser/parser.d.ts | 12 -- dist/declarations/app/utils/index.d.ts | 1 - dist/declarations/app/utils/utils.d.ts | 5 - dist/declarations/index.d.ts | 1 - dist/index.js | 15 --- dist/index.js.map | 1 - package.json | 2 +- 28 files changed, 1 insertion(+), 428 deletions(-) delete mode 100644 dist/app/converter/converter-buffer.js delete mode 100644 dist/app/converter/converter-buffer.js.map delete mode 100644 dist/app/converter/converter.js delete mode 100644 dist/app/converter/converter.js.map delete mode 100644 dist/app/converter/index.js delete mode 100644 dist/app/converter/index.js.map delete mode 100644 dist/app/parser/index.js delete mode 100644 dist/app/parser/index.js.map delete mode 100644 dist/app/parser/mixins.js delete mode 100644 dist/app/parser/mixins.js.map delete mode 100644 dist/app/parser/parser.js delete mode 100644 dist/app/parser/parser.js.map delete mode 100644 dist/app/utils/index.js delete mode 100644 dist/app/utils/index.js.map delete mode 100644 dist/app/utils/utils.js delete mode 100644 dist/app/utils/utils.js.map delete mode 100644 dist/declarations/app/converter/converter-buffer.d.ts delete mode 100644 dist/declarations/app/converter/converter.d.ts delete mode 100644 dist/declarations/app/converter/index.d.ts delete mode 100644 dist/declarations/app/parser/index.d.ts delete mode 100644 dist/declarations/app/parser/mixins.d.ts delete mode 100644 dist/declarations/app/parser/parser.d.ts delete mode 100644 dist/declarations/app/utils/index.d.ts delete mode 100644 dist/declarations/app/utils/utils.d.ts delete mode 100644 dist/declarations/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map diff --git a/dist/app/converter/converter-buffer.js b/dist/app/converter/converter-buffer.js deleted file mode 100644 index 2ab5781..0000000 --- a/dist/app/converter/converter-buffer.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ConverterBuffer = void 0; -const converter_1 = require("./converter"); -const Types = { - STRUCTURED: 'structured', - ARRAY: 'array' -}; -class ConverterBuffer extends converter_1.Converter { - constructor(inputBuffers, options) { - super(options); - this.inputBuffers = inputBuffers; - } - getData() { - if (this.options && this.options.type === Types.ARRAY) { - return Promise.resolve(this.getArray()); - } - else { - return Promise.resolve(this.getStructured()); - } - } - getContent() { - let contents = this.inputBuffers.map((buffer) => buffer.toString()); - return contents.join('\n'); - } -} -exports.ConverterBuffer = ConverterBuffer; -//# sourceMappingURL=converter-buffer.js.map \ No newline at end of file diff --git a/dist/app/converter/converter-buffer.js.map b/dist/app/converter/converter-buffer.js.map deleted file mode 100644 index 19918f6..0000000 --- a/dist/app/converter/converter-buffer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"converter-buffer.js","sourceRoot":"","sources":["../../../src/app/converter/converter-buffer.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAIxC,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAa,eAAgB,SAAQ,qBAAS;IAG5C,YAAY,YAAsB,EAAE,OAAkB;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE;YACrD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzC;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC9C;IACH,CAAC;IAGM,UAAU;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AArBD,0CAqBC"} \ No newline at end of file diff --git a/dist/app/converter/converter.js b/dist/app/converter/converter.js deleted file mode 100644 index 74e9ab3..0000000 --- a/dist/app/converter/converter.js +++ /dev/null @@ -1,98 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Converter = void 0; -const fs = require("fs"); -const sass = require("node-sass"); -const glob = require("glob"); -const parser_1 = require("../parser"); -const utils_1 = require("../utils"); -const LINE_BREAK = '\n'; -class Converter { - constructor(options) { - this.options = options; - this.options = options || {}; - } - getArray() { - let content = this.getContent(); - let parsedDeclarations = new parser_1.Parser(content).parse(); - return parsedDeclarations.map((declaration) => { - declaration.compiledValue = this.renderPropertyValue(content, declaration); - declaration.name = `$${declaration.name}`; - if (declaration.mapValue) { - declaration.mapValue.map((mapDeclaration) => { - mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); - return mapDeclaration; - }); - } - return declaration; - }); - } - getStructured() { - let content = this.getContent(); - let structuredDeclaration = new parser_1.Parser(content).parseStructured(); - structuredDeclaration = this.compileStructure(structuredDeclaration); - return structuredDeclaration; - } - compileStructure(structuredDeclaration) { - let groups = Object.keys(structuredDeclaration); - groups.forEach((group) => { - let content = this.getContent(); - let compiledGroup = structuredDeclaration[group].map((declaration) => { - declaration.compiledValue = this.renderPropertyValue(content, declaration); - declaration.name = `$${declaration.name}`; - if (declaration.mapValue) { - declaration.mapValue.map((mapDeclaration) => { - mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); - return mapDeclaration; - }); - } - return declaration; - }); - }); - return this.checkForMixins(structuredDeclaration); - } - getContent() { - let inputFiles = []; - let inputs = []; - if (!Array.isArray(this.options.inputFiles)) { - inputFiles.push(this.options.inputFiles); - } - else { - inputFiles = this.options.inputFiles; - } - inputFiles.forEach((path) => { - let files = glob.sync(String(path)); - inputs.push(...files); - }); - let contents = inputs.map((filePath) => fs.readFileSync(String(filePath))); - let strContents = contents.join(LINE_BREAK); - strContents = strContents.replace(/\/\*[\w\W\r\n]*?\*\//g, ''); - strContents = strContents.split(LINE_BREAK).filter(v => v.indexOf('//') === -1).join(LINE_BREAK); - return strContents; - } - checkForMixins(structuredDeclaration) { - let mixinsGroup = 'mixins'; - let parsedMixins = new parser_1.Mixins(this.getContent()).parse(); - if (parsedMixins && parsedMixins.length) { - structuredDeclaration[mixinsGroup] = parsedMixins; - } - return structuredDeclaration; - } - renderPropertyValue(content, declaration) { - try { - let rendered = sass.renderSync({ - data: content + LINE_BREAK + utils_1.Utils.wrapCss(declaration), - includePaths: this.options.includePaths, - outputStyle: 'compact' - }); - let wrappedRendered = String(rendered.css); - return utils_1.Utils.unWrapValue(wrappedRendered); - } - catch (err) { - console.error(err); - return ''; - } - } -} -exports.Converter = Converter; -//# sourceMappingURL=converter.js.map \ No newline at end of file diff --git a/dist/app/converter/converter.js.map b/dist/app/converter/converter.js.map deleted file mode 100644 index 53cfdce..0000000 --- a/dist/app/converter/converter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/app/converter/converter.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,kCAAkC;AAClC,6BAA6B;AAC7B,sCAA2C;AAC3C,oCAAiC;AAEjC,MAAM,UAAU,GAAG,IAAI,CAAC;AAMxB,MAAa,SAAS;IAEpB,YAAmB,OAAkB;QAAlB,YAAO,GAAP,OAAO,CAAW;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAc,CAAC;IAC3C,CAAC;IAEM,QAAQ;QACb,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,kBAAkB,GAAG,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;QAErD,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;YAC5C,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3E,WAAW,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;YAE1C,IAAI,WAAW,CAAC,QAAQ,EAAE;gBACxB,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;oBAC1C,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;oBACjF,OAAO,cAAc,CAAC;gBACxB,CAAC,CAAC,CAAC;aACJ;YACD,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAGM,aAAa;QAClB,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,qBAAqB,GAAG,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC;QAClE,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;QAErE,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAGM,gBAAgB,CAAC,qBAAmC;QACzD,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEhD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAEhC,IAAI,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBACnE,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAC3E,WAAW,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gBAE1C,IAAI,WAAW,CAAC,QAAQ,EAAE;oBACxB,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;wBAC1C,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;wBACjF,OAAO,cAAc,CAAC;oBACxB,CAAC,CAAC,CAAC;iBACJ;gBAED,OAAO,WAAW,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IACpD,CAAC;IAGM,UAAU;QACf,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC3C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SAC1C;aAAM;YACL,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SACtC;QAED,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE3E,IAAI,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAC/D,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEhG,OAAO,WAAW,CAAC;IACrB,CAAC;IAGO,cAAc,CAAC,qBAA6B;QAClD,IAAI,WAAW,GAAG,QAAQ,CAAC;QAC3B,IAAI,YAAY,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAEzD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE;YACvC,qBAAqB,CAAC,WAAW,CAAC,GAAI,YAAY,CAAC;SACpD;QAED,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAGO,mBAAmB,CAAC,OAAe,EAAE,WAAyB;QACpE,IAAI;YACF,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC7B,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,aAAK,CAAC,OAAO,CAAC,WAAW,CAAC;gBACvD,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;gBACvC,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC;YAEH,IAAI,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE3C,OAAO,aAAK,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;SAE3C;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAjHD,8BAiHC"} \ No newline at end of file diff --git a/dist/app/converter/index.js b/dist/app/converter/index.js deleted file mode 100644 index bccc23e..0000000 --- a/dist/app/converter/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./converter"), exports); -__exportStar(require("./converter-buffer"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/converter/index.js.map b/dist/app/converter/index.js.map deleted file mode 100644 index 771cd6c..0000000 --- a/dist/app/converter/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/converter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC"} \ No newline at end of file diff --git a/dist/app/parser/index.js b/dist/app/parser/index.js deleted file mode 100644 index 363baed..0000000 --- a/dist/app/parser/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./parser"), exports); -__exportStar(require("./mixins"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/parser/index.js.map b/dist/app/parser/index.js.map deleted file mode 100644 index 4e3a664..0000000 --- a/dist/app/parser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB"} \ No newline at end of file diff --git a/dist/app/parser/mixins.js b/dist/app/parser/mixins.js deleted file mode 100644 index d0003d4..0000000 --- a/dist/app/parser/mixins.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Mixins = void 0; -const MIXIN_VALUES_REGEX = /@mixin ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; -const FUNC_VALUES_REGEX = /@function ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; -const MIXIN_DECLARATION_REGEX = '@mixin.[^\{]+|@function.[^\{]+'; -class Mixins { - constructor(rawContent) { - this.rawContent = rawContent; - } - parse() { - let matches = this.extractDeclarations(this.rawContent); - let declarations = []; - matches.forEach((match) => { - let mixins = this.parseSingle(match); - let functions = this.parseSingle(match, true); - if (mixins) { - declarations.push(mixins); - } - if (functions) { - declarations.push(functions); - } - }); - return declarations; - } - extractDeclarations(content) { - let matches = content.match(new RegExp(MIXIN_DECLARATION_REGEX, 'gi')); - if (!matches) { - return []; - } - return matches; - } - parseSingle(declaration, checkFunctions = false) { - let regex = checkFunctions ? FUNC_VALUES_REGEX : MIXIN_VALUES_REGEX; - let matches = (new RegExp(regex, 'gi')).exec(declaration); - if (!matches) { - return null; - } - let name = matches[1].trim(); - let parameters = []; - if (matches.length > 2 && matches[2]) { - let params = matches[2].split(',').map((param) => param.trim().replace(/[\(\)]/g, '')); - parameters.push(...params); - } - return { name, parameters }; - } -} -exports.Mixins = Mixins; -//# sourceMappingURL=mixins.js.map \ No newline at end of file diff --git a/dist/app/parser/mixins.js.map b/dist/app/parser/mixins.js.map deleted file mode 100644 index 99af839..0000000 --- a/dist/app/parser/mixins.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/app/parser/mixins.ts"],"names":[],"mappings":";;;AAEA,MAAM,kBAAkB,GAAG,gDAAgD,CAAC;AAC5E,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AAEjE,MAAa,MAAM;IAEjB,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAEtC,CAAC;IAEM,KAAK;QACV,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE9C,IAAI,MAAM,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAAE;YAC1C,IAAI,SAAS,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAAE;QAClD,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,EAAS,CAAC;SAClB;QAED,OAAO,OAAc,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,WAAmB,EAAE,cAAc,GAAG,KAAK;QAC7D,IAAI,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACpE,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACvF,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SAC5B;QAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAY,CAAC;IACxC,CAAC;CACF;AAhDD,wBAgDC"} \ No newline at end of file diff --git a/dist/app/parser/parser.js b/dist/app/parser/parser.js deleted file mode 100644 index 45b3d46..0000000 --- a/dist/app/parser/parser.js +++ /dev/null @@ -1,110 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Parser = void 0; -const VARIABLE_PATERN = '(?!\\d)[\\w_-][\\w\\d_-]*'; -const VALUE_PATERN = '[^;]+|"(?:[^"]+|(?:\\\\"|[^"])*)"'; -const DECLARATION_PATTERN = `\\$['"]?(${VARIABLE_PATERN})['"]?\\s*:\\s*(${VALUE_PATERN})(?:\\s*!(global|default)\\s*;|\\s*;(?![^\\{]*\\}))`; -const MAP_DECLARATIOM_REGEX = /['"]?((?!\d)[\w_-][\w\d_-]*)['"]?\s*:\s*([a-z\-]+\([^\)]+\)|[^\),\/]+)/gi; -const QUOTES_PATTERN = /^(['"]).*\1$/; -const QUOTES_REPLACE = /^(['"])|(['"])$/g; -const SECTION_TAG = 'sass-export-section'; -const SECTION_PATTERN = `(@${SECTION_TAG}=)(".+")`; -const END_SECTION_PATTERN = `(@end-${SECTION_TAG})`; -const DEFAULT_SECTION = 'variables'; -class Parser { - constructor(rawContent) { - this.rawContent = rawContent; - } - parse() { - let matches = this.extractDeclarations(this.rawContent); - let declarations = []; - for (let match of matches) { - if (!this.checkIsSectionStart(match) && !this.checkIsSectionStart(match)) { - let parsed = this.parseSingleDeclaration(match); - if (parsed) { - let map = this.extractMapDeclarations(parsed.value); - if (map.length) { - parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); - } - declarations.push(parsed); - } - } - } - return declarations; - } - parseStructured() { - let matches = this.extractDeclarationsStructured(this.rawContent); - let currentSection = DEFAULT_SECTION; - let declarations = {}; - if (!matches || !matches.length) { - return {}; - } - declarations[currentSection] = []; - for (let match of matches) { - if (this.checkIsSectionStart(match)) { - let sectionName = String(new RegExp(SECTION_PATTERN, 'gi').exec(match)[2]); - if (sectionName) { - currentSection = sectionName.replace(/"/g, ''); - declarations[currentSection] = declarations[currentSection] || []; - } - } - else if (this.checkIsSectionEnd(match)) { - currentSection = DEFAULT_SECTION; - } - else { - let parsed = this.parseSingleDeclaration(match); - if (parsed) { - let map = this.extractMapDeclarations(parsed.value); - if (map.length) { - parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); - } - declarations[currentSection].push(parsed); - } - } - } - return declarations; - } - extractDeclarationsStructured(content) { - const matches = content.match(new RegExp(`${DECLARATION_PATTERN}|${SECTION_PATTERN}|${END_SECTION_PATTERN}`, 'g')); - if (!matches) { - return []; - } - return matches; - } - extractDeclarations(content) { - const matches = content.match(new RegExp(DECLARATION_PATTERN, 'g')); - if (!matches) { - return []; - } - return matches; - } - extractMapDeclarations(content) { - const matches = content.match(new RegExp(MAP_DECLARATIOM_REGEX, 'g')); - if (!matches) { - return []; - } - return matches; - } - parseSingleDeclaration(matchDeclaration) { - let matches = matchDeclaration - .replace(/\s*!(default|global)\s*;/, ';') - .match(new RegExp(DECLARATION_PATTERN)); - if (!matches) { - return; - } - let name = matches[1].trim().replace('_', '-'); - let value = matches[2].trim().replace(/\s*\n+\s*/g, ' '); - if (value.match(QUOTES_PATTERN)) { - value = value.replace(QUOTES_REPLACE, ''); - } - return { name, value }; - } - checkIsSectionStart(content) { - return (new RegExp(SECTION_PATTERN, 'gi')).test(content); - } - checkIsSectionEnd(content) { - return (new RegExp(END_SECTION_PATTERN, 'gi')).test(content); - } -} -exports.Parser = Parser; -//# sourceMappingURL=parser.js.map \ No newline at end of file diff --git a/dist/app/parser/parser.js.map b/dist/app/parser/parser.js.map deleted file mode 100644 index 3f4e569..0000000 --- a/dist/app/parser/parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/app/parser/parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/utils/index.js b/dist/app/utils/index.js deleted file mode 100644 index e6f0868..0000000 --- a/dist/app/utils/index.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./utils"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/utils/index.js.map b/dist/app/utils/index.js.map deleted file mode 100644 index 8a11e90..0000000 --- a/dist/app/utils/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB"} \ No newline at end of file diff --git a/dist/app/utils/utils.js b/dist/app/utils/utils.js deleted file mode 100644 index c02a089..0000000 --- a/dist/app/utils/utils.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Utils = void 0; -const WRAPPER_CSS_ID = '#sass-export-id'; -const UNWRAPPER_PATTERN = `${WRAPPER_CSS_ID}\\.(.+)\\s*\\{\\s*content:\\s*["'](.+)["']`; -class Utils { - static getDeclarationByName(declarations = [], name) { - let filtered = declarations.filter((declaration) => declaration.name === name); - return filtered[0]; - } - static wrapCss(cssDeclaration) { - return `${WRAPPER_CSS_ID}.${cssDeclaration.name}{content:"#{${cssDeclaration.value}}";}`; - } - static unWrapValue(wrappedContent) { - wrappedContent = wrappedContent.replace(/\n/g, ''); - let matches = wrappedContent.match(UNWRAPPER_PATTERN); - if (matches && matches.length > 2) { - return matches[2].trim(); - } - else { - return ''; - } - } -} -exports.Utils = Utils; -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/app/utils/utils.js.map b/dist/app/utils/utils.js.map deleted file mode 100644 index b12c635..0000000 --- a/dist/app/utils/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/app/utils/utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,iBAAiB,GAAG,GAAG,cAAc,4CAA4C,CAAC;AAOxF,MAAa,KAAK;IAET,MAAM,CAAC,oBAAoB,CAAC,eAA+B,EAAE,EAAE,IAAY;QAChF,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAE/E,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAGM,MAAM,CAAC,OAAO,CAAC,cAA4B;QAChD,OAAO,GAAG,cAAc,IAAI,cAAc,CAAC,IAAI,eAAe,cAAc,CAAC,KAAK,MAAM,CAAC;IAC3F,CAAC;IAGM,MAAM,CAAC,WAAW,CAAC,cAAsB;QAC9C,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnD,IAAI,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1B;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAzBD,sBAyBC"} \ No newline at end of file diff --git a/dist/declarations/app/converter/converter-buffer.d.ts b/dist/declarations/app/converter/converter-buffer.d.ts deleted file mode 100644 index f5012b1..0000000 --- a/dist/declarations/app/converter/converter-buffer.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -/// -import { Converter } from './converter'; -export declare class ConverterBuffer extends Converter { - private inputBuffers; - constructor(inputBuffers: Buffer[], options?: IOptions); - getData(): Promise; - getContent(): string; -} diff --git a/dist/declarations/app/converter/converter.d.ts b/dist/declarations/app/converter/converter.d.ts deleted file mode 100644 index dbb305a..0000000 --- a/dist/declarations/app/converter/converter.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export declare class Converter { - options?: IOptions; - constructor(options?: IOptions); - getArray(): IDeclaration[]; - getStructured(): any; - compileStructure(structuredDeclaration: IDeclaration): object; - getContent(): string; - private checkForMixins; - private renderPropertyValue; -} diff --git a/dist/declarations/app/converter/index.d.ts b/dist/declarations/app/converter/index.d.ts deleted file mode 100644 index 00c0e3d..0000000 --- a/dist/declarations/app/converter/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './converter'; -export * from './converter-buffer'; diff --git a/dist/declarations/app/parser/index.d.ts b/dist/declarations/app/parser/index.d.ts deleted file mode 100644 index 3e440b0..0000000 --- a/dist/declarations/app/parser/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './parser'; -export * from './mixins'; diff --git a/dist/declarations/app/parser/mixins.d.ts b/dist/declarations/app/parser/mixins.d.ts deleted file mode 100644 index 16cc505..0000000 --- a/dist/declarations/app/parser/mixins.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export declare class Mixins { - private rawContent; - constructor(rawContent: string); - parse(): any[]; - private extractDeclarations; - private parseSingle; -} diff --git a/dist/declarations/app/parser/parser.d.ts b/dist/declarations/app/parser/parser.d.ts deleted file mode 100644 index 7a264da..0000000 --- a/dist/declarations/app/parser/parser.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export declare class Parser { - private rawContent; - constructor(rawContent: string); - parse(): IDeclaration[]; - parseStructured(): any; - private extractDeclarationsStructured; - private extractDeclarations; - private extractMapDeclarations; - private parseSingleDeclaration; - private checkIsSectionStart; - private checkIsSectionEnd; -} diff --git a/dist/declarations/app/utils/index.d.ts b/dist/declarations/app/utils/index.d.ts deleted file mode 100644 index 04bca77..0000000 --- a/dist/declarations/app/utils/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './utils'; diff --git a/dist/declarations/app/utils/utils.d.ts b/dist/declarations/app/utils/utils.d.ts deleted file mode 100644 index 58dfb39..0000000 --- a/dist/declarations/app/utils/utils.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare class Utils { - static getDeclarationByName(declarations: IDeclaration[], name: string): IDeclaration; - static wrapCss(cssDeclaration: IDeclaration): string; - static unWrapValue(wrappedContent: string): string; -} diff --git a/dist/declarations/index.d.ts b/dist/declarations/index.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/dist/declarations/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 10268a3..0000000 --- a/dist/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const converter_1 = require("./app/converter"); -let sassExporter = (options) => { - return new converter_1.Converter(options); -}; -let bufferExporter = (input, options) => { - let converter = new converter_1.ConverterBuffer(input, options); - return converter.getData(); -}; -module.exports = { - exporter: sassExporter, - buffer: bufferExporter -}; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index d27a92c..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+CAA6D;AAE7D,IAAI,YAAY,GAAG,CAAC,OAAiB,EAAE,EAAE;IACvC,OAAO,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,cAAc,GAAG,CAAC,KAAe,EAAE,OAAiB,EAAE,EAAE;IAC1D,IAAI,SAAS,GAAG,IAAI,2BAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG;IACf,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,cAAc;CACvB,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index ea04f3f..21a838d 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "build": "tsc --p tsconfig.json", "dev": "npm run build & npm run test", "prepublish": "npm run build", - "prestart": "npm run build", + "postinstall": "npm run build", "watch": "npm run build -- --watch", "test": "mocha -r ts-node/register src/**/*.test.ts" }, From 5f8c9eba2cfd9e09b1957564cbb51b5f6cd00dc9 Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Fri, 2 Apr 2021 00:00:14 +0800 Subject: [PATCH 08/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20add=20dist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/app/converter/converter-buffer.js | 28 +++++ dist/app/converter/converter-buffer.js.map | 1 + dist/app/converter/converter.js | 98 ++++++++++++++++ dist/app/converter/converter.js.map | 1 + dist/app/converter/index.js | 15 +++ dist/app/converter/index.js.map | 1 + dist/app/parser/index.js | 15 +++ dist/app/parser/index.js.map | 1 + dist/app/parser/mixins.js | 49 ++++++++ dist/app/parser/mixins.js.map | 1 + dist/app/parser/parser.js | 110 ++++++++++++++++++ dist/app/parser/parser.js.map | 1 + dist/app/utils/index.js | 14 +++ dist/app/utils/index.js.map | 1 + dist/app/utils/utils.js | 26 +++++ dist/app/utils/utils.js.map | 1 + .../app/converter/converter-buffer.d.ts | 8 ++ .../declarations/app/converter/converter.d.ts | 10 ++ dist/declarations/app/converter/index.d.ts | 2 + dist/declarations/app/parser/index.d.ts | 2 + dist/declarations/app/parser/mixins.d.ts | 7 ++ dist/declarations/app/parser/parser.d.ts | 12 ++ dist/declarations/app/utils/index.d.ts | 1 + dist/declarations/app/utils/utils.d.ts | 5 + dist/declarations/index.d.ts | 1 + dist/index.js | 15 +++ dist/index.js.map | 1 + 27 files changed, 427 insertions(+) create mode 100644 dist/app/converter/converter-buffer.js create mode 100644 dist/app/converter/converter-buffer.js.map create mode 100644 dist/app/converter/converter.js create mode 100644 dist/app/converter/converter.js.map create mode 100644 dist/app/converter/index.js create mode 100644 dist/app/converter/index.js.map create mode 100644 dist/app/parser/index.js create mode 100644 dist/app/parser/index.js.map create mode 100644 dist/app/parser/mixins.js create mode 100644 dist/app/parser/mixins.js.map create mode 100644 dist/app/parser/parser.js create mode 100644 dist/app/parser/parser.js.map create mode 100644 dist/app/utils/index.js create mode 100644 dist/app/utils/index.js.map create mode 100644 dist/app/utils/utils.js create mode 100644 dist/app/utils/utils.js.map create mode 100644 dist/declarations/app/converter/converter-buffer.d.ts create mode 100644 dist/declarations/app/converter/converter.d.ts create mode 100644 dist/declarations/app/converter/index.d.ts create mode 100644 dist/declarations/app/parser/index.d.ts create mode 100644 dist/declarations/app/parser/mixins.d.ts create mode 100644 dist/declarations/app/parser/parser.d.ts create mode 100644 dist/declarations/app/utils/index.d.ts create mode 100644 dist/declarations/app/utils/utils.d.ts create mode 100644 dist/declarations/index.d.ts create mode 100644 dist/index.js create mode 100644 dist/index.js.map diff --git a/dist/app/converter/converter-buffer.js b/dist/app/converter/converter-buffer.js new file mode 100644 index 0000000..2ab5781 --- /dev/null +++ b/dist/app/converter/converter-buffer.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConverterBuffer = void 0; +const converter_1 = require("./converter"); +const Types = { + STRUCTURED: 'structured', + ARRAY: 'array' +}; +class ConverterBuffer extends converter_1.Converter { + constructor(inputBuffers, options) { + super(options); + this.inputBuffers = inputBuffers; + } + getData() { + if (this.options && this.options.type === Types.ARRAY) { + return Promise.resolve(this.getArray()); + } + else { + return Promise.resolve(this.getStructured()); + } + } + getContent() { + let contents = this.inputBuffers.map((buffer) => buffer.toString()); + return contents.join('\n'); + } +} +exports.ConverterBuffer = ConverterBuffer; +//# sourceMappingURL=converter-buffer.js.map \ No newline at end of file diff --git a/dist/app/converter/converter-buffer.js.map b/dist/app/converter/converter-buffer.js.map new file mode 100644 index 0000000..19918f6 --- /dev/null +++ b/dist/app/converter/converter-buffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"converter-buffer.js","sourceRoot":"","sources":["../../../src/app/converter/converter-buffer.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAIxC,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAa,eAAgB,SAAQ,qBAAS;IAG5C,YAAY,YAAsB,EAAE,OAAkB;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE;YACrD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzC;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC9C;IACH,CAAC;IAGM,UAAU;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AArBD,0CAqBC"} \ No newline at end of file diff --git a/dist/app/converter/converter.js b/dist/app/converter/converter.js new file mode 100644 index 0000000..74e9ab3 --- /dev/null +++ b/dist/app/converter/converter.js @@ -0,0 +1,98 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Converter = void 0; +const fs = require("fs"); +const sass = require("node-sass"); +const glob = require("glob"); +const parser_1 = require("../parser"); +const utils_1 = require("../utils"); +const LINE_BREAK = '\n'; +class Converter { + constructor(options) { + this.options = options; + this.options = options || {}; + } + getArray() { + let content = this.getContent(); + let parsedDeclarations = new parser_1.Parser(content).parse(); + return parsedDeclarations.map((declaration) => { + declaration.compiledValue = this.renderPropertyValue(content, declaration); + declaration.name = `$${declaration.name}`; + if (declaration.mapValue) { + declaration.mapValue.map((mapDeclaration) => { + mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); + return mapDeclaration; + }); + } + return declaration; + }); + } + getStructured() { + let content = this.getContent(); + let structuredDeclaration = new parser_1.Parser(content).parseStructured(); + structuredDeclaration = this.compileStructure(structuredDeclaration); + return structuredDeclaration; + } + compileStructure(structuredDeclaration) { + let groups = Object.keys(structuredDeclaration); + groups.forEach((group) => { + let content = this.getContent(); + let compiledGroup = structuredDeclaration[group].map((declaration) => { + declaration.compiledValue = this.renderPropertyValue(content, declaration); + declaration.name = `$${declaration.name}`; + if (declaration.mapValue) { + declaration.mapValue.map((mapDeclaration) => { + mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); + return mapDeclaration; + }); + } + return declaration; + }); + }); + return this.checkForMixins(structuredDeclaration); + } + getContent() { + let inputFiles = []; + let inputs = []; + if (!Array.isArray(this.options.inputFiles)) { + inputFiles.push(this.options.inputFiles); + } + else { + inputFiles = this.options.inputFiles; + } + inputFiles.forEach((path) => { + let files = glob.sync(String(path)); + inputs.push(...files); + }); + let contents = inputs.map((filePath) => fs.readFileSync(String(filePath))); + let strContents = contents.join(LINE_BREAK); + strContents = strContents.replace(/\/\*[\w\W\r\n]*?\*\//g, ''); + strContents = strContents.split(LINE_BREAK).filter(v => v.indexOf('//') === -1).join(LINE_BREAK); + return strContents; + } + checkForMixins(structuredDeclaration) { + let mixinsGroup = 'mixins'; + let parsedMixins = new parser_1.Mixins(this.getContent()).parse(); + if (parsedMixins && parsedMixins.length) { + structuredDeclaration[mixinsGroup] = parsedMixins; + } + return structuredDeclaration; + } + renderPropertyValue(content, declaration) { + try { + let rendered = sass.renderSync({ + data: content + LINE_BREAK + utils_1.Utils.wrapCss(declaration), + includePaths: this.options.includePaths, + outputStyle: 'compact' + }); + let wrappedRendered = String(rendered.css); + return utils_1.Utils.unWrapValue(wrappedRendered); + } + catch (err) { + console.error(err); + return ''; + } + } +} +exports.Converter = Converter; +//# sourceMappingURL=converter.js.map \ No newline at end of file diff --git a/dist/app/converter/converter.js.map b/dist/app/converter/converter.js.map new file mode 100644 index 0000000..53cfdce --- /dev/null +++ b/dist/app/converter/converter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/app/converter/converter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/converter/index.js b/dist/app/converter/index.js new file mode 100644 index 0000000..bccc23e --- /dev/null +++ b/dist/app/converter/index.js @@ -0,0 +1,15 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./converter"), exports); +__exportStar(require("./converter-buffer"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/converter/index.js.map b/dist/app/converter/index.js.map new file mode 100644 index 0000000..771cd6c --- /dev/null +++ b/dist/app/converter/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/converter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC"} \ No newline at end of file diff --git a/dist/app/parser/index.js b/dist/app/parser/index.js new file mode 100644 index 0000000..363baed --- /dev/null +++ b/dist/app/parser/index.js @@ -0,0 +1,15 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./parser"), exports); +__exportStar(require("./mixins"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/parser/index.js.map b/dist/app/parser/index.js.map new file mode 100644 index 0000000..4e3a664 --- /dev/null +++ b/dist/app/parser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB"} \ No newline at end of file diff --git a/dist/app/parser/mixins.js b/dist/app/parser/mixins.js new file mode 100644 index 0000000..d0003d4 --- /dev/null +++ b/dist/app/parser/mixins.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Mixins = void 0; +const MIXIN_VALUES_REGEX = /@mixin ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; +const FUNC_VALUES_REGEX = /@function ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; +const MIXIN_DECLARATION_REGEX = '@mixin.[^\{]+|@function.[^\{]+'; +class Mixins { + constructor(rawContent) { + this.rawContent = rawContent; + } + parse() { + let matches = this.extractDeclarations(this.rawContent); + let declarations = []; + matches.forEach((match) => { + let mixins = this.parseSingle(match); + let functions = this.parseSingle(match, true); + if (mixins) { + declarations.push(mixins); + } + if (functions) { + declarations.push(functions); + } + }); + return declarations; + } + extractDeclarations(content) { + let matches = content.match(new RegExp(MIXIN_DECLARATION_REGEX, 'gi')); + if (!matches) { + return []; + } + return matches; + } + parseSingle(declaration, checkFunctions = false) { + let regex = checkFunctions ? FUNC_VALUES_REGEX : MIXIN_VALUES_REGEX; + let matches = (new RegExp(regex, 'gi')).exec(declaration); + if (!matches) { + return null; + } + let name = matches[1].trim(); + let parameters = []; + if (matches.length > 2 && matches[2]) { + let params = matches[2].split(',').map((param) => param.trim().replace(/[\(\)]/g, '')); + parameters.push(...params); + } + return { name, parameters }; + } +} +exports.Mixins = Mixins; +//# sourceMappingURL=mixins.js.map \ No newline at end of file diff --git a/dist/app/parser/mixins.js.map b/dist/app/parser/mixins.js.map new file mode 100644 index 0000000..99af839 --- /dev/null +++ b/dist/app/parser/mixins.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/app/parser/mixins.ts"],"names":[],"mappings":";;;AAEA,MAAM,kBAAkB,GAAG,gDAAgD,CAAC;AAC5E,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AAEjE,MAAa,MAAM;IAEjB,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAEtC,CAAC;IAEM,KAAK;QACV,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE9C,IAAI,MAAM,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAAE;YAC1C,IAAI,SAAS,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAAE;QAClD,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,EAAS,CAAC;SAClB;QAED,OAAO,OAAc,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,WAAmB,EAAE,cAAc,GAAG,KAAK;QAC7D,IAAI,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACpE,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACvF,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SAC5B;QAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAY,CAAC;IACxC,CAAC;CACF;AAhDD,wBAgDC"} \ No newline at end of file diff --git a/dist/app/parser/parser.js b/dist/app/parser/parser.js new file mode 100644 index 0000000..45b3d46 --- /dev/null +++ b/dist/app/parser/parser.js @@ -0,0 +1,110 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Parser = void 0; +const VARIABLE_PATERN = '(?!\\d)[\\w_-][\\w\\d_-]*'; +const VALUE_PATERN = '[^;]+|"(?:[^"]+|(?:\\\\"|[^"])*)"'; +const DECLARATION_PATTERN = `\\$['"]?(${VARIABLE_PATERN})['"]?\\s*:\\s*(${VALUE_PATERN})(?:\\s*!(global|default)\\s*;|\\s*;(?![^\\{]*\\}))`; +const MAP_DECLARATIOM_REGEX = /['"]?((?!\d)[\w_-][\w\d_-]*)['"]?\s*:\s*([a-z\-]+\([^\)]+\)|[^\),\/]+)/gi; +const QUOTES_PATTERN = /^(['"]).*\1$/; +const QUOTES_REPLACE = /^(['"])|(['"])$/g; +const SECTION_TAG = 'sass-export-section'; +const SECTION_PATTERN = `(@${SECTION_TAG}=)(".+")`; +const END_SECTION_PATTERN = `(@end-${SECTION_TAG})`; +const DEFAULT_SECTION = 'variables'; +class Parser { + constructor(rawContent) { + this.rawContent = rawContent; + } + parse() { + let matches = this.extractDeclarations(this.rawContent); + let declarations = []; + for (let match of matches) { + if (!this.checkIsSectionStart(match) && !this.checkIsSectionStart(match)) { + let parsed = this.parseSingleDeclaration(match); + if (parsed) { + let map = this.extractMapDeclarations(parsed.value); + if (map.length) { + parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); + } + declarations.push(parsed); + } + } + } + return declarations; + } + parseStructured() { + let matches = this.extractDeclarationsStructured(this.rawContent); + let currentSection = DEFAULT_SECTION; + let declarations = {}; + if (!matches || !matches.length) { + return {}; + } + declarations[currentSection] = []; + for (let match of matches) { + if (this.checkIsSectionStart(match)) { + let sectionName = String(new RegExp(SECTION_PATTERN, 'gi').exec(match)[2]); + if (sectionName) { + currentSection = sectionName.replace(/"/g, ''); + declarations[currentSection] = declarations[currentSection] || []; + } + } + else if (this.checkIsSectionEnd(match)) { + currentSection = DEFAULT_SECTION; + } + else { + let parsed = this.parseSingleDeclaration(match); + if (parsed) { + let map = this.extractMapDeclarations(parsed.value); + if (map.length) { + parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); + } + declarations[currentSection].push(parsed); + } + } + } + return declarations; + } + extractDeclarationsStructured(content) { + const matches = content.match(new RegExp(`${DECLARATION_PATTERN}|${SECTION_PATTERN}|${END_SECTION_PATTERN}`, 'g')); + if (!matches) { + return []; + } + return matches; + } + extractDeclarations(content) { + const matches = content.match(new RegExp(DECLARATION_PATTERN, 'g')); + if (!matches) { + return []; + } + return matches; + } + extractMapDeclarations(content) { + const matches = content.match(new RegExp(MAP_DECLARATIOM_REGEX, 'g')); + if (!matches) { + return []; + } + return matches; + } + parseSingleDeclaration(matchDeclaration) { + let matches = matchDeclaration + .replace(/\s*!(default|global)\s*;/, ';') + .match(new RegExp(DECLARATION_PATTERN)); + if (!matches) { + return; + } + let name = matches[1].trim().replace('_', '-'); + let value = matches[2].trim().replace(/\s*\n+\s*/g, ' '); + if (value.match(QUOTES_PATTERN)) { + value = value.replace(QUOTES_REPLACE, ''); + } + return { name, value }; + } + checkIsSectionStart(content) { + return (new RegExp(SECTION_PATTERN, 'gi')).test(content); + } + checkIsSectionEnd(content) { + return (new RegExp(END_SECTION_PATTERN, 'gi')).test(content); + } +} +exports.Parser = Parser; +//# sourceMappingURL=parser.js.map \ No newline at end of file diff --git a/dist/app/parser/parser.js.map b/dist/app/parser/parser.js.map new file mode 100644 index 0000000..3f4e569 --- /dev/null +++ b/dist/app/parser/parser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/app/parser/parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/utils/index.js b/dist/app/utils/index.js new file mode 100644 index 0000000..e6f0868 --- /dev/null +++ b/dist/app/utils/index.js @@ -0,0 +1,14 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./utils"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/utils/index.js.map b/dist/app/utils/index.js.map new file mode 100644 index 0000000..8a11e90 --- /dev/null +++ b/dist/app/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB"} \ No newline at end of file diff --git a/dist/app/utils/utils.js b/dist/app/utils/utils.js new file mode 100644 index 0000000..c02a089 --- /dev/null +++ b/dist/app/utils/utils.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Utils = void 0; +const WRAPPER_CSS_ID = '#sass-export-id'; +const UNWRAPPER_PATTERN = `${WRAPPER_CSS_ID}\\.(.+)\\s*\\{\\s*content:\\s*["'](.+)["']`; +class Utils { + static getDeclarationByName(declarations = [], name) { + let filtered = declarations.filter((declaration) => declaration.name === name); + return filtered[0]; + } + static wrapCss(cssDeclaration) { + return `${WRAPPER_CSS_ID}.${cssDeclaration.name}{content:"#{${cssDeclaration.value}}";}`; + } + static unWrapValue(wrappedContent) { + wrappedContent = wrappedContent.replace(/\n/g, ''); + let matches = wrappedContent.match(UNWRAPPER_PATTERN); + if (matches && matches.length > 2) { + return matches[2].trim(); + } + else { + return ''; + } + } +} +exports.Utils = Utils; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/app/utils/utils.js.map b/dist/app/utils/utils.js.map new file mode 100644 index 0000000..b12c635 --- /dev/null +++ b/dist/app/utils/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/app/utils/utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,iBAAiB,GAAG,GAAG,cAAc,4CAA4C,CAAC;AAOxF,MAAa,KAAK;IAET,MAAM,CAAC,oBAAoB,CAAC,eAA+B,EAAE,EAAE,IAAY;QAChF,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAE/E,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAGM,MAAM,CAAC,OAAO,CAAC,cAA4B;QAChD,OAAO,GAAG,cAAc,IAAI,cAAc,CAAC,IAAI,eAAe,cAAc,CAAC,KAAK,MAAM,CAAC;IAC3F,CAAC;IAGM,MAAM,CAAC,WAAW,CAAC,cAAsB;QAC9C,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnD,IAAI,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1B;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAzBD,sBAyBC"} \ No newline at end of file diff --git a/dist/declarations/app/converter/converter-buffer.d.ts b/dist/declarations/app/converter/converter-buffer.d.ts new file mode 100644 index 0000000..f5012b1 --- /dev/null +++ b/dist/declarations/app/converter/converter-buffer.d.ts @@ -0,0 +1,8 @@ +/// +import { Converter } from './converter'; +export declare class ConverterBuffer extends Converter { + private inputBuffers; + constructor(inputBuffers: Buffer[], options?: IOptions); + getData(): Promise; + getContent(): string; +} diff --git a/dist/declarations/app/converter/converter.d.ts b/dist/declarations/app/converter/converter.d.ts new file mode 100644 index 0000000..dbb305a --- /dev/null +++ b/dist/declarations/app/converter/converter.d.ts @@ -0,0 +1,10 @@ +export declare class Converter { + options?: IOptions; + constructor(options?: IOptions); + getArray(): IDeclaration[]; + getStructured(): any; + compileStructure(structuredDeclaration: IDeclaration): object; + getContent(): string; + private checkForMixins; + private renderPropertyValue; +} diff --git a/dist/declarations/app/converter/index.d.ts b/dist/declarations/app/converter/index.d.ts new file mode 100644 index 0000000..00c0e3d --- /dev/null +++ b/dist/declarations/app/converter/index.d.ts @@ -0,0 +1,2 @@ +export * from './converter'; +export * from './converter-buffer'; diff --git a/dist/declarations/app/parser/index.d.ts b/dist/declarations/app/parser/index.d.ts new file mode 100644 index 0000000..3e440b0 --- /dev/null +++ b/dist/declarations/app/parser/index.d.ts @@ -0,0 +1,2 @@ +export * from './parser'; +export * from './mixins'; diff --git a/dist/declarations/app/parser/mixins.d.ts b/dist/declarations/app/parser/mixins.d.ts new file mode 100644 index 0000000..16cc505 --- /dev/null +++ b/dist/declarations/app/parser/mixins.d.ts @@ -0,0 +1,7 @@ +export declare class Mixins { + private rawContent; + constructor(rawContent: string); + parse(): any[]; + private extractDeclarations; + private parseSingle; +} diff --git a/dist/declarations/app/parser/parser.d.ts b/dist/declarations/app/parser/parser.d.ts new file mode 100644 index 0000000..7a264da --- /dev/null +++ b/dist/declarations/app/parser/parser.d.ts @@ -0,0 +1,12 @@ +export declare class Parser { + private rawContent; + constructor(rawContent: string); + parse(): IDeclaration[]; + parseStructured(): any; + private extractDeclarationsStructured; + private extractDeclarations; + private extractMapDeclarations; + private parseSingleDeclaration; + private checkIsSectionStart; + private checkIsSectionEnd; +} diff --git a/dist/declarations/app/utils/index.d.ts b/dist/declarations/app/utils/index.d.ts new file mode 100644 index 0000000..04bca77 --- /dev/null +++ b/dist/declarations/app/utils/index.d.ts @@ -0,0 +1 @@ +export * from './utils'; diff --git a/dist/declarations/app/utils/utils.d.ts b/dist/declarations/app/utils/utils.d.ts new file mode 100644 index 0000000..58dfb39 --- /dev/null +++ b/dist/declarations/app/utils/utils.d.ts @@ -0,0 +1,5 @@ +export declare class Utils { + static getDeclarationByName(declarations: IDeclaration[], name: string): IDeclaration; + static wrapCss(cssDeclaration: IDeclaration): string; + static unWrapValue(wrappedContent: string): string; +} diff --git a/dist/declarations/index.d.ts b/dist/declarations/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/declarations/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..10268a3 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const converter_1 = require("./app/converter"); +let sassExporter = (options) => { + return new converter_1.Converter(options); +}; +let bufferExporter = (input, options) => { + let converter = new converter_1.ConverterBuffer(input, options); + return converter.getData(); +}; +module.exports = { + exporter: sassExporter, + buffer: bufferExporter +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..d27a92c --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+CAA6D;AAE7D,IAAI,YAAY,GAAG,CAAC,OAAiB,EAAE,EAAE;IACvC,OAAO,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,cAAc,GAAG,CAAC,KAAe,EAAE,OAAiB,EAAE,EAAE;IAC1D,IAAI,SAAS,GAAG,IAAI,2BAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG;IACf,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,cAAc;CACvB,CAAC"} \ No newline at end of file From d460e5ca11611bb2c4a8d4013cbdcfa6d9513191 Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Fri, 2 Apr 2021 00:00:58 +0800 Subject: [PATCH 09/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20remove=20postinsta?= =?UTF-8?q?ll?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 21a838d..e8ca5ec 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "build": "tsc --p tsconfig.json", "dev": "npm run build & npm run test", "prepublish": "npm run build", - "postinstall": "npm run build", "watch": "npm run build -- --watch", "test": "mocha -r ts-node/register src/**/*.test.ts" }, From 35291b97382538912854f1e56cc69101e232b2ce Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Fri, 2 Apr 2021 12:35:58 +0800 Subject: [PATCH 10/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E6=B5=8B=E8=AF=95?= =?UTF-8?q?postinstall=E9=92=A9=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index e8ca5ec..c05fdb9 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "Exports Sass files to Json format, able to manage sections with annotations in comments.", "main": "./dist/index.js", "files": [ + "src", "bin", "dist" ], @@ -11,6 +12,7 @@ "build": "tsc --p tsconfig.json", "dev": "npm run build & npm run test", "prepublish": "npm run build", + "postinstall": "npm run build", "watch": "npm run build -- --watch", "test": "mocha -r ts-node/register src/**/*.test.ts" }, From 1ef9dce49124aff91a63881c48e011d2240f4db3 Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Fri, 2 Apr 2021 12:37:19 +0800 Subject: [PATCH 11/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E6=B5=8B=E8=AF=95?= =?UTF-8?q?postinstall?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/app/converter/converter-buffer.js | 28 ----- dist/app/converter/converter-buffer.js.map | 1 - dist/app/converter/converter.js | 98 ---------------- dist/app/converter/converter.js.map | 1 - dist/app/converter/index.js | 15 --- dist/app/converter/index.js.map | 1 - dist/app/parser/index.js | 15 --- dist/app/parser/index.js.map | 1 - dist/app/parser/mixins.js | 49 -------- dist/app/parser/mixins.js.map | 1 - dist/app/parser/parser.js | 110 ------------------ dist/app/parser/parser.js.map | 1 - dist/app/utils/index.js | 14 --- dist/app/utils/index.js.map | 1 - dist/app/utils/utils.js | 26 ----- dist/app/utils/utils.js.map | 1 - .../app/converter/converter-buffer.d.ts | 8 -- .../declarations/app/converter/converter.d.ts | 10 -- dist/declarations/app/converter/index.d.ts | 2 - dist/declarations/app/parser/index.d.ts | 2 - dist/declarations/app/parser/mixins.d.ts | 7 -- dist/declarations/app/parser/parser.d.ts | 12 -- dist/declarations/app/utils/index.d.ts | 1 - dist/declarations/app/utils/utils.d.ts | 5 - dist/declarations/index.d.ts | 1 - dist/index.js | 15 --- dist/index.js.map | 1 - 27 files changed, 427 deletions(-) delete mode 100644 dist/app/converter/converter-buffer.js delete mode 100644 dist/app/converter/converter-buffer.js.map delete mode 100644 dist/app/converter/converter.js delete mode 100644 dist/app/converter/converter.js.map delete mode 100644 dist/app/converter/index.js delete mode 100644 dist/app/converter/index.js.map delete mode 100644 dist/app/parser/index.js delete mode 100644 dist/app/parser/index.js.map delete mode 100644 dist/app/parser/mixins.js delete mode 100644 dist/app/parser/mixins.js.map delete mode 100644 dist/app/parser/parser.js delete mode 100644 dist/app/parser/parser.js.map delete mode 100644 dist/app/utils/index.js delete mode 100644 dist/app/utils/index.js.map delete mode 100644 dist/app/utils/utils.js delete mode 100644 dist/app/utils/utils.js.map delete mode 100644 dist/declarations/app/converter/converter-buffer.d.ts delete mode 100644 dist/declarations/app/converter/converter.d.ts delete mode 100644 dist/declarations/app/converter/index.d.ts delete mode 100644 dist/declarations/app/parser/index.d.ts delete mode 100644 dist/declarations/app/parser/mixins.d.ts delete mode 100644 dist/declarations/app/parser/parser.d.ts delete mode 100644 dist/declarations/app/utils/index.d.ts delete mode 100644 dist/declarations/app/utils/utils.d.ts delete mode 100644 dist/declarations/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map diff --git a/dist/app/converter/converter-buffer.js b/dist/app/converter/converter-buffer.js deleted file mode 100644 index 2ab5781..0000000 --- a/dist/app/converter/converter-buffer.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ConverterBuffer = void 0; -const converter_1 = require("./converter"); -const Types = { - STRUCTURED: 'structured', - ARRAY: 'array' -}; -class ConverterBuffer extends converter_1.Converter { - constructor(inputBuffers, options) { - super(options); - this.inputBuffers = inputBuffers; - } - getData() { - if (this.options && this.options.type === Types.ARRAY) { - return Promise.resolve(this.getArray()); - } - else { - return Promise.resolve(this.getStructured()); - } - } - getContent() { - let contents = this.inputBuffers.map((buffer) => buffer.toString()); - return contents.join('\n'); - } -} -exports.ConverterBuffer = ConverterBuffer; -//# sourceMappingURL=converter-buffer.js.map \ No newline at end of file diff --git a/dist/app/converter/converter-buffer.js.map b/dist/app/converter/converter-buffer.js.map deleted file mode 100644 index 19918f6..0000000 --- a/dist/app/converter/converter-buffer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"converter-buffer.js","sourceRoot":"","sources":["../../../src/app/converter/converter-buffer.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAIxC,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAa,eAAgB,SAAQ,qBAAS;IAG5C,YAAY,YAAsB,EAAE,OAAkB;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE;YACrD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzC;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC9C;IACH,CAAC;IAGM,UAAU;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AArBD,0CAqBC"} \ No newline at end of file diff --git a/dist/app/converter/converter.js b/dist/app/converter/converter.js deleted file mode 100644 index 74e9ab3..0000000 --- a/dist/app/converter/converter.js +++ /dev/null @@ -1,98 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Converter = void 0; -const fs = require("fs"); -const sass = require("node-sass"); -const glob = require("glob"); -const parser_1 = require("../parser"); -const utils_1 = require("../utils"); -const LINE_BREAK = '\n'; -class Converter { - constructor(options) { - this.options = options; - this.options = options || {}; - } - getArray() { - let content = this.getContent(); - let parsedDeclarations = new parser_1.Parser(content).parse(); - return parsedDeclarations.map((declaration) => { - declaration.compiledValue = this.renderPropertyValue(content, declaration); - declaration.name = `$${declaration.name}`; - if (declaration.mapValue) { - declaration.mapValue.map((mapDeclaration) => { - mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); - return mapDeclaration; - }); - } - return declaration; - }); - } - getStructured() { - let content = this.getContent(); - let structuredDeclaration = new parser_1.Parser(content).parseStructured(); - structuredDeclaration = this.compileStructure(structuredDeclaration); - return structuredDeclaration; - } - compileStructure(structuredDeclaration) { - let groups = Object.keys(structuredDeclaration); - groups.forEach((group) => { - let content = this.getContent(); - let compiledGroup = structuredDeclaration[group].map((declaration) => { - declaration.compiledValue = this.renderPropertyValue(content, declaration); - declaration.name = `$${declaration.name}`; - if (declaration.mapValue) { - declaration.mapValue.map((mapDeclaration) => { - mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); - return mapDeclaration; - }); - } - return declaration; - }); - }); - return this.checkForMixins(structuredDeclaration); - } - getContent() { - let inputFiles = []; - let inputs = []; - if (!Array.isArray(this.options.inputFiles)) { - inputFiles.push(this.options.inputFiles); - } - else { - inputFiles = this.options.inputFiles; - } - inputFiles.forEach((path) => { - let files = glob.sync(String(path)); - inputs.push(...files); - }); - let contents = inputs.map((filePath) => fs.readFileSync(String(filePath))); - let strContents = contents.join(LINE_BREAK); - strContents = strContents.replace(/\/\*[\w\W\r\n]*?\*\//g, ''); - strContents = strContents.split(LINE_BREAK).filter(v => v.indexOf('//') === -1).join(LINE_BREAK); - return strContents; - } - checkForMixins(structuredDeclaration) { - let mixinsGroup = 'mixins'; - let parsedMixins = new parser_1.Mixins(this.getContent()).parse(); - if (parsedMixins && parsedMixins.length) { - structuredDeclaration[mixinsGroup] = parsedMixins; - } - return structuredDeclaration; - } - renderPropertyValue(content, declaration) { - try { - let rendered = sass.renderSync({ - data: content + LINE_BREAK + utils_1.Utils.wrapCss(declaration), - includePaths: this.options.includePaths, - outputStyle: 'compact' - }); - let wrappedRendered = String(rendered.css); - return utils_1.Utils.unWrapValue(wrappedRendered); - } - catch (err) { - console.error(err); - return ''; - } - } -} -exports.Converter = Converter; -//# sourceMappingURL=converter.js.map \ No newline at end of file diff --git a/dist/app/converter/converter.js.map b/dist/app/converter/converter.js.map deleted file mode 100644 index 53cfdce..0000000 --- a/dist/app/converter/converter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/app/converter/converter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/converter/index.js b/dist/app/converter/index.js deleted file mode 100644 index bccc23e..0000000 --- a/dist/app/converter/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./converter"), exports); -__exportStar(require("./converter-buffer"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/converter/index.js.map b/dist/app/converter/index.js.map deleted file mode 100644 index 771cd6c..0000000 --- a/dist/app/converter/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/converter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC"} \ No newline at end of file diff --git a/dist/app/parser/index.js b/dist/app/parser/index.js deleted file mode 100644 index 363baed..0000000 --- a/dist/app/parser/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./parser"), exports); -__exportStar(require("./mixins"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/parser/index.js.map b/dist/app/parser/index.js.map deleted file mode 100644 index 4e3a664..0000000 --- a/dist/app/parser/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB"} \ No newline at end of file diff --git a/dist/app/parser/mixins.js b/dist/app/parser/mixins.js deleted file mode 100644 index d0003d4..0000000 --- a/dist/app/parser/mixins.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Mixins = void 0; -const MIXIN_VALUES_REGEX = /@mixin ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; -const FUNC_VALUES_REGEX = /@function ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; -const MIXIN_DECLARATION_REGEX = '@mixin.[^\{]+|@function.[^\{]+'; -class Mixins { - constructor(rawContent) { - this.rawContent = rawContent; - } - parse() { - let matches = this.extractDeclarations(this.rawContent); - let declarations = []; - matches.forEach((match) => { - let mixins = this.parseSingle(match); - let functions = this.parseSingle(match, true); - if (mixins) { - declarations.push(mixins); - } - if (functions) { - declarations.push(functions); - } - }); - return declarations; - } - extractDeclarations(content) { - let matches = content.match(new RegExp(MIXIN_DECLARATION_REGEX, 'gi')); - if (!matches) { - return []; - } - return matches; - } - parseSingle(declaration, checkFunctions = false) { - let regex = checkFunctions ? FUNC_VALUES_REGEX : MIXIN_VALUES_REGEX; - let matches = (new RegExp(regex, 'gi')).exec(declaration); - if (!matches) { - return null; - } - let name = matches[1].trim(); - let parameters = []; - if (matches.length > 2 && matches[2]) { - let params = matches[2].split(',').map((param) => param.trim().replace(/[\(\)]/g, '')); - parameters.push(...params); - } - return { name, parameters }; - } -} -exports.Mixins = Mixins; -//# sourceMappingURL=mixins.js.map \ No newline at end of file diff --git a/dist/app/parser/mixins.js.map b/dist/app/parser/mixins.js.map deleted file mode 100644 index 99af839..0000000 --- a/dist/app/parser/mixins.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/app/parser/mixins.ts"],"names":[],"mappings":";;;AAEA,MAAM,kBAAkB,GAAG,gDAAgD,CAAC;AAC5E,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AAEjE,MAAa,MAAM;IAEjB,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAEtC,CAAC;IAEM,KAAK;QACV,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE9C,IAAI,MAAM,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAAE;YAC1C,IAAI,SAAS,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAAE;QAClD,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,EAAS,CAAC;SAClB;QAED,OAAO,OAAc,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,WAAmB,EAAE,cAAc,GAAG,KAAK;QAC7D,IAAI,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACpE,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACvF,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SAC5B;QAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAY,CAAC;IACxC,CAAC;CACF;AAhDD,wBAgDC"} \ No newline at end of file diff --git a/dist/app/parser/parser.js b/dist/app/parser/parser.js deleted file mode 100644 index 45b3d46..0000000 --- a/dist/app/parser/parser.js +++ /dev/null @@ -1,110 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Parser = void 0; -const VARIABLE_PATERN = '(?!\\d)[\\w_-][\\w\\d_-]*'; -const VALUE_PATERN = '[^;]+|"(?:[^"]+|(?:\\\\"|[^"])*)"'; -const DECLARATION_PATTERN = `\\$['"]?(${VARIABLE_PATERN})['"]?\\s*:\\s*(${VALUE_PATERN})(?:\\s*!(global|default)\\s*;|\\s*;(?![^\\{]*\\}))`; -const MAP_DECLARATIOM_REGEX = /['"]?((?!\d)[\w_-][\w\d_-]*)['"]?\s*:\s*([a-z\-]+\([^\)]+\)|[^\),\/]+)/gi; -const QUOTES_PATTERN = /^(['"]).*\1$/; -const QUOTES_REPLACE = /^(['"])|(['"])$/g; -const SECTION_TAG = 'sass-export-section'; -const SECTION_PATTERN = `(@${SECTION_TAG}=)(".+")`; -const END_SECTION_PATTERN = `(@end-${SECTION_TAG})`; -const DEFAULT_SECTION = 'variables'; -class Parser { - constructor(rawContent) { - this.rawContent = rawContent; - } - parse() { - let matches = this.extractDeclarations(this.rawContent); - let declarations = []; - for (let match of matches) { - if (!this.checkIsSectionStart(match) && !this.checkIsSectionStart(match)) { - let parsed = this.parseSingleDeclaration(match); - if (parsed) { - let map = this.extractMapDeclarations(parsed.value); - if (map.length) { - parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); - } - declarations.push(parsed); - } - } - } - return declarations; - } - parseStructured() { - let matches = this.extractDeclarationsStructured(this.rawContent); - let currentSection = DEFAULT_SECTION; - let declarations = {}; - if (!matches || !matches.length) { - return {}; - } - declarations[currentSection] = []; - for (let match of matches) { - if (this.checkIsSectionStart(match)) { - let sectionName = String(new RegExp(SECTION_PATTERN, 'gi').exec(match)[2]); - if (sectionName) { - currentSection = sectionName.replace(/"/g, ''); - declarations[currentSection] = declarations[currentSection] || []; - } - } - else if (this.checkIsSectionEnd(match)) { - currentSection = DEFAULT_SECTION; - } - else { - let parsed = this.parseSingleDeclaration(match); - if (parsed) { - let map = this.extractMapDeclarations(parsed.value); - if (map.length) { - parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); - } - declarations[currentSection].push(parsed); - } - } - } - return declarations; - } - extractDeclarationsStructured(content) { - const matches = content.match(new RegExp(`${DECLARATION_PATTERN}|${SECTION_PATTERN}|${END_SECTION_PATTERN}`, 'g')); - if (!matches) { - return []; - } - return matches; - } - extractDeclarations(content) { - const matches = content.match(new RegExp(DECLARATION_PATTERN, 'g')); - if (!matches) { - return []; - } - return matches; - } - extractMapDeclarations(content) { - const matches = content.match(new RegExp(MAP_DECLARATIOM_REGEX, 'g')); - if (!matches) { - return []; - } - return matches; - } - parseSingleDeclaration(matchDeclaration) { - let matches = matchDeclaration - .replace(/\s*!(default|global)\s*;/, ';') - .match(new RegExp(DECLARATION_PATTERN)); - if (!matches) { - return; - } - let name = matches[1].trim().replace('_', '-'); - let value = matches[2].trim().replace(/\s*\n+\s*/g, ' '); - if (value.match(QUOTES_PATTERN)) { - value = value.replace(QUOTES_REPLACE, ''); - } - return { name, value }; - } - checkIsSectionStart(content) { - return (new RegExp(SECTION_PATTERN, 'gi')).test(content); - } - checkIsSectionEnd(content) { - return (new RegExp(END_SECTION_PATTERN, 'gi')).test(content); - } -} -exports.Parser = Parser; -//# sourceMappingURL=parser.js.map \ No newline at end of file diff --git a/dist/app/parser/parser.js.map b/dist/app/parser/parser.js.map deleted file mode 100644 index 3f4e569..0000000 --- a/dist/app/parser/parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/app/parser/parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/utils/index.js b/dist/app/utils/index.js deleted file mode 100644 index e6f0868..0000000 --- a/dist/app/utils/index.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./utils"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/utils/index.js.map b/dist/app/utils/index.js.map deleted file mode 100644 index 8a11e90..0000000 --- a/dist/app/utils/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB"} \ No newline at end of file diff --git a/dist/app/utils/utils.js b/dist/app/utils/utils.js deleted file mode 100644 index c02a089..0000000 --- a/dist/app/utils/utils.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Utils = void 0; -const WRAPPER_CSS_ID = '#sass-export-id'; -const UNWRAPPER_PATTERN = `${WRAPPER_CSS_ID}\\.(.+)\\s*\\{\\s*content:\\s*["'](.+)["']`; -class Utils { - static getDeclarationByName(declarations = [], name) { - let filtered = declarations.filter((declaration) => declaration.name === name); - return filtered[0]; - } - static wrapCss(cssDeclaration) { - return `${WRAPPER_CSS_ID}.${cssDeclaration.name}{content:"#{${cssDeclaration.value}}";}`; - } - static unWrapValue(wrappedContent) { - wrappedContent = wrappedContent.replace(/\n/g, ''); - let matches = wrappedContent.match(UNWRAPPER_PATTERN); - if (matches && matches.length > 2) { - return matches[2].trim(); - } - else { - return ''; - } - } -} -exports.Utils = Utils; -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/app/utils/utils.js.map b/dist/app/utils/utils.js.map deleted file mode 100644 index b12c635..0000000 --- a/dist/app/utils/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/app/utils/utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,iBAAiB,GAAG,GAAG,cAAc,4CAA4C,CAAC;AAOxF,MAAa,KAAK;IAET,MAAM,CAAC,oBAAoB,CAAC,eAA+B,EAAE,EAAE,IAAY;QAChF,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAE/E,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAGM,MAAM,CAAC,OAAO,CAAC,cAA4B;QAChD,OAAO,GAAG,cAAc,IAAI,cAAc,CAAC,IAAI,eAAe,cAAc,CAAC,KAAK,MAAM,CAAC;IAC3F,CAAC;IAGM,MAAM,CAAC,WAAW,CAAC,cAAsB;QAC9C,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnD,IAAI,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1B;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAzBD,sBAyBC"} \ No newline at end of file diff --git a/dist/declarations/app/converter/converter-buffer.d.ts b/dist/declarations/app/converter/converter-buffer.d.ts deleted file mode 100644 index f5012b1..0000000 --- a/dist/declarations/app/converter/converter-buffer.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -/// -import { Converter } from './converter'; -export declare class ConverterBuffer extends Converter { - private inputBuffers; - constructor(inputBuffers: Buffer[], options?: IOptions); - getData(): Promise; - getContent(): string; -} diff --git a/dist/declarations/app/converter/converter.d.ts b/dist/declarations/app/converter/converter.d.ts deleted file mode 100644 index dbb305a..0000000 --- a/dist/declarations/app/converter/converter.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export declare class Converter { - options?: IOptions; - constructor(options?: IOptions); - getArray(): IDeclaration[]; - getStructured(): any; - compileStructure(structuredDeclaration: IDeclaration): object; - getContent(): string; - private checkForMixins; - private renderPropertyValue; -} diff --git a/dist/declarations/app/converter/index.d.ts b/dist/declarations/app/converter/index.d.ts deleted file mode 100644 index 00c0e3d..0000000 --- a/dist/declarations/app/converter/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './converter'; -export * from './converter-buffer'; diff --git a/dist/declarations/app/parser/index.d.ts b/dist/declarations/app/parser/index.d.ts deleted file mode 100644 index 3e440b0..0000000 --- a/dist/declarations/app/parser/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './parser'; -export * from './mixins'; diff --git a/dist/declarations/app/parser/mixins.d.ts b/dist/declarations/app/parser/mixins.d.ts deleted file mode 100644 index 16cc505..0000000 --- a/dist/declarations/app/parser/mixins.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export declare class Mixins { - private rawContent; - constructor(rawContent: string); - parse(): any[]; - private extractDeclarations; - private parseSingle; -} diff --git a/dist/declarations/app/parser/parser.d.ts b/dist/declarations/app/parser/parser.d.ts deleted file mode 100644 index 7a264da..0000000 --- a/dist/declarations/app/parser/parser.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export declare class Parser { - private rawContent; - constructor(rawContent: string); - parse(): IDeclaration[]; - parseStructured(): any; - private extractDeclarationsStructured; - private extractDeclarations; - private extractMapDeclarations; - private parseSingleDeclaration; - private checkIsSectionStart; - private checkIsSectionEnd; -} diff --git a/dist/declarations/app/utils/index.d.ts b/dist/declarations/app/utils/index.d.ts deleted file mode 100644 index 04bca77..0000000 --- a/dist/declarations/app/utils/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './utils'; diff --git a/dist/declarations/app/utils/utils.d.ts b/dist/declarations/app/utils/utils.d.ts deleted file mode 100644 index 58dfb39..0000000 --- a/dist/declarations/app/utils/utils.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare class Utils { - static getDeclarationByName(declarations: IDeclaration[], name: string): IDeclaration; - static wrapCss(cssDeclaration: IDeclaration): string; - static unWrapValue(wrappedContent: string): string; -} diff --git a/dist/declarations/index.d.ts b/dist/declarations/index.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/dist/declarations/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 10268a3..0000000 --- a/dist/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const converter_1 = require("./app/converter"); -let sassExporter = (options) => { - return new converter_1.Converter(options); -}; -let bufferExporter = (input, options) => { - let converter = new converter_1.ConverterBuffer(input, options); - return converter.getData(); -}; -module.exports = { - exporter: sassExporter, - buffer: bufferExporter -}; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index d27a92c..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+CAA6D;AAE7D,IAAI,YAAY,GAAG,CAAC,OAAiB,EAAE,EAAE;IACvC,OAAO,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,cAAc,GAAG,CAAC,KAAe,EAAE,OAAiB,EAAE,EAAE;IAC1D,IAAI,SAAS,GAAG,IAAI,2BAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG;IACf,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,cAAc;CACvB,CAAC"} \ No newline at end of file From 8017cd33de406619d09049d237f556fa869a4531 Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Fri, 2 Apr 2021 12:39:03 +0800 Subject: [PATCH 12/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E8=BF=98=E5=8E=9F?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/app/converter/converter-buffer.js | 28 +++++ dist/app/converter/converter-buffer.js.map | 1 + dist/app/converter/converter.js | 98 ++++++++++++++++ dist/app/converter/converter.js.map | 1 + dist/app/converter/index.js | 15 +++ dist/app/converter/index.js.map | 1 + dist/app/parser/index.js | 15 +++ dist/app/parser/index.js.map | 1 + dist/app/parser/mixins.js | 49 ++++++++ dist/app/parser/mixins.js.map | 1 + dist/app/parser/parser.js | 110 ++++++++++++++++++ dist/app/parser/parser.js.map | 1 + dist/app/utils/index.js | 14 +++ dist/app/utils/index.js.map | 1 + dist/app/utils/utils.js | 26 +++++ dist/app/utils/utils.js.map | 1 + .../app/converter/converter-buffer.d.ts | 8 ++ .../declarations/app/converter/converter.d.ts | 10 ++ dist/declarations/app/converter/index.d.ts | 2 + dist/declarations/app/parser/index.d.ts | 2 + dist/declarations/app/parser/mixins.d.ts | 7 ++ dist/declarations/app/parser/parser.d.ts | 12 ++ dist/declarations/app/utils/index.d.ts | 1 + dist/declarations/app/utils/utils.d.ts | 5 + dist/declarations/index.d.ts | 1 + dist/index.js | 15 +++ dist/index.js.map | 1 + package.json | 2 - 28 files changed, 427 insertions(+), 2 deletions(-) create mode 100644 dist/app/converter/converter-buffer.js create mode 100644 dist/app/converter/converter-buffer.js.map create mode 100644 dist/app/converter/converter.js create mode 100644 dist/app/converter/converter.js.map create mode 100644 dist/app/converter/index.js create mode 100644 dist/app/converter/index.js.map create mode 100644 dist/app/parser/index.js create mode 100644 dist/app/parser/index.js.map create mode 100644 dist/app/parser/mixins.js create mode 100644 dist/app/parser/mixins.js.map create mode 100644 dist/app/parser/parser.js create mode 100644 dist/app/parser/parser.js.map create mode 100644 dist/app/utils/index.js create mode 100644 dist/app/utils/index.js.map create mode 100644 dist/app/utils/utils.js create mode 100644 dist/app/utils/utils.js.map create mode 100644 dist/declarations/app/converter/converter-buffer.d.ts create mode 100644 dist/declarations/app/converter/converter.d.ts create mode 100644 dist/declarations/app/converter/index.d.ts create mode 100644 dist/declarations/app/parser/index.d.ts create mode 100644 dist/declarations/app/parser/mixins.d.ts create mode 100644 dist/declarations/app/parser/parser.d.ts create mode 100644 dist/declarations/app/utils/index.d.ts create mode 100644 dist/declarations/app/utils/utils.d.ts create mode 100644 dist/declarations/index.d.ts create mode 100644 dist/index.js create mode 100644 dist/index.js.map diff --git a/dist/app/converter/converter-buffer.js b/dist/app/converter/converter-buffer.js new file mode 100644 index 0000000..2ab5781 --- /dev/null +++ b/dist/app/converter/converter-buffer.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConverterBuffer = void 0; +const converter_1 = require("./converter"); +const Types = { + STRUCTURED: 'structured', + ARRAY: 'array' +}; +class ConverterBuffer extends converter_1.Converter { + constructor(inputBuffers, options) { + super(options); + this.inputBuffers = inputBuffers; + } + getData() { + if (this.options && this.options.type === Types.ARRAY) { + return Promise.resolve(this.getArray()); + } + else { + return Promise.resolve(this.getStructured()); + } + } + getContent() { + let contents = this.inputBuffers.map((buffer) => buffer.toString()); + return contents.join('\n'); + } +} +exports.ConverterBuffer = ConverterBuffer; +//# sourceMappingURL=converter-buffer.js.map \ No newline at end of file diff --git a/dist/app/converter/converter-buffer.js.map b/dist/app/converter/converter-buffer.js.map new file mode 100644 index 0000000..19918f6 --- /dev/null +++ b/dist/app/converter/converter-buffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"converter-buffer.js","sourceRoot":"","sources":["../../../src/app/converter/converter-buffer.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAIxC,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAa,eAAgB,SAAQ,qBAAS;IAG5C,YAAY,YAAsB,EAAE,OAAkB;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE;YACrD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzC;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC9C;IACH,CAAC;IAGM,UAAU;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AArBD,0CAqBC"} \ No newline at end of file diff --git a/dist/app/converter/converter.js b/dist/app/converter/converter.js new file mode 100644 index 0000000..74e9ab3 --- /dev/null +++ b/dist/app/converter/converter.js @@ -0,0 +1,98 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Converter = void 0; +const fs = require("fs"); +const sass = require("node-sass"); +const glob = require("glob"); +const parser_1 = require("../parser"); +const utils_1 = require("../utils"); +const LINE_BREAK = '\n'; +class Converter { + constructor(options) { + this.options = options; + this.options = options || {}; + } + getArray() { + let content = this.getContent(); + let parsedDeclarations = new parser_1.Parser(content).parse(); + return parsedDeclarations.map((declaration) => { + declaration.compiledValue = this.renderPropertyValue(content, declaration); + declaration.name = `$${declaration.name}`; + if (declaration.mapValue) { + declaration.mapValue.map((mapDeclaration) => { + mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); + return mapDeclaration; + }); + } + return declaration; + }); + } + getStructured() { + let content = this.getContent(); + let structuredDeclaration = new parser_1.Parser(content).parseStructured(); + structuredDeclaration = this.compileStructure(structuredDeclaration); + return structuredDeclaration; + } + compileStructure(structuredDeclaration) { + let groups = Object.keys(structuredDeclaration); + groups.forEach((group) => { + let content = this.getContent(); + let compiledGroup = structuredDeclaration[group].map((declaration) => { + declaration.compiledValue = this.renderPropertyValue(content, declaration); + declaration.name = `$${declaration.name}`; + if (declaration.mapValue) { + declaration.mapValue.map((mapDeclaration) => { + mapDeclaration.compiledValue = this.renderPropertyValue(content, mapDeclaration); + return mapDeclaration; + }); + } + return declaration; + }); + }); + return this.checkForMixins(structuredDeclaration); + } + getContent() { + let inputFiles = []; + let inputs = []; + if (!Array.isArray(this.options.inputFiles)) { + inputFiles.push(this.options.inputFiles); + } + else { + inputFiles = this.options.inputFiles; + } + inputFiles.forEach((path) => { + let files = glob.sync(String(path)); + inputs.push(...files); + }); + let contents = inputs.map((filePath) => fs.readFileSync(String(filePath))); + let strContents = contents.join(LINE_BREAK); + strContents = strContents.replace(/\/\*[\w\W\r\n]*?\*\//g, ''); + strContents = strContents.split(LINE_BREAK).filter(v => v.indexOf('//') === -1).join(LINE_BREAK); + return strContents; + } + checkForMixins(structuredDeclaration) { + let mixinsGroup = 'mixins'; + let parsedMixins = new parser_1.Mixins(this.getContent()).parse(); + if (parsedMixins && parsedMixins.length) { + structuredDeclaration[mixinsGroup] = parsedMixins; + } + return structuredDeclaration; + } + renderPropertyValue(content, declaration) { + try { + let rendered = sass.renderSync({ + data: content + LINE_BREAK + utils_1.Utils.wrapCss(declaration), + includePaths: this.options.includePaths, + outputStyle: 'compact' + }); + let wrappedRendered = String(rendered.css); + return utils_1.Utils.unWrapValue(wrappedRendered); + } + catch (err) { + console.error(err); + return ''; + } + } +} +exports.Converter = Converter; +//# sourceMappingURL=converter.js.map \ No newline at end of file diff --git a/dist/app/converter/converter.js.map b/dist/app/converter/converter.js.map new file mode 100644 index 0000000..53cfdce --- /dev/null +++ b/dist/app/converter/converter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/app/converter/converter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/converter/index.js b/dist/app/converter/index.js new file mode 100644 index 0000000..bccc23e --- /dev/null +++ b/dist/app/converter/index.js @@ -0,0 +1,15 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./converter"), exports); +__exportStar(require("./converter-buffer"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/converter/index.js.map b/dist/app/converter/index.js.map new file mode 100644 index 0000000..771cd6c --- /dev/null +++ b/dist/app/converter/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/converter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC"} \ No newline at end of file diff --git a/dist/app/parser/index.js b/dist/app/parser/index.js new file mode 100644 index 0000000..363baed --- /dev/null +++ b/dist/app/parser/index.js @@ -0,0 +1,15 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./parser"), exports); +__exportStar(require("./mixins"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/parser/index.js.map b/dist/app/parser/index.js.map new file mode 100644 index 0000000..4e3a664 --- /dev/null +++ b/dist/app/parser/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB"} \ No newline at end of file diff --git a/dist/app/parser/mixins.js b/dist/app/parser/mixins.js new file mode 100644 index 0000000..d0003d4 --- /dev/null +++ b/dist/app/parser/mixins.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Mixins = void 0; +const MIXIN_VALUES_REGEX = /@mixin ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; +const FUNC_VALUES_REGEX = /@function ?((?!\d)[\w_-][\w\d_-]*)(\([^\)"]+.)?/gi; +const MIXIN_DECLARATION_REGEX = '@mixin.[^\{]+|@function.[^\{]+'; +class Mixins { + constructor(rawContent) { + this.rawContent = rawContent; + } + parse() { + let matches = this.extractDeclarations(this.rawContent); + let declarations = []; + matches.forEach((match) => { + let mixins = this.parseSingle(match); + let functions = this.parseSingle(match, true); + if (mixins) { + declarations.push(mixins); + } + if (functions) { + declarations.push(functions); + } + }); + return declarations; + } + extractDeclarations(content) { + let matches = content.match(new RegExp(MIXIN_DECLARATION_REGEX, 'gi')); + if (!matches) { + return []; + } + return matches; + } + parseSingle(declaration, checkFunctions = false) { + let regex = checkFunctions ? FUNC_VALUES_REGEX : MIXIN_VALUES_REGEX; + let matches = (new RegExp(regex, 'gi')).exec(declaration); + if (!matches) { + return null; + } + let name = matches[1].trim(); + let parameters = []; + if (matches.length > 2 && matches[2]) { + let params = matches[2].split(',').map((param) => param.trim().replace(/[\(\)]/g, '')); + parameters.push(...params); + } + return { name, parameters }; + } +} +exports.Mixins = Mixins; +//# sourceMappingURL=mixins.js.map \ No newline at end of file diff --git a/dist/app/parser/mixins.js.map b/dist/app/parser/mixins.js.map new file mode 100644 index 0000000..99af839 --- /dev/null +++ b/dist/app/parser/mixins.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/app/parser/mixins.ts"],"names":[],"mappings":";;;AAEA,MAAM,kBAAkB,GAAG,gDAAgD,CAAC;AAC5E,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AAEjE,MAAa,MAAM;IAEjB,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAEtC,CAAC;IAEM,KAAK;QACV,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE9C,IAAI,MAAM,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAAE;YAC1C,IAAI,SAAS,EAAE;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAAE;QAClD,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,EAAS,CAAC;SAClB;QAED,OAAO,OAAc,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,WAAmB,EAAE,cAAc,GAAG,KAAK;QAC7D,IAAI,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACpE,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACvF,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SAC5B;QAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAY,CAAC;IACxC,CAAC;CACF;AAhDD,wBAgDC"} \ No newline at end of file diff --git a/dist/app/parser/parser.js b/dist/app/parser/parser.js new file mode 100644 index 0000000..45b3d46 --- /dev/null +++ b/dist/app/parser/parser.js @@ -0,0 +1,110 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Parser = void 0; +const VARIABLE_PATERN = '(?!\\d)[\\w_-][\\w\\d_-]*'; +const VALUE_PATERN = '[^;]+|"(?:[^"]+|(?:\\\\"|[^"])*)"'; +const DECLARATION_PATTERN = `\\$['"]?(${VARIABLE_PATERN})['"]?\\s*:\\s*(${VALUE_PATERN})(?:\\s*!(global|default)\\s*;|\\s*;(?![^\\{]*\\}))`; +const MAP_DECLARATIOM_REGEX = /['"]?((?!\d)[\w_-][\w\d_-]*)['"]?\s*:\s*([a-z\-]+\([^\)]+\)|[^\),\/]+)/gi; +const QUOTES_PATTERN = /^(['"]).*\1$/; +const QUOTES_REPLACE = /^(['"])|(['"])$/g; +const SECTION_TAG = 'sass-export-section'; +const SECTION_PATTERN = `(@${SECTION_TAG}=)(".+")`; +const END_SECTION_PATTERN = `(@end-${SECTION_TAG})`; +const DEFAULT_SECTION = 'variables'; +class Parser { + constructor(rawContent) { + this.rawContent = rawContent; + } + parse() { + let matches = this.extractDeclarations(this.rawContent); + let declarations = []; + for (let match of matches) { + if (!this.checkIsSectionStart(match) && !this.checkIsSectionStart(match)) { + let parsed = this.parseSingleDeclaration(match); + if (parsed) { + let map = this.extractMapDeclarations(parsed.value); + if (map.length) { + parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); + } + declarations.push(parsed); + } + } + } + return declarations; + } + parseStructured() { + let matches = this.extractDeclarationsStructured(this.rawContent); + let currentSection = DEFAULT_SECTION; + let declarations = {}; + if (!matches || !matches.length) { + return {}; + } + declarations[currentSection] = []; + for (let match of matches) { + if (this.checkIsSectionStart(match)) { + let sectionName = String(new RegExp(SECTION_PATTERN, 'gi').exec(match)[2]); + if (sectionName) { + currentSection = sectionName.replace(/"/g, ''); + declarations[currentSection] = declarations[currentSection] || []; + } + } + else if (this.checkIsSectionEnd(match)) { + currentSection = DEFAULT_SECTION; + } + else { + let parsed = this.parseSingleDeclaration(match); + if (parsed) { + let map = this.extractMapDeclarations(parsed.value); + if (map.length) { + parsed.mapValue = map.map((declaration) => this.parseSingleDeclaration(`$${declaration};`)); + } + declarations[currentSection].push(parsed); + } + } + } + return declarations; + } + extractDeclarationsStructured(content) { + const matches = content.match(new RegExp(`${DECLARATION_PATTERN}|${SECTION_PATTERN}|${END_SECTION_PATTERN}`, 'g')); + if (!matches) { + return []; + } + return matches; + } + extractDeclarations(content) { + const matches = content.match(new RegExp(DECLARATION_PATTERN, 'g')); + if (!matches) { + return []; + } + return matches; + } + extractMapDeclarations(content) { + const matches = content.match(new RegExp(MAP_DECLARATIOM_REGEX, 'g')); + if (!matches) { + return []; + } + return matches; + } + parseSingleDeclaration(matchDeclaration) { + let matches = matchDeclaration + .replace(/\s*!(default|global)\s*;/, ';') + .match(new RegExp(DECLARATION_PATTERN)); + if (!matches) { + return; + } + let name = matches[1].trim().replace('_', '-'); + let value = matches[2].trim().replace(/\s*\n+\s*/g, ' '); + if (value.match(QUOTES_PATTERN)) { + value = value.replace(QUOTES_REPLACE, ''); + } + return { name, value }; + } + checkIsSectionStart(content) { + return (new RegExp(SECTION_PATTERN, 'gi')).test(content); + } + checkIsSectionEnd(content) { + return (new RegExp(END_SECTION_PATTERN, 'gi')).test(content); + } +} +exports.Parser = Parser; +//# sourceMappingURL=parser.js.map \ No newline at end of file diff --git a/dist/app/parser/parser.js.map b/dist/app/parser/parser.js.map new file mode 100644 index 0000000..3f4e569 --- /dev/null +++ b/dist/app/parser/parser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/app/parser/parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/app/utils/index.js b/dist/app/utils/index.js new file mode 100644 index 0000000..e6f0868 --- /dev/null +++ b/dist/app/utils/index.js @@ -0,0 +1,14 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./utils"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/app/utils/index.js.map b/dist/app/utils/index.js.map new file mode 100644 index 0000000..8a11e90 --- /dev/null +++ b/dist/app/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB"} \ No newline at end of file diff --git a/dist/app/utils/utils.js b/dist/app/utils/utils.js new file mode 100644 index 0000000..c02a089 --- /dev/null +++ b/dist/app/utils/utils.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Utils = void 0; +const WRAPPER_CSS_ID = '#sass-export-id'; +const UNWRAPPER_PATTERN = `${WRAPPER_CSS_ID}\\.(.+)\\s*\\{\\s*content:\\s*["'](.+)["']`; +class Utils { + static getDeclarationByName(declarations = [], name) { + let filtered = declarations.filter((declaration) => declaration.name === name); + return filtered[0]; + } + static wrapCss(cssDeclaration) { + return `${WRAPPER_CSS_ID}.${cssDeclaration.name}{content:"#{${cssDeclaration.value}}";}`; + } + static unWrapValue(wrappedContent) { + wrappedContent = wrappedContent.replace(/\n/g, ''); + let matches = wrappedContent.match(UNWRAPPER_PATTERN); + if (matches && matches.length > 2) { + return matches[2].trim(); + } + else { + return ''; + } + } +} +exports.Utils = Utils; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/app/utils/utils.js.map b/dist/app/utils/utils.js.map new file mode 100644 index 0000000..b12c635 --- /dev/null +++ b/dist/app/utils/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/app/utils/utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,iBAAiB,GAAG,GAAG,cAAc,4CAA4C,CAAC;AAOxF,MAAa,KAAK;IAET,MAAM,CAAC,oBAAoB,CAAC,eAA+B,EAAE,EAAE,IAAY;QAChF,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAE/E,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAGM,MAAM,CAAC,OAAO,CAAC,cAA4B;QAChD,OAAO,GAAG,cAAc,IAAI,cAAc,CAAC,IAAI,eAAe,cAAc,CAAC,KAAK,MAAM,CAAC;IAC3F,CAAC;IAGM,MAAM,CAAC,WAAW,CAAC,cAAsB;QAC9C,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnD,IAAI,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1B;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAzBD,sBAyBC"} \ No newline at end of file diff --git a/dist/declarations/app/converter/converter-buffer.d.ts b/dist/declarations/app/converter/converter-buffer.d.ts new file mode 100644 index 0000000..f5012b1 --- /dev/null +++ b/dist/declarations/app/converter/converter-buffer.d.ts @@ -0,0 +1,8 @@ +/// +import { Converter } from './converter'; +export declare class ConverterBuffer extends Converter { + private inputBuffers; + constructor(inputBuffers: Buffer[], options?: IOptions); + getData(): Promise; + getContent(): string; +} diff --git a/dist/declarations/app/converter/converter.d.ts b/dist/declarations/app/converter/converter.d.ts new file mode 100644 index 0000000..dbb305a --- /dev/null +++ b/dist/declarations/app/converter/converter.d.ts @@ -0,0 +1,10 @@ +export declare class Converter { + options?: IOptions; + constructor(options?: IOptions); + getArray(): IDeclaration[]; + getStructured(): any; + compileStructure(structuredDeclaration: IDeclaration): object; + getContent(): string; + private checkForMixins; + private renderPropertyValue; +} diff --git a/dist/declarations/app/converter/index.d.ts b/dist/declarations/app/converter/index.d.ts new file mode 100644 index 0000000..00c0e3d --- /dev/null +++ b/dist/declarations/app/converter/index.d.ts @@ -0,0 +1,2 @@ +export * from './converter'; +export * from './converter-buffer'; diff --git a/dist/declarations/app/parser/index.d.ts b/dist/declarations/app/parser/index.d.ts new file mode 100644 index 0000000..3e440b0 --- /dev/null +++ b/dist/declarations/app/parser/index.d.ts @@ -0,0 +1,2 @@ +export * from './parser'; +export * from './mixins'; diff --git a/dist/declarations/app/parser/mixins.d.ts b/dist/declarations/app/parser/mixins.d.ts new file mode 100644 index 0000000..16cc505 --- /dev/null +++ b/dist/declarations/app/parser/mixins.d.ts @@ -0,0 +1,7 @@ +export declare class Mixins { + private rawContent; + constructor(rawContent: string); + parse(): any[]; + private extractDeclarations; + private parseSingle; +} diff --git a/dist/declarations/app/parser/parser.d.ts b/dist/declarations/app/parser/parser.d.ts new file mode 100644 index 0000000..7a264da --- /dev/null +++ b/dist/declarations/app/parser/parser.d.ts @@ -0,0 +1,12 @@ +export declare class Parser { + private rawContent; + constructor(rawContent: string); + parse(): IDeclaration[]; + parseStructured(): any; + private extractDeclarationsStructured; + private extractDeclarations; + private extractMapDeclarations; + private parseSingleDeclaration; + private checkIsSectionStart; + private checkIsSectionEnd; +} diff --git a/dist/declarations/app/utils/index.d.ts b/dist/declarations/app/utils/index.d.ts new file mode 100644 index 0000000..04bca77 --- /dev/null +++ b/dist/declarations/app/utils/index.d.ts @@ -0,0 +1 @@ +export * from './utils'; diff --git a/dist/declarations/app/utils/utils.d.ts b/dist/declarations/app/utils/utils.d.ts new file mode 100644 index 0000000..58dfb39 --- /dev/null +++ b/dist/declarations/app/utils/utils.d.ts @@ -0,0 +1,5 @@ +export declare class Utils { + static getDeclarationByName(declarations: IDeclaration[], name: string): IDeclaration; + static wrapCss(cssDeclaration: IDeclaration): string; + static unWrapValue(wrappedContent: string): string; +} diff --git a/dist/declarations/index.d.ts b/dist/declarations/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/declarations/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..10268a3 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const converter_1 = require("./app/converter"); +let sassExporter = (options) => { + return new converter_1.Converter(options); +}; +let bufferExporter = (input, options) => { + let converter = new converter_1.ConverterBuffer(input, options); + return converter.getData(); +}; +module.exports = { + exporter: sassExporter, + buffer: bufferExporter +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..d27a92c --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+CAA6D;AAE7D,IAAI,YAAY,GAAG,CAAC,OAAiB,EAAE,EAAE;IACvC,OAAO,IAAI,qBAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,cAAc,GAAG,CAAC,KAAe,EAAE,OAAiB,EAAE,EAAE;IAC1D,IAAI,SAAS,GAAG,IAAI,2BAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG;IACf,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,cAAc;CACvB,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index c05fdb9..e8ca5ec 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "description": "Exports Sass files to Json format, able to manage sections with annotations in comments.", "main": "./dist/index.js", "files": [ - "src", "bin", "dist" ], @@ -12,7 +11,6 @@ "build": "tsc --p tsconfig.json", "dev": "npm run build & npm run test", "prepublish": "npm run build", - "postinstall": "npm run build", "watch": "npm run build -- --watch", "test": "mocha -r ts-node/register src/**/*.test.ts" }, From 36a0138286fa118576c7be644304e3979e771b3a Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Wed, 1 Jun 2022 12:26:11 +0800 Subject: [PATCH 13/16] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20rename?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e8ca5ec..2a8939c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "sass-export", - "version": "1.0.6", + "name": "zhf.sass-export", + "version": "1.0.0", "description": "Exports Sass files to Json format, able to manage sections with annotations in comments.", "main": "./dist/index.js", "files": [ From cdf722c33382cdafab7277558c8d889afdfbe6e7 Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Wed, 1 Jun 2022 13:09:37 +0800 Subject: [PATCH 14/16] =?UTF-8?q?docs:=20=E2=9C=8F=EF=B8=8F=20=E5=86=99?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++++++ package.json | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d6b4eab..e1570e4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ +#### 原仓库 +https://github.com/plentycode/sass-export + +#### 改动点 +增加过滤注释功能 + # Sass-Export **Sass-export** takes SCSS files and export them to a JSON file you can use as data. This is perfect for generating your site documentation. diff --git a/package.json b/package.json index 2a8939c..5911c8e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zhf.sass-export", - "version": "1.0.0", + "version": "1.0.1", "description": "Exports Sass files to Json format, able to manage sections with annotations in comments.", "main": "./dist/index.js", "files": [ @@ -40,7 +40,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/plentycode/sass-export.git" + "url": "https://github.com/zhouhuafei-team/sass-export.git" }, "devDependencies": { "@types/chai": "^3.5.2", From e26ded0bef0cd7ec8d8b9c54d8b748eb6e60dd66 Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Wed, 1 Jun 2022 14:31:23 +0800 Subject: [PATCH 15/16] =?UTF-8?q?chore:=20=F0=9F=A4=96=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index e1570e4..9e704cd 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,9 @@ https://github.com/plentycode/sass-export #### 改动点 增加过滤注释功能 +#### 安装 +npm install zhf.sass-export + # Sass-Export **Sass-export** takes SCSS files and export them to a JSON file you can use as data. This is perfect for generating your site documentation. From f0be1e9986360cb6433199f3641fe6bedbcb3dae Mon Sep 17 00:00:00 2001 From: zhouhuafei <1123486116@qq.com> Date: Wed, 1 Jun 2022 14:31:50 +0800 Subject: [PATCH 16/16] =?UTF-8?q?docs:=20=E2=9C=8F=EF=B8=8F=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e704cd..ee7aa63 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ https://github.com/plentycode/sass-export 增加过滤注释功能 #### 安装 -npm install zhf.sass-export +npm i -D zhf.sass-export # Sass-Export **Sass-export** takes SCSS files and export them to a JSON file you can use as data.