
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
@bitscheme/feathers-seeder
Advanced tools
Straightforward data seeder for FeathersJS services.
FeathersJS is a dynamic application framework that makes it easy to prototype secure real-time Node applications.
It has uniform support for a wide variety of database options, both persistent and in-memory. However, it can often be a pain to bootstrap databases, especially for secure backends where creation permissions are locked down tightly.
feathers-seeder attempts to solve that problem by allowing you to fill your database (specifically feathers-memory) with similar of identical data every time your application is launched.
This can really be useful for projects using feathers-memory, or feathers-nedb to test applications.
These magic words will do the trick:
npm install --save feathers-seeder
app.seed(). This will return a Promise.Example:
const app = feathers().configure(hooks());
app
.configure(seeder(app.get('seeder')))
.seed()
.then(() => {
app.listen(3000);
});
feathers-seeder should be called as a function, with a single configuration object as a parameter.
To enable debug output logging, set the DEBUG env variable accordingly (e.g. DEBUG=*)
All data in the service will be wiped before seeding, unless delete is set to false. It is true by default.
To disable feathers-seeder (i.e. at production), you can simply set the value disabled: true on your configuration object. It is false by default.
You can pass service parameters to each service via a params object. This can be useful for projects that have services locked down via hooks.
This configuration object should contain an array called services. Each object in this array will have a key pointing to the path of a registered Feathers service, and its value will be a configuration detail as follows.
Example:
{
delete: true,
disabled: false,
params: { provider: 'rest' },
services: [
{
path: 'users',
template: {
text: "Hello, world! I am {{name.firstName}}."
}
}
]
}
Configuration options:
count: Number - The number of times to generate objects. If you provide a template or template(s), then count objects adhering to the template(s) will be generated. Default = 1.
delete: Boolean - If set to true, then existing data for this service will be deleted before seeding. Overrides global delete setting.
disabled: Boolean - Disables seeding for this service.
params: Object - Additional parameters to pass to service methods. This is merged with (and supersedes) the global params configuration via Object.assign.
path: String - The path to the service to be seeded.
randomize: Boolean - (default true) - The seeder will pick a random template to generate the item for the service.
template: Object - A template object defining the structure of each object generated. For dynamic data, you can provide:
Example:
{
template: {
username: "{{internet.userName}}",
password: "{{internet.password}}"
name: "{{name.firstName}} {{name.lastName}}",
email: "{{internet.email}}",
lastLogin: () => moment().subtract(7, 'days').format()
}
}
templates: Object[] - An array of templates. If the option randomize is true, each time an object is to be generated,
a random template will be chosen. Otherwise, all templates will be generated for the service.
callback: Function(obj, cb) - You can register a callback each time a database record is created. This allows you to seed
nested services. :) Callbacks MUST return a Promise.
{
services: [
{
count: 100,
path: 'users',
template: {
name: '{{name.firstName}} {{name.lastName}}'
},
callback(user, seed) {
console.info(`Happy birthday to ${user.name}!`);
// Call `seed` with regular service configuration.
// This will return a Promise.
return seed({
path: 'users/:userId/posts',
params: {
userId: user._id
},
template: {
text: "It's my birthday! :)"
}
});
}
}
]
}
import feathers from 'feathers';
import hooks from 'feathers-hooks';
import memory from 'feathers-memory';
import seeder from 'feathers-seeder';
const options = {
services: [
{
path: 'users',
count: 10,
template: {
name: '{{name.firstName}} {{name.lastName}}'
}
}
]
};
const app = feathers()
.use('/users', memory({ multi: true }))
.configure(seeder(options));
app.seed().then(() => {
app.service('users').find().then(users => console.log(users));
});
Thank you for using feathers-seeder. If you find any bugs, feel free to report an issue.
Follow me on Twitter: @thosakwe
Or check out my blog.
FAQs
Straightforward data seeder for FeathersJS services.
We found that @bitscheme/feathers-seeder 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
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.