New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

karma-dart

Package Overview
Dependencies
Maintainers
5
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

karma-dart - npm Package Compare versions

Comparing version 0.2.8 to 0.3.0-rc.0

.eslintrc

52

chrome-extension/background.js
// Remove old rules on load.
chrome.declarativeWebRequest.onRequest.removeRules();
chrome.declarativeWebRequest.onRequest.removeRules()
var prevFiles = {};
var prevFiles = {}
// Called when a message is passed.
function onRequest(request, sender, sendResponse) {
function onRequest (request, sender, sendResponse) {
// Show the page action for the tab that the sender (content script) was on.
chrome.pageAction.show(sender.tab.id);
chrome.pageAction.show(sender.tab.id)
var files = request.files;
var files = request.files
if (request.action == 'load') {
var rules = [];
if (request.action === 'load') {
var rules = []
for (var file in files) {
var regex;
var regex
var isKnownFile =
prevFiles[sender.tab.id] && prevFiles[sender.tab.id][file];
prevFiles[sender.tab.id] && prevFiles[sender.tab.id][file]
if (isKnownFile) {
if (prevFiles[sender.tab.id][file] == files[file]) {
if (prevFiles[sender.tab.id][file] === files[file]) {
// We can skip this rule if the timestamp hasn't change.
continue;
continue
}
regex = '^([^\\?]*)\\?' + prevFiles[sender.tab.id][file] + '$';
regex = '^([^\\?]*)\\?' + prevFiles[sender.tab.id][file] + '$'
} else {
regex = '^([^\\?]*)$';
regex = '^([^\\?]*)$'
}

@@ -33,10 +33,10 @@ var actions = [

})
];
]
if (!isKnownFile) { // is new file
actions.push(
new chrome.declarativeWebRequest.RemoveResponseHeader(
{name: 'Cache-Control'}));
new chrome.declarativeWebRequest.RemoveResponseHeader(
{name: 'Cache-Control'}))
actions.push(
new chrome.declarativeWebRequest.AddResponseHeader(
{name: 'Cache-Control', value: 'no-cache'}));
new chrome.declarativeWebRequest.AddResponseHeader(
{name: 'Cache-Control', value: 'no-cache'}))
}

@@ -50,13 +50,13 @@ rules.push({

actions: actions
});
})
}
prevFiles[sender.tab.id] = files;
chrome.declarativeWebRequest.onRequest.addRules(rules, function(callback) {
prevFiles[sender.tab.id] = files
chrome.declarativeWebRequest.onRequest.addRules(rules, function (callback) {
// We reply back only when new rules are set.
sendResponse({});
});
sendResponse({})
})
}
// Return nothing to let the connection be cleaned up.
};
// Return nothing to let the connection be cleaned up.
}
chrome.extension.onRequest.addListener(onRequest);
chrome.extension.onRequest.addListener(onRequest)
// Test the text of the body element against our regular expression.
if (/window\.__karma__/.test(document.body.innerHTML)) {
// TODO(pavelgj): find a better way to parse files out of the page.
var filesRegex = /window\.__karma__\.files = \{(.*)\};/m;
var filesSrc = (filesRegex.exec(document.body.innerHTML.replace(/[\n\r]/g, ' ')))[1];
eval('var files = {' + filesSrc + '}');
chrome.extension.sendRequest({action: 'load', files: files}, function(response) {
var filesRegex = /window\.__karma__\.files = \{(.*)\};/m
var filesSrc = (filesRegex.exec(document.body.innerHTML.replace(/[\n\r]/g, ' ')))[1]
eval('var files = {' + filesSrc + '}') // eslint-disable-line
chrome.extension.sendRequest({action: 'load', files: files}, function (response) { // eslint-disable-line
// When new redirect rules are in place, we bootstrap Dart.
var dartJs = document.createElement("script");
dartJs.setAttribute('type', 'text/javascript');
var dartJs = document.createElement('script')
dartJs.setAttribute('type', 'text/javascript')
// TODO(pavelgj): unhardcode the path to dart.js.
dartJs.setAttribute("src", '/base/packages/browser/dart.js');
window.document.body.appendChild(dartJs);
});
dartJs.setAttribute('src', '/base/packages/browser/dart.js')
window.document.body.appendChild(dartJs)
})
}

@@ -1,4 +0,4 @@

window.__karma__.start = function() {};
window.onerror = function(e) {
window.__karma__.error(e);
window.__karma__.start = function () {}
window.onerror = function (e) {
window.__karma__.error(e)
}

@@ -1,33 +0,32 @@

var path = require('path');
var fs = require('fs');
var dart2jsaas = require('dart2jsaas');
var path = require('path')
var fs = require('fs')
var dart2jsaas = require('dart2jsaas')
var format = require('util').format;
var areEqual = require('./util').areEqual;
var random = function() {
return Math.round(Math.random() * 10000);
};
var format = require('util').format
var areEqual = require('./util').areEqual
var random = function () {
return Math.round(Math.random() * 10000)
}
var DART_ADAPTER_TPL = fs.readFileSync(__dirname + '/../static/adapter.dart.tmpl').toString();
var TEMP_DIR = process.env.TMPDIR || process.env.TMP || process.env.TEMP || '/tmp';
var DART_IMPORT = 'import "%s" as %s;';
var DART_ADAPTER_TPL = fs.readFileSync(__dirname + '/../static/adapter.dart.tmpl').toString()
var TEMP_DIR = process.env.TMPDIR || process.env.TMP || process.env.TEMP || '/tmp'
var DART_IMPORT = 'import "%s" as %s;'
var initDartUnittest = function(emitter, /* config.files */ files, /* config.basePath */ basePath,
var initDartUnittest = function (emitter, /* config.files */ files, /* config.basePath */ basePath,
/* config.karmaDartImports */ customImports, /* config.hostname */ hostname, /* config.port */ port,
logger, customFileHandlers, /* config.dart2js */ dart2js) {
var log = logger.create('dart')
var log = logger.create('dart');
// Default to true.
var useDart2JsCheckedMode = dart2js == undefined ?
true : dart2js.checked == undefined ?
true : dart2js.checked;
var useDart2JsCheckedMode = dart2js === undefined ?
true : dart2js.checked === undefined ?
true : dart2js.checked
customFileHandlers.push({
urlRegex: /.*dart.js(\?[0-9]*)?$/,
handler: function(request, response, fa, fb, basePath) {
var url = request.url.substr(1); // Drop the leading slash.
handler: function (request, response, fa, fb, basePath) {
// Drop the leading slash.
var url = request.url.substr(1)
var filename = (/[^\/]*dart.js(\?[0-9]*)?$/).exec(url)[0];
var filename = (/[^\/]*dart.js(\?[0-9]*)?$/).exec(url)[0]

@@ -37,40 +36,40 @@ var dart2js = dart2jsaas.setupSystem({

dart2jsCheckedMode: useDart2JsCheckedMode
});
})
dart2js(filename.replace(/\.js(\?[0-9]*)?$/, '')).then(function(outjs) {
response.writeHead(200);
response.end(outjs);
}).done();
dart2js(filename.replace(/\.js(\?[0-9]*)?$/, '')).then(function (outjs) {
response.writeHead(200)
response.end(outjs)
}).done()
}
});
})
customFileHandlers.push({
urlRegex: /.*\/packages\/.*$/,
handler: function(request, response, fa, fb, basePath) {
var url = request.url;
var path = url.indexOf('?') > -1 ? url.substring(0, url.indexOf('?')) : url;
var contets = fs.readFileSync(basePath + path);
response.writeHead(200);
response.end(contets);
handler: function (request, response, fa, fb, basePath) {
var url = request.url
var path = url.indexOf('?') > -1 ? url.substring(0, url.indexOf('?')) : url
var contets = fs.readFileSync(basePath + path)
response.writeHead(200)
response.end(contets)
}
});
})
// include the adapter.js
files.unshift({pattern: __dirname + '/adapter.js', included: true, served: true, watched: false});
files.unshift({pattern: __dirname + '/adapter.js', included: true, served: true, watched: false})
var adapterImports = {
unittest: 'package:unittest/unittest.dart'
};
}
if (customImports) {
Object.keys(customImports).forEach(function(library) {
adapterImports[library] = customImports[library];
});
Object.keys(customImports).forEach(function (library) {
adapterImports[library] = customImports[library]
})
}
var adapterImportsCode = Object.keys(adapterImports).map(function(library) {
return format(DART_IMPORT, adapterImports[library], library);
}).join('\n');
var adapterImportsCode = Object.keys(adapterImports).map(function (library) {
return format(DART_IMPORT, adapterImports[library], library)
}).join('\n')
var randomUid = random();
var randomUid = random()

@@ -82,59 +81,57 @@ var dartAdapterFile = {

mtime: new Date()
};
}
var previousDartTestFiles = [];
var previousDartTestFiles = []
emitter.on('file_list_modified', function(filesPromise) {
filesPromise.then(function(files) {
var dartTestFiles = [];
var dartTestFilePaths = [];
var includedFiles = [dartAdapterFile];
emitter.on('file_list_modified', function (files) {
var dartTestFiles = []
var dartTestFilePaths = []
var includedFiles = [dartAdapterFile]
// All *.dart included files are considered to be test libraries.
files.included.forEach(function(file) {
if (path.extname(file.path) === '.dart') {
dartTestFiles.push(file);
dartTestFilePaths.push(file.path);
} else {
includedFiles.push(file);
}
});
// All *.dart included files are considered to be test libraries.
files.included.forEach(function (file) {
if (path.extname(file.path) === '.dart') {
dartTestFiles.push(file)
dartTestFilePaths.push(file.path)
} else {
includedFiles.push(file)
}
})
// filtered (without dart test files, the adapter will include them)
files.included = includedFiles;
files.served.push(dartAdapterFile);
// filtered (without dart test files, the adapter will include them)
files.included = includedFiles
files.served.push(dartAdapterFile)
// Did the list of included test files changed ?
// If so, update the adapter files, which contains all the imports.
if (!areEqual(previousDartTestFiles, dartTestFilePaths)) {
log.debug('List of dart files changed, updating the list of imports.');
// Did the list of included test files changed ?
// If so, update the adapter files, which contains all the imports.
if (!areEqual(previousDartTestFiles, dartTestFilePaths)) {
log.debug('List of dart files changed, updating the list of imports.')
var testImports = [];
var mainCalls = [];
dartTestFiles.forEach(function(dartFile, index) {
var filePath = dartFile.path;
if (filePath.indexOf(basePath) === 0) {
filePath = 'base/' + filePath.substr(basePath.length + 1);
} else {
filePath = 'absolute' + filePath;
}
testImports.push(format(DART_IMPORT, filePath, 'test_' + index));
mainCalls.push(format(' test_%s.main();', index));
});
var testImports = []
var mainCalls = []
dartTestFiles.forEach(function (dartFile, index) {
var filePath = dartFile.path
if (filePath.indexOf(basePath) === 0) {
filePath = 'base/' + filePath.substr(basePath.length + 1)
} else {
filePath = 'absolute' + filePath
}
testImports.push(format(DART_IMPORT, filePath, 'test_' + index))
mainCalls.push(format(' test_%s.main();', index))
})
// TODO(vojta): skip this writeFileSync() once we can use in-memory cache (file.content)
fs.writeFileSync(dartAdapterFile.contentPath, DART_ADAPTER_TPL
.replace('/*%ADAPTER_IMPORTS%*/', adapterImportsCode)
.replace('/*%TEST_IMPORTS%*/', testImports.join('\n'))
.replace('/*%TEST_MAIN_CALLS%*/', mainCalls.join('\n')));
// TODO(vojta): skip this writeFileSync() once we can use in-memory cache (file.content)
fs.writeFileSync(dartAdapterFile.contentPath, DART_ADAPTER_TPL
.replace('/*%ADAPTER_IMPORTS%*/', adapterImportsCode)
.replace('/*%TEST_IMPORTS%*/', testImports.join('\n'))
.replace('/*%TEST_MAIN_CALLS%*/', mainCalls.join('\n')))
dartAdapterFile.mtime = new Date();
previousDartTestFiles = dartTestFilePaths;
}
});
});
};
dartAdapterFile.mtime = new Date()
previousDartTestFiles = dartTestFilePaths
}
})
}
module.exports = {
'framework:dart-unittest': ['factory', initDartUnittest]
};
}
/**
* Compares two arrays of strings, order matters.
*/
exports.areEqual = function(first, second) {
exports.areEqual = function (first, second) {
if (first.length !== second.length) {
return false;
return false
}

@@ -11,7 +11,7 @@

if (first[i] !== second[i]) {
return false;
return false
}
}
return true;
};
return true
}
{
"name": "karma-dart",
"version": "0.2.8",
"version": "0.3.0-rc.0",
"description": "A Karma plugin - adapter for Dart unittest testing framework.",

@@ -17,13 +17,17 @@ "main": "lib/index.js",

"author": "Pavel Jbanov <pavelgj@gmail.com>",
"peerDependencies": {
"karma": ">=0.10"
},
"dependencies": {
"dart2jsaas": "~0.0.16"
"dart2jsaas": "^0.0.16"
},
"devDependencies": {
"grunt-npm": "~0.0.2",
"grunt": "~0.4.1",
"grunt-bump": "~0.0.11",
"grunt-auto-release": "~0.0.4"
"eslint": "^0.23.0",
"eslint-config-standard": "^3.3.0",
"grunt": "^0.4.5",
"grunt-auto-release": "^0.0.6",
"grunt-bump": "^0.3.1",
"grunt-eslint": "^15.0.0",
"grunt-karma": "^0.11.1",
"grunt-npm": "^0.0.2",
"karma": "^0.12.37",
"karma-chrome-launcher": "^0.2.0",
"load-grunt-tasks": "^3.2.0"
},

@@ -30,0 +34,0 @@ "readmeFilename": "README.md",

@@ -0,1 +1,9 @@

# karma-dart
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/karma-runner/karma-dart)
[![npm version](https://img.shields.io/npm/v/karma-dart.svg?style=flat-square)](https://www.npmjs.com/package/karma-dart) [![npm downloads](https://img.shields.io/npm/dm/karma-dart.svg?style=flat-square)](https://www.npmjs.com/package/karma-dart)
[![Build Status](https://img.shields.io/travis/karma-runner/karma-dart/master.svg?style=flat-square)](https://travis-ci.org/karma-runner/karma-dart) [![Dependency Status](https://img.shields.io/david/karma-runner/karma-dart.svg?style=flat-square)](https://david-dm.org/karma-runner/karma-dart) [![devDependency Status](https://img.shields.io/david/dev/karma-runner/karma-dart.svg?style=flat-square)](https://david-dm.org/karma-runner/karma-dart#info=devDependencies)
> Adapter for the Dart [unittest] testing framework.

@@ -11,3 +19,5 @@

npm install karma-dart
```bash
$ npm install karma-dart
```

@@ -18,4 +28,6 @@ Refer to [npm install] documentation for more details and install options.

unittest: any
browser: any
```yaml
unittest: any
browser: any
```

@@ -53,9 +65,11 @@ The following is an example of karma config.

You can run karma from the local folder:
```bash
$ node node_modules/karma/bin/karma start karma-dart.conf
```
node node_modules/karma/bin/karma start karma-dart.conf
or if you installed it with -g flag just
karma start karma-dart.conf
```bash
$ karma start karma-dart.conf
```
Then just open http://localhost:9876/ in [Dartium].

@@ -62,0 +76,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc