Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Application-friendly RethinkDB client
new Penseur.Db(name, [options])
Creates a new Db
object where:
name
- name of the database to use. Default is 'test'
.options
- optional configuration:
host
- string containing the host to connect to. Default is 'localhost'
port
- port to connect on. Default is 28015
.authKey
- string containing an established authorization keyuser
- string containing the user you want to perform actions as. Default is 'admin'
password
- string containing the users passwordtimeout
- number indicating the number of seconds to wait for a connection to be established before timing out. Default is 20
seconds.ssl
- ssl settings when RethinkDB requires a secure connection. This setting is passed to the RethinkDB module.
ca
- certificate as a Buffer used for establishing a secure connection to rethink, see RethinkDB connect documentationtest
- boolean indicating if the Db
actions should take place. Useful for testing scenarios, do not use in production.extended
- object that is used to extend the members of the table objects.onConnect
- function to execute when a connection is established.onError
- function to execute when an error occurs. Signature is function(err)
where err
is an error object.onDisconnect
- function to execute when a disconnection occurs. Signature is function(willReconnect)
where willReconnect
is a boolean indicating if the connection will be reestablished.reconnect
- boolean indicating if the connection should be reestablished when interruptedreconnectTimeout
- number of milliseconds to wait between reconnect attempts, when false
there is no timeout. Defaults to 100
await db.connect()
Create a connection to the database. Throws connection errors.
await db.close()
Close all database connections.
await db.establish([tables])
Note that this can alter data and indexes, not intended of production use.
Establish a connection if one doesn't exist and create the database and tables if they don't already exist. This function also decorates the db
object with helper properties to for using each of the tables.
[tables]
- array of strings with the name of each table to createdb.disable(table, method, [options])
Only available when Db
is constructed in test mode. Disable a specific method from being performed on a table, used for testing.
table
- name of tablemethod
- name of method on table to disableoptions
- optional object with the following properties
value
- value to return when the method is called. Can be an error object to simulate errors.db.enable(table, method)
Only available when Db
is constructed in test mode. Enable a disabled method on a table, used for testing.
table
- name of tablemethod
- name of method on table to enabledb.r
Property that contains the RethinkDB module.
After a database connection exists and tables are established then the Db
object is decorated with properties for each table name containing various helper function. Below are the available functions for each table.
await db[table].get(id, [options])
Retrieve a record in the table
with the given id
. id
itself can be an array of id
values if you want to retrieve multiple records.
id
- unique identifier of record to retrieve. Can be an array with values for each ID to retrieve.options
- optional object with the following properties
sort
- table key to sort results usingorder
- 'descending'
or 'ascending'
for sort order, Defaults to 'ascending'
from
- index in result set to selectcount
- number of records to return in resultsfilter
- properties to pluck from the resultsawait db[table].all()
Retrieve all records for a table.
await db[table].exist(id)
Determine if a record in the table
exists with the provided ID
id
- unique identifier of record to retrieve. Can be an array with values for each ID to retrieve.await db[table].query(criteria)
Perform a query on the table using the provided criteria. Criteria is available on the Db
object and is listed in the criteria section below.
criteria
- db criteria functions chained togetherawait db[table].single(criteria)
Retrieve a single record from the provided criteria.
criteria
- db criteria functions chained togetherawait db[table].count(criteria)
Retrieve the number of records in the table that match the given criteria.
criteria
- db criteria functions chained togetherawait db[table].insert(items, [options])
Create new record(s) in the table. Each item can specify a unique id
property or allow rethink to generate one for them.
items
- item object or array of items to insert into the tableoptions
- optional object with the following properties
merge
- boolean, when true any conflicts with existing items will result in an update, when false an error is returnedchunks
- maximum number of updates to send to the database at the same timeawait db[table].update(ids, changes)
Update an existing record with the provided changes.
ids
- an identifier or array of identifiers of records to update in the tablechanges
- the parts of the record to change and the values to change the parts toawait db[table].update(updates, [options])
Update an existing record with the provided changes.
updates
- an array of records to update (each must include an existing primary key)options
- optional settings where:
chunks
- maximum number of updates to send to the database at the same timeawait db[table].remove(criteria)
Remove the records in the table that match the given criteria.
criteria
- db criteria functions chained togetherawait db[table].empty()
Remove all records in the table.
await db[table].sync()
Wait until all operations are complete and all data is persisted on permanent storage. Note that this function shouldn't be necessary for normal conditions.
await db[table].index(indexes)
Create the secondary indexes
on the table.
indexes
- a string or array of strings for each index to createawait db[table].changes(criteria, [options])
Subscribe to changes matching the given criteria for the table.
criteria
- db criteria functions chained togetheroptions
- optional object with the following properties
handler
- handler function to execute when changes occur.reconnect
- boolean, reconnect if the connection to the feed is interruptedinitial
- boolean, include the initial results in the change feedDb.or(values)
Db.contains(values[, options])
Db.not(values)
Db.unset()
Db.empty()
Db.increment(value)
Db.append(value[, options])
Db.override(value)
Db.is(operator, values, ...and)
Db.by(index, values)
FAQs
Lightweight RethinkDB wrapper
We found that penseur 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.