@infra-blocks/aws-dynamodb 0.6.0 → 0.7.0-alpha.0

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.
@@ -1,20 +1,13 @@
1
- import type { Attributes } from "../../types.js";
2
- export declare class KeyConditionExpression {
3
- private readonly expression;
4
- private readonly attributeValues;
1
+ import type { AttributePath, AttributeValue } from "../../types.js";
2
+ import type { AttributeNames } from "../attributes/names.js";
3
+ import type { AttributeValues } from "../attributes/values.js";
4
+ import type { Expression } from "./expression.js";
5
+ export declare class KeyConditionExpression implements Expression {
6
+ private readonly inner;
5
7
  private constructor();
6
- toJson(): {
7
- expression: string;
8
- attributeValues: Attributes;
9
- };
10
- static partitionKeyEquals(params: {
11
- name: string;
12
- value: string;
13
- token?: string;
14
- }): KeyConditionExpression;
15
- static equals(params: {
16
- name: string;
17
- value: string;
18
- token: string;
19
- }): KeyConditionExpression;
8
+ stringify(params: {
9
+ attributeNames: AttributeNames;
10
+ attributeValues: AttributeValues;
11
+ }): string;
12
+ static equals(name: AttributePath, value: AttributeValue): KeyConditionExpression;
20
13
  }
@@ -2,32 +2,25 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.KeyConditionExpression = void 0;
4
4
  class KeyConditionExpression {
5
- expression;
6
- attributeValues;
5
+ inner;
7
6
  constructor(params) {
8
- const { expression, attributeValues } = params;
9
- this.expression = expression;
10
- this.attributeValues = attributeValues;
7
+ const { inner } = params;
8
+ this.inner = inner;
11
9
  }
12
- toJson() {
13
- return {
14
- expression: this.expression,
15
- attributeValues: this.attributeValues,
16
- };
10
+ stringify(params) {
11
+ return this.inner.stringify(params);
17
12
  }
18
- static partitionKeyEquals(params) {
19
- const { name, value, token = ":pk" } = params;
20
- return KeyConditionExpression.equals({
21
- name,
22
- value,
23
- token,
24
- });
25
- }
26
- static equals(params) {
27
- const { name, value, token } = params;
13
+ static equals(name, value) {
28
14
  return new KeyConditionExpression({
29
- expression: `${name} = ${token}`,
30
- attributeValues: { [token]: value },
15
+ inner: {
16
+ stringify: ({ attributeNames, attributeValues }) => {
17
+ attributeNames.add(name);
18
+ attributeValues.add(value);
19
+ const substitute = attributeNames.getSubstitute(name);
20
+ const reference = attributeValues.getReference(value);
21
+ return `${substitute} = ${reference}`;
22
+ },
23
+ },
31
24
  });
32
25
  }
33
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"key-condition.js","sourceRoot":"","sources":["../../../../src/commands/expressions/key-condition.ts"],"names":[],"mappings":";;;AAEA,MAAa,sBAAsB;IAChB,UAAU,CAAS;IACnB,eAAe,CAAa;IAE7C,YAAoB,MAGnB;QACC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,MAIzB;QACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QAC9C,OAAO,sBAAsB,CAAC,MAAM,CAAC;YACnC,IAAI;YACJ,KAAK;YACL,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAIb;QACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAEtC,OAAO,IAAI,sBAAsB,CAAC;YAChC,UAAU,EAAE,GAAG,IAAI,MAAM,KAAK,EAAE;YAChC,eAAe,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;CACF;AA7CD,wDA6CC"}
1
+ {"version":3,"file":"key-condition.js","sourceRoot":"","sources":["../../../../src/commands/expressions/key-condition.ts"],"names":[],"mappings":";;;AAKA,MAAa,sBAAsB;IAChB,KAAK,CAAa;IAEnC,YAAoB,MAA6B;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,MAGT;QACC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,MAAM,CACX,IAAmB,EACnB,KAAqB;QAErB,OAAO,IAAI,sBAAsB,CAAC;YAChC,KAAK,EAAE;gBACL,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,EAAE;oBACjD,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACzB,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC3B,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oBACtD,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACtD,OAAO,GAAG,UAAU,MAAM,SAAS,EAAE,CAAC;gBACxC,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF;AA/BD,wDA+BC"}
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Query = void 0;
4
4
  const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
5
+ const names_js_1 = require("./attributes/names.js");
6
+ const values_js_1 = require("./attributes/values.js");
5
7
  class Query {
6
8
  table;
7
9
  index;
@@ -15,12 +17,18 @@ class Query {
15
17
  this.exclusiveStartKey = exclusiveStartKey;
16
18
  }
17
19
  toAwsCommandInput() {
18
- const { expression, attributeValues } = this.condition.toJson();
20
+ const attributeNames = names_js_1.AttributeNames.create();
21
+ const attributeValues = values_js_1.AttributeValues.create();
22
+ const expression = this.condition.stringify({
23
+ attributeNames,
24
+ attributeValues,
25
+ });
19
26
  return {
20
27
  TableName: this.table,
21
28
  IndexName: this.index,
22
29
  KeyConditionExpression: expression,
23
- ExpressionAttributeValues: attributeValues,
30
+ ExpressionAttributeNames: attributeNames.getSubstitutions(),
31
+ ExpressionAttributeValues: attributeValues.getReferences(),
24
32
  ExclusiveStartKey: this.exclusiveStartKey,
25
33
  };
26
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/commands/query.ts"],"names":[],"mappings":";;;AAAA,wDAA6E;AAY7E,MAAa,KAAK;IACC,KAAK,CAAS;IACd,KAAK,CAAU;IACf,SAAS,CAAyB;IAClC,iBAAiB,CAAkC;IAEpE,YAAoB,MAAmB;QACrC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,iBAAiB;QACf,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAChE,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,sBAAsB,EAAE,UAAU;YAClC,yBAAyB,EAAE,eAAe;YAC1C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,2BAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAmB;QAC7B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;CACF;AAhCD,sBAgCC"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/commands/query.ts"],"names":[],"mappings":";;;AAAA,wDAA6E;AAE7E,oDAAuD;AACvD,sDAAyD;AAWzD,MAAa,KAAK;IACC,KAAK,CAAS;IACd,KAAK,CAAU;IACf,SAAS,CAAyB;IAClC,iBAAiB,CAAkC;IAEpE,YAAoB,MAAmB;QACrC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,iBAAiB;QACf,MAAM,cAAc,GAAG,yBAAc,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAG,2BAAe,CAAC,MAAM,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAC1C,cAAc;YACd,eAAe;SAChB,CAAC,CAAC;QACH,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,sBAAsB,EAAE,UAAU;YAClC,wBAAwB,EAAE,cAAc,CAAC,gBAAgB,EAAE;YAC3D,yBAAyB,EAAE,eAAe,CAAC,aAAa,EAAE;YAC1D,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,2BAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAmB;QAC7B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;CACF;AAtCD,sBAsCC"}
@@ -1,20 +1,13 @@
1
- import type { Attributes } from "../../types.js";
2
- export declare class KeyConditionExpression {
3
- private readonly expression;
4
- private readonly attributeValues;
1
+ import type { AttributePath, AttributeValue } from "../../types.js";
2
+ import type { AttributeNames } from "../attributes/names.js";
3
+ import type { AttributeValues } from "../attributes/values.js";
4
+ import type { Expression } from "./expression.js";
5
+ export declare class KeyConditionExpression implements Expression {
6
+ private readonly inner;
5
7
  private constructor();
6
- toJson(): {
7
- expression: string;
8
- attributeValues: Attributes;
9
- };
10
- static partitionKeyEquals(params: {
11
- name: string;
12
- value: string;
13
- token?: string;
14
- }): KeyConditionExpression;
15
- static equals(params: {
16
- name: string;
17
- value: string;
18
- token: string;
19
- }): KeyConditionExpression;
8
+ stringify(params: {
9
+ attributeNames: AttributeNames;
10
+ attributeValues: AttributeValues;
11
+ }): string;
12
+ static equals(name: AttributePath, value: AttributeValue): KeyConditionExpression;
20
13
  }
@@ -1,30 +1,23 @@
1
1
  export class KeyConditionExpression {
2
- expression;
3
- attributeValues;
2
+ inner;
4
3
  constructor(params) {
5
- const { expression, attributeValues } = params;
6
- this.expression = expression;
7
- this.attributeValues = attributeValues;
4
+ const { inner } = params;
5
+ this.inner = inner;
8
6
  }
9
- toJson() {
10
- return {
11
- expression: this.expression,
12
- attributeValues: this.attributeValues,
13
- };
7
+ stringify(params) {
8
+ return this.inner.stringify(params);
14
9
  }
15
- static partitionKeyEquals(params) {
16
- const { name, value, token = ":pk" } = params;
17
- return KeyConditionExpression.equals({
18
- name,
19
- value,
20
- token,
21
- });
22
- }
23
- static equals(params) {
24
- const { name, value, token } = params;
10
+ static equals(name, value) {
25
11
  return new KeyConditionExpression({
26
- expression: `${name} = ${token}`,
27
- attributeValues: { [token]: value },
12
+ inner: {
13
+ stringify: ({ attributeNames, attributeValues }) => {
14
+ attributeNames.add(name);
15
+ attributeValues.add(value);
16
+ const substitute = attributeNames.getSubstitute(name);
17
+ const reference = attributeValues.getReference(value);
18
+ return `${substitute} = ${reference}`;
19
+ },
20
+ },
28
21
  });
29
22
  }
30
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"key-condition.js","sourceRoot":"","sources":["../../../../src/commands/expressions/key-condition.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IAChB,UAAU,CAAS;IACnB,eAAe,CAAa;IAE7C,YAAoB,MAGnB;QACC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,MAIzB;QACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QAC9C,OAAO,sBAAsB,CAAC,MAAM,CAAC;YACnC,IAAI;YACJ,KAAK;YACL,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAIb;QACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAEtC,OAAO,IAAI,sBAAsB,CAAC;YAChC,UAAU,EAAE,GAAG,IAAI,MAAM,KAAK,EAAE;YAChC,eAAe,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"key-condition.js","sourceRoot":"","sources":["../../../../src/commands/expressions/key-condition.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,sBAAsB;IAChB,KAAK,CAAa;IAEnC,YAAoB,MAA6B;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,MAGT;QACC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,MAAM,CACX,IAAmB,EACnB,KAAqB;QAErB,OAAO,IAAI,sBAAsB,CAAC;YAChC,KAAK,EAAE;gBACL,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,EAAE;oBACjD,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACzB,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC3B,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oBACtD,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACtD,OAAO,GAAG,UAAU,MAAM,SAAS,EAAE,CAAC;gBACxC,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,4 +1,6 @@
1
1
  import { QueryCommand } from "@aws-sdk/lib-dynamodb";
2
+ import { AttributeNames } from "./attributes/names.js";
3
+ import { AttributeValues } from "./attributes/values.js";
2
4
  export class Query {
3
5
  table;
4
6
  index;
@@ -12,12 +14,18 @@ export class Query {
12
14
  this.exclusiveStartKey = exclusiveStartKey;
13
15
  }
14
16
  toAwsCommandInput() {
15
- const { expression, attributeValues } = this.condition.toJson();
17
+ const attributeNames = AttributeNames.create();
18
+ const attributeValues = AttributeValues.create();
19
+ const expression = this.condition.stringify({
20
+ attributeNames,
21
+ attributeValues,
22
+ });
16
23
  return {
17
24
  TableName: this.table,
18
25
  IndexName: this.index,
19
26
  KeyConditionExpression: expression,
20
- ExpressionAttributeValues: attributeValues,
27
+ ExpressionAttributeNames: attributeNames.getSubstitutions(),
28
+ ExpressionAttributeValues: attributeValues.getReferences(),
21
29
  ExclusiveStartKey: this.exclusiveStartKey,
22
30
  };
23
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/commands/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,uBAAuB,CAAC;AAY7E,MAAM,OAAO,KAAK;IACC,KAAK,CAAS;IACd,KAAK,CAAU;IACf,SAAS,CAAyB;IAClC,iBAAiB,CAAkC;IAEpE,YAAoB,MAAmB;QACrC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,iBAAiB;QACf,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAChE,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,sBAAsB,EAAE,UAAU;YAClC,yBAAyB,EAAE,eAAe;YAC1C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAmB;QAC7B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/commands/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAWzD,MAAM,OAAO,KAAK;IACC,KAAK,CAAS;IACd,KAAK,CAAU;IACf,SAAS,CAAyB;IAClC,iBAAiB,CAAkC;IAEpE,YAAoB,MAAmB;QACrC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,iBAAiB;QACf,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAC1C,cAAc;YACd,eAAe;SAChB,CAAC,CAAC;QACH,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,sBAAsB,EAAE,UAAU;YAClC,wBAAwB,EAAE,cAAc,CAAC,gBAAgB,EAAE;YAC3D,yBAAyB,EAAE,eAAe,CAAC,aAAa,EAAE;YAC1D,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAmB;QAC7B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infra-blocks/aws-dynamodb",
3
- "version": "0.6.0",
3
+ "version": "0.7.0-alpha.0",
4
4
  "description": "A convenience wrapper over @aws-sdk/client-dynamodb and @aws-sdk/lib-dynamodb.",
5
5
  "keywords": [
6
6
  "aws",