Meteor Night
9 July 2019
Collaborations
A JavaScript framework implemented in JavaScript
Real-time reactivity by default (sometimes to a fault)
A great way to write rich client applications using any view layer, but especially React
The build tool and module system of my dreams
A package ecosystem more powerful than npm
As little configuration as possible
A commitment to backwards compatibility and smooth upgrades
Open source, though somewhat centralized
A consistent source of revenue for Meteor Development Group
import()
and “exact code splitting”node_modules
Something of a surprise, however, was TypeScript, with 46% of survey respondents reporting they use Microsoft’s… type-checked JavaScript variant. This is major adoption for a tool of this kind and might signal a sea change in how developers write JavaScript.
any
type, etc..d.ts
type declarations merely as documentation for external consumersThe infrastructure has already been implemented in Meteor 1.8.2 betas
Possible because .ts modules can coexist alongside .js modules
Order of conversion can be decided according to impact
No need to convert modules that are “too dynamic”
export {
appendFile as appendFile,
appendFile as appendFileSync,
chmod as chmod,
chmod as chmodSync,
close as close,
close as closeSync,
createReadStream as createReadStream,
createWriteStream as createWriteStream,
lstat as lstat,
lstat as lstatSync,
mkdir as mkdir,
mkdir as mkdirSync,
open as open,
open as openSync,
read as read,
readFile as readFile,
readFile as readFileSync,
read as readSync,
readdir as readdir,
readdir as readdirSync,
readlink as readlink,
readlink as readlinkSync,
realpath as realpath,
realpath as realpathSync,
rmdir as rmdir,
rmdir as rmdirSync,
stat as stat,
stat as statSync,
symlink as symlink,
symlink as symlinkSync,
unlink as unlink,
unlink as unlinkSync,
unwatchFile as unwatchFile,
watchFile as watchFile,
write as write,
writeFile as writeFile,
writeFile as writeFileSync,
write as writeSync,
} from "./files";
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "appendFile", {
enumerable: true,
get: function get() {
return _files.appendFile;
}
});
Object.defineProperty(exports, "appendFileSync", {
enumerable: true,
get: function get() {
return _files.appendFile;
}
});
Object.defineProperty(exports, "chmod", {
enumerable: true,
get: function get() {
return _files.chmod;
}
});
Object.defineProperty(exports, "chmodSync", {
enumerable: true,
get: function get() {
return _files.chmod;
}
});
Object.defineProperty(exports, "close", {
enumerable: true,
get: function get() {
return _files.close;
}
});
Object.defineProperty(exports, "closeSync", {
enumerable: true,
get: function get() {
return _files.close;
}
});
Object.defineProperty(exports, "createReadStream", {
enumerable: true,
get: function get() {
return _files.createReadStream;
}
});
Object.defineProperty(exports, "createWriteStream", {
enumerable: true,
get: function get() {
return _files.createWriteStream;
}
});
Object.defineProperty(exports, "lstat", {
enumerable: true,
get: function get() {
return _files.lstat;
}
});
Object.defineProperty(exports, "lstatSync", {
enumerable: true,
get: function get() {
return _files.lstat;
}
});
Object.defineProperty(exports, "mkdir", {
enumerable: true,
get: function get() {
return _files.mkdir;
}
});
Object.defineProperty(exports, "mkdirSync", {
enumerable: true,
get: function get() {
return _files.mkdir;
}
});
Object.defineProperty(exports, "open", {
enumerable: true,
get: function get() {
return _files.open;
}
});
Object.defineProperty(exports, "openSync", {
enumerable: true,
get: function get() {
return _files.open;
}
});
Object.defineProperty(exports, "read", {
enumerable: true,
get: function get() {
return _files.read;
}
});
Object.defineProperty(exports, "readFile", {
enumerable: true,
get: function get() {
return _files.readFile;
}
});
Object.defineProperty(exports, "readFileSync", {
enumerable: true,
get: function get() {
return _files.readFile;
}
});
Object.defineProperty(exports, "readSync", {
enumerable: true,
get: function get() {
return _files.read;
}
});
Object.defineProperty(exports, "readdir", {
enumerable: true,
get: function get() {
return _files.readdir;
}
});
Object.defineProperty(exports, "readdirSync", {
enumerable: true,
get: function get() {
return _files.readdir;
}
});
Object.defineProperty(exports, "readlink", {
enumerable: true,
get: function get() {
return _files.readlink;
}
});
Object.defineProperty(exports, "readlinkSync", {
enumerable: true,
get: function get() {
return _files.readlink;
}
});
Object.defineProperty(exports, "realpath", {
enumerable: true,
get: function get() {
return _files.realpath;
}
});
Object.defineProperty(exports, "realpathSync", {
enumerable: true,
get: function get() {
return _files.realpath;
}
});
Object.defineProperty(exports, "rmdir", {
enumerable: true,
get: function get() {
return _files.rmdir;
}
});
Object.defineProperty(exports, "rmdirSync", {
enumerable: true,
get: function get() {
return _files.rmdir;
}
});
Object.defineProperty(exports, "stat", {
enumerable: true,
get: function get() {
return _files.stat;
}
});
Object.defineProperty(exports, "statSync", {
enumerable: true,
get: function get() {
return _files.stat;
}
});
Object.defineProperty(exports, "symlink", {
enumerable: true,
get: function get() {
return _files.symlink;
}
});
Object.defineProperty(exports, "symlinkSync", {
enumerable: true,
get: function get() {
return _files.symlink;
}
});
Object.defineProperty(exports, "unlink", {
enumerable: true,
get: function get() {
return _files.unlink;
}
});
Object.defineProperty(exports, "unlinkSync", {
enumerable: true,
get: function get() {
return _files.unlink;
}
});
Object.defineProperty(exports, "unwatchFile", {
enumerable: true,
get: function get() {
return _files.unwatchFile;
}
});
Object.defineProperty(exports, "watchFile", {
enumerable: true,
get: function get() {
return _files.watchFile;
}
});
Object.defineProperty(exports, "write", {
enumerable: true,
get: function get() {
return _files.write;
}
});
Object.defineProperty(exports, "writeFile", {
enumerable: true,
get: function get() {
return _files.writeFile;
}
});
Object.defineProperty(exports, "writeFileSync", {
enumerable: true,
get: function get() {
return _files.writeFile;
}
});
Object.defineProperty(exports, "writeSync", {
enumerable: true,
get: function get() {
return _files.write;
}
});
var _files = require("./files");
export {
appendFile as appendFile,
appendFile as appendFileSync,
chmod as chmod,
chmod as chmodSync,
close as close,
close as closeSync,
createReadStream as createReadStream,
createWriteStream as createWriteStream,
lstat as lstat,
lstat as lstatSync,
mkdir as mkdir,
mkdir as mkdirSync,
open as open,
open as openSync,
read as read,
readFile as readFile,
readFile as readFileSync,
read as readSync,
readdir as readdir,
readdir as readdirSync,
readlink as readlink,
readlink as readlinkSync,
realpath as realpath,
realpath as realpathSync,
rmdir as rmdir,
rmdir as rmdirSync,
stat as stat,
stat as statSync,
symlink as symlink,
symlink as symlinkSync,
unlink as unlink,
unlink as unlinkSync,
unwatchFile as unwatchFile,
watchFile as watchFile,
write as write,
writeFile as writeFile,
writeFile as writeFileSync,
write as writeSync,
} from "./files";
module.link("./files", {
appendFile: ["appendFile", "appendFileSync"],
chmod: ["chmod", "chmodSync"],
close: ["close", "closeSync"],
createReadStream: "createReadStream",
createWriteStream: "createWriteStream",
lstat: ["lstat", "lstatSync"],
mkdir: ["mkdir", "mkdirSync"],
open: ["open", "openSync"],
read: ["read", "readSync"],
readFile: ["readFile", "readFileSync"],
readdir: ["readdir", "readdirSync"],
readlink: ["readlink", "readlinkSync"],
realpath: ["realpath", "realpathSync"],
rmdir: ["rmdir", "rmdirSync"],
stat: ["stat", "statSync"],
symlink: ["symlink", "symlinkSync"],
unlink: ["unlink", "unlinkSync"],
unwatchFile: "unwatchFile",
watchFile: "watchFile",
write: ["write", "writeSync"],
writeFile: ["writeFile", "writeFileSync"]
}, 0);
I’m open to speeding up the process, but not if we miss the opportunity to specify meaningful types