protobuf.js/scripts/types.js

41 lines
1.1 KiB
JavaScript

var fs = require("fs"),
path = require("path"),
pkg = require("../package.json");
var dir = path.join(__dirname, "..", "types");
var header = [
'/// <reference types="node" />',
'/// <reference types="long" />',
"",
"/*",
" * protobuf.js v" + pkg.version + " TypeScript definitions",
" * Generated " + (new Date()).toUTCString().replace(/GMT/, "UTC"),
" */"
];
var dts = fs.readFileSync(path.join(dir, "types.d.ts"), "utf8");
// Fix generic promises
dts = dts.replace(/Promise\./g, "Promise");
// Fix classes
dts = dts.replace(/\(\(\) => any\)/g, "any");
// Fix multidimensional arrays
var found;
do {
found = false;
dts = dts.replace(/Array\.<([^>]+)>/g, function($0, $1) {
found = true;
return $1 + "[]";
});
} while (found);
// Remove declare statements and wrap everything in a module
dts = dts.replace(/\bdeclare\s/g, "");
dts = dts.replace(/^/mg, " ");
dts = header.join('\n')+"\ndeclare module \"protobufjs\" {\n\n" + dts + "\n}\n";
fs.writeFileSync(path.join(dir, "protobuf.js.d.ts"), dts);
fs.unlinkSync(path.join(dir, "types.d.ts"));