|  | //To build dist/thrift.js, dist/thrift.min.js and doc/* | 
|  | //run grunt at the command line in this directory. | 
|  | //Prerequisites: | 
|  | // Node Setup -   nodejs.org | 
|  | // Grunt Setup -  npm install  //reads the ./package.json and installs project dependencies | 
|  | // Run grunt -    npx grunt  // uses project-local installed version of grunt (from package.json) | 
|  |  | 
|  | module.exports = function (grunt) { | 
|  | "use strict"; | 
|  |  | 
|  | grunt.initConfig({ | 
|  | pkg: grunt.file.readJSON("package.json"), | 
|  | concat: { | 
|  | options: { | 
|  | separator: ";", | 
|  | }, | 
|  | dist: { | 
|  | src: ["src/**/*.js"], | 
|  | dest: "dist/<%= pkg.name %>.js", | 
|  | }, | 
|  | }, | 
|  | jsdoc: { | 
|  | dist: { | 
|  | src: ["src/*.js", "./README.md"], | 
|  | options: { | 
|  | destination: "doc", | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | uglify: { | 
|  | options: { | 
|  | banner: | 
|  | '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n', | 
|  | }, | 
|  | dist: { | 
|  | files: { | 
|  | "dist/<%= pkg.name %>.min.js": ["<%= concat.dist.dest %>"], | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | shell: { | 
|  | InstallThriftJS: { | 
|  | command: "cp src/thrift.js test/build/js/thrift.js", | 
|  | }, | 
|  | InstallThriftNodeJSDep: { | 
|  | command: "cd ../.. && npm install", | 
|  | }, | 
|  | InstallTestLibs: { | 
|  | command: "cd test && ant download_jslibs", | 
|  | }, | 
|  | ThriftGen: { | 
|  | command: [ | 
|  | '"../../compiler/cpp/thrift" -gen js --out test/gen-js ../../test/v0.16/ThriftTest.thrift', | 
|  | '"../../compiler/cpp/thrift" -gen js --out test/gen-js ../../test/JsDeepConstructorTest.thrift', | 
|  | '"../../compiler/cpp/thrift" -gen js:jquery --out test/gen-js-jquery ../../test/v0.16/ThriftTest.thrift', | 
|  | '"../../compiler/cpp/thrift" -gen js:node --out test/gen-nodejs ../../test/v0.16/ThriftTest.thrift', | 
|  | '"../../compiler/cpp/thrift" -gen js:es6 --out test/gen-js-es6 ../../test/v0.16/ThriftTest.thrift', | 
|  | '"../../compiler/cpp/thrift" -gen js:node,es6 --out ./test/gen-nodejs-es6 ../../test/v0.16/ThriftTest.thrift', | 
|  | ].join(" && "), | 
|  | }, | 
|  | ThriftGenJQ: { | 
|  | command: | 
|  | "../../compiler/cpp/thrift -gen js:jquery -gen js:node -o test ../../test/v0.16/ThriftTest.thrift", | 
|  | }, | 
|  | ThriftGenDeepConstructor: { | 
|  | command: | 
|  | "../../compiler/cpp/thrift -gen js -o test ../../test/JsDeepConstructorTest.thrift", | 
|  | }, | 
|  | ThriftBrowserifyNodeInt64: { | 
|  | command: [ | 
|  | "./node_modules/browserify/bin/cmd.js ./node_modules/node-int64/Int64.js -s Int64 -o test/build/js/lib/Int64.js", | 
|  | "./node_modules/browserify/bin/cmd.js ../nodejs/lib/thrift/int64_util.js -s Int64Util -o test/build/js/lib/Int64Util.js", | 
|  | "./node_modules/browserify/bin/cmd.js ./node_modules/json-int64/index.js -s JSONInt64 -o test/build/js/lib/JSONInt64.js", | 
|  | ].join(" && "), | 
|  | }, | 
|  | ThriftGenInt64: { | 
|  | command: | 
|  | "../../compiler/cpp/thrift -gen js -o test ../../test/Int64Test.thrift", | 
|  | }, | 
|  | ThriftGenDoubleConstants: { | 
|  | command: | 
|  | "../../compiler/cpp/thrift -gen js -o test ../../test/DoubleConstantsTest.thrift", | 
|  | }, | 
|  | ThriftTestServer: { | 
|  | options: { | 
|  | async: true, | 
|  | execOptions: { | 
|  | cwd: "./test", | 
|  | env: { NODE_PATH: "../../nodejs/lib:../../../node_modules" }, | 
|  | }, | 
|  | }, | 
|  | command: "node server_http.js", | 
|  | }, | 
|  | ThriftTestServerES6: { | 
|  | options: { | 
|  | async: true, | 
|  | execOptions: { | 
|  | cwd: "./test", | 
|  | env: { NODE_PATH: "../../nodejs/lib:../../../node_modules" }, | 
|  | }, | 
|  | }, | 
|  | command: "node server_http.js --es6", | 
|  | }, | 
|  | ThriftTestServer_TLS: { | 
|  | options: { | 
|  | async: true, | 
|  | execOptions: { | 
|  | cwd: "./test", | 
|  | env: { NODE_PATH: "../../nodejs/lib:../../../node_modules" }, | 
|  | }, | 
|  | }, | 
|  | command: "node server_https.js", | 
|  | }, | 
|  | ThriftTestServerES6_TLS: { | 
|  | options: { | 
|  | async: true, | 
|  | execOptions: { | 
|  | cwd: "./test", | 
|  | env: { NODE_PATH: "../../nodejs/lib:../../../node_modules" }, | 
|  | }, | 
|  | }, | 
|  | command: "node server_https.js --es6", | 
|  | }, | 
|  | }, | 
|  | qunit: { | 
|  | ThriftJS: { | 
|  | options: { | 
|  | urls: ["http://localhost:8089/test-nojq.html"], | 
|  | puppeteer: { | 
|  | headless: true, | 
|  | args: ["--no-sandbox"], | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | ThriftJSJQ: { | 
|  | options: { | 
|  | urls: ["http://localhost:8089/test.html"], | 
|  | puppeteer: { | 
|  | headless: true, | 
|  | args: ["--no-sandbox"], | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | ThriftJS_DoubleRendering: { | 
|  | options: { | 
|  | urls: ["http://localhost:8089/test-double-rendering.html"], | 
|  | puppeteer: { | 
|  | headless: true, | 
|  | args: ["--no-sandbox"], | 
|  | ignoreHTTPSErrors: true, | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | ThriftJS_Int64: { | 
|  | options: { | 
|  | urls: ["http://localhost:8089/test-int64.html"], | 
|  | puppeteer: { | 
|  | headless: true, | 
|  | args: ["--no-sandbox"], | 
|  | ignoreHTTPSErrors: true, | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | ThriftWS: { | 
|  | options: { | 
|  | urls: ["http://localhost:8089/testws.html"], | 
|  | puppeteer: { | 
|  | headless: true, | 
|  | args: ["--no-sandbox"], | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | ThriftJS_TLS: { | 
|  | options: { | 
|  | urls: ["https://localhost:8091/test-nojq.html"], | 
|  | puppeteer: { | 
|  | headless: true, | 
|  | args: ["--no-sandbox"], | 
|  | ignoreHTTPSErrors: true, | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | ThriftJSJQ_TLS: { | 
|  | options: { | 
|  | urls: ["https://localhost:8091/test.html"], | 
|  | puppeteer: { | 
|  | headless: true, | 
|  | args: ["--no-sandbox"], | 
|  | ignoreHTTPSErrors: true, | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | ThriftWS_TLS: { | 
|  | options: { | 
|  | urls: ["https://localhost:8091/testws.html"], | 
|  | puppeteer: { | 
|  | headless: true, | 
|  | args: ["--no-sandbox"], | 
|  | ignoreHTTPSErrors: true, | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | ThriftDeepConstructor: { | 
|  | options: { | 
|  | urls: ["http://localhost:8089/test-deep-constructor.html"], | 
|  | puppeteer: { | 
|  | headless: true, | 
|  | args: ["--no-sandbox"], | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | ThriftWSES6: { | 
|  | options: { | 
|  | urls: ["http://localhost:8088/test-es6.html"], | 
|  | puppeteer: { | 
|  | headless: true, | 
|  | args: ["--no-sandbox"], | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | jshint: { | 
|  | // The main Thrift library file. not es6 yet :( | 
|  | lib: { | 
|  | src: ["src/**/*.js"], | 
|  | }, | 
|  | // The test files use es6 | 
|  | test: { | 
|  | src: ["Gruntfile.js", "test/*.js"], | 
|  | options: { | 
|  | esversion: 6, | 
|  | }, | 
|  | }, | 
|  | gen_js_code: { | 
|  | src: ["test/gen-js/*.js", "test/gen-js-jquery/*.js"], | 
|  | }, | 
|  | gen_es6_code: { | 
|  | src: ["test/gen-js-es6/*.js"], | 
|  | options: { | 
|  | esversion: 6, | 
|  | }, | 
|  | }, | 
|  | gen_node_code: { | 
|  | src: ["test/gen-nodejs/*.js"], | 
|  | options: { | 
|  | node: true, | 
|  | }, | 
|  | }, | 
|  | gen_node_es6_code: { | 
|  | src: ["test/gen-nodejs-es6/*.js"], | 
|  | options: { | 
|  | node: true, | 
|  | esversion: 6, | 
|  | }, | 
|  | }, | 
|  | }, | 
|  | }); | 
|  |  | 
|  | grunt.loadNpmTasks("grunt-contrib-uglify"); | 
|  | grunt.loadNpmTasks("grunt-contrib-jshint"); | 
|  | grunt.loadNpmTasks("grunt-contrib-qunit"); | 
|  | grunt.loadNpmTasks("grunt-contrib-concat"); | 
|  | grunt.loadNpmTasks("grunt-jsdoc"); | 
|  | grunt.loadNpmTasks("grunt-shell-spawn"); | 
|  |  | 
|  | grunt.registerTask( | 
|  | "wait", | 
|  | "Wait just one second for the server to start", | 
|  | function () { | 
|  | var done = this.async(); | 
|  | setTimeout(function () { | 
|  | done(true); | 
|  | }, 1000); | 
|  | }, | 
|  | ); | 
|  |  | 
|  | grunt.registerTask( | 
|  | "CreateDirectories", | 
|  | "Creating required local directories", | 
|  | function () { | 
|  | grunt.file.mkdir("test/build/js/lib"); | 
|  | grunt.file.mkdir("test/gen-js"); | 
|  | grunt.file.mkdir("test/gen-js-jquery"); | 
|  | grunt.file.mkdir("test/gen-nodejs"); | 
|  | grunt.file.mkdir("test/gen-js-es6"); | 
|  | grunt.file.mkdir("test/gen-nodejs-es6"); | 
|  | }, | 
|  | ); | 
|  |  | 
|  | grunt.registerTask("installAndGenerate", [ | 
|  | "CreateDirectories", | 
|  | "shell:InstallThriftJS", | 
|  | "shell:InstallThriftNodeJSDep", | 
|  | "shell:ThriftGen", | 
|  | "shell:ThriftGenDeepConstructor", | 
|  | "shell:ThriftGenDoubleConstants", | 
|  | "shell:InstallTestLibs", | 
|  | "shell:ThriftBrowserifyNodeInt64", | 
|  | "shell:ThriftGenInt64", | 
|  | ]); | 
|  |  | 
|  | grunt.registerTask("test", [ | 
|  | "installAndGenerate", | 
|  | "jshint", | 
|  | "shell:ThriftTestServer", | 
|  | "shell:ThriftTestServer_TLS", | 
|  | "shell:ThriftTestServerES6", | 
|  | "shell:ThriftTestServerES6_TLS", | 
|  | "wait", | 
|  | "qunit:ThriftDeepConstructor", | 
|  | "qunit:ThriftJS", | 
|  | "qunit:ThriftJS_TLS", | 
|  | "qunit:ThriftJS_DoubleRendering", | 
|  | "qunit:ThriftWS", | 
|  | "qunit:ThriftJSJQ", | 
|  | "qunit:ThriftJSJQ_TLS", | 
|  | "qunit:ThriftWSES6", | 
|  | "qunit:ThriftJS_Int64", | 
|  | "shell:ThriftTestServer:kill", | 
|  | "shell:ThriftTestServer_TLS:kill", | 
|  | "shell:ThriftTestServerES6:kill", | 
|  | "shell:ThriftTestServerES6_TLS:kill", | 
|  | ]); | 
|  | grunt.registerTask("default", ["test", "concat", "uglify", "jsdoc"]); | 
|  | }; |