gradio / node_modules /oboe /Gruntfile.js
reisarod's picture
Upload folder using huggingface_hub
5fae594 verified
module.exports = function (grunt) {
var autoStartBrowsers = ['Chrome', 'Firefox', 'Safari'];
var STREAM_SOURCE_PORT = 4567;
// NB: source files are order sensitive
var OBOE_BROWSER_SOURCE_FILES = [
'build/version.js'
, 'src/LICENCE.js'
, 'src/functional.js'
, 'src/util.js'
, 'src/lists.js'
, 'src/libs/clarinet.js'
, 'src/clarinetListenerAdaptor.js'
, 'src/parseResponseHeaders.browser.js'
, 'src/streamingHttp.browser.js'
, 'src/jsonPathSyntax.js'
, 'src/ascent.js'
, 'src/incrementalContentBuilder.js'
, 'src/jsonPath.js'
, 'src/singleEventPubSub.js'
, 'src/pubSub.js'
, 'src/events.js'
, 'src/patternAdapter.js'
, 'src/instanceApi.js'
, 'src/instanceController.js'
, 'src/wire.js'
, 'src/publicApi.js'
];
var OBOE_NODE_SOURCE_FILES = [
'build/version.js'
, 'src/functional.js'
, 'src/util.js'
, 'src/lists.js'
, 'src/clarinetListenerAdaptor.js'
, 'src/streamingHttp.node.js'
, 'src/jsonPathSyntax.js'
, 'src/ascent.js'
, 'src/incrementalContentBuilder.js'
, 'src/jsonPath.js'
, 'src/singleEventPubSub.js'
, 'src/pubSub.js'
, 'src/events.js'
, 'src/patternAdapter.js'
, 'src/instanceApi.js'
, 'src/instanceController.js'
, 'src/wire.js'
, 'src/publicApi.js'
];
var FILES_TRIGGERING_KARMA = [
'src/**/*.js',
'test/specs/*.spec.js',
'test/libs/*.js'
];
grunt.initConfig({
pkg:grunt.file.readJSON("package.json")
, clean: ['dist/*.js', 'build/*.js']
, concat: {
browser:{
src: OBOE_BROWSER_SOURCE_FILES,
dest: 'build/oboe-browser.concat.js'
},
node:{
src: OBOE_NODE_SOURCE_FILES,
dest: 'build/oboe-node.concat.js'
}
}
, wrap: {
browserPackage: {
src: 'build/oboe-browser.concat.js',
dest: '.',
wrapper: [
'// This file is the concatenation of many js files. \n' +
'// See https://github.com/jimhigson/oboe.js for the raw source\n' +
// having a local undefined, window, Object etc allows slightly better minification:
'(function (window, Object, Array, Error, JSON, undefined ) {\n'
// source code here
, '\n\n;' +
'if ( typeof define === "function" && define.amd ) {' +
'define( "oboe", [], function () { return oboe; } );' +
'} else {' +
'window.oboe = oboe;' +
'}' +
'})(window, Object, Array, Error, JSON);'
]
},
nodePackage: {
src: 'build/oboe-node.concat.js',
dest: '.',
wrapper: [
'// this file is the concatenation of several js files. See https://github.com/jimhigson/oboe-browser.js/tree/master/src ' +
'for the unconcatenated source\n' +
'module.exports = (function () {\n' +
'var clarinet = require("clarinet");\n'
// source code here
, '\n\n;return oboe;})();'
]
}
}
, uglify: {
build:{
files:{
'build/oboe-browser.min.js': 'build/oboe-browser.concat.js'
}
}
}
, karma: {
options:{
singleRun: true,
proxies: {
'/testServer' : 'http://localhost:' + STREAM_SOURCE_PORT
},
// test results reporter to use
// possible values: 'dots', 'progress', 'junit'
reporters : ['progress'],
// enable / disable colors in the output (reporters and logs)
colors : true
}
,
'precaptured-dev': {
// for doing a single test run with already captured browsers during development.
// this is good for running tests in browsers karma can't easily start such as
// IE running inside a Windows VM on a unix dev environment
browsers: [],
configFile: 'test/unit.conf.js',
singleRun: 'true'
}
,
'single-dev': {
browsers: autoStartBrowsers,
configFile: 'test/unit.conf.js'
}
,
'single-concat': {
browsers: autoStartBrowsers,
configFile: 'test/concat.conf.js'
}
,
'single-minified': {
browsers: autoStartBrowsers,
configFile: 'test/min.conf.js'
}
,
'single-amd': {
browsers: autoStartBrowsers,
configFile: 'test/amd.conf.js'
}
,
'single-browser-http': {
browsers: autoStartBrowsers,
configFile: 'test/http.conf.js'
}
,
'persist': {
// for setting up a persistent karma server.
// To start the server, the task is:
// karma:persist
// To run these, the task is:
// karma:persist:run
configFile: 'test/unit.conf.js',
browsers: [],
singleRun:false,
background:true
}
}
, copy: {
browserDist: {
files: [
{src: ['build/oboe-browser.min.js'], dest: 'dist/oboe-browser.min.js'}
, {src: ['build/oboe-browser.concat.js'], dest: 'dist/oboe-browser.js' }
]
},
nodeDist: {
files: [
{src: ['build/oboe-node.concat.js'], dest: 'dist/oboe-node.js'}
]
}
}
, exec:{
// these might not go too well on Windows :-) - get Cygwin.
reportMinifiedSize:{
command: "echo minified size is `wc -c < dist/oboe-browser.min.js` bytes"
},
reportMinifiedAndGzippedSize:{
command: "echo Size after gzip is `gzip --best --stdout dist/oboe-browser.min.js | wc -c` bytes - max 5120"
},
createGitVersionJs:{
command: "echo \"// `git describe`\" > build/version.js"
}
}
, watch:{
karma:{
files:FILES_TRIGGERING_KARMA,
tasks:['karma:persist:run']
},
// like above but reports the file size. This is good for
// watching while developing to make sure it doesn't get
// too big. Doesn't run tests against minified.
karmaAndSize:{
files: FILES_TRIGGERING_KARMA,
tasks:[
'karma:persist:run',
'browser-build',
'dist-sizes']
},
// like above but reports the file size. This is good for
// watching while developing to make sure it doesn't get
// too big. Doesn't run tests against minified.
testNode:{
files: FILES_TRIGGERING_KARMA,
tasks:[
'node-build-run']
},
restartStreamSourceAndRunTests:{
// this fails at the moment because start-stream-source
// fails if run more than once - the port is taken.
files: ['test/streamsource.js'],
tasks: ['start-stream-source', 'karma:persist:run']
}
}
, concurrent:{
watchDev: {
tasks:[ 'watch:karmaAndSize', 'watch:restartStreamSourceAndRunTests' ],
options:{
logConcurrentOutput: true
}
}
}
});
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
var streamSource;
grunt.registerTask('start-stream-source', function () {
grunt.log.ok('do we have a streaming source already?', !!streamSource);
// if we previously loaded the streamsource, stop it to let the new one in:
if( streamSource ) {
grunt.log.ok('there seems to be a streaming server already, let\'s stop it');
streamSource.stop();
}
streamSource = require('./test/streamsource.js');
streamSource.start(STREAM_SOURCE_PORT, grunt);
});
grunt.registerTask("jasmine_node_oboe", "Runs jasmine-node.", function() {
require('jasmine-node').executeSpecsInFolder({
"specFolders":[process.cwd() + '/test/specs/'],
"isVerbose":true,
"showColors":true,
"teamcity":false,
"useRequireJs":false,
"regExpSpec":/oboe\.(?:integration|performance)\.spec\.(js)$/,
"junitreport":{"report":false, "savePath":"./reports/", "useDotNotation":true, "consolidate":true},
"includeStackTrace":true,
"growl":false,
onComplete: this.async()
});
});
// change the auto-starting browsers so that future tests will use
// phantomjs instead of actual browsers. Can do:
// grunt headless-mode default
// to run without any actual browsers
grunt.registerTask('headless-mode', function(){
autoStartBrowsers.length = 0;
autoStartBrowsers.push('PhantomJS');
})
grunt.registerTask('test-start-server', [
'karma:persist'
]);
grunt.registerTask('test-run', [
'karma:persist:run'
]);
grunt.registerTask('dist-sizes', [
'exec:reportMinifiedAndGzippedSize'
]);
grunt.registerTask('node-build', [
'exec:createGitVersionJs',
'concat:node',
'wrap:nodePackage',
'copy:nodeDist'
]);
grunt.registerTask('node-build-test', [
'node-build',
'jasmine_node_oboe'
]);
grunt.registerTask('node', [
'start-stream-source',
'node-build-test'
]);
grunt.registerTask('browser-build', [
'exec:createGitVersionJs',
'concat:browser',
'concat:node',
'wrap:browserPackage',
'uglify',
'copy:browserDist'
]);
grunt.registerTask('browser-build-test', [
'karma:single-dev',
'karma:single-browser-http',
'browser-build',
'karma:single-concat',
'karma:single-minified',
'karma:single-amd'
]);
grunt.registerTask('build', [
'browser-build',
'node-build'
]);
// build and run just the integration tests.
grunt.registerTask('build-integration-test', [
'build',
'start-stream-source',
'karma:single-concat',
'jasmine_node_oboe',
'dist-sizes'
]);
grunt.registerTask('default', [
'clear',
'clean',
'start-stream-source',
'browser-build-test',
'node-build-test',
'dist-sizes'
]);
// browser-test-auto-run or node-test-auto-run
//
// The most useful for developing. Start this task, capture some browsers
// (unless node) then edit the code. Tests will be run as the code is
// saved.
grunt.registerTask('browser-test-auto-run', [
'start-stream-source',
'karma:persist',
'concurrent:watchDev'
]);
grunt.registerTask('node-test-auto-run', [
'start-stream-source',
'watch:testNode'
]);
};