Browse Source

`sourceMapBaseUrl` and `sourceMapFileName` wip implementation

sanex3339 8 years ago
parent
commit
5069ec213b
3 changed files with 22 additions and 4 deletions
  1. 7 1
      dist/index.js
  2. 11 1
      src/options/OptionsNormalizer.ts
  3. 4 2
      test/unit-tests/OptionsNormalizer.spec.ts

+ 7 - 1
dist/index.js

@@ -3338,6 +3338,12 @@ var OptionsNormalizer = function () {
         key: "sourceMapBaseUrl",
         value: function sourceMapBaseUrl(options) {
             var sourceMapBaseUrl = options.sourceMapBaseUrl;
+            if (!options.sourceMapFileName) {
+                Object.assign(options, {
+                    sourceMapBaseUrl: ''
+                });
+                return options;
+            }
             if (sourceMapBaseUrl && !sourceMapBaseUrl.endsWith('/')) {
                 Object.assign(options, {
                     sourceMapBaseUrl: sourceMapBaseUrl + "/"
@@ -3350,7 +3356,7 @@ var OptionsNormalizer = function () {
         value: function sourceMapFileName(options) {
             var sourceMapFileName = options.sourceMapFileName;
             if (sourceMapFileName) {
-                sourceMapFileName = sourceMapFileName.split('.')[0];
+                sourceMapFileName = sourceMapFileName.replace(/^\/+/, '').split('.')[0];
                 Object.assign(options, {
                     sourceMapFileName: sourceMapFileName + ".js.map"
                 });

+ 11 - 1
src/options/OptionsNormalizer.ts

@@ -111,6 +111,14 @@ export class OptionsNormalizer {
     private static sourceMapBaseUrl (options: IOptions): IOptions {
         let sourceMapBaseUrl: string = options.sourceMapBaseUrl;
 
+        if (!options.sourceMapFileName) {
+            Object.assign(options, {
+                sourceMapBaseUrl: ''
+            });
+
+            return options;
+        }
+
         if (sourceMapBaseUrl && !sourceMapBaseUrl.endsWith('/')) {
             Object.assign(options, {
                 sourceMapBaseUrl: `${sourceMapBaseUrl}/`
@@ -128,7 +136,9 @@ export class OptionsNormalizer {
         let sourceMapFileName: string = options.sourceMapFileName;
 
         if (sourceMapFileName) {
-            sourceMapFileName = sourceMapFileName.split('.')[0];
+            sourceMapFileName = sourceMapFileName
+                .replace(/^\/+/, '')
+                .split('.')[0];
 
             Object.assign(options, {
                 sourceMapFileName: `${sourceMapFileName}.js.map`

+ 4 - 2
test/unit-tests/OptionsNormalizer.spec.ts

@@ -24,6 +24,7 @@ describe('OptionsNormalizer', () => {
             optionsPreset1 = Object.assign({}, DEFAULT_PRESET, {
                 compact: false,
                 rotateUnicodeArray: true,
+                sourceMapBaseUrl: 'http://localhost:9000',
                 unicodeArray: false,
                 unicodeArrayThreshold: 0.5,
                 wrapUnicodeArrayCalls: true
@@ -31,14 +32,14 @@ describe('OptionsNormalizer', () => {
             optionsPreset2 = Object.assign({}, DEFAULT_PRESET, {
                 rotateUnicodeArray: true,
                 sourceMapBaseUrl: 'http://localhost:9000',
-                sourceMapFileName: 'outputSourceMapName',
+                sourceMapFileName: '//outputSourceMapName',
                 unicodeArray: true,
                 unicodeArrayThreshold: 0,
                 wrapUnicodeArrayCalls: true
             });
             optionsPreset3 = Object.assign({}, DEFAULT_PRESET, {
                 domainLock: ['//localhost:9000', 'https://google.ru/abc?cde=fgh'],
-                sourceMapFileName: 'outputSourceMapName.map',
+                sourceMapFileName: '/outputSourceMapName.map',
                 unicodeArray: true,
                 encodeUnicodeLiterals: true,
                 wrapUnicodeArrayCalls: false
@@ -47,6 +48,7 @@ describe('OptionsNormalizer', () => {
             expectedOptionsPreset1 = Object.assign({}, DEFAULT_PRESET, {
                 compact: true,
                 rotateUnicodeArray: false,
+                sourceMapBaseUrl: '',
                 unicodeArray: false,
                 unicodeArrayThreshold: 0,
                 wrapUnicodeArrayCalls: false