tra-analysis/website/functions/node_modules/bytebuffer/scripts/build.js
2019-01-06 13:14:45 -06:00

114 lines
4.5 KiB
JavaScript

/*
Copyright 2013 Daniel Wirtz <dcode@dcode.io>
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");