VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /usr/local/lib/node_modules/browserify/node_modules/browser-pack/test/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/local/lib/node_modules/browserify/node_modules/browser-pack/test/source-maps.js
var test = require('tap').test;
var pack = require('../');
var path = require('path');

function decode(base64) {
    return new Buffer(base64, 'base64').toString();
} 

function unmountPrelude(sources) {
  return sources.map(function (x) {
    var basename = path.basename(x);
    return basename === '_prelude.js' ? basename : x;
  });
}

function grabSourceMap(lastLine) {
    var base64 = lastLine.split(',').pop();
    var sm = JSON.parse(decode(base64));
    sm.sources = unmountPrelude(sm.sources);
    return sm;
}

function grabLastLine(src) {
    return src.split('\n').slice(-2)[0];
}

test('pack one file with source file field and one without', function (t) {
    t.plan(7);
    
    var p = pack();
    var src = '';
    p.on('data', function (buf) { src += buf });
    p.on('end', function () {
        var r = Function(['T'], 'return ' + src)(t);
        t.equal(r('xyz')(5), 555);
        t.equal(r('xyz')(5), 555);

        var lastLine = grabLastLine(src);
        var sm = grabSourceMap(lastLine);

        t.ok(/^\/\/# sourceMappingURL/.test(lastLine), 'contains source mapping url as last line');
        t.deepEqual(sm.sources, [ '_prelude.js', 'foo.js' ], 'includes mappings for sourceFile and prelude only');
        t.equal(sm.mappings, 'AAAA;;;ACAA;AACA;AACA;AACA', 'adds offset mapping for each line' );
    });
    
    p.end(JSON.stringify([
        {
            id: 'abc',
            source: 'T.equal(require("./xyz")(3), 333)',
            entry: true,
            deps: { './xyz': 'xyz' }
        },
        {
            id: 'xyz',
            source: 'T.ok(true);\nmodule.exports=function(n){\n return n*111 \n}',
            sourceFile: 'foo.js'
        }
    ]));
});

test('pack two files with source file field', function (t) {
    t.plan(7);
    
    var p = pack();
    var src = '';
    p.on('data', function (buf) { src += buf });
    p.on('end', function () {
        var r = Function(['T'], 'return ' + src)(t);
        t.equal(r('xyz')(5), 555);
        t.equal(r('xyz')(5), 555);

        var lastLine = grabLastLine(src);
        var sm = grabSourceMap(lastLine);

        t.ok(/^\/\/# sourceMappingURL/.test(lastLine), 'contains source mapping url as last line');
        t.deepEqual(sm.sources, [ '_prelude.js', 'wunder/bar.js', 'foo.js' ], 'includes mappings for both files and prelude');
        t.equal(sm.mappings, 'AAAA;ACAA;;ACAA;AACA;AACA;AACA', 'adds offset mapping for each line' );
    });
    
    p.end(JSON.stringify([
        {
            id: 'abc',
            source: 'T.equal(require("./xyz")(3), 333)',
            entry: true,
            deps: { './xyz': 'xyz' },
            sourceFile: 'wunder/bar.js'
        },
        {
            id: 'xyz',
            source: 'T.ok(true);\nmodule.exports=function(n){\n return n*111 \n}',
            sourceFile: 'foo.js'
        }
    ]));
});

test('pack two files without source file field', function (t) {
    t.plan(5);
    
    var p = pack();
    var src = '';
    p.on('data', function (buf) { src += buf });
    p.on('end', function () {
        var r = Function(['T'], 'return ' + src)(t);
        t.equal(r('xyz')(5), 555);
        t.equal(r('xyz')(5), 555);

        var lastLine = grabLastLine(src); 
        t.notOk(/^\/\/# sourceMappingURL/.test(lastLine), 'contains no source mapping url');
    });
    
    p.end(JSON.stringify([
        {
            id: 'abc',
            source: 'T.equal(require("./xyz")(3), 333)',
            entry: true,
            deps: { './xyz': 'xyz' }
        },
        {
            id: 'xyz',
            source: 'T.ok(true);\nmodule.exports=function(n){\n return n*111 \n}'
        }
    ]));
});

test('pack two files with source file field, one with nomap flag', function (t) {
    t.plan(7);
    
    var p = pack();
    var src = '';
    p.on('data', function (buf) { src += buf });
    p.on('end', function () {
        var r = Function(['T'], 'return ' + src)(t);
        t.equal(r('xyz')(5), 555);
        t.equal(r('xyz')(5), 555);

        var lastLine = grabLastLine(src);
        var sm = grabSourceMap(lastLine);

        t.ok(/^\/\/# sourceMappingURL/.test(lastLine), 'contains source mapping url as last line');
        t.deepEqual(sm.sources, [ '_prelude.js', 'wunder/bar.js' ], 'includes mappings for only the file without the "nomap" flag and prelude');
        t.equal(sm.mappings, 'AAAA;ACAA', 'adds offset mapping for each line of mapped file' );
        t.end()
    });
    
    p.end(JSON.stringify([
        {
            id: 'abc',
            source: 'T.equal(require("./xyz")(3), 333)',
            entry: true,
            deps: { './xyz': 'xyz' },
            sourceFile: 'wunder/bar.js'
        },
        {
            id: 'xyz',
            source: 'T.ok(true);\nmodule.exports=function(n){\n return n*111 \n}',
            sourceFile: 'foo.js',
            nomap: true
        }
    ]));
});

test('custom sourceMapPrefix for //@', function (t) {
    t.plan(7);
    
    var p = pack({ sourceMapPrefix: '//@' });
    var src = '';
    p.on('data', function (buf) { src += buf });
    p.on('end', function () {
        var r = Function(['T'], 'return ' + src)(t);
        t.equal(r('xyz')(5), 555);
        t.equal(r('xyz')(5), 555);

        var lastLine = grabLastLine(src);
        var sm = grabSourceMap(lastLine);

        t.ok(/^\/\/@ sourceMappingURL/.test(lastLine), 'contains source mapping url as last line');
        t.deepEqual(sm.sources, [ '_prelude.js', 'foo.js' ], 'includes mappings for sourceFile and prelude only');
        t.equal(sm.mappings, 'AAAA;;;ACAA;AACA;AACA;AACA', 'adds offset mapping for each line' );
    });
    
    p.end(JSON.stringify([
        {
            id: 'abc',
            source: 'T.equal(require("./xyz")(3), 333)',
            entry: true,
            deps: { './xyz': 'xyz' }
        },
        {
            id: 'xyz',
            source: 'T.ok(true);\nmodule.exports=function(n){\n return n*111 \n}',
            sourceFile: 'foo.js'
        }
    ]));
});

test('custom sourceRoot', function (t) {
  t.plan(1);

  var p = pack({ sourceRoot: '/custom-root' });
  var src = '';
  p.on('data', function (buf) { src += buf });
  p.on('end', function () {
      var lastLine = grabLastLine(src);
      var sm = grabSourceMap(lastLine);
      t.equal(sm.sourceRoot, '/custom-root', 'sets a custom source root' );
  });

  p.end(JSON.stringify([
      {
          id: 'abc',
          source: 'T.equal(require("./xyz")(3), 333)',
          entry: true,
          deps: { './xyz': 'xyz' }
      },
      {
          id: 'xyz',
          source: 'T.ok(true);\nmodule.exports=function(n){\n return n*111 \n}',
          sourceFile: 'foo.js'
      }
  ]));
});

VaKeR 2022