electrodb 2.10.5 → 2.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "electrodb",
3
- "version": "2.10.5",
3
+ "version": "2.10.7",
4
4
  "description": "A library to more easily create and interact with multiple entities and heretical relationships in dynamodb",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/src/client.js CHANGED
@@ -1,5 +1,5 @@
1
- const lib = require("@aws-sdk/lib-dynamodb");
2
- const util = require("@aws-sdk/lib-dynamodb/dist-cjs/commands/utils");
1
+ const lib = require('@aws-sdk/lib-dynamodb')
2
+ const util = require('@aws-sdk/lib-dynamodb/dist-cjs/commands/utils')
3
3
  const { isFunction } = require("./validations");
4
4
  const { ElectroError, ErrorCodes } = require("./errors");
5
5
  const DocumentClientVersions = {
package/src/entity.js CHANGED
@@ -494,7 +494,7 @@ class Entity {
494
494
  async go(method, parameters = {}, config = {}) {
495
495
  let stackTrace;
496
496
  if (!config.originalErr) {
497
- stackTrace = new e.ElectroError(e.ErrorCodes.AWSError).stack;
497
+ stackTrace = new e.ElectroError(e.ErrorCodes.AWSError);
498
498
  }
499
499
  try {
500
500
  switch (method) {
@@ -513,13 +513,9 @@ class Entity {
513
513
  return Promise.reject(err);
514
514
  } else {
515
515
  if (err.__isAWSError) {
516
- const error = new e.ElectroError(
517
- e.ErrorCodes.AWSError,
518
- `Error thrown by DynamoDB client: "${err.message}"`,
519
- err,
520
- );
521
- error.stack = stackTrace;
522
- return Promise.reject(error);
516
+ stackTrace.message = `Error thrown by DynamoDB client: "${err.message}" - For more detail on this error reference: https://electrodb.dev/en/reference/errors/#aws-error`;
517
+ stackTrace.cause = err;
518
+ return Promise.reject(stackTrace);
523
519
  } else if (err.isElectroError) {
524
520
  return Promise.reject(err);
525
521
  } else {
@@ -926,7 +922,7 @@ class Entity {
926
922
  formatResponse(response, index, config = {}) {
927
923
  let stackTrace;
928
924
  if (!config.originalErr) {
929
- stackTrace = new e.ElectroError(e.ErrorCodes.AWSError).stack;
925
+ stackTrace = new e.ElectroError(e.ErrorCodes.AWSError);
930
926
  }
931
927
  try {
932
928
  let results = {};
@@ -1014,17 +1010,16 @@ class Entity {
1014
1010
 
1015
1011
  return { data: results };
1016
1012
  } catch (err) {
1017
- if (config.originalErr || stackTrace === undefined || err.isElectroError) {
1013
+ if (
1014
+ config.originalErr ||
1015
+ stackTrace === undefined ||
1016
+ err.isElectroError
1017
+ ) {
1018
1018
  throw err;
1019
1019
  } else {
1020
- const error = new e.ElectroError(
1021
- e.ErrorCodes.AWSError,
1022
- err.message,
1023
- err,
1024
- );
1025
- error.stack = stackTrace;
1026
-
1027
- throw error;
1020
+ stackTrace.message = `Error thrown by DynamoDB client: "${err.message}" - For more detail on this error reference: https://electrodb.dev/en/reference/errors/#aws-error`;
1021
+ stackTrace.cause = err;
1022
+ throw stackTrace;
1028
1023
  }
1029
1024
  }
1030
1025
  }
package/src/operations.js CHANGED
@@ -28,8 +28,21 @@ class ExpressionState {
28
28
  return `${this.prefix}${this.counts[name]++}`;
29
29
  }
30
30
 
31
+ formatName(name = "") {
32
+ const nameWasNotANumber = isNaN(name);
33
+ name = `${name}`.replaceAll(/[^\w]/g, "");
34
+ if (name.length === 0) {
35
+ name = "p";
36
+ } else if (nameWasNotANumber !== isNaN(name)) {
37
+ // name became number due to replace
38
+ name = `p${name}`;
39
+ }
40
+ return name;
41
+ }
42
+
31
43
  // todo: make the structure: name, value, paths
32
44
  setName(paths, name, value) {
45
+ name = this.formatName(name);
33
46
  let json = "";
34
47
  let expression = "";
35
48
  const prop = `#${name}`;
@@ -53,6 +66,7 @@ class ExpressionState {
53
66
  }
54
67
 
55
68
  setValue(name, value) {
69
+ name = this.formatName(name);
56
70
  let valueCount = this.incrementName(name);
57
71
  let expression = `:${name}${valueCount}`;
58
72
  this.values[expression] = value;