
Research
GemStuffer Campaign Abuses RubyGems as Exfiltration Channel Targeting UK Local Government
GemStuffer abuses RubyGems as an exfiltration channel, packaging scraped UK council portal data into junk gems published from new accounts.
@devsylar/dynamo-table
Advanced tools
A lightweight utility library for interacting with AWS DynamoDB tables using common CRUD methods.
A lightweight utility library for interacting with AWS DynamoDB tables. Wraps the AWS SDK v3 to provide simple, readable methods for the most common CRUD operations on a single table.
get — Retrieve a single item by primary keyquery — Query items by key conditions (supports GSI)scan — Scan and filter items across the entire table (supports GSI)put — Create or replace an itemupdate — Update specific attributes of an existing item# prefix@aws-sdk/client-dynamodb, @aws-sdk/util-dynamodb) — listed as peer dependenciesnpm install @devsylar/dynamo-table
Install peer dependencies if not already present in your project:
npm install @aws-sdk/client-dynamodb @aws-sdk/util-dynamodb
The client reads credentials and region from environment variables:
| Variable | Description |
|---|---|
AWS_REGION | AWS region (e.g. us-east-1) |
AWS_ACCESS_KEY_ID | AWS access key ID |
AWS_SECRET_ACCESS_KEY | AWS secret access key |
const DynamoDBTable = require("@devsylar/dynamo-table");
const usersTable = new DynamoDBTable("Users");
get(where)Retrieves a single item by primary key. Returns null if not found.
const user = await usersTable.get({ userId: "123" });
// { userId: '123', name: 'Alice', status: 'ACTIVE' } or null
query(where, indexName?)Queries items using key conditions. Pass an index name to query a GSI.
// Query by partition key
const orders = await ordersTable.query({ customerId: "c-001" });
// Query a GSI — use # prefix for reserved words
const active = await usersTable.query({ "#status": "ACTIVE" }, "status-index");
scan(where, indexName?, limit?)Scans the table and filters by the given conditions. Prefer query() for large tables.
// Simple scan with filter
const pending = await ordersTable.scan({ "#status": "PENDING" });
// Scan a GSI with a limit
const recent = await ordersTable.scan({ type: "ORDER" }, "type-index", 50);
ConsistentReadis enabled by default on scans.
put(data)Creates or replaces an item. If an item with the same key already exists, it will be overwritten.
await usersTable.put({
userId: "456",
name: "Bob",
status: "ACTIVE",
createdAt: new Date().toISOString(),
});
update(where, data)Updates specific attributes of an existing item. Attributes not listed in data are left unchanged.
await usersTable.update(
{ userId: "456" },
{ "#status": "INACTIVE", updatedAt: new Date().toISOString() },
);
DynamoDB reserves certain attribute names (status, name, type, etc.). Prefix any reserved word key with # and the library will automatically build the correct ExpressionAttributeNames mapping for you.
// 'status' is a reserved word — use '#status'
await table.query({ "#status": "ACTIVE" }, "status-index");
await table.update({ id: "1" }, { "#status": "INACTIVE", "#name": "Alice" });
dynamo-table/
├── src/
│ └── dynamodbtable-lib.js # Core library implementation
├── index.js # Package entry point
├── package.json
└── README.md
MIT
FAQs
A lightweight utility library for interacting with AWS DynamoDB tables using common CRUD methods.
We found that @devsylar/dynamo-table demonstrated a healthy version release cadence and project activity because the last version was released less than 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
GemStuffer abuses RubyGems as an exfiltration channel, packaging scraped UK council portal data into junk gems published from new accounts.

Company News
Socket was named to the Rising in Cyber 2026 list, recognizing 30 private cybersecurity startups selected by CISOs and security executives.

Research
Socket detected 84 compromised TanStack npm package artifacts modified with suspected CI credential-stealing malware.