
Research
Supply Chain Attack on Axios Pulls Malicious Dependency from npm
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.
swift-database
Advanced tools
swift-databaseis a module that allows you to interact easily with your local JSON file.
npm install swift-database
const { default: JSONDatabase } = require('swift-database');
const database = new Database({
filePath: 'path/to/file.json'
});
database.createTable('users');
const users = database.table('users');
users.createOne({
fullName: 'John Doe',
hobbies: ['programming', 'sport']
});
const userDocument = users.findOne(
(userDocument) => userDocument.value.fullName === 'John Doe'
);
users.deleteOne(userDocument.id);
Represents the database.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
options | { filePath: string } | ✓ | None | The database options. |
Example :
const database = new JSONDatabase({
filePath: 'path/to/file.json'
});
Returns an array of each table's name.
Type: string[]
Loads a table from the database.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | ✓ | None | The name of the table you want to load. |
Returns: DatabaseTable
Example :
const users = database.table('users');
Creates a new table into the database.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | ✓ | None | The name of the table you want to create. |
Returns: DatabaseTable
Example :
const users = database.createTable('users');
Delete an existing table from the database.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | ✓ | None | The name of the table you want to delete. |
Returns: void
Example :
database.deleteTable('users');
Represents a database table.
Returns the amount of documents inside the table.
Type: number
Returns an array of every table documents.
Type: TableDocument[]
Returns the table document that matches the specified id.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
documentId | string | ✓ | None | The id of the document you want to get. |
Returns: TableDocument
Example :
const DOCUMENT_ID = '0557f4db-5688-4d99-8f85-a83605cf8c1e';
const userDocument = users.getById(DOCUMENT_ID);
Returns the first table document that matches the predicate.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
predicate | PredicateFunction | ✓ | None | The predicate function you want to filter the documents by. |
💡 PredicateFunction = (document: TableDocument, index: number, table: object[]) => boolean
Returns: TableDocument
Example :
const userDocument = users.findOne(
(userDocument) => userDocument.value.fullName === 'John Doe'
);
Returns every documents that match the predicate.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
predicate | PredicateFunction | ✓ | None | The predicate function you want to filter the documents by. |
💡 PredicateFunction = (document: TableDocument, index: number, table: object[]) => boolean
Returns: TableDocument[]
Example :
const userDocuments = users.findMany((userDocument) =>
userDocument.value.hobbies.includes('programming')
);
Creates a new table document and returns it.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
data | object | ✓ | None | The document's data. |
Returns: TableDocument
Example :
const createdUserDocument = users.createOne({
fullName: 'John Doe',
hobbies: ['programming', 'sport']
});
Creates many table documents and returns them.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
data | object[] | ✓ | None | An array of each document's data. |
Returns: TableDocument[]
Example :
const createdUserDocuments = users.createMany(
{
fullName: 'John Doe',
hobbies: ['programming', 'sport']
},
{
fullName: 'Alice Doe',
hobbies: ['studying', 'videogames']
}
);
Deletes a table document.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
documentId | string | ✓ | None | The id of the document you want to delete. |
Returns: TableDocument
Example :
const DOCUMENT_ID = '0557f4db-5688-4d99-8f85-a83605cf8c1e';
const deletedUserDocument = users.deleteOne(DOCUMENT_ID);
Deletes many table documents.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
documentIds | string[] | ✓ | None | An array of each document's id you want to delete. |
Returns: TableDocument[]
Example :
const DOCUMENT_IDS = [
'0557f4db-5688-4d99-8f85-a83605cf8c1e',
'2fe5a45e-1ffe-47ba-ab14-ac94ee26ec68'
];
const deletedUserDocuments = users.deleteMany(DOCUMENT_IDS);
Updates a table document.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
documentId | string | ✓ | None | The id of the document you want to update. |
data | object | ✓ | None | The data you want to update. |
Returns: TableDocument
Example :
const DOCUMENT_ID = '0557f4db-5688-4d99-8f85-a83605cf8c1e';
// Before: TableDocument { id: ..., value: { fullName: 'Alice Doe', ... } }
const updatedUserDocument = users.update(DOCUMENT_ID, {
fullName: 'Alice Dart'
});
// After: TableDocument { id: ..., value: { fullName: 'Alice Dart', ... } }
Increments a document's property.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
documentId | string | ✓ | None | The id of the document you want to make changes on. |
propertyKey | string | ✓ | None | The key of the property you want to increment. |
value | string | X | 1 | The value you want to increment the property by. |
Returns: TableDocument
Example :
const DOCUMENT_ID = '0557f4db-5688-4d99-8f85-a83605cf8c1e';
// Before: TableDocument { id: ..., value: { age: 21, ... } }
const updatedUserDocument = users.increment(DOCUMENT_ID, 'age');
// After: TableDocument { id: ..., value: { age: 22, ... } }
Decrements a document's property.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
documentId | string | ✓ | None | The id of the document you want to make changes on. |
propertyKey | string | ✓ | None | The key of the property you want to decrement. |
value | string | X | 1 | The value you want to decrement the property by. |
Returns: TableDocument
Example :
const DOCUMENT_ID = '0557f4db-5688-4d99-8f85-a83605cf8c1e';
// Before: TableDocument: { id: ..., value: { lives: 3, ... } }
const updatedUserDocument = users.decrement(DOCUMENT_ID, 'lives');
// After: TableDocument: { id: ..., value: { lives: 2, ... } }
Multiplies a document's property.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
documentId | string | ✓ | None | The id of the document you want to make changes on. |
propertyKey | string | ✓ | None | The key of the property you want to multiply. |
value | string | ✓ | None | The value you want to multiply the property by. |
Returns: TableDocument
Example :
const DOCUMENT_ID = '0557f4db-5688-4d99-8f85-a83605cf8c1e';
// Before: TableDocument: { id: ..., value: { chances: 10, ... } }
const updatedUserDocument = users.multiply(DOCUMENT_ID, 'chances', 1.5);
// After: TableDocument: { id: ..., value: { chances: 15, ... } }
Divides a document's property.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
documentId | string | ✓ | None | The id of the document you want to make changes on. |
propertyKey | string | ✓ | None | The key of the property you want to divide. |
value | string | ✓ | None | The value you want to divide the property by. |
Returns: TableDocument
Example :
const DOCUMENT_ID = '0557f4db-5688-4d99-8f85-a83605cf8c1e';
// Before: TableDocument: { id: ..., value: { chances: 10, ... } }
const updatedUserDocument = users.divide(DOCUMENT_ID, 'chances', 2);
// Before: TableDocument: { id: ..., value: { chances: 5, ... } }
Deletes a document's property.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
documentId | string | ✓ | None | The id of the document you want to make changes on. |
key | string | ✓ | None | The key of the property you want to delete. |
Returns: TableDocument
Example :
const DOCUMENT_ID = '0557f4db-5688-4d99-8f85-a83605cf8c1e';
// Before: TableDocument: { id: ..., value: { fullName: 'John Doe', age: 21 } }
const updatedUserDocument = users.deleteProperty(DOCUMENT_ID, 'fullName');
// Before: TableDocument: { id: ..., value: { age: 21 } }
Pushes items into an array document's property;
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
documentId | string | ✓ | None | The id of the document you want to make changes on. |
propertyKey | string | ✓ | None | The key to the array property you want to push the item to. |
items | any[] | ✓ | None | The items you want to push into the array. |
Returns: TableDocument
Example :
const DOCUMENT_ID = '0557f4db-5688-4d99-8f85-a83605cf8c1e';
// Before: TableDocument: { id: ..., value: { hobbies: ['programming'], ... } }
const updatedUserDocument = users.push(DOCUMENT_ID, 'hobbies', 'tennis');
// Before: TableDocument: { id: ..., value: { hobbies: ['programming', 'tennis'], ... } }
Represents a table document.
Returns the document's id.
Type: string
Returns the document's data.
Type: object
FAQs
A light-weight module to interact with your local JSON database.
The npm package swift-database receives a total of 3 weekly downloads. As such, swift-database popularity was classified as not popular.
We found that swift-database 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
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.

Security News
TeamPCP is partnering with ransomware group Vect to turn open source supply chain attacks on tools like Trivy and LiteLLM into large-scale ransomware operations.