@mojaloop/connection-manager-api 3.4.0-snapshot.1 → 3.5.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.
Files changed (3) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +99 -59
  3. package/package.json +14 -14
package/CHANGELOG.md CHANGED
@@ -2,6 +2,61 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [3.5.0](https://github.com/mojaloop/connection-manager-api/compare/v3.4.0...v3.5.0) (2026-01-15)
6
+
7
+
8
+ ### Features
9
+
10
+ * add Traefik and domain-based routing ([f2ccf27](https://github.com/mojaloop/connection-manager-api/commit/f2ccf27e459984c6b76ab2f998457af3f3cad550))
11
+ * add traefik for docker compose domain-based routing ([40c0f16](https://github.com/mojaloop/connection-manager-api/commit/40c0f1670c2b825dcef194e0161b18e418779d73))
12
+ * unify domain routing in docker-compose, and persist Vault ([8a95263](https://github.com/mojaloop/connection-manager-api/commit/8a95263ae0e04bd7dc5673f97baca46cb32fadb4))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * deps ([121a7a5](https://github.com/mojaloop/connection-manager-api/commit/121a7a5bb59c3e7e4ff642cd6d90d5bfc31a4316))
18
+ * add jest timeout ([6f59977](https://github.com/mojaloop/connection-manager-api/commit/6f5997717cc76d549eacf24184bb4273520766ef))
19
+ * add more test cases, clean up test logging and suppress DB warnings ([e65f0a7](https://github.com/mojaloop/connection-manager-api/commit/e65f0a7410ed68aac076ef74c48da337dac23cd3))
20
+ * add nvm ([e307275](https://github.com/mojaloop/connection-manager-api/commit/e307275a900c4b345b4f29ac4791c8127b3b60d2))
21
+ * bump deps ([1fcc5cf](https://github.com/mojaloop/connection-manager-api/commit/1fcc5cfbda9af7006ebbcb95e4ec98effdcf7dae))
22
+ * bump deps ([13ce461](https://github.com/mojaloop/connection-manager-api/commit/13ce4616cc24d52f7f9543938fb052adc508f03c))
23
+ * config ([e9e6cee](https://github.com/mojaloop/connection-manager-api/commit/e9e6ceea61d06c3e33fb7cca5c993ada55dd3795))
24
+ * deps ([2793011](https://github.com/mojaloop/connection-manager-api/commit/2793011fac3ee55f277d37345b94bb47a3dc9629))
25
+ * deps ([4b580fd](https://github.com/mojaloop/connection-manager-api/commit/4b580fd33bbbaad66bf53533cf258ee0be699b58))
26
+ * deps ([8cb320b](https://github.com/mojaloop/connection-manager-api/commit/8cb320b2d0cc6d936ca20a1a5b9396a218c1c9a8))
27
+ * deps ([ec5680a](https://github.com/mojaloop/connection-manager-api/commit/ec5680a30e3ec182eeb6f222f1dcf5115692728e))
28
+ * deps ([c29290a](https://github.com/mojaloop/connection-manager-api/commit/c29290a5904487ee304f8d60d13a22b6221541be))
29
+ * dfspId assignment in tests ([d3f10ed](https://github.com/mojaloop/connection-manager-api/commit/d3f10edd05ead7a54c3450fa8d12ddc3e0483bf6))
30
+ * disable auth ([fa68fae](https://github.com/mojaloop/connection-manager-api/commit/fa68fae8ff3afb199ed927d3b6fadea33c3f00d1))
31
+ * docker compose deps ([5bc4aa1](https://github.com/mojaloop/connection-manager-api/commit/5bc4aa131ae3da2f7ff3683cae900f0b5972b567))
32
+ * endpoint ([68962eb](https://github.com/mojaloop/connection-manager-api/commit/68962eb82655fcab695443b233c10996b41aef81))
33
+ * links ([6b86057](https://github.com/mojaloop/connection-manager-api/commit/6b86057cf8edf0c868c38f5a35fa3b3147d90999))
34
+ * resolve Keycloak pagination issues and standardize test configuration ([c0f5e37](https://github.com/mojaloop/connection-manager-api/commit/c0f5e37654a9d9df527827447e2b3c178d7cd291))
35
+ * urls ([1fa67c6](https://github.com/mojaloop/connection-manager-api/commit/1fa67c65f394457e88b5a9a6be18ae3b697e0332))
36
+ * vulnr ([6c7ea34](https://github.com/mojaloop/connection-manager-api/commit/6c7ea34e87c455b38826ea09387b328acd93bfe3))
37
+ * vulnr ([bd76d49](https://github.com/mojaloop/connection-manager-api/commit/bd76d49756650752ef2e300410ce86fd1209487d))
38
+
39
+
40
+ ### Documentation
41
+
42
+ * update configs and documentation to use domain-based routing (*.mcm.localhost) ([da06d77](https://github.com/mojaloop/connection-manager-api/commit/da06d77d553a86732141f0dc0a738103bbfd7bda))
43
+
44
+
45
+ ### Chore
46
+
47
+ * bump deps ([4d6bf25](https://github.com/mojaloop/connection-manager-api/commit/4d6bf25a341be11e515a979d5b53217ecdbc5eb2))
48
+ * bump deps ([5eb2ede](https://github.com/mojaloop/connection-manager-api/commit/5eb2ede9076f35e4c74739c2e1f75fd462b9d6d3))
49
+ * cleanup ([68302f5](https://github.com/mojaloop/connection-manager-api/commit/68302f59c761771ad6fc5614579db90090650240))
50
+ * fix lock file ([57c914d](https://github.com/mojaloop/connection-manager-api/commit/57c914dc241d975d6d60553790ce76a3e69332b6))
51
+ * reorder imports ([f9c7865](https://github.com/mojaloop/connection-manager-api/commit/f9c7865bfbb9e707a37f81708da59427c5a4081e))
52
+
53
+ ## [3.4.0](https://github.com/mojaloop/connection-manager-api/compare/v3.3.2...v3.4.0) (2025-12-12)
54
+
55
+
56
+ ### Features
57
+
58
+ * **csi-1941:** add dfsp gauge for alerting functionality ([#175](https://github.com/mojaloop/connection-manager-api/issues/175)) ([de1767e](https://github.com/mojaloop/connection-manager-api/commit/de1767ed62a3c29064ff4df935cc22c05d117121))
59
+
5
60
  ### [3.3.2](https://github.com/mojaloop/connection-manager-api/compare/v3.3.1...v3.3.2) (2025-12-02)
6
61
 
7
62
 
package/README.md CHANGED
@@ -29,7 +29,7 @@ The system uses OpenID Connect authentication, which is a provider-agnostic appr
29
29
  |OPENID_DISCOVERY_URL|OpenID Connect discovery URL|
30
30
  |OPENID_CLIENT_ID|Client ID for OpenID authentication|
31
31
  |OPENID_CLIENT_SECRET|Client secret for OpenID authentication|
32
- |OPENID_REDIRECT_URI|Redirect URI for OpenID authentication|http://localhost:3001/api/auth/callback
32
+ |OPENID_REDIRECT_URI|Redirect URI for OpenID authentication|http://mcm.localhost/api/auth/callback
33
33
  |OPENID_JWT_COOKIE_NAME|Cookie name for storing the JWT token|MCM-API_ACCESS_TOKEN
34
34
  |OPENID_EVERYONE_ROLE|Role assigned to all authenticated users|everyone
35
35
  |OPENID_MTA_ROLE|DFSP Admin role mapping for OpenID|mta
@@ -49,102 +49,142 @@ P12_PASS_PHRASE="choose your own password" npm start
49
49
 
50
50
  The default config requires a `mysql` db running on the default port.
51
51
 
52
- Once running, you can access the [Swagger UI interface](http://localhost:3001/docs)
52
+ Once running, you can access the [Swagger UI interface](http://mcm.localhost/api/docs)
53
53
 
54
54
  ## Running the server + db + web UI locally while developing
55
55
 
56
- The API server requires a mysql db. There's also a Web UI [https://github.com/modusbox/connection-manager-ui](https://github.com/modusbox/connection-manager-ui).
57
-
58
56
  To run them together, you can use the following setup:
59
57
 
60
- - Clone this repo and the Web UI repo at the same level
61
- - Use the `docker-compose` config in this repo to run a mysql DB, the WebUI and the API server
58
+ - Clone this repo
59
+ - Use the `docker-compose` config in this repo to run a mysql DB, Vault, Keycloak, the WebUI and the API server
62
60
 
63
61
  ```bash
64
- mkdir modusbox
65
- cd modusbox
66
- git clone https://github.com/modusbox/connection-manager-ui
62
+ mkdir mojaloop
63
+ cd mojaloop
67
64
  git clone https://github.com/modusbox/connection-manager-api
68
- cd connection-manager-api/docker
69
- docker-compose build
70
- docker-compose up
65
+ cd connection-manager-api
66
+ docker compose --profile functional --profile dev up -d --wait
71
67
  ```
72
68
 
73
- Once the docker containers are confirmed to be stable and up, you will need to create the initial HUB environment. From a new terminal
74
- session, execute the following;
69
+ ### Accessing Services
75
70
 
76
- ```bash
77
- curl -X POST "http://localhost:3001/api/environments" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"name\": \"DEV\", \"defaultDN\": { \"CN\": \"tes1.centralhub.modusbox.live\", \"O\": \"Modusbox\", \"OU\": \"MCM\" }}"
78
- ```
71
+ The stack includes Traefik for local DNS routing. All services are accessible via `*.mcm.localhost` domains:
79
72
 
80
- The UI 'localhost' can now be opened in your local browser.
73
+ | Service | URL | Description |
74
+ |---------|-----|-------------|
75
+ | MCM UI | http://mcm.localhost | Web UI |
76
+ | MCM API | http://mcm.localhost/api | API Server |
77
+ | Vault UI | http://vault.mcm.localhost | Vault UI |
78
+ | Keycloak | http://keycloak.mcm.localhost | Keycloak Admin Console |
79
+ | Mailpit | http://mailpit.mcm.localhost | Email Testing UI |
80
+ | Traefik Dashboard | http://localhost:8090 | Traefik Dashboard |
81
81
 
82
- If you want to start the app with auth enabled:
82
+ ### Customizing Configuration
83
83
 
84
- 1) create a local copy of `docker-compose-auth.yml` as in:
84
+ You can customize the domain and ports by creating a `.env` file:
85
85
 
86
- `cp docker-compose-auth.yml docker-compose-auth.local.yml`
86
+ ```bash
87
+ # .env
88
+ COMPOSE_DOMAIN=myapp.localhost
89
+ TRAEFIK_HTTP_PORT=8080
90
+ DATABASE_PORT=3307
91
+ ```
87
92
 
88
- ( `docker-compose-auth.local.yml` is git-ignored )
93
+ This will change all services to use `*.myapp.localhost`, expose Traefik on port 8080, and MySQL on port 3307.
89
94
 
90
- 1) Edit `docker-compose-auth.local.yml` and enter the security details.
95
+ **Note**: If port 80 is already in use, set `TRAEFIK_HTTP_PORT` to an available port (e.g., 8080). Access services at `http://ui.myapp.localhost:8080`.
91
96
 
92
- 1) Run the bundle with:
97
+ ### Running Multiple Instances
93
98
 
94
- `docker-compose build && docker-compose -f docker-compose.yml -f docker-compose-auth.local.yml up`
99
+ To run multiple instances simultaneously:
95
100
 
96
- ## Configuration
101
+ ```bash
102
+ # Instance 1 (default ports)
103
+ COMPOSE_PROJECT_NAME=mcm1 COMPOSE_DOMAIN=mcm1.localhost docker compose up -d
104
+
105
+ # Instance 2 (different MySQL port)
106
+ COMPOSE_PROJECT_NAME=mcm2 COMPOSE_DOMAIN=mcm2.localhost DATABASE_PORT=3307 docker compose up -d
107
+ ```
97
108
 
98
- There's a [Constants.js file](./src/constants/Constants.js) that pulls the values from the environment or uses defaults if not defined.
109
+ Access via:
110
+ - Instance 1: `http://api.mcm1.localhost`, MySQL at `localhost:3306`
111
+ - Instance 2: `http://api.mcm2.localhost`, MySQL at `localhost:3307`
99
112
 
100
- Variables:
113
+ See [.env-example](./.env-example) for all available configuration options.
114
+
115
+ ## Configuration
101
116
 
102
117
  |Environment variable|Description|Default Value
103
118
  :---|:---|:---
104
119
  | **MCM API server configuration**
105
- |PORT|mcm API HTTP port|3001
120
+ |PORT|MCM API HTTP port|3001
121
+ |CLIENT_URL|MCM UI URL|http://mcm.localhost
122
+ |SWITCH_ID|Switch identifier (required)|
123
+ |SWITCH_FQDN|Switch FQDN|switch.example.com
124
+ | **Docker Compose configuration**
125
+ |COMPOSE_DOMAIN|Domain for Traefik routing (docker-compose only)|mcm.localhost
106
126
  | **Authentication features**
107
- |OPENID_ENABLED|Enables support for OAuth2. 'TRUE' to enable| (disabled)
108
- |OPENID_ENABLE_2FA|Enables two-factor authentication 'TRUE' to enable| (disabled)
127
+ |OPENID_ENABLED|Enable OpenID Connect authentication|false
128
+ |OPENID_ENABLE_2FA|Enable two-factor authentication|false
129
+ |OPENID_ALLOW_INSECURE|Allow insecure HTTPS for development|false
130
+ |OPENID_DISCOVERY_URL|OpenID Connect discovery URL|
131
+ |OPENID_CLIENT_ID|Client ID for OpenID authentication|
132
+ |OPENID_CLIENT_SECRET|Client secret for OpenID authentication|
133
+ |LOGIN_CALLBACK|OAuth callback URL|http://mcm.localhost/api/auth/callback
134
+ |OPENID_AUDIENCE|JWT audience claim|connection-manager-api
135
+ |OPENID_JWT_COOKIE_NAME|Cookie name for JWT token|MCM-API_ACCESS_TOKEN
136
+ | **OpenID Connect groups/roles**
137
+ |OPENID_APPLICATION_GROUP|Application group name|Application
138
+ |OPENID_EVERYONE_GROUP|Authenticated users group|everyone
139
+ |OPENID_MTA_GROUP|DFSP Admin group|MTA
140
+ |OPENID_PTA_GROUP|HUB Admin group|PTA
141
+ |OPENID_DFSP_GROUP|DFSP group|DFSP
109
142
  | **Session configuration**
110
- |SESSION_STORE_SECRET|Secret for encrypting session data|
111
- |SESSION_MAX_AGE|Session timeout in milliseconds|86400000 (24 hours)
112
- |SESSION_SAME_SITE|SameSite cookie setting|'strict'
113
- |SESSION_SECURE|Whether session cookies require HTTPS|true in production
114
- | **OAuth2 roles**
115
- |MTA_ROLE|DFSP Admin role|'Application/MTA'
116
- |PTA_ROLE|HUB Admin Role|'Application/PTA'
117
- |EVERYONE_ROLE|Authenticated users role|'Internal/everyone'
143
+ |SESSION_STORE_SECRET|Secret for encrypting session data|connection_manager_session_secret
144
+ |SESSION_COOKIE_SAME_SITE_STRICT|Use strict SameSite cookie setting|true
118
145
  | **Database configuration**
119
- |DATABASE_HOST|mysql host|localhost
120
- |DATABASE_PORT|mysql port|3306
121
- |DATABASE_USER|mysql user|mcm
122
- |DATABASE_PASSWORD|mysql password|mcm
123
- |DATABASE_SCHEMA|mysql schema|mcm
146
+ |DATABASE_HOST|MySQL host|localhost
147
+ |DATABASE_PORT|MySQL port (also used for docker-compose host mapping)|3306
148
+ |DATABASE_USER|MySQL user|mcm
149
+ |DATABASE_PASSWORD|MySQL password|mcm
150
+ |DATABASE_SCHEMA|MySQL schema|mcm
124
151
  |DATABASE_SSL_ENABLED|Enable SSL for MySQL connection|false
125
152
  |DATABASE_SSL_VERIFY|Verify server certificate when using SSL|false
126
153
  |DATABASE_SSL_CA|CA certificate string for MySQL SSL|''
127
- |DB_RETRIES|Times the initial connection to the DB will be retried|10,
128
- |DB_CONNECTION_RETRY_WAIT_MILLISECONDS|Pause between retries|5000,
129
- |RUN_MIGRATIONS|If true, run db schema migration at startup. Can always be true as the schema creation is idempotent|true,
130
- |CURRENCY_CODES|Path to file containing all the supported currency codes|'./data/currencyCodes.json',
131
- |DATA_CONFIGURATION_FILE|Initial data configuration path. See specific doc|'./data/sampleConfiguration.json'
132
- | **MCM Internal Certificate Authority configuration**
133
- |P12_PASS_PHRASE|Pass phrase used to save the internal CA Key in the DB.|
134
- | **Support for self-signed certificates on OAuth Server and other TLS client connections**
135
- |EXTRA_CERTIFICATE_CHAIN_FILE_NAME|Extra trusted server certificate chain file name ( PEM-encoded, as explained in https://nodejs.org/api/tls.html#tls_tls_createsecurecontext_options )|
154
+ |DB_RETRIES|Times the initial connection to the DB will be retried|10
155
+ |DB_CONNECTION_RETRY_WAIT_MILLISECONDS|Pause between retries|1000
156
+ |DB_POOL_SIZE_MAX|Maximum database connection pool size|10
157
+ | **Vault PKI configuration**
158
+ |VAULT_ENDPOINT|Vault server endpoint|http://127.0.0.1:8233
159
+ |VAULT_AUTH_METHOD|Vault auth method (K8S or APP_ROLE)|APP_ROLE (required)
160
+ |VAULT_ROLE_ID_FILE|Path to Vault role ID file|docker/vault/tmp/role-id
161
+ |VAULT_ROLE_SECRET_ID_FILE|Path to Vault secret ID file|docker/vault/tmp/secret-id
162
+ |VAULT_PKI_SERVER_ROLE|Vault PKI role for server certs|(required)
163
+ |VAULT_PKI_CLIENT_ROLE|Vault PKI role for client certs|(required)
164
+ |VAULT_SIGN_EXPIRY_HOURS|Certificate signing expiry in hours|43800
165
+ |PRIVATE_KEY_LENGTH|RSA key length for certificates|4096
166
+ |PRIVATE_KEY_ALGORITHM|Key algorithm|rsa
167
+ |INTERNAL_CA_TTL|Internal CA certificate TTL|8760h
168
+ |VAULT_MOUNT_PKI|Vault PKI mount path|pki
169
+ |VAULT_MOUNT_INTERMEDIATE_PKI|Vault intermediate PKI mount path|pki_int
170
+ |VAULT_MOUNT_KV|Vault KV mount path|secrets
171
+ | **Certificate CSR parameters**
172
+ |CLIENT_CSR_PARAMETERS|Path to client CSR parameters JSON file|
173
+ |SERVER_CSR_PARAMETERS|Path to server CSR parameters JSON file|
174
+ |CA_CSR_PARAMETERS|Path to CA CSR parameters JSON file|
175
+ | **Support for self-signed certificates**
176
+ |EXTRA_CERTIFICATE_CHAIN_FILE_NAME|Extra trusted server certificate chain file name|
136
177
  |EXTRA_ROOT_CERT_FILE_NAME|Extra trusted server root certificate file name|
137
- | **CFSSL**
138
- |CFSSL_VERSION|Expected CFSSL version to use. Should be updated to keep in sync with the cfssl development|1.3.4
139
- |CFSSL_COMMAND_PATH|cfssl command; it should be just cfssl if it's in the PATH or the full path|cfssl
140
178
  | **Keycloak Integration**
141
179
  |KEYCLOAK_ENABLED|Enable Keycloak integration for DFSP account creation|false
142
- |KEYCLOAK_BASE_URL|Base URL of the Keycloak server|http://localhost:8080
143
- |KEYCLOAK_DISCOVERY_URL|OpenID Connect discovery URL for Keycloak|http://localhost:8080/realms/dfsps/.well-known/openid-configuration
180
+ |KEYCLOAK_BASE_URL|Base URL of the Keycloak server|http://keycloak.mcm.localhost
181
+ |KEYCLOAK_DISCOVERY_URL|OpenID Connect discovery URL for Keycloak|http://keycloak.mcm.localhost/realms/dfsps/.well-known/openid-configuration
144
182
  |KEYCLOAK_ADMIN_CLIENT_ID|Client ID for Keycloak admin operations|connection-manager-client
145
183
  |KEYCLOAK_ADMIN_CLIENT_SECRET|Client secret for Keycloak admin operations|
146
184
  |KEYCLOAK_DFSPS_REALM|Keycloak realm for DFSP accounts|dfsps
147
- |KEYCLOAK_AUTO_CREATE_ACCOUNTS|Automatically create Keycloak accounts when DFSPs are created|**false** (disabled by default)
185
+ |KEYCLOAK_AUTO_CREATE_ACCOUNTS|Automatically create Keycloak accounts when DFSPs are created|false
186
+ | **Other features**
187
+ |DFSP_WATCHER_ENABLED|Enable DFSP watcher service|false
148
188
 
149
189
  ## Testing
150
190
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mojaloop/connection-manager-api",
3
- "version": "3.4.0-snapshot.1",
3
+ "version": "3.5.0",
4
4
  "description": "Mojaloop Connection Manager API",
5
5
  "license": "Apache-2.0",
6
6
  "author": "ModusBox",
@@ -64,7 +64,7 @@
64
64
  "sanitize-html": "2.12.1",
65
65
  "oas3-tools": {
66
66
  "body-parser": "^1.20.3",
67
- "qs": "^6.14.0",
67
+ "qs": "^6.14.1",
68
68
  "js-yaml": "^3"
69
69
  },
70
70
  "postcss": {
@@ -92,16 +92,16 @@
92
92
  },
93
93
  "dependencies": {
94
94
  "@hapi/hapi": "21.4.4",
95
- "@keycloak/keycloak-admin-client": "^26.4.7",
95
+ "@keycloak/keycloak-admin-client": "^26.5.1",
96
96
  "@kubernetes/client-node": "^1.4.0",
97
- "@mojaloop/central-services-logger": "11.10.2",
97
+ "@mojaloop/central-services-logger": "11.10.3",
98
98
  "@mojaloop/central-services-metrics": "12.8.3",
99
- "@mojaloop/central-services-shared": "18.34.5",
99
+ "@mojaloop/central-services-shared": "18.34.6",
100
100
  "@ory/keto-client": "^25.4.0",
101
101
  "async-exit-hook": "^2.0.1",
102
102
  "async-retry": "^1.3.3",
103
103
  "axios": "1.13.2",
104
- "body-parser": "^2.2.1",
104
+ "body-parser": "^2.2.2",
105
105
  "connect": "^3.7.0",
106
106
  "convict": "6.2.4",
107
107
  "cookies": "^0.9.1",
@@ -117,22 +117,22 @@
117
117
  "jsonwebtoken": "^9.0.3",
118
118
  "knex": "^3.1.0",
119
119
  "moment": "^2.30.1",
120
- "mysql2": "^3.15.3",
120
+ "mysql2": "^3.16.0",
121
121
  "node-forge": "^1.3.3",
122
122
  "node-vault": "^0.10.9",
123
123
  "oas3-tools": "^2.2.3",
124
124
  "openid-client": "^6.8.1",
125
125
  "passport": "^0.7.0",
126
126
  "passport-jwt": "^4.0.1",
127
- "qs": "^6.14.0",
128
- "soap": "^1.6.1",
127
+ "qs": "^6.14.1",
128
+ "soap": "^1.6.3",
129
129
  "ulid": "3.0.2",
130
130
  "winston": "^3.19.0",
131
131
  "xml2js": "^0.6.2"
132
132
  },
133
133
  "devDependencies": {
134
- "@commitlint/cli": "^20.2.0",
135
- "@commitlint/config-conventional": "^20.2.0",
134
+ "@commitlint/cli": "^20.3.1",
135
+ "@commitlint/config-conventional": "^20.3.1",
136
136
  "@types/jest": "30.0.0",
137
137
  "audit-ci": "^7.1.0",
138
138
  "axios-mock-adapter": "2.1.0",
@@ -144,14 +144,14 @@
144
144
  "husky": "^9.1.7",
145
145
  "jest": "^30.0.2",
146
146
  "jest-extended": "^7.0.0",
147
- "npm-check-updates": "^19.2.0",
147
+ "npm-check-updates": "^19.3.1",
148
148
  "nyc": "^17.1.0",
149
- "sinon": "^21.0.0",
149
+ "sinon": "^21.0.1",
150
150
  "snazzy": "^9.0.0",
151
151
  "source-map-support": "^0.5.21",
152
152
  "standard-version": "^9.5.0",
153
153
  "standardx": "^7.0.0",
154
- "supertest": "^7.1.4",
154
+ "supertest": "^7.2.2",
155
155
  "tap-xunit": "^2.4.1",
156
156
  "tmp": "^0.2.5"
157
157
  },