
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Powerful plugin system for writing large and extensible NodeJS applications. Engineer plugins are compatible with Architect plugins. Using Engineer, you set up a simple configuration and tell Engineer which plugins you want to load. Each plugin registers itself with Engineer, so other plugins can use its functions. Plugins can be maintained as NPM packages so they can be dropped in to other Engineer apps.
var engineer = require("engineer");
var app = new engineer.Application({
// Paths could be an array of all plugins locations
'paths': __dirname
})
app.load([
// Plugin could be a single string
'./test1',
// Or plugin could be an object containing options
{
packagePath: "./test2",
port: 8080
}
]).then(function() {
console.log("Plugins are loaded!");
});
An Application object can emit different object (Inherits from EventEmitter):
// Error:
app.on("error", function(err) {
console.error("Error in the application:");
console.error(err.stack);
});
// Plugin loaded
app.on("plugin", function(plugin) {}):
// Service ready
app.on("service", function(name, service) {}):
// auth.js
/* All plugins must export this public signature.
* @plugin is the hash of options the user passes in when creating an instance
* of the plugin.
* @imports is a hash of all services this plugin consumes.
* @register is the callback to be called when the plugin is done initializing.
*/
module.exports = function setup(plugin, imports, register) {
// "database" was a service this plugin consumes
var db = imports.database;
register(null, {
// "auth" is a service this plugin provides
auth: {
users: function (callback) {
db.keys(callback);
},
authenticate: function (username, password, callback) {
db.get(username, function (user) {
if (!(user && user.password === password)) {
return callback();
}
callback(user);
});
}
}
});
};
Each plugin is a node module complete with a package.json file. It need not actually be in npm, it can be a simple folder in the code tree.
{
"name": "auth",
"version": "0.0.1",
"main": "auth.js",
"private": true,
"plugin": {
"consumes": ["database"],
"provides": ["auth"]
}
}
FAQs
Powerful plugin system for writing large and extensible NodeJS applications
The npm package engineer receives a total of 4 weekly downloads. As such, engineer popularity was classified as not popular.
We found that engineer demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.