New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

electrodb

Package Overview
Dependencies
Maintainers
1
Versions
169
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

electrodb - npm Package Compare versions

Comparing version 0.9.48 to 0.9.49

localtestgrep.sh

2

package.json
{
"name": "electrodb",
"version": "0.9.48",
"version": "0.9.49",
"description": "A library to more easily create and interact with multiple entities and heretical relationships in dynamodb",

@@ -5,0 +5,0 @@ "main": "index.js",

"use strict";
const { Schema } = require("./schema");
const { ElectroInstance, KeyTypes, QueryTypes, MethodTypes, Comparisons, ExpressionTypes, ModelVersions, ElectroInstanceTypes } = require("./types");
const { ElectroInstance, KeyTypes, QueryTypes, MethodTypes, Comparisons, ExpressionTypes, ModelVersions, ElectroInstanceTypes, MaxBatchItems } = require("./types");
const { FilterFactory, FilterTypes } = require("./filters");

@@ -154,3 +154,3 @@ const { WhereFactory } = require("./where");

async go(method, params = {}, options = {}) {
async go(method, parameters = {}, options = {}) {
let config = {

@@ -166,19 +166,11 @@ includeKeys: options.includeKeys,

};
let parameters = Object.assign({}, params);
let stackTrace = new e.ElectroError(e.ErrorCodes.AWSError);
try {
let response = await this.client[method](parameters).promise().catch(err => {
err.__isAWSError = true;
throw err;
});
switch (method) {
case MethodTypes.put:
case MethodTypes.create:
return this.formatResponse(parameters.IndexName, parameters, config);
case MethodTypes.batchWrite:
return this.formatBulkWriteResponse(parameters.IndexName, response, config);
return await this.executeBulkWrite(parameters, config);
case MethodTypes.batchGet:
return this.formatBulkGetResponse(parameters.IndexName, response, config);
return await this.executeBulkGet(parameters, config);
default:
return this.formatResponse(parameters.IndexName, response, config);
return await this.executeQuery(method, parameters, config);
}

@@ -202,2 +194,48 @@ } catch (err) {

async _exec(method, parameters) {
return this.client[method](parameters).promise().catch(err => {
err.__isAWSError = true;
throw err;
});
}
async executeBulkWrite(parameters, config) {
if (!Array.isArray(parameters)) {
parameters = [parameters];
}
let results = [];
await Promise.all(parameters.map(async params => {
let response = await this._exec(MethodTypes.batchWrite, params);
let unprocessed = this.formatBulkWriteResponse(params.IndexName, response, config);
results = [...results, ...unprocessed];
}));
return results;
}
async executeBulkGet(parameters, config) {
if (!Array.isArray(parameters)) {
parameters = [parameters];
}
let resultsAll = [];
let unprocessedAll = [];
await Promise.all(parameters.map(async params => {
let response = await this._exec(MethodTypes.batchGet, params);
let [results, unprocessed] = this.formatBulkGetResponse(params.IndexName, response, config);
resultsAll = [...resultsAll, ...results];
unprocessedAll = [...unprocessedAll, ...unprocessed];
}));
return [resultsAll, unprocessedAll];
}
async executeQuery(method, parameters, config) {
// let params = Object.assign({}, parameters);
let response = await this._exec(method, parameters);
if (method === MethodTypes.put || method === MethodTypes.create) {
return this.formatResponse(parameters.IndexName, parameters, config);
} else {
return this.formatResponse(parameters.IndexName, response, config);
}
}
cleanseRetrievedData(item = {}, options = {}) {

@@ -574,3 +612,3 @@ let { includeKeys } = options;

let userDefinedParams = config.params || {};
let keys = [];
let records = [];
for (let itemState of state.batch.items) {

@@ -581,13 +619,16 @@ let method = itemState.query.method;

let {Key} = params;
keys.push(Key);
records.push(Key);
}
}
return {
RequestItems: {
[table]: {
...userDefinedParams,
Keys: keys
let batches = utilities.batchItems(records, MaxBatchItems.batchGet);
return batches.map(batch => {
return {
RequestItems: {
[table]: {
...userDefinedParams,
Keys: batch
}
}
}
}
});
}

@@ -597,3 +638,3 @@

let table = config.table || this._getTableName();
let batch = [];
let records = [];
for (let itemState of state.batch.items) {

@@ -605,7 +646,7 @@ let method = itemState.query.method;

let {Item} = params;
batch.push({PutRequest: {Item}});
records.push({PutRequest: {Item}});
break;
case MethodTypes.delete:
let {Key} = params;
batch.push({DeleteRequest: {Key}});
records.push({DeleteRequest: {Key}});
break;

@@ -617,7 +658,10 @@ /* istanbul ignore next */

}
return {
RequestItems: {
[table]: batch
let batches = utilities.batchItems(records, MaxBatchItems.batchWrite);
return batches.map(batch => {
return {
RequestItems: {
[table]: batch
}
}
}
});
}

@@ -624,0 +668,0 @@

@@ -81,2 +81,7 @@ const KeyTypes = {

const MaxBatchItems = {
[MethodTypes.batchGet]: 100,
[MethodTypes.batchWrite]: 25
};
module.exports = {

@@ -88,2 +93,3 @@ KeyTypes,

Comparisons,
MaxBatchItems,
ModelVersions,

@@ -90,0 +96,0 @@ AttributeTypes,

@@ -51,3 +51,17 @@ const v = require("./validations");

function batchItems(arr = [], size) {
if (isNaN(size)) {
throw new Error("Batch size must be of type number");
}
let batched = [];
for (let i = 0; i < arr.length; i++) {
let partition = Math.floor(i / size);
batched[partition] = batched[partition] || [];
batched[partition].push(arr[i]);
}
return batched;
}
module.exports = {
batchItems,
getInstanceType,

@@ -54,0 +68,0 @@ getModelVersion,

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc