/* Copyright 2013 Daniel Wirtz Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ var MetaScript = require("metascript"), path = require("path"), fs = require("fs"); var rootDir = path.join(__dirname, ".."), srcDir = path.join(__dirname, "..", "src"), distDir = path.join(__dirname, "..", "dist"), pkg = require(path.join(rootDir, "package.json")), filename; var scope = { VERSION : pkg.version, // Version // Encodings ENCODINGS : true, // Include encodings in general (catches all) BASE64 : true, // Include base64 encoding BINARY : true, // Include binary encoding DEBUG : true, // Include debug encoding HEX : true, // Include hex encoding UTF8 : true, // Include utf8 encoding (required for STRINGS) // Primitive types BYTES : true, // Include bytes INTS : true, // Include int types in general (catches all) INT8 : true, // Include int8/uint8 INT16 : true, // Include int16/uint16 INT32 : true, // Include int32/uint32 INT64 : true, // Include int64/uint64 with Long.js FLOATS : true, // Include float types in general (catches all) FLOAT32 : true, // Include float32 FLOAT64 : true, // Include float64 // Varint encoding VARINTS : true, // Include varint encoding in general (catches all) VARINT32 : true, // Include varint32/zigZagVarint32 VARINT64 : true, // Include varint64/zigZagVarint32 with Long.js // String support STRINGS : true, // Include string support in general (catches all) UTF8STRING : true, // Include UTF8 encoded strings CSTRING : true, // Include C-like null terminated strings VSTRING : true, // Include varint32 length prefixed strings ISTRING : true, // Include uint32 length prefixed strings // Other ALIASES : true, // Include aliases like writeByte, writeShort .. INLINE : true, // Inline any assertion code VERBOSE_MS : false // Include MetaScript details as comments }; // Optimize for size : INLINE=false, ALIASES=false, VERBOSE_MS=false, WHATEVERYOUDONTNEED=false // Optimize for speed : INLINE=true if (!scope.UTF8) scope.STRINGS = false; // Build node version using Buffers scope.NODE = true; console.log("Building bytebuffer-node with scope", JSON.stringify(scope, null, 2)); fs.writeFileSync( path.join(distDir, "bytebuffer-node.js"), MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "wrap-node.js")), filename, scope, srcDir) ); // Build browser version using Typed Arrays scope.NODE = false; scope.DATAVIEW = false; delete scope.BUFFERVIEW; console.log("Building bytebuffer.js with scope", JSON.stringify(scope, null, 2)); fs.writeFileSync( path.join(distDir, "bytebuffer.js"), MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "wrap.js")), filename, scope) ); // Build alternative browser version using a DataView scope.NODE = false; scope.DATAVIEW = true; console.log("Building bytebuffer-dataview with scope", JSON.stringify(scope, null, 2)); fs.writeFileSync( path.join(distDir, "bytebuffer-dataview.js"), MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "wrap.js")), filename, scope) ); // Update bower.json scope = { VERSION: pkg.version }; console.log("Updating bower.json with scope", JSON.stringify(scope, null, 2)); fs.writeFileSync( path.join(rootDir, "bower.json"), MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "bower.json")), filename, scope, srcDir) ); console.log("Done");