Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
arango-tools
Advanced tools
The goal of of this library is to provide a declarative set of invariants at the database level.
Influenced by the great DX of MongoDB, and the
declarative model, wherever permissions allow arango-tools will create
resources you've said should exist. Both the ensure
and migrate
functions
are idempotent, and create resources only when they don't exist.
Basically, you should be able to state your intent and know when it couldn't happen. Think dotenv-safe, but for database stuff.
npm install arango-tools
The ensure
function takes an object describing the desired state of the
database; your invariants, the collections and whatnot that must exist for your
program to run. When invariants hold, you're passed a set of accessor functions
that allow you to interact with the database. When they do not, a descriptive
error is raised.
// new simplified API! 😀
const { ensure } = require('arango-tools')
let { query, truncate, drop, transaction, collections } = await ensure({
type: 'database',
name: 'myapp',
url: 'http://localhost:8529', // default
rootPassword: 'secret', // optional when the database exists!
options: [
{ type: 'user', username: 'mike', password: 'test' },
{
type: 'documentcollection',
name: 'people',
options: { journalsize: 10485760, waitforsync: true },
},
{
type: 'edgecollection',
name: 'likes',
options: { journalsize: 10485760, waitforsync: true },
},
{
type: 'searchview',
name: 'placeview',
options: {
links: {
places: {
fields: {
name: { analyzers: ['text_en'] },
description: { analyzers: ['text_en'] },
},
},
},
},
},
{
type: 'geoindex',
on: 'places',
fields: ['lat', 'lng'],
geoJson: true,
},
],
})
// Old deprecated API 🙁
// Will be removed in 1.0
const { ArangoTools, dbNameFromFile } = require('arango-tools')
let name = dbNameFromFile(__filename)
let { migrate } = await ArangoTools({ rootPass, url })
let { query, truncate, drop, transaction, collections } = await migrate([
{
type: 'database',
databaseName: name,
users: [{ username: 'mike', passwd: 'sekret' }],
},
{
type: 'documentcollection',
databaseName: name,
name: 'widgets',
options: { journalsize: 10485760, waitforsync: true },
},
{
type: 'searchview',
databaseName: name,
name: 'myview',
options: {},
},
{
type: 'geoindex',
databaseName: name,
collection: 'places',
options: {
fields: ['pts'],
geoJson: true,
},
},
])
await collections.widgets.save({ foo: 'bar' })
let cursor = await query`
FOR widget IN widgets
FILTER widget.foo === "bar"
RETURN widget
`
await cursor.all()
// [{foo: "bar"}]
await drop()
Currently arango-tools can create a database, a document/edge collection, a search view and a GeoIndex. Other types and graphs will be added soon.
FAQs
tools for working with ArangoDB
The npm package arango-tools receives a total of 32 weekly downloads. As such, arango-tools popularity was classified as not popular.
We found that arango-tools 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
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.