Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
couch-init2
Advanced tools
An opiniated CouchDB databases initializer
Takes a list of databases to initialise and their design docs, and make sure that everything is up and running and in sync.
in a terminal, at the root of your project
# ESM
npm install couch-init2
# CommonJS
npm install couch-init2@5
import couchInit from 'couch-init2'
const dbUrl = 'http://username:password@localhost:5984'
const dbsList = [
{
name: 'dbname1',
designDocs: ['designdoc1']
},
{
name: 'dbname2',
designDocs: ['designdoc2', 'designdoc3']
},
{
name: 'dbname3',
designDocs: []
}
]
// Path to the folder where design docs can be found on the model `${designDocName}.json`
// If a design doc file from the list is missing, it will be created with a basic design doc structure
// If a design doc file changed, the database design doc will be updated
const designDocFolder = '/path/to/your/design/docs/folder'
const { ok, operations } = await couchInit(dbUrl, dbsList, designDocFolder)
console.log('ok', res.ok)
console.log('operations', res.operations)
// dbs were successfully initialized!
// time to start your server or whatever crazy thing you're building :)
The JSON format is identical to the document in database, minus the _rev
id.
{
"_id": "_design/example",
"language": "javascript",
"views": {
"byFoo": {
"map": "function (doc) {\n if (doc.foo) emit(doc.foo, 1)\n}"
}
}
}
The JS format allows to use a JS module that exports just the views
object, the _id
being deduced from the filename (ex: if the file is named foo.js
, the _id
will be _design/foo
)
export default {
byFoo: {
map: function (doc) {
if (doc.foo) emit(doc.foo, 1)
},
reduce: function(keys, values) {
return values.reduce((a, b) => a + b, 0)
},
},
byBar: {
// The function stringification won't be able to detect variables in scope.
// In this case, you have to pass the function and its dependencies as a string.
map: `
const double = num => num * 2
function (doc) {
if (doc.foo) emit(doc.foo, double(1))
}`,
},
byBuzz: {
// Alternatively, an array of functions can be passed to preserve text editor
// features such as syntax highlighting or linting
map: [
function double (num) { num * 2 },
function (doc) {
if (doc.example) emit(doc.example, double(1))
}
]
},
}
FAQs
Opiniated CouchDB databases initializer
We found that couch-init2 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 researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.