@eresearchqut/ddb-repository 1.5.6 → 1.5.8

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.
@@ -0,0 +1,50 @@
1
+ import { DynamoDBClient, ReturnConsumedCapacity } from "@aws-sdk/client-dynamodb";
2
+ export declare enum FilterOperator {
3
+ EQUALS = "=",
4
+ NOT_EQUALS = "<>",
5
+ GREATER_THAN_OR_EQUALS = ">=",
6
+ GREATER_THAN = ">",
7
+ LESS_THAN = "<",
8
+ LESS_THAN_OR_EQUALS = "<=",
9
+ IN = "IN",
10
+ BETWEEN = "BETWEEN"
11
+ }
12
+ export interface FilterExpression {
13
+ attribute: string;
14
+ value: string | number | boolean | Array<string | number> | [string, string] | [number, number];
15
+ operator: FilterOperator;
16
+ negate?: boolean;
17
+ }
18
+ export interface FilterableQuery {
19
+ filterExpressions: Array<FilterExpression>;
20
+ }
21
+ export interface ProjectedQuery {
22
+ projectedAttributes: string[];
23
+ }
24
+ export interface IndexedQuery {
25
+ index: string;
26
+ }
27
+ export interface Query extends Partial<FilterableQuery>, Partial<ProjectedQuery>, Partial<IndexedQuery> {
28
+ [key: string]: unknown;
29
+ }
30
+ export interface DynamoDbRepositoryOptions {
31
+ client: DynamoDBClient;
32
+ tableName: string;
33
+ hashKey: string;
34
+ rangeKey?: string;
35
+ returnConsumedCapacity?: ReturnConsumedCapacity;
36
+ }
37
+ export declare class DynamoDbRepository<K, T> {
38
+ private readonly dynamoDBClient;
39
+ private readonly tableName;
40
+ private readonly hashKey;
41
+ private readonly rangKey?;
42
+ private readonly returnConsumedCapacity;
43
+ constructor(options: DynamoDbRepositoryOptions);
44
+ getItem: (key: K) => Promise<T | undefined>;
45
+ putItem: (key: K, record: T) => Promise<T>;
46
+ deleteItem: (key: K) => Promise<Record<string, any> | undefined>;
47
+ updateItem: (key: K, updates: Partial<T>, remove?: string[]) => Promise<T | undefined>;
48
+ getItems: (query: Query) => Promise<Array<T> | undefined>;
49
+ batchGetItems: (keys: K[], projectedQuery?: ProjectedQuery) => Promise<Array<T | undefined>>;
50
+ }
@@ -0,0 +1,10 @@
1
+ import { ConsumedCapacity, ReturnConsumedCapacity } from "@aws-sdk/client-dynamodb";
2
+ import { HandlerExecutionContext, InitializeHandler, MetadataBearer } from "@smithy/types";
3
+ export interface ConsumedCapacityDetail {
4
+ ReturnConsumedCapacity: ReturnConsumedCapacity | undefined;
5
+ ConsumedCapacity: ConsumedCapacity | ConsumedCapacity[] | undefined;
6
+ }
7
+ export interface ConsumedCapacityMiddlewareConfig {
8
+ onConsumedCapacity: (consumedCapacity: ConsumedCapacityDetail) => Promise<unknown>;
9
+ }
10
+ export declare const consumedCapacityMiddleware: (consumedCapacityMiddlewareConfig: ConsumedCapacityMiddlewareConfig) => <Output extends MetadataBearer = MetadataBearer>(next: InitializeHandler<any, Output>, context: HandlerExecutionContext) => InitializeHandler<any, Output>;
@@ -0,0 +1,2 @@
1
+ export { Query, IndexedQuery, ProjectedQuery, FilterableQuery, FilterExpression, FilterOperator, DynamoDbRepository } from "./DynamoDbRepository";
2
+ export { consumedCapacityMiddleware, ConsumedCapacityDetail, ConsumedCapacityMiddlewareConfig } from "./consumed-capacity-middleware";
package/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "@eresearchqut/ddb-repository",
3
- "version": "1.5.6",
3
+ "version": "1.5.8",
4
4
  "description": "A TypeScript library providing a generic repository pattern implementation for AWS DynamoDB, simplifying CRUD operations and common database interactions.",
5
- "type": "commonjs",
6
- "main": "dist/index.js",
5
+ "main": "dist/index",
6
+ "types": "dist/index",
7
+ "files": [
8
+ "dist"
9
+ ],
7
10
  "publishConfig": {
8
11
  "access": "public"
9
12
  },
@@ -1,61 +0,0 @@
1
- name: Build
2
-
3
- on:
4
- push:
5
- branches: [ main, develop ]
6
- pull_request:
7
- branches: [ main, develop ]
8
-
9
- jobs:
10
- build:
11
- runs-on: ubuntu-latest
12
- steps:
13
- - name: Checkout code
14
- uses: actions/checkout@v4
15
-
16
- - name: Setup Node.js
17
- uses: actions/setup-node@v4
18
- with:
19
- node-version: 'lts/*'
20
- registry-url: 'https://registry.npmjs.org'
21
-
22
- - name: Install dependencies
23
- run: npm ci
24
-
25
- - name: Run linter
26
- run: npm run lint
27
-
28
- - name: Run tests with coverage
29
- run: npm run test:coverage
30
-
31
- - name: Upload coverage reports to Codecov
32
- uses: codecov/codecov-action@v4
33
- with:
34
- file: ./coverage/lcov.info
35
- flags: unittests
36
- name: codecov-umbrella
37
- fail_ci_if_error: false
38
-
39
- - name: Upload coverage to Coveralls
40
- uses: coverallsapp/github-action@v2
41
- with:
42
- github-token: ${{ secrets.GITHUB_TOKEN }}
43
- path-to-lcov: ./coverage/lcov.info
44
- continue-on-error: true
45
-
46
- - name: Build package
47
- run: npm run build
48
-
49
- - name: Upload build artifacts
50
- uses: actions/upload-artifact@v4
51
- with:
52
- name: dist
53
- path: dist/
54
- retention-days: 7
55
-
56
- - name: Upload coverage artifacts
57
- uses: actions/upload-artifact@v4
58
- with:
59
- name: coverage-report
60
- path: coverage/
61
- retention-days: 7
@@ -1,34 +0,0 @@
1
- name: Release
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
-
8
- jobs:
9
- release:
10
- runs-on: ubuntu-latest
11
- permissions:
12
- contents: write
13
- issues: write
14
- pull-requests: write
15
- id-token: write
16
- steps:
17
- - name: Checkout
18
- uses: actions/checkout@v4
19
- with:
20
- fetch-depth: 0
21
- - name: Setup Node.js
22
- uses: actions/setup-node@v4
23
- with:
24
- node-version: 'lts/*'
25
- - name: Install dependencies
26
- run: npm clean-install
27
- - name: Build package
28
- run: npm run build
29
- - name: Verify the integrity of provenance attestations and registry signatures for installed dependencies
30
- run: npm audit signatures
31
- - name: Semantic Release
32
- env:
33
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
34
- run: npx semantic-release
package/.releaserc.json DELETED
@@ -1,17 +0,0 @@
1
- {
2
- "branches": ["main"],
3
- "plugins": [
4
- "@semantic-release/commit-analyzer",
5
- "@semantic-release/release-notes-generator",
6
- "@semantic-release/changelog",
7
- "@semantic-release/npm",
8
- [
9
- "@semantic-release/git",
10
- {
11
- "assets": ["package.json", "package-lock.json", "CHANGELOG.md"],
12
- "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
13
- }
14
- ],
15
- "@semantic-release/github"
16
- ]
17
- }
package/CHANGELOG.md DELETED
@@ -1,85 +0,0 @@
1
- ## [1.5.6](https://github.com/eresearchqut/ddb-repository/compare/v1.5.5...v1.5.6) (2025-12-11)
2
-
3
-
4
- ### Bug Fixes
5
-
6
- * Adding NPM Publish ([6112d68](https://github.com/eresearchqut/ddb-repository/commit/6112d680e693114315ebfe63b6f542760098c76d))
7
-
8
- ## [1.5.5](https://github.com/eresearchqut/ddb-repository/compare/v1.5.4...v1.5.5) (2025-12-11)
9
-
10
-
11
- ### Bug Fixes
12
-
13
- * Adding NPM Publish ([8246366](https://github.com/eresearchqut/ddb-repository/commit/824636610a803b8a0bc07f4b1227f9ddde997de7))
14
-
15
- ## [1.5.4](https://github.com/eresearchqut/ddb-repository/compare/v1.5.3...v1.5.4) (2025-12-11)
16
-
17
-
18
- ### Bug Fixes
19
-
20
- * adding build to release action ([a396d9f](https://github.com/eresearchqut/ddb-repository/commit/a396d9f507ec7da3ebac7664f1d0641f8897280d))
21
-
22
- ## [1.5.3](https://github.com/eresearchqut/ddb-repository/compare/v1.5.2...v1.5.3) (2025-12-10)
23
-
24
-
25
- ### Bug Fixes
26
-
27
- * adding repository to package.json ([94961d2](https://github.com/eresearchqut/ddb-repository/commit/94961d22bd371742b4ed4309cfe118e95ea09958))
28
-
29
- ## [1.5.2](https://github.com/eresearchqut/ddb-repository/compare/v1.5.1...v1.5.2) (2025-12-10)
30
-
31
-
32
- ### Bug Fixes
33
-
34
- * release to npm ([274ef77](https://github.com/eresearchqut/ddb-repository/commit/274ef77b079d644571066e5c05a9edf3e4cf7396))
35
-
36
- ## [1.5.1](https://github.com/eresearchqut/ddb-repository/compare/v1.5.0...v1.5.1) (2025-12-10)
37
-
38
-
39
- ### Bug Fixes
40
-
41
- * Module type ([52a2a07](https://github.com/eresearchqut/ddb-repository/commit/52a2a07295bafcfa8b621fd59d085d7dfd567402))
42
- * package updates ([79d5672](https://github.com/eresearchqut/ddb-repository/commit/79d56725628a6ea0216b86a5c2d8f158fc008de6))
43
- * Updated installation instructions ([282e1fd](https://github.com/eresearchqut/ddb-repository/commit/282e1fd0d6ffe24a3caefa5e2c1e7067a348a3ce))
44
-
45
- # [1.5.0](https://github.com/eresearchqut/ddb-repository/compare/v1.4.1...v1.5.0) (2025-11-21)
46
-
47
-
48
- ### Features
49
-
50
- * Initialise the repository using options ([e3a2f46](https://github.com/eresearchqut/ddb-repository/commit/e3a2f46d3a8fb0ca467409369eef505d0451b6b0))
51
-
52
- ## [1.4.1](https://github.com/eresearchqut/ddb-repository/compare/v1.4.0...v1.4.1) (2025-11-21)
53
-
54
-
55
- ### Bug Fixes
56
-
57
- * Fix scope of internal methods ([c652753](https://github.com/eresearchqut/ddb-repository/commit/c652753156662fa08b818e0df068fbb2702881c9))
58
-
59
- # [1.4.0](https://github.com/eresearchqut/ddb-repository/compare/v1.3.0...v1.4.0) (2025-11-20)
60
-
61
-
62
- ### Features
63
-
64
- * Add test for the tracking of the consumed capacity and rename test class ([d113a5a](https://github.com/eresearchqut/ddb-repository/commit/d113a5a948a7dffc80e9d3a65a11203c2249ed26))
65
-
66
- # [1.3.0](https://github.com/eresearchqut/ddb-repository/compare/v1.2.0...v1.3.0) (2025-11-20)
67
-
68
-
69
- ### Features
70
-
71
- * Add test for the tracking of the consumed capacity ([4a1b23c](https://github.com/eresearchqut/ddb-repository/commit/4a1b23cadadbbb02d78507ca9d34715219fc952c))
72
-
73
- # [1.2.0](https://github.com/eresearchqut/ddb-repository/compare/v1.1.0...v1.2.0) (2025-11-19)
74
-
75
-
76
- ### Features
77
-
78
- * return the consumed capacity for each operation ([3910953](https://github.com/eresearchqut/ddb-repository/commit/391095398381a950c3393f9103d97d355c119538))
79
-
80
- # [1.1.0](https://github.com/eresearchqut/ddb-repository/compare/v1.0.2...v1.1.0) (2025-11-19)
81
-
82
-
83
- ### Features
84
-
85
- * NPM Package Badge ([fecd958](https://github.com/eresearchqut/ddb-repository/commit/fecd958d0d3725e0fc19f43f36e00eb7e5437716))
package/eslint.config.mjs DELETED
@@ -1,13 +0,0 @@
1
- import eslint from '@eslint/js';
2
- import { defineConfig, globalIgnores } from 'eslint/config';
3
-
4
- import tseslint from 'typescript-eslint';
5
-
6
- export default defineConfig([
7
- globalIgnores([
8
- "node_modules/*", // ignore its content
9
- "dist/*",
10
- ])],
11
- eslint.configs.recommended,
12
- tseslint.configs.recommended,
13
- );
package/jest.config.ts DELETED
@@ -1,28 +0,0 @@
1
- import type { Config } from '@jest/types';
2
-
3
- const config: Config.InitialOptions = {
4
- preset: 'ts-jest',
5
- testEnvironment: 'node',
6
- roots: ['<rootDir>/src', '<rootDir>/test'],
7
- testMatch: ['**/*.test.ts', '**/*.spec.ts'],
8
- collectCoverage: false, // Set to true by default if you want coverage on every run
9
- collectCoverageFrom: [
10
- 'src/**/*.ts',
11
- '!src/**/*.d.ts',
12
- '!src/**/*.interface.ts',
13
- '!src/**/index.ts', // Typically just exports, can be excluded
14
- ],
15
- coverageDirectory: 'coverage',
16
- coverageReporters: [
17
- 'text', // Console output
18
- 'text-summary', // Summary in console
19
- 'html', // HTML report in coverage/
20
- 'lcov', // For CI/CD tools
21
- 'json', // JSON format
22
- ],
23
- moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
24
- verbose: true,
25
- testTimeout: 60000
26
- };
27
-
28
- export default config;