diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ff9bf82ab..15ec2af632 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,113 @@ +## v1.57.0-rc.12 (2024-12-13) + +#### :bug: Bug Fix +* `gafl-webapp-service` + * [#2095](https://github.com/DEFRA/rod-licensing/pull/2095) Missing inline error on renewals id page ([@jaucourt](https://github.com/jaucourt)) + +#### Committers: 1 +- Phil Benson ([@jaucourt](https://github.com/jaucourt)) + +## v1.57.0-rc.11 (2024-12-13) + +#### :rocket: Enhancement +* `dynamics-lib` + * [#2091](https://github.com/DEFRA/rod-licensing/pull/2091) Update activity in CRM ([@nabeelamir-defra](https://github.com/nabeelamir-defra)) + +#### Committers: 1 +- Nabeel Amir ([@nabeelamir-defra](https://github.com/nabeelamir-defra)) + +## v1.57.0-rc.10 (2024-12-13) + +#### :bug: Bug Fix +* `gafl-webapp-service` + * [#2094](https://github.com/DEFRA/rod-licensing/pull/2094) Licence to start error not in error summary ([@jaucourt](https://github.com/jaucourt)) + +#### Committers: 1 +- Phil Benson ([@jaucourt](https://github.com/jaucourt)) + +## v1.57.0-rc.9 (2024-12-12) + +#### :bug: Bug Fix +* `gafl-webapp-service` + * [#2093](https://github.com/DEFRA/rod-licensing/pull/2093) Fix DOB message in Welsh ([@jaucourt](https://github.com/jaucourt)) + +#### Committers: 1 +- Phil Benson ([@jaucourt](https://github.com/jaucourt)) + +## v1.57.0-rc.8 (2024-12-12) + +#### :bug: Bug Fix +* `sales-api-service` + * [#2092](https://github.com/DEFRA/rod-licensing/pull/2092) Fix RP creation bug ([@jaucourt](https://github.com/jaucourt)) + +#### Committers: 1 +- Phil Benson ([@jaucourt](https://github.com/jaucourt)) + + +## v1.57.0-rc.6 (2024-12-10) + +#### :rocket: Enhancement +* `dynamics-lib`, `sales-api-service` + * [#2081](https://github.com/DEFRA/rod-licensing/pull/2081) Create RP Record in CRM ([@jaucourt](https://github.com/jaucourt)) + +#### Committers: 1 +- Phil Benson ([@jaucourt](https://github.com/jaucourt)) + +## v1.57.0-rc.5 (2024-12-10) + +#### :bug: Bug Fix +* `gafl-webapp-service` + * [#2088](https://github.com/DEFRA/rod-licensing/pull/2088) Change length link junior licence ([@ScottDormand96](https://github.com/ScottDormand96)) + +#### Committers: 1 +- Scott Dormand ([@ScottDormand96](https://github.com/ScottDormand96)) + +## v1.57.0-rc.4 (2024-12-09) + +#### :rocket: Enhancement +* `gafl-webapp-service` + * [#2022](https://github.com/DEFRA/rod-licensing/pull/2022) Apply more specific date error messages ([@irisfaraway](https://github.com/irisfaraway)) + +#### Committers: 1 +- Iris Faraway ([@irisfaraway](https://github.com/irisfaraway)) + +## v1.57.0-rc.3 (2024-12-06) + +#### :rocket: Enhancement +* `connectors-lib`, `gafl-webapp-service` + * [#2082](https://github.com/DEFRA/rod-licensing/pull/2082) Rename createRecurringPayment to clarify it creates agreements ([@irisfaraway](https://github.com/irisfaraway)) + +#### Committers: 1 +- Iris Faraway ([@irisfaraway](https://github.com/irisfaraway)) + +## v1.57.0-rc.2 (2024-12-04) + +#### :rocket: Enhancement +* `pocl-job` + * [#2085](https://github.com/DEFRA/rod-licensing/pull/2085) FTP POCL references ([@ScottDormand96](https://github.com/ScottDormand96)) + +#### Committers: 1 +- Scott Dormand ([@ScottDormand96](https://github.com/ScottDormand96)) + +## v1.57.0-rc.1 (2024-11-29) + +#### :rocket: Enhancement +* `business-rules-lib`, `connectors-lib`, `dynamics-lib`, `fulfilment-job`, `gafl-webapp-service`, `payment-mop-up-job`, `pocl-job`, `recurring-payments-job`, `sales-api-service`, `sqs-receiver-service` + * [#2086](https://github.com/DEFRA/rod-licensing/pull/2086) RCP fails ([@ScottDormand96](https://github.com/ScottDormand96)) + +#### Committers: 1 +- Scott Dormand ([@ScottDormand96](https://github.com/ScottDormand96)) + +## v1.57.0-rc.0 (2024-11-29) + +#### :rocket: Enhancement +* `business-rules-lib`, `connectors-lib`, `dynamics-lib`, `fulfilment-job`, `gafl-webapp-service`, `payment-mop-up-job`, `pocl-job`, `recurring-payments-job`, `sales-api-service`, `sqs-receiver-service` + * [#2075](https://github.com/DEFRA/rod-licensing/pull/2075) RCP job fails locally ([@ScottDormand96](https://github.com/ScottDormand96)) + +#### Committers: 1 +- Scott Dormand ([@ScottDormand96](https://github.com/ScottDormand96)) + ## v1.55.0-rc.6 (2024-11-25) #### :rocket: Enhancement diff --git a/docker/env/pocl_job.env.example b/docker/env/pocl_job.env.example index 5b98081fb6..73604b3125 100644 --- a/docker/env/pocl_job.env.example +++ b/docker/env/pocl_job.env.example @@ -23,12 +23,5 @@ SALES_API_TIMEOUT_MS=120000 POCL_FILE_STAGING_TABLE=PoclFileStaging POCL_RECORD_STAGING_TABLE=PoclRecordStaging -# FTP Settings -POCL_FTP_HOST=host.docker.internal -POCL_FTP_PORT=2222 -POCL_FTP_PATH=/share/pocl -POCL_FTP_USERNAME=test_sftp_user -POCL_FTP_KEY_SECRET_ID=/dev/fsh/local/sftp/ssh_ed25519_host_key - # Debug settings DEBUG=pocl:*,-pocl:ftp diff --git a/lerna.json b/lerna.json index f2ff5d2a11..1bdc8455fc 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.56.0", + "version": "1.57.0-rc.12", "npmClient": "npm", "publishConfig": { "registry": "http://registry.npmjs.org/" diff --git a/package-lock.json b/package-lock.json index 26dcd51408..a4ba7b8591 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "husky": "^7.0.4", "jest": "^27.5.1", "jest-circus": "^27.5.1", - "lerna": "^5.0.0", + "lerna": "^5.6.2", "lerna-changelog": "^2.2.0", "lerna-update-wizard": "^1.1.1", "lint-staged": "^11.2.6", diff --git a/package.json b/package.json index 3a03085abf..3e3771b729 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "husky": "^7.0.4", "jest": "^27.5.1", "jest-circus": "^27.5.1", - "lerna": "^5.0.0", + "lerna": "^5.6.2", "lerna-changelog": "^2.2.0", "lerna-update-wizard": "^1.1.1", "lint-staged": "^11.2.6", diff --git a/packages/business-rules-lib/package-lock.json b/packages/business-rules-lib/package-lock.json index 6ae77b27fd..3f5671a7c5 100644 --- a/packages/business-rules-lib/package-lock.json +++ b/packages/business-rules-lib/package-lock.json @@ -1,12 +1,12 @@ { "name": "@defra-fish/business-rules-lib", - "version": "1.56.0", + "version": "1.57.0-rc.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@defra-fish/business-rules-lib", - "version": "1.56.0", + "version": "1.57.0-rc.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { "joi": "^17.6.0", diff --git a/packages/business-rules-lib/package.json b/packages/business-rules-lib/package.json index 9304ed7e73..97bbdf400f 100644 --- a/packages/business-rules-lib/package.json +++ b/packages/business-rules-lib/package.json @@ -1,6 +1,6 @@ { "name": "@defra-fish/business-rules-lib", - "version": "1.56.0", + "version": "1.57.0-rc.12", "description": "Shared business rules for the rod licensing digital services", "type": "module", "engines": { diff --git a/packages/connectors-lib/package-lock.json b/packages/connectors-lib/package-lock.json index f2fd5dae4e..7f50520caa 100644 --- a/packages/connectors-lib/package-lock.json +++ b/packages/connectors-lib/package-lock.json @@ -1,12 +1,12 @@ { "name": "@defra-fish/connectors-lib", - "version": "1.56.0", + "version": "1.57.0-rc.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@defra-fish/connectors-lib", - "version": "1.56.0", + "version": "1.57.0-rc.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@airbrake/node": "^2.1.7", diff --git a/packages/connectors-lib/package.json b/packages/connectors-lib/package.json index e9bf58d46a..d7699261b8 100644 --- a/packages/connectors-lib/package.json +++ b/packages/connectors-lib/package.json @@ -1,6 +1,6 @@ { "name": "@defra-fish/connectors-lib", - "version": "1.56.0", + "version": "1.57.0-rc.12", "description": "Shared connectors", "type": "module", "engines": { diff --git a/packages/connectors-lib/src/__tests__/govuk-pay-api.spec.js b/packages/connectors-lib/src/__tests__/govuk-pay-api.spec.js index 43f4b3e085..4c1832c70e 100644 --- a/packages/connectors-lib/src/__tests__/govuk-pay-api.spec.js +++ b/packages/connectors-lib/src/__tests__/govuk-pay-api.spec.js @@ -120,10 +120,10 @@ describe('govuk-pay-api-connector', () => { }) }) - describe('createRecurringPayment', () => { + describe('createRecurringPaymentAgreement', () => { it('creates new payments', async () => { fetch.mockReturnValue({ ok: true, status: 200 }) - await expect(govUkPayApi.createRecurringPayment({ cost: 0 })).resolves.toEqual({ ok: true, status: 200 }) + await expect(govUkPayApi.createRecurringPaymentAgreement({ cost: 0 })).resolves.toEqual({ ok: true, status: 200 }) expect(fetch).toHaveBeenCalledWith('http://0.0.0.0/agreement', { body: JSON.stringify({ cost: 0 }), headers: recurringHeaders, @@ -137,7 +137,7 @@ describe('govuk-pay-api-connector', () => { fetch.mockImplementation(() => { throw new Error('') }) - expect(govUkPayApi.createRecurringPayment({ reference: '123' })).rejects.toEqual(Error('')) + expect(govUkPayApi.createRecurringPaymentAgreement({ reference: '123' })).rejects.toEqual(Error('')) expect(fetch).toHaveBeenCalledWith('http://0.0.0.0/agreement', { body: JSON.stringify({ reference: '123' }), headers: recurringHeaders, diff --git a/packages/connectors-lib/src/govuk-pay-api.js b/packages/connectors-lib/src/govuk-pay-api.js index 16657c2135..b3295dec3b 100644 --- a/packages/connectors-lib/src/govuk-pay-api.js +++ b/packages/connectors-lib/src/govuk-pay-api.js @@ -15,7 +15,7 @@ const headers = recurring => ({ * @param preparedPayment - see the GOV.UK pay API reference for details * @returns {Promise<*>} */ -export const createRecurringPayment = async preparedPayment => { +export const createRecurringPaymentAgreement = async preparedPayment => { try { return fetch(process.env.GOV_PAY_RCP_API_URL, { headers: headers(true), diff --git a/packages/dynamics-lib/package-lock.json b/packages/dynamics-lib/package-lock.json index 2606a068a9..7a7a733991 100644 --- a/packages/dynamics-lib/package-lock.json +++ b/packages/dynamics-lib/package-lock.json @@ -1,12 +1,12 @@ { "name": "@defra-fish/dynamics-lib", - "version": "1.56.0", + "version": "1.57.0-rc.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@defra-fish/dynamics-lib", - "version": "1.56.0", + "version": "1.57.0-rc.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { "cache-manager": "^3.6.0", diff --git a/packages/dynamics-lib/package.json b/packages/dynamics-lib/package.json index a7aa93f588..6ede3923d7 100644 --- a/packages/dynamics-lib/package.json +++ b/packages/dynamics-lib/package.json @@ -1,6 +1,6 @@ { "name": "@defra-fish/dynamics-lib", - "version": "1.56.0", + "version": "1.57.0-rc.12", "description": "Framework to support integration with dynamics", "type": "module", "engines": { diff --git a/packages/dynamics-lib/src/entities/__tests__/recurring-payment.entity.spec.js b/packages/dynamics-lib/src/entities/__tests__/recurring-payment.entity.spec.js index 8ca272c0ee..3f26d9f94d 100644 --- a/packages/dynamics-lib/src/entities/__tests__/recurring-payment.entity.spec.js +++ b/packages/dynamics-lib/src/entities/__tests__/recurring-payment.entity.spec.js @@ -17,8 +17,6 @@ describe('recurring payment entity', () => { recurringPayment.agreementId = 'c9267c6e-573d-488b-99ab-ea18431fc472' recurringPayment.publicId = '649-213' recurringPayment.status = 1 - recurringPayment.contactId = 'b3d33cln-2e83-ea11-a811-000d3a649213' - recurringPayment.activePermission = 'a5b24adf-2e83-ea11-a811-000d3a649213' recurringPayment.bindToEntity(RecurringPayment.definition.relationships.contact, contact) recurringPayment.bindToEntity(RecurringPayment.definition.relationships.activePermission, permission) @@ -66,9 +64,7 @@ describe('recurring payment entity', () => { endDate: '2019-12-15T00:00:00Z', agreementId: 'c9267c6e-573d-488b-99ab-ea18431fc472', publicId: '649-213', - status: 1, - activePermission: 'a5b24adf-2e83-ea11-a811-000d3a649213', - contactId: 'b3d33cln-2e83-ea11-a811-000d3a649213' + status: 1 }) ) }) @@ -93,8 +89,6 @@ describe('recurring payment entity', () => { defra_agreementid: 'c9267c6e-573d-488b-99ab-ea18431fc472', defra_publicid: '649-213', statecode: 1, - _defra_activepermission_value: 'a5b24adf-2e83-ea11-a811-000d3a649213', - _defra_contact_value: 'b3d33cln-2e83-ea11-a811-000d3a649213', 'defra_Contact@odata.bind': `$${contact.uniqueContentId}`, 'defra_ActivePermission@odata.bind': `$${permission.uniqueContentId}` }) @@ -121,9 +115,7 @@ describe('recurring payment entity', () => { endDate: '2019-12-15T00:00:00Z', agreementId: 'c9267c6e-573d-488b-99ab-ea18431fc472', publicId: '649-213', - status: 1, - activePermission: 'a5b24adf-2e83-ea11-a811-000d3a649213', - contactId: 'b3d33cln-2e83-ea11-a811-000d3a649213' + status: 1 }) ) }) @@ -143,8 +135,6 @@ describe('recurring payment entity', () => { defra_agreementid: 'c9267c6e-573d-488b-99ab-ea18431fc472', defra_publicid: '649-213', statecode: 1, - _defra_activepermission_value: 'a5b24adf-2e83-ea11-a811-000d3a649213', - _defra_contact_value: 'b3d33cln-2e83-ea11-a811-000d3a649213', 'defra_Contact@odata.bind': `$${contact.uniqueContentId}`, 'defra_ActivePermission@odata.bind': `$${permission.uniqueContentId}` }) diff --git a/packages/dynamics-lib/src/entities/recurring-payment.entity.js b/packages/dynamics-lib/src/entities/recurring-payment.entity.js index 12e1e4fa6c..2b07f6698e 100755 --- a/packages/dynamics-lib/src/entities/recurring-payment.entity.js +++ b/packages/dynamics-lib/src/entities/recurring-payment.entity.js @@ -134,28 +134,4 @@ export class RecurringPayment extends BaseEntity { set status (status) { super._setState('status', status) } - - /** - * The ID of the associated contact - * @type {string} - */ - get contactId () { - return super._getState('contactId') - } - - set contactId (contactId) { - super._setState('contactId', contactId) - } - - /** - * The ID of the associated active permission - * @type {string} - */ - get activePermission () { - return super._getState('activePermission') - } - - set activePermission (activePermission) { - super._setState('activePermission', activePermission) - } } diff --git a/packages/dynamics-lib/src/queries/__tests__/activity.queries.spec.js b/packages/dynamics-lib/src/queries/__tests__/activity.queries.spec.js index 66290b415a..85788234e9 100644 --- a/packages/dynamics-lib/src/queries/__tests__/activity.queries.spec.js +++ b/packages/dynamics-lib/src/queries/__tests__/activity.queries.spec.js @@ -1,4 +1,4 @@ -import { createActivity } from '../activity.queries.js' +import { createActivity, updateActivity } from '../activity.queries.js' import { dynamicsClient } from '../../client/dynamics-client.js' jest.mock('dynamics-web-api', () => { @@ -11,26 +11,26 @@ jest.mock('dynamics-web-api', () => { describe('Activity Service', () => { describe('createActivity', () => { - const mockResponse = { + const getSuccessResponse = () => ({ '@odata.context': 'https://dynamics.com/api/data/v9.1/defra_CreateRCRActivityResponse', RCRActivityId: 'abc123', ReturnStatus: 'success', SuccessMessage: 'RCR Activity - created successfully', ErrorMessage: null, oDataContext: 'https://dynamics.com/api/data/v9.1/defra_CreateRCRActivityResponse' - } + }) - const errorResponse = { + const getErrorResponse = () => ({ '@odata.context': 'https://dynamics.com/api/data/v9.1/.defra_CreateRCRActivityResponse', RCRActivityId: null, ReturnStatus: 'error', SuccessMessage: '', ErrorMessage: 'Failed to create activity', oDataContext: 'https://dynamics.com/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.defra_CreateRCRActivityResponse' - } + }) it('should call dynamicsClient with correct parameters', async () => { - dynamicsClient.executeUnboundAction.mockResolvedValue(mockResponse) + dynamicsClient.executeUnboundAction.mockResolvedValue(getSuccessResponse()) await createActivity('contact-identifier-123', 2023) @@ -42,11 +42,12 @@ describe('Activity Service', () => { }) it('should return the CRM response correctly', async () => { - dynamicsClient.executeUnboundAction.mockResolvedValue(mockResponse) + const successResponse = getSuccessResponse() + dynamicsClient.executeUnboundAction.mockResolvedValue(successResponse) const result = await createActivity('contact-identifier-123', 2024) - expect(result).toEqual(mockResponse) + expect(result).toEqual(successResponse) }) it('should handle error in dynamicsClient response', async () => { @@ -57,7 +58,7 @@ describe('Activity Service', () => { }) it('should handle the case where activity creation fails', async () => { - dynamicsClient.executeUnboundAction.mockResolvedValue(errorResponse) + dynamicsClient.executeUnboundAction.mockResolvedValue(getErrorResponse()) const result = await createActivity('invalid-contact-id', 2024) @@ -69,4 +70,64 @@ describe('Activity Service', () => { }) }) }) + + describe('updateActivity', () => { + const getSuccessResponse = () => ({ + '@odata.context': 'https://dynamics.om/api/data/v9.1/defra_UpdateRCRActivityResponse', + ReturnStatus: 'success', + SuccessMessage: 'RCR Activity - updated successfully', + ErrorMessage: null, + oDataContext: 'https://dynamics.com/api/data/v9.1/defra_UpdateRCRActivityResponse' + }) + + const getErrorResponse = () => ({ + '@odata.context': 'https://dynamics.om/api/data/v9.1/defra_UpdateRCRActivityResponse', + RCRActivityId: null, + ReturnStatus: 'error', + SuccessMessage: '', + ErrorMessage: 'Failed to update activity', + oDataContext: 'https://dynamics.com/api/data/v9.1/defra_UpdateRCRActivityResponse' + }) + + it('should call dynamicsClient with correct parameters', async () => { + dynamicsClient.executeUnboundAction.mockResolvedValue(getSuccessResponse()) + + await updateActivity('contact-identifier-123', 2023) + + expect(dynamicsClient.executeUnboundAction).toHaveBeenCalledWith('defra_UpdateRCRActivity', { + ContactId: 'contact-identifier-123', + ActivityStatus: 'SUBMITTED', + Season: 2023 + }) + }) + + it('should return the CRM response correctly', async () => { + const successResponse = getSuccessResponse() + dynamicsClient.executeUnboundAction.mockResolvedValue(successResponse) + + const result = await updateActivity('contact-identifier-123', 2024) + + expect(result).toEqual(successResponse) + }) + + it('should handle error in dynamicsClient response', async () => { + const error = new Error('Failed to update activity') + dynamicsClient.executeUnboundAction.mockRejectedValue(error) + + await expect(updateActivity('contact-identifier-123', 2024)).rejects.toThrow('Failed to update activity') + }) + + it('should handle the case where activity creation fails', async () => { + dynamicsClient.executeUnboundAction.mockResolvedValue(getErrorResponse()) + + const result = await updateActivity('invalid-contact-id', 2024) + + expect(result).toMatchObject({ + RCRActivityId: null, + ReturnStatus: 'error', + SuccessMessage: '', + ErrorMessage: 'Failed to update activity' + }) + }) + }) }) diff --git a/packages/dynamics-lib/src/queries/activity.queries.js b/packages/dynamics-lib/src/queries/activity.queries.js index 3a125c6f4f..efbbb339fb 100644 --- a/packages/dynamics-lib/src/queries/activity.queries.js +++ b/packages/dynamics-lib/src/queries/activity.queries.js @@ -22,3 +22,26 @@ export const createActivity = (contactId, season) => { return dynamicsClient.executeUnboundAction('defra_CreateRCRActivity', request) } + +/** + * Updates an RCR Activity in Microsoft Dynamics CRM. + * + * @param {string} contactId - The ID of the contact associated with the activity. + * @param {number} season - The season year for which the activity is being created. + * @returns {Promise} - A promise that resolves to the response from Dynamics CRM. + * @property {string} response.@odata.context - The OData context URL of the response. + * @property {string} response.RCRActivityId - The unique identifier of the created RCR activity. + * @property {string} response.ReturnStatus - The status of the activity creation operation (e.g., 'success'). + * @property {string} response.SuccessMessage - A message indicating successful creation of the activity. + * @property {string|null} response.ErrorMessage - An error message if the activity creation failed, otherwise null. + * @property {string} response.oDataContext - The OData context URL of the response. + */ +export const updateActivity = (contactId, season) => { + const request = { + ContactId: contactId, + ActivityStatus: 'SUBMITTED', + Season: season + } + + return dynamicsClient.executeUnboundAction('defra_UpdateRCRActivity', request) +} diff --git a/packages/fulfilment-job/package-lock.json b/packages/fulfilment-job/package-lock.json index 86d51b9dce..00b6cfbb9f 100644 --- a/packages/fulfilment-job/package-lock.json +++ b/packages/fulfilment-job/package-lock.json @@ -1,16 +1,16 @@ { "name": "@defra-fish/fulfilment-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@defra-fish/fulfilment-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@defra-fish/connectors-lib": "1.56.0", - "@defra-fish/dynamics-lib": "1.56.0", + "@defra-fish/connectors-lib": "1.57.0-rc.12", + "@defra-fish/dynamics-lib": "1.57.0-rc.12", "commander": "^7.2.0", "debug": "^4.3.3", "merge2": "^1.4.1", @@ -22,175 +22,6 @@ "node": ">=18.17" } }, - "node_modules/@airbrake/browser": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/browser/-/browser-2.1.8.tgz", - "integrity": "sha512-3xzpkQUq48R+hVbGlxUFLnv8dZg7M9OhBceX473ZrX4osxgfuKRqB+ecNawevKOftBrsjK2gNBayCXTbE+yFzQ==", - "dependencies": { - "@types/promise-polyfill": "^6.0.3", - "@types/request": "2.48.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "promise-polyfill": "^8.1.3", - "tdigest": "^0.1.1" - } - }, - "node_modules/@airbrake/node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/node/-/node-2.1.8.tgz", - "integrity": "sha512-JuEFJk9hW+5YL4kSS+E6KuiBS9YleWnzo+Fu1j9E3VXOC8bGr+wxMGfhQGFuDBHmpco3g4wAY4t+IHZMtaN0rQ==", - "dependencies": { - "@airbrake/browser": "^2.1.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@defra-fish/connectors-lib": { - "version": "1.50.0-rc.8", - "resolved": "https://registry.npmjs.org/@defra-fish/connectors-lib/-/connectors-lib-1.50.0-rc.8.tgz", - "integrity": "sha512-aXPMRNfXBF6xytV+TD7C3fbeEmMb0m2VPsaDiq4uN4ShqqTg2q3OuAo6YUZypKOkX2tH6/Hj4Qpb3UMerNJ6hg==", - "dependencies": { - "@airbrake/node": "^2.1.7", - "aws-sdk": "^2.1074.0", - "debug": "^4.3.3", - "ioredis": "^4.28.5", - "node-fetch": "^2.6.7", - "redlock": "^4.2.0" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@defra-fish/dynamics-lib": { - "version": "1.50.0-rc.8", - "resolved": "https://registry.npmjs.org/@defra-fish/dynamics-lib/-/dynamics-lib-1.50.0-rc.8.tgz", - "integrity": "sha512-K0d15rfayclGfqcoIrrv9XaHRTXqnvhPu+1cnRmoWHgaDBeKr/YrGB/H2Y0S5Mq4tk78E1QdYIupJY9oXAWuxA==", - "dependencies": { - "cache-manager": "^3.6.0", - "cache-manager-ioredis": "^2.1.0", - "debug": "^4.3.3", - "dynamics-web-api": "1.7.3", - "joi": "^17.6.0", - "moment": "^2.29.1", - "pluralize": "^8.0.0", - "simple-oauth2": "^4.3.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@hapi/boom": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", - "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", - "dependencies": { - "@hapi/hoek": "9.x.x" - } - }, - "node_modules/@hapi/bourne": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", - "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@hapi/wreck": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.2.0.tgz", - "integrity": "sha512-pJ5kjYoRPYDv+eIuiLQqhGon341fr2bNIYZjuotuPJG/3Ilzr/XtI+JAp0A86E2bYfsS3zBPABuS2ICkaXFT8g==", - "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/hoek": "9.x.x" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, - "node_modules/@types/node": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", - "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/promise-polyfill": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.6.tgz", - "integrity": "sha512-nKg0HIgdKRKfi5S3IlrpiNWqxiJOqYOV70jAtalqhvb5zJt5IoQMgy1QS3y5wsbUQPOCZHQxaPg+btBUVbA+hA==" - }, - "node_modules/@types/request": { - "version": "2.48.8", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz", - "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -202,161 +33,11 @@ "safer-buffer": "^2.1.0" } }, - "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sdk": { - "version": "2.1688.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1688.0.tgz", - "integrity": "sha512-L7AWt2+09uDQQfNRUaxvKEM+qHJdwBOln7xiMZg1kE1iNSGSQlwDPGYSFXwdMJDKJkeitJvhFrDhxon3cQ3ppA==", - "hasInstallScript": true, - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/cache-manager": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-3.6.3.tgz", - "integrity": "sha512-dS4DnV6c6cQcVH5OxzIU1XZaACXwvVIiUPkFytnRmLOACuBGv3GQgRQ1RJGRRw4/9DF14ZK2RFlZu1TUgDniMg==", - "dependencies": { - "async": "3.2.3", - "lodash.clonedeep": "^4.5.0", - "lru-cache": "6.0.0" - } - }, - "node_modules/cache-manager-ioredis": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cache-manager-ioredis/-/cache-manager-ioredis-2.1.0.tgz", - "integrity": "sha512-TCxbp9ceuFveTKWuNaCX8QjoC41rAlHen4s63u9Yd+iXlw3efYmimc/u935PKPxSdhkXpnMes4mxtK3/yb0L4g==", - "dependencies": { - "ioredis": "^4.14.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -365,14 +46,6 @@ "node": ">= 10" } }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -389,368 +62,11 @@ } } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dynamics-web-api": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/dynamics-web-api/-/dynamics-web-api-1.7.3.tgz", - "integrity": "sha512-ExscNNVrlXr/KoK5Sg/8GJyWndenHC26YKhnZVHaKOtAxWqsQzvveWnDl289BbFwPmwM18ZZWk8G5fFqPp981w==", - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/ioredis": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", - "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", - "dependencies": { - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.1", - "denque": "^1.1.0", - "lodash.defaults": "^4.2.0", - "lodash.flatten": "^4.4.0", - "lodash.isarguments": "^3.1.0", - "p-map": "^2.1.0", - "redis-commands": "1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ioredis" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -759,25 +75,6 @@ "node": ">= 8" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -796,25 +93,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/openpgp": { "version": "5.0.0-1", "resolved": "https://registry.npmjs.org/openpgp/-/openpgp-5.0.0-1.tgz", @@ -826,14 +104,6 @@ "node": ">= 8.0.0" } }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" - } - }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -842,218 +112,10 @@ "node": ">=4" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/promise-polyfill": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", - "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==" - }, - "node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "node_modules/redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "dependencies": { - "redis-errors": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/redlock": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/redlock/-/redlock-4.2.0.tgz", - "integrity": "sha512-j+oQlG+dOwcetUt2WJWttu4CZVeRzUrcVcISFmEmfyuwCVSJ93rDT7YSgg7H7rnxwoRyk/jU46kycVka5tW7jA==", - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/simple-oauth2": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", - "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", - "dependencies": { - "@hapi/hoek": "^9.0.4", - "@hapi/wreck": "^17.0.0", - "debug": "^4.1.1", - "joi": "^17.3.0" - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - }, - "node_modules/standard-as-callback": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" - }, - "node_modules/tdigest": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", - "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", - "dependencies": { - "bintrees": "1.0.2" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" - }, - "node_modules/url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } \ No newline at end of file diff --git a/packages/fulfilment-job/package.json b/packages/fulfilment-job/package.json index d73e21a955..2ff7f230c5 100644 --- a/packages/fulfilment-job/package.json +++ b/packages/fulfilment-job/package.json @@ -1,6 +1,6 @@ { "name": "@defra-fish/fulfilment-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "description": "Rod Licensing Sales Fulfilment Job", "type": "module", "engines": { @@ -35,8 +35,8 @@ "test": "echo \"Error: run tests from root\" && exit 1" }, "dependencies": { - "@defra-fish/connectors-lib": "1.56.0", - "@defra-fish/dynamics-lib": "1.56.0", + "@defra-fish/connectors-lib": "1.57.0-rc.12", + "@defra-fish/dynamics-lib": "1.57.0-rc.12", "commander": "^7.2.0", "debug": "^4.3.3", "merge2": "^1.4.1", diff --git a/packages/gafl-webapp-service/package-lock.json b/packages/gafl-webapp-service/package-lock.json index e1ddaf5770..f82f5a5fe6 100644 --- a/packages/gafl-webapp-service/package-lock.json +++ b/packages/gafl-webapp-service/package-lock.json @@ -1,16 +1,16 @@ { "name": "@defra-fish/gafl-webapp-service", - "version": "1.56.0", + "version": "1.57.0-rc.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@defra-fish/gafl-webapp-service", - "version": "1.56.0", + "version": "1.57.0-rc.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@defra-fish/business-rules-lib": "1.56.0", - "@defra-fish/connectors-lib": "1.56.0", + "@defra-fish/business-rules-lib": "1.57.0-rc.12", + "@defra-fish/connectors-lib": "1.57.0-rc.12", "@defra/hapi-gapi": "^2.0.0", "@hapi/boom": "^9.1.2", "@hapi/catbox-redis": "^6.0.2", @@ -52,62 +52,6 @@ "node": ">=18.17" } }, - "node_modules/@airbrake/browser": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/browser/-/browser-2.1.8.tgz", - "integrity": "sha512-3xzpkQUq48R+hVbGlxUFLnv8dZg7M9OhBceX473ZrX4osxgfuKRqB+ecNawevKOftBrsjK2gNBayCXTbE+yFzQ==", - "dependencies": { - "@types/promise-polyfill": "^6.0.3", - "@types/request": "2.48.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "promise-polyfill": "^8.1.3", - "tdigest": "^0.1.1" - } - }, - "node_modules/@airbrake/node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/node/-/node-2.1.8.tgz", - "integrity": "sha512-JuEFJk9hW+5YL4kSS+E6KuiBS9YleWnzo+Fu1j9E3VXOC8bGr+wxMGfhQGFuDBHmpco3g4wAY4t+IHZMtaN0rQ==", - "dependencies": { - "@airbrake/browser": "^2.1.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@defra-fish/business-rules-lib": { - "version": "1.50.0-rc.10", - "resolved": "https://registry.npmjs.org/@defra-fish/business-rules-lib/-/business-rules-lib-1.50.0-rc.10.tgz", - "integrity": "sha512-HGPMV/w4Lh11Pvdoqy985FAJVpwtEdBRBzeP4uGHSGgq+DMsSN9Cl/nK1Ul7r7hkDyKq/cLkfDcd0ys4tOWzWA==", - "dependencies": { - "joi": "^17.6.0", - "moment": "^2.29.1", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@defra-fish/connectors-lib": { - "version": "1.50.0-rc.10", - "resolved": "https://registry.npmjs.org/@defra-fish/connectors-lib/-/connectors-lib-1.50.0-rc.10.tgz", - "integrity": "sha512-l5KCX2Hath6rhSWZWxhWsBkkZUU0IZhQ87wvWtOsuGE5F4FCUTLuobGPe3SaiTvLQ3TZruDaGnXECxMtPYxVEQ==", - "dependencies": { - "@airbrake/node": "^2.1.7", - "aws-sdk": "^2.1074.0", - "debug": "^4.3.3", - "ioredis": "^4.28.5", - "node-fetch": "^2.6.7", - "redlock": "^4.2.0" - }, - "engines": { - "node": ">=18.17" - } - }, "node_modules/@defra/hapi-gapi": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@defra/hapi-gapi/-/hapi-gapi-2.1.1.tgz", @@ -660,11 +604,6 @@ "@types/responselike": "^1.0.0" } }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, "node_modules/@types/http-cache-semantics": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", @@ -686,35 +625,6 @@ "undici-types": "~5.25.1" } }, - "node_modules/@types/promise-polyfill": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.6.tgz", - "integrity": "sha512-nKg0HIgdKRKfi5S3IlrpiNWqxiJOqYOV70jAtalqhvb5zJt5IoQMgy1QS3y5wsbUQPOCZHQxaPg+btBUVbA+hA==" - }, - "node_modules/@types/request": { - "version": "2.48.8", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz", - "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/@types/responselike": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz", @@ -723,11 +633,6 @@ "@types/node": "*" } }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "node_modules/a-sync-waterfall": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", @@ -1233,51 +1138,6 @@ "node": ">= 4.5.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sdk": { - "version": "2.1688.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1688.0.tgz", - "integrity": "sha512-L7AWt2+09uDQQfNRUaxvKEM+qHJdwBOln7xiMZg1kE1iNSGSQlwDPGYSFXwdMJDKJkeitJvhFrDhxon3cQ3ppA==", - "hasInstallScript": true, - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-sdk/node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" - }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/axios": { "version": "1.6.5", "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", @@ -1410,11 +1270,6 @@ "file-uri-to-path": "1.0.0" } }, - "node_modules/bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" - }, "node_modules/blankie": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/blankie/-/blankie-5.0.0.tgz", @@ -1427,11 +1282,6 @@ "node": ">= 8.9.0" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1463,16 +1313,6 @@ "node": ">=0.10.0" } }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, "node_modules/buffer-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", @@ -1491,30 +1331,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/buffer/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/buffer/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "node_modules/cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1561,12 +1377,20 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1915,14 +1739,6 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", @@ -2053,17 +1869,21 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { @@ -2242,12 +2062,27 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", "dependencies": { - "stackframe": "^1.3.4" + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, "node_modules/es5-ext": { @@ -2308,14 +2143,6 @@ "es5-ext": "~0.10.14" } }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2777,14 +2604,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -2868,6 +2687,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2879,14 +2699,20 @@ "dev": true }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3303,6 +3129,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -3606,17 +3433,19 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, "engines": { "node": ">= 0.4.0" } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3626,6 +3455,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -3637,20 +3467,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, + "dev": true, "engines": { "node": ">= 0.4" }, @@ -3697,6 +3514,19 @@ "node": ">=0.10.0" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hoek": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz", @@ -3760,11 +3590,6 @@ "url": "https://github.com/sponsors/mashpie" } }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -3801,7 +3626,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/ini": { "version": "1.3.8", @@ -3897,21 +3723,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3936,17 +3747,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", @@ -4027,20 +3827,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4131,20 +3917,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -4181,6 +3953,13 @@ "node": ">=0.10.0" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, "node_modules/isemail": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", @@ -4207,14 +3986,6 @@ "node": ">=0.10.0" } }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/joi": { "version": "17.11.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", @@ -5615,11 +5386,6 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "node_modules/promise-polyfill": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", - "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==" - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -5668,15 +5434,6 @@ "node": ">=6" } }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5764,12 +5521,6 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -5818,17 +5569,6 @@ "node": ">=4" } }, - "node_modules/redlock": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/redlock/-/redlock-4.2.0.tgz", - "integrity": "sha512-j+oQlG+dOwcetUt2WJWttu4CZVeRzUrcVcISFmEmfyuwCVSJ93rDT7YSgg7H7rnxwoRyk/jU46kycVka5tW7jA==", - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -6127,11 +5867,6 @@ "node": ">=14.0.0" } }, - "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" - }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -6164,6 +5899,24 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -6504,11 +6257,6 @@ "node": "*" } }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - }, "node_modules/standard-as-callback": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", @@ -6638,14 +6386,6 @@ "es6-symbol": "^3.1.1" } }, - "node_modules/tdigest": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", - "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", - "dependencies": { - "bintrees": "1.0.2" - } - }, "node_modules/terser": { "version": "3.17.0", "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", @@ -7056,12 +6796,6 @@ "node": ">=0.10.0" } }, - "node_modules/unset-value/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -7079,20 +6813,6 @@ "deprecated": "Please see https://github.com/lydell/urix#deprecated", "dev": true }, - "node_modules/url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - }, "node_modules/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -7125,18 +6845,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -7316,24 +7024,6 @@ "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", "dev": true }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -7373,26 +7063,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/packages/gafl-webapp-service/package.json b/packages/gafl-webapp-service/package.json index 3d48cf728a..53014dd80d 100644 --- a/packages/gafl-webapp-service/package.json +++ b/packages/gafl-webapp-service/package.json @@ -1,6 +1,6 @@ { "name": "@defra-fish/gafl-webapp-service", - "version": "1.56.0", + "version": "1.57.0-rc.12", "description": "The websales frontend for the GAFL service", "type": "module", "engines": { @@ -36,8 +36,8 @@ "prepare": "gulp --gulpfile build/gulpfile.cjs" }, "dependencies": { - "@defra-fish/business-rules-lib": "1.56.0", - "@defra-fish/connectors-lib": "1.56.0", + "@defra-fish/business-rules-lib": "1.57.0-rc.12", + "@defra-fish/connectors-lib": "1.57.0-rc.12", "@defra/hapi-gapi": "^2.0.0", "@hapi/boom": "^9.1.2", "@hapi/catbox-redis": "^6.0.2", diff --git a/packages/gafl-webapp-service/src/locales/cy.json b/packages/gafl-webapp-service/src/locales/cy.json index fa2942b23b..2a87d1b4ca 100644 --- a/packages/gafl-webapp-service/src/locales/cy.json +++ b/packages/gafl-webapp-service/src/locales/cy.json @@ -272,10 +272,17 @@ "disability_concession_title_you": "Ydych chi’n derbyn unrhyw un o’r canlynol?", "dob_day": "Diwrnod", "dob_entry_hint": "Er enghraifft, 23 11 1979", - "dob_error_format_max": "Mae'n rhaid i’r dyddiad geni fod yn y gorffennol", - "dob_error_format_min": "Nodwch eich dyddiad geni a chynnwys y diwrnod, y mis a’r flwyddyn", - "dob_error_format": "Nodwch ddyddiad geni deiliad y drwydded a chynnwys diwrnod, mis a blwyddyn", - "dob_error": "Rhowch y dyddiad geni", + "dob_error_date_real": "Mae’n rhaid i’r dyddiad geni fod yn ddyddiad dilys", + "dob_error_missing_day_and_month": "Mae’n rhaid i’r dyddiad geni gynnwys diwrnod a mis", + "dob_error_missing_day_and_year": "Mae’n rhaid i’r dyddiad geni gynnwys diwrnod a blwyddyn", + "dob_error_missing_month_and_year": "Mae’n rhaid i’r dyddiad geni gynnwys mis a blwyddyn", + "dob_error_missing_day": "Mae’n rhaid i’r dyddiad geni gynnwys diwrnod", + "dob_error_missing_month": "Mae’n rhaid i’r dyddiad geni gynnwys mis", + "dob_error_missing_year": "Mae’n rhaid i’r dyddiad geni gynnwys blwyddyn", + "dob_error_non_numeric": "Rhowch rifau yn unig", + "dob_error_year_min": "Mae’r dyddiad geni yn rhy bell yn ôl", + "dob_error_year_max": "Mae'n rhaid i’r dyddiad geni fod yn y gorffennol", + "dob_error": "Rhowch dyddiad geni", "dob_month": "Mis", "dob_privacy_link_prefix": "Os nad ydych yn darparu dyddiad geni cywir, gallai hynny achosi oedi wrth adnewyddu trwydded, neu olygu nad yw’r drwydded yn ddilys. Darllenwch am ", "dob_privacy_link": "sut yr ydym ni'n defnyddio data personol (yn agor ar dudalen newydd)", @@ -318,15 +325,19 @@ "header_service_name_title": " - Cael trwydded bysgota â gwialen", "identification": "Rhif adnabod", "identify_body_protect_info": "Er mwyn dod o hyd i fanylion eich trwydded, bydd angen i ni wybod pwy ydych chi. Mae hyn yn ein helpu i ddiogelu eich gwybodaeth bersonol.", + "identify_error_date_real": "Mae’n rhaid i’r dyddiad geni fod yn ddyddiad dilys", "identify_error_empty_postcode": "Nid ydych wedi nodi cod post", "identify_error_empty": "Rhowch chwe nodyn olaf eich trwydded", - "identify_error_enter_bday_max": "Mae’n rhaid i’ch dyddiad geni fod yn y gorffennol", - "identify_error_enter_bday_min": "Mae eich dyddiad geni yn rhy bell yn ôl", - "identify_error_enter_bday": "Nodwch eich dyddiad geni a chynnwys y diwrnod, y mis a’r flwyddyn", "identify_error_invalid_1": "Nid oes gennym gofnod o rif trwydded sy'n gorffen gyda ", "identify_error_invalid_2": " sy’n cyd-fynd â'r manylion hyn.", + "identify_error_missing_day": "Mae’n rhaid i’r dyddiad geni gynnwys diwrnod", + "identify_error_missing_month": "Mae’n rhaid i’r dyddiad geni gynnwys mis", + "identify_error_missing_year": "Mae’n rhaid i’r dyddiad geni gynnwys blwyddyn", + "identify_error_non_numeric": "Rhowch rifau yn unig", "identify_error_pattern_postcode": "Your postcode doesn’t look right. Check and enter again", "identify_error_pattern": "Nid yw chwe nodyn olaf eich trwydded yn edrych yn gywir. Gwiriwch a rhowch gynnig arall arni", + "identify_error_year_min": "Mae’r dyddiad geni yn rhy bell yn ôl", + "identify_error_year_max": "Mae'n rhaid i’r dyddiad geni fod yn y gorffennol", "identify_label_last_six_hint": "Er enghraifft F4A315", "identify_label_last_six": "Chwe nodyn olaf eich trwydded.", "identify_label_licence_ending": "Rhif trwydded yn gorffen gyda’r canlynol", @@ -407,8 +418,16 @@ "licence_num": "Rhif trwydded", "licence_start_days": " diwrnod nesaf", "licence_start_enter_todays_date": "Rhowch ddyddiad heddiw os ydych chi am i’r drwydded 1 diwrnod neu 8 diwrnod ddechrau yn hwyrach heddiw.", + "licence_start_error_date_real": "Mae’n rhaid i ddyddiad dechrau’r drwydded fod yn ddyddiad dilys", + "licence_start_error_missing_day_and_month": "Mae’n rhaid i ddyddiad dechrau’r drwydded gynnwys diwrnod a mis", + "licence_start_error_missing_day_and_year": "Mae’n rhaid i ddyddiad dechrau’r drwydded gynnwys diwrnod a blwyddyn", + "licence_start_error_missing_month_and_year": "Mae’n rhaid i ddyddiad dechrau’r drwydded gynnwys mis a blwyddyn", + "licence_start_error": "Rhowch ddyddiad dechrau’r drwydded", + "licence_start_error_missing_day": "Mae’n rhaid i ddyddiad dechrau’r drwydded gynnwys diwrnod", + "licence_start_error_missing_month": "Mae’n rhaid i ddyddiad dechrau’r drwydded gynnwys mis", + "licence_start_error_missing_year": "Mae’n rhaid i ddyddiad dechrau’r drwydded gynnwys blwyddyn", + "licence_start_error_non_numeric": "Rhowch rifau yn unig", "licence_start_error_choose_when": "Dewiswch pryd y dylai'r drwydded ddechrau", - "licence_start_error_format": "Nodwch y dyddiad y mae angen i'r drwydded ddechrau a chynnwys diwrnod, mis a blwyddyn", "licence_start_error_within": "Nodwch ddyddiad o fewn y ", "licence_start_hint": "Rhowch ddyddiad hyd at a chan gynnwys ", "licence_start_later": "Yn hwyrach", diff --git a/packages/gafl-webapp-service/src/locales/en.json b/packages/gafl-webapp-service/src/locales/en.json index d5fc5b9f92..ca26e7c886 100644 --- a/packages/gafl-webapp-service/src/locales/en.json +++ b/packages/gafl-webapp-service/src/locales/en.json @@ -272,10 +272,19 @@ "disability_concession_title_you": "Do you receive any of the following?", "dob_day": "day", "dob_entry_hint": "For example, 23 11 1979", - "dob_error_format_max": "The date of birth must be in the past", - "dob_error_format_min": "Enter the date of birth and include a day, month and year", - "dob_error_format": "Enter the licence holder’s date of birth and include a day, month and year", - "dob_error": "Enter the date of birth", + + "dob_error_date_real": "Date of birth must be a real date", + "dob_error_missing_day_and_month": "Date of birth must include a day and month", + "dob_error_missing_day_and_year": "Date of birth must include a day and year", + "dob_error_missing_month_and_year": "Date of birth must include a month and year", + "dob_error_missing_day": "Date of birth must include a day", + "dob_error_missing_month": "Date of birth must include a month", + "dob_error_missing_year": "Date of birth must include a year", + "dob_error_non_numeric": "Enter only numbers", + "dob_error_year_min": "Date of birth is too long ago", + "dob_error_year_max": "The date of birth must be in the past", + "dob_error": "Enter a date of birth", + "dob_month": "month", "dob_privacy_link_prefix": "If you do not provide a correct date of birth, this may cause delays when a licence is renewed or mean that a licence is not valid. Read about ", "dob_privacy_link": "how we use personal information (opens in new tab)", @@ -318,15 +327,19 @@ "header_service_name_title": " - Get a rod fishing licence", "identification": "Identification", "identify_body_protect_info": "To find your licence details we first need to identify you. This helps us protect your personal information.", + "identify_error_date_real": "Date of birth must be a real date", "identify_error_empty_postcode": "You did not enter a postcode", "identify_error_empty": "Enter the last six characters of your licence number", - "identify_error_enter_bday_max": "Your date of birth must be in the past", - "identify_error_enter_bday_min": "Your date of birth is too long ago", - "identify_error_enter_bday": "Enter your date of birth and include a day, month and year", "identify_error_invalid_1": "We do not have any record of a licence number ending ", "identify_error_invalid_2": " matching these details.", + "identify_error_missing_day": "Date of birth must include a day", + "identify_error_missing_month": "Date of birth must include a month", + "identify_error_missing_year": "Date of birth must include a year", + "identify_error_non_numeric": "Enter only numbers", "identify_error_pattern_postcode": "Your postcode doesn’t look right. Check and enter again", "identify_error_pattern": "The last six characters of your licence number don’t look right. Check and enter again", + "identify_error_year_min": "Date of birth is too long ago", + "identify_error_year_max": "The date of birth must be in the past", "identify_label_last_six_hint": "For example F4A315", "identify_label_last_six": "The last six characters of your licence number", "identify_label_licence_ending": "The licence number ending", @@ -407,8 +420,16 @@ "licence_num": "Licence number", "licence_start_days": " days", "licence_start_enter_todays_date": "Enter today’s date if you want the 1-day or 8-day licence to start later today.", + "licence_start_error_date_real": "Licence start date must be a real date", + "licence_start_error_missing_day_and_month": "Licence start date must include a day and month", + "licence_start_error_missing_day_and_year": "Licence start date must include a day and year", + "licence_start_error_missing_month_and_year": "Licence start date must include a month and year", + "licence_start_error_missing_day": "Licence start date must include a day", + "licence_start_error_missing_month": "Licence start date must include a month", + "licence_start_error_missing_year": "Licence start date must include a year", + "licence_start_error_non_numeric": "Enter only numbers", + "licence_start_error": "Enter a licence start date", "licence_start_error_choose_when": "Choose when the licence should start", - "licence_start_error_format": "Enter the date the licence needs to start, include a day, month and year", "licence_start_error_within": "Enter a date within the next ", "licence_start_hint": "Enter a date up to and including ", "licence_start_later": "Later", diff --git a/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/__tests__/route.spec.js b/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/__tests__/route.spec.js index 43ffc49a6c..7dc8cd1fcd 100644 --- a/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/__tests__/route.spec.js +++ b/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/__tests__/route.spec.js @@ -1,15 +1,30 @@ -import { getData, validator } from '../route' +import { getData } from '../route' import pageRoute from '../../../../routes/page-route.js' import { nextPage } from '../../../../routes/next-page.js' -import { LICENCE_FOR } from '../../../../uri.js' +import { DATE_OF_BIRTH, LICENCE_FOR } from '../../../../uri.js' +import { dateOfBirthValidator, getDateErrorFlags } from '../../../../schema/validators/validators.js' -jest.mock('../../../../routes/next-page.js', () => ({ - nextPage: jest.fn() -})) +jest.mock('../../../../routes/next-page.js') jest.mock('../../../../routes/page-route.js') +jest.mock('../../../../schema/validators/validators.js') +jest.mock('../../../../uri.js', () => ({ + ...jest.requireActual('../../../../uri.js'), + DATE_OF_BIRTH: { + page: Symbol('date-of-birth-page'), + uri: Symbol('/date-of-birth') + }, + LICENCE_TO_START: { + page: Symbol('licence-to-start-page'), + uri: Symbol('/licence-to-start') + } +})) describe('name > route', () => { - const mockRequest = (statusGet = () => {}, transactionGet = () => {}) => ({ + const mockRequest = ({ + pageGet = async () => {}, + statusGet = async () => ({ [LICENCE_FOR.page]: true }), + transactionGet = async () => ({ isLicenceForYou: null }) + } = {}) => ({ cache: () => ({ helpers: { transaction: { @@ -17,6 +32,9 @@ describe('name > route', () => { }, status: { getCurrentPermission: statusGet + }, + page: { + getCurrentPermission: pageGet } } }) @@ -24,52 +42,89 @@ describe('name > route', () => { describe('getData', () => { it('should return isLicenceForYou as true, if isLicenceForYou is true on the transaction cache', async () => { - const transaction = () => ({ + const transactionGet = async () => ({ isLicenceForYou: true }) - const status = () => ({ + const statusGet = async () => ({ [LICENCE_FOR.page]: true }) - const result = await getData(mockRequest(status, transaction)) + + const result = await getData(mockRequest({ statusGet, transactionGet })) expect(result.isLicenceForYou).toBeTruthy() }) it('should return isLicenceForYou as false, if isLicenceForYou is false on the transaction cache', async () => { - const transaction = () => ({ + const transactionGet = async () => ({ isLicenceForYou: false }) - const status = () => ({ + const statusGet = async () => ({ [LICENCE_FOR.page]: true }) - const result = await getData(mockRequest(status, transaction)) + const result = await getData(mockRequest({ statusGet, transactionGet })) expect(result.isLicenceForYou).toBeFalsy() }) + + it.each([ + ['full-date', 'object.missing'], + ['day', 'any.required'] + ])('should add error details ({%s: %s}) to the page data', async (errorKey, errorValue) => { + const pageGet = async () => ({ + error: { [errorKey]: errorValue } + }) + + const result = await getData(mockRequest({ pageGet })) + expect(result.error).toEqual({ errorKey, errorValue }) + }) + + it('omits error if there is no error', async () => { + const result = await getData(mockRequest()) + expect(result.error).toBeUndefined() + }) + + it('adds return value of getErrorFlags to the page data', async () => { + const errorFlags = { unique: Symbol('error-flags') } + getDateErrorFlags.mockReturnValueOnce(errorFlags) + const result = await getData(mockRequest()) + expect(result).toEqual(expect.objectContaining(errorFlags)) + }) + + it('passes error to getErrorFlags', async () => { + const error = Symbol('error') + await getData(mockRequest({ pageGet: async () => ({ error }) })) + expect(getDateErrorFlags).toHaveBeenCalledWith(error) + }) + + it('passes correct page name when getting page cache', async () => { + const pageGet = jest.fn(() => ({})) + await getData(mockRequest({ pageGet })) + expect(pageGet).toHaveBeenCalledWith(DATE_OF_BIRTH.page) + }) }) describe('redirectToStartOfJourney', () => { it('should throw a redirect if not been to LICENCE_FOR page', async () => { - const transaction = () => ({ + const transactionGet = async () => ({ isLicenceForYou: true }) - const status = () => ({ + const statusGet = async () => ({ [LICENCE_FOR.page]: false }) - const func = () => getData(mockRequest(status, transaction)) + const func = () => getData(mockRequest({ statusGet, transactionGet })) await expect(func).rejects.toThrowRedirectTo(LICENCE_FOR.uri) }) it('should not throw a redirect if not been to LICENCE_FOR page', async () => { - const transaction = () => ({ + const transactionGet = async () => ({ isLicenceForYou: true }) - const status = () => ({ + const statusGet = async () => ({ [LICENCE_FOR.page]: true }) let error try { - await getData(mockRequest(status, transaction)) + await getData(mockRequest({ statusGet, transactionGet })) } catch (e) { error = e } @@ -79,8 +134,8 @@ describe('name > route', () => { }) describe('default', () => { - it('should call the pageRoute with date-of-birth, /buy/date-of-birth, validator and nextPage', async () => { - expect(pageRoute).toBeCalledWith('date-of-birth', '/buy/date-of-birth', validator, nextPage, getData) + it('should call the pageRoute with date-of-birth, /buy/date-of-birth, dateOfBirthValidator and nextPage', async () => { + expect(pageRoute).toBeCalledWith(DATE_OF_BIRTH.page, DATE_OF_BIRTH.uri, dateOfBirthValidator, nextPage, getData) }) }) }) diff --git a/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/date-of-birth.njk b/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/date-of-birth.njk index 0a29acedb0..65512b9fd4 100644 --- a/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/date-of-birth.njk +++ b/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/date-of-birth.njk @@ -9,11 +9,37 @@ {% set errorMap = { - 'date-of-birth': { - 'date.format': { ref: '#date-of-birth-day', text: mssgs.dob_error_format }, - 'date.max': { ref: '#date-of-birth-day', text: mssgs.dob_error_format_max }, - 'date.min': { ref: '#date-of-birth-day', text: mssgs.dob_error_format_min } - } + 'full-date': { + 'object.missing': { ref: '#date-of-birth-day', text: mssgs.dob_error } + }, + 'day-and-month': { + 'object.missing': { ref: '#date-of-birth-day', text: mssgs.dob_error_missing_day_and_month } + }, + 'day-and-year': { + 'object.missing': { ref: '#date-of-birth-day', text: mssgs.dob_error_missing_day_and_year } + }, + 'month-and-year': { + 'object.missing': { ref: '#date-of-birth-month', text: mssgs.dob_error_missing_month_and_year } + }, + 'day': { + 'any.required': { ref: '#date-of-birth-day', text: mssgs.dob_error_missing_day } + }, + 'month': { + 'any.required': { ref: '#date-of-birth-month', text: mssgs.dob_error_missing_month } + }, + 'year': { + 'any.required': { ref: '#date-of-birth-year', text: mssgs.dob_error_missing_year } + }, + 'non-numeric': { + 'number.base': { ref: '#date-of-birth-day', text: mssgs.dob_error_non_numeric } + }, + 'invalid-date': { + 'any.custom': { ref: '#date-of-birth-day', text: mssgs.dob_error_date_real } + }, + 'date-range': { + 'date.min': { ref: '#date-of-birth-day', text: mssgs.dob_error_year_min }, + 'date.max': { ref: '#date-of-birth-day', text: mssgs.dob_error_year_max } + } } %} @@ -21,21 +47,21 @@ { label: mssgs.dob_day, name: 'day', - classes: "govuk-input--width-2", + classes: "govuk-input--width-2 govuk-input--error" if data.isDayError else "govuk-input--width-2", value: payload['date-of-birth-day'], attributes: { maxlength : 2 } }, { label: mssgs.dob_month, name: 'month', - classes: "govuk-input--width-2", + classes: "govuk-input--width-2 govuk-input--error" if data.isMonthError else "govuk-input--width-2", value: payload['date-of-birth-month'], attributes: { maxlength : 2 } }, { label: mssgs.dob_year, name: 'year', - classes: "govuk-input--width-4", + classes: "govuk-input--width-4 govuk-input--error" if data.isYearError else "govuk-input--width-4", value: payload['date-of-birth-year'], attributes: { maxlength : 4 } } @@ -56,6 +82,6 @@ id: "date-of-birth", namePrefix: "date-of-birth", items: dateInputItems, - errorMessage: { text: mssgs.dob_error } if error + errorMessage: { text: errorMap[data.error.errorKey][data.error.errorValue].text } if data.error }) }} {% endblock %} diff --git a/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/route.js b/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/route.js index c20b48634d..1e0b00bc1b 100644 --- a/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/route.js +++ b/packages/gafl-webapp-service/src/pages/concessions/date-of-birth/route.js @@ -1,19 +1,8 @@ import { DATE_OF_BIRTH, LICENCE_FOR } from '../../../uri.js' -import Joi from 'joi' import pageRoute from '../../../routes/page-route.js' -import { validation } from '@defra-fish/business-rules-lib' import { nextPage } from '../../../routes/next-page.js' import GetDataRedirect from '../../../handlers/get-data-redirect.js' - -export const validator = payload => { - const dateOfBirth = `${payload['date-of-birth-year']}-${payload['date-of-birth-month']}-${payload['date-of-birth-day']}` - Joi.assert( - { 'date-of-birth': dateOfBirth }, - Joi.object({ - 'date-of-birth': validation.contact.createBirthDateValidator(Joi) - }) - ) -} +import { dateOfBirthValidator, getDateErrorFlags } from '../../../schema/validators/validators.js' const redirectToStartOfJourney = status => { if (!status[LICENCE_FOR.page]) { @@ -24,10 +13,17 @@ const redirectToStartOfJourney = status => { export const getData = async request => { const { isLicenceForYou } = await request.cache().helpers.transaction.getCurrentPermission() const status = await request.cache().helpers.status.getCurrentPermission() + const page = await request.cache().helpers.page.getCurrentPermission(DATE_OF_BIRTH.page) + const pageData = { isLicenceForYou, ...getDateErrorFlags(page?.error) } redirectToStartOfJourney(status) - return { isLicenceForYou } + if (page?.error) { + const [errorKey] = Object.keys(page.error) + const errorValue = page.error[errorKey] + pageData.error = { errorKey, errorValue } + } + return pageData } -export default pageRoute(DATE_OF_BIRTH.page, DATE_OF_BIRTH.uri, validator, nextPage, getData) +export default pageRoute(DATE_OF_BIRTH.page, DATE_OF_BIRTH.uri, dateOfBirthValidator, nextPage, getData) diff --git a/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/__tests__/route.spec.js b/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/__tests__/route.spec.js index 3d76e2b007..11519e4f07 100644 --- a/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/__tests__/route.spec.js +++ b/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/__tests__/route.spec.js @@ -1,21 +1,42 @@ +import pageRoute from '../../../../routes/page-route.js' +import { nextPage } from '../../../../routes/next-page.js' import { getData } from '../route' +import { LICENCE_TO_START } from '../../../../uri.js' +import { startDateValidator, getDateErrorFlags } from '../../../../schema/validators/validators.js' -jest.mock('../../../../processors/uri-helper.js') +jest.mock('../../../../routes/next-page.js') +jest.mock('../../../../routes/page-route.js') +jest.mock('../../../../schema/validators/validators.js') +jest.mock('../../../../uri.js', () => ({ + ...jest.requireActual('../../../../uri.js'), + LICENCE_TO_START: { + page: Symbol('licence-to-start-page'), + uri: Symbol('/licence-to-start') + } +})) +jest.mock('../../../../schema/validators/validators.js') describe('licence-to-start > route', () => { - const getMockRequest = (isLicenceForYou = true) => ({ + const getMockRequest = (isLicenceForYou = true, pageGet = () => {}) => ({ cache: () => ({ helpers: { transaction: { getCurrentPermission: () => ({ isLicenceForYou }) + }, + page: { + getCurrentPermission: pageGet } } }) }) describe('getData', () => { + beforeEach(() => { + getDateErrorFlags.mockClear() + }) + it('should return isLicenceForYou as true, if isLicenceForYou is true on the transaction cache', async () => { const request = getMockRequest() const result = await getData(request) @@ -27,5 +48,47 @@ describe('licence-to-start > route', () => { const result = await getData(request) expect(result.isLicenceForYou).toBeFalsy() }) + + it.each([ + ['full-date', 'object.missing'], + ['day', 'any.required'] + ])('should add error details ({%s: %s}) to the page data', async (errorKey, errorValue) => { + const pageGet = async () => ({ + error: { [errorKey]: errorValue } + }) + + const result = await getData(getMockRequest(undefined, pageGet)) + expect(result.error).toEqual({ errorKey, errorValue }) + }) + + it('omits error if there is no error', async () => { + const result = await getData(getMockRequest()) + expect(result.error).toBeUndefined() + }) + + it('passes correct page name when getting page cache', async () => { + const pageGet = jest.fn(() => {}) + await getData(getMockRequest(undefined, pageGet)) + expect(pageGet).toHaveBeenCalledWith(LICENCE_TO_START.page) + }) + + it('adds return value of getErrorFlags to the page data', async () => { + const errorFlags = { unique: Symbol('error-flags') } + getDateErrorFlags.mockReturnValueOnce(errorFlags) + const result = await getData(getMockRequest()) + expect(result).toEqual(expect.objectContaining(errorFlags)) + }) + + it('passes error to getErrorFlags', async () => { + const error = Symbol('error') + await getData(getMockRequest(undefined, async () => ({ error }))) + expect(getDateErrorFlags).toHaveBeenCalledWith(error) + }) + }) + + describe('default', () => { + it('should call the pageRoute with date-of-birth, /buy/date-of-birth, dateOfBirthValidator and nextPage', async () => { + expect(pageRoute).toBeCalledWith(LICENCE_TO_START.page, LICENCE_TO_START.uri, startDateValidator, nextPage, getData) + }) }) }) diff --git a/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/licence-to-start.njk b/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/licence-to-start.njk index b64afbf24d..3d7a2d423c 100644 --- a/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/licence-to-start.njk +++ b/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/licence-to-start.njk @@ -8,14 +8,40 @@ {% set errorMap = { - 'licence-to-start': { - 'any.required': { ref: '#licence-to-start', text: mssgs.licence_start_error_choose_when } - }, - 'licence-start-date': { - 'date.format': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_format }, - 'date.max': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_within + data.advancedPurchaseMaxDays + mssgs.licence_start_days }, - 'date.min': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_within + data.advancedPurchaseMaxDays + mssgs.licence_start_days } - } + 'full-date': { + 'object.missing': { ref: '#licence-start-date-day', text: mssgs.licence_start_error } + }, + 'day-and-month': { + 'object.missing': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_missing_day_and_month } + }, + 'day-and-year': { + 'object.missing': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_missing_day_and_year } + }, + 'month-and-year': { + 'object.missing': { ref: '#licence-start-date-month', text: mssgs.licence_start_error_missing_month_and_year } + }, + 'day': { + 'any.required': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_missing_day } + }, + 'month': { + 'any.required': { ref: '#licence-start-date-month', text: mssgs.licence_start_error_missing_month } + }, + 'year': { + 'any.required': { ref: '#licence-start-date-year', text: mssgs.licence_start_error_missing_year } + }, + 'non-numeric': { + 'number.base': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_non_numeric } + }, + 'invalid-date': { + 'any.custom': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_date_real } + }, + 'date-range': { + 'date.min': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_within + data.advancedPurchaseMaxDays + mssgs.licence_start_days }, + 'date.max': { ref: '#licence-start-date-day', text: mssgs.licence_start_error_within + data.advancedPurchaseMaxDays + mssgs.licence_start_days } + }, + 'licence-to-start': { + 'any.required': { ref: '#licence-to-start', text: mssgs.licence_start_error_choose_when } + } } %} @@ -23,21 +49,21 @@ { name: "day", label: mssgs.dob_day, - classes: "govuk-input--width-2", + classes: "govuk-input--width-2 govuk-input--error" if data.isDayError else "govuk-input--width-2", value: payload['licence-start-date-day'], attributes: { maxlength : 2 } }, { name: "month", label: mssgs.dob_month, - classes: "govuk-input--width-2", + classes: "govuk-input--width-2 govuk-input--error" if data.isMonthError else "govuk-input--width-2", value: payload['licence-start-date-month'], attributes: { maxlength : 2 } }, { name: "year", label: mssgs.dob_year, - classes: "govuk-input--width-4", + classes: "govuk-input--width-4 govuk-input--error" if data.isYearError else "govuk-input--width-4", value: payload['licence-start-date-year'], attributes: { maxlength : 4 } } @@ -53,7 +79,7 @@ id: "licence-start-date", namePrefix: "licence-start-date", items: dateInputItems, - errorMessage: { text: mssgs.licence_start_error_within + data.advancedPurchaseMaxDays + mssgs.licence_start_days } if error['licence-start-date'], + errorMessage: { text: errorMap[data.error.errorKey][data.error.errorValue].text } if data.error, hint: { text: mssgs.licence_start_hint + data.maxStartDate } diff --git a/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/route.js b/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/route.js index 31ae6d2ffa..6e063b4881 100644 --- a/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/route.js +++ b/packages/gafl-webapp-service/src/pages/licence-details/licence-to-start/route.js @@ -1,49 +1,31 @@ -import Joi from 'joi' import moment from 'moment-timezone' - -import JoiDate from '@hapi/joi-date' import { START_AFTER_PAYMENT_MINUTES, ADVANCED_PURCHASE_MAX_DAYS, SERVICE_LOCAL_TIME } from '@defra-fish/business-rules-lib' import { LICENCE_TO_START } from '../../../uri.js' import pageRoute from '../../../routes/page-route.js' -import { dateFormats } from '../../../constants.js' import { nextPage } from '../../../routes/next-page.js' - -const JoiX = Joi.extend(JoiDate) - -const validator = payload => { - const licenceStartDate = `${payload['licence-start-date-year']}-${payload['licence-start-date-month']}-${payload['licence-start-date-day']}` - Joi.assert( - { - 'licence-start-date': licenceStartDate, - 'licence-to-start': payload['licence-to-start'] - }, - Joi.object({ - 'licence-to-start': Joi.string().valid('after-payment', 'another-date').required(), - 'licence-start-date': Joi.alternatives().conditional('licence-to-start', { - is: 'another-date', - then: JoiX.date() - .format(dateFormats) - .min(moment().tz(SERVICE_LOCAL_TIME).startOf('day')) - .max(moment().tz(SERVICE_LOCAL_TIME).add(ADVANCED_PURCHASE_MAX_DAYS, 'days')) - .required(), - otherwise: Joi.string().empty('') - }) - }).options({ abortEarly: false, allowUnknown: true }) - ) -} +import { getDateErrorFlags, startDateValidator } from '../../../schema/validators/validators.js' export const getData = async request => { const fmt = 'DD MM YYYY' const { isLicenceForYou } = await request.cache().helpers.transaction.getCurrentPermission() - - return { + const page = await request.cache().helpers.page.getCurrentPermission(LICENCE_TO_START.page) + const pageData = { isLicenceForYou, exampleStartDate: moment().tz(SERVICE_LOCAL_TIME).add(1, 'days').format(fmt), minStartDate: moment().tz(SERVICE_LOCAL_TIME).format(fmt), maxStartDate: moment().tz(SERVICE_LOCAL_TIME).add(ADVANCED_PURCHASE_MAX_DAYS, 'days').format(fmt), advancedPurchaseMaxDays: ADVANCED_PURCHASE_MAX_DAYS, - startAfterPaymentMinutes: START_AFTER_PAYMENT_MINUTES + startAfterPaymentMinutes: START_AFTER_PAYMENT_MINUTES, + ...getDateErrorFlags(page?.error) + } + + if (page?.error) { + const [errorKey] = Object.keys(page.error) + const errorValue = page.error[errorKey] + pageData.error = { errorKey, errorValue } } + + return pageData } -export default pageRoute(LICENCE_TO_START.page, LICENCE_TO_START.uri, validator, nextPage, getData) +export default pageRoute(LICENCE_TO_START.page, LICENCE_TO_START.uri, startDateValidator, nextPage, getData) diff --git a/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/identity.next-page.spec.js b/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/identity.next-page.spec.js deleted file mode 100644 index d6a639cbb7..0000000000 --- a/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/identity.next-page.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -import pageRoute from '../../../../routes/page-route.js' -import { addLanguageCodeToUri } from '../../../../processors/uri-helper.js' -require('../route.js') // require rather than import to avoid lint error with unused variable - -jest.mock('../../../../routes/page-route.js', () => jest.fn()) -jest.mock('../../../../uri.js', () => ({ - IDENTIFY: { page: 'identify page', uri: 'identify uri' }, - AUTHENTICATE: { uri: Symbol('authenticate uri') } -})) -jest.mock('../../../../processors/uri-helper.js') - -describe('page route next', () => { - const nextPage = pageRoute.mock.calls[0][3] - beforeEach(jest.clearAllMocks) - - it('passes a function as the nextPage argument', () => { - expect(typeof nextPage).toBe('function') - }) - - it('calls addLanguageCodeToUri', () => { - nextPage() - expect(addLanguageCodeToUri).toHaveBeenCalled() - }) - - it('passes request to addLanguageCodeToUri', () => { - const request = Symbol('request') - nextPage(request) - expect(addLanguageCodeToUri).toHaveBeenCalledWith(request, expect.anything()) - }) - - it('next page returns result of addLanguageCodeToUri', () => { - const expectedResult = Symbol('add language code to uri') - addLanguageCodeToUri.mockReturnValueOnce(expectedResult) - expect(nextPage()).toBe(expectedResult) - }) -}) diff --git a/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/identity.spec.js b/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/identity.spec.js index d4d1f1f18a..ae72140f2f 100644 --- a/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/identity.spec.js +++ b/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/identity.spec.js @@ -116,6 +116,9 @@ describe('The easy renewal identification page', () => { referenceNumber: 'ABC123' }), setCurrentPermission: () => {} + }, + page: { + getCurrentPermission: async () => ({}) } } }) diff --git a/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/route-spec.js b/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/route-spec.js deleted file mode 100644 index 8e66fe6174..0000000000 --- a/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/route-spec.js +++ /dev/null @@ -1,38 +0,0 @@ -import { addLanguageCodeToUri } from '../../../../processors/uri-helper.js' -import { getData } from '../route.js' -import { NEW_TRANSACTION } from '../../../../uri.js' - -jest.mock('../../../../processors/uri-helper.js') - -const getMockRequest = referenceNumber => ({ - cache: () => ({ - helpers: { - status: { - getCurrentPermission: () => ({ - referenceNumber: referenceNumber - }) - } - } - }) -}) - -describe('getData', () => { - it('addLanguageCodeToUri is called with the expected arguments', async () => { - const request = getMockRequest('013AH6') - await getData(request) - expect(addLanguageCodeToUri).toHaveBeenCalledWith(request, NEW_TRANSACTION.uri) - }) - - it('getData returns correct URI', async () => { - const expectedUri = Symbol('decorated uri') - addLanguageCodeToUri.mockReturnValueOnce(expectedUri) - - const result = await getData(getMockRequest('013AH6')) - expect(result.uri.new).toEqual(expectedUri) - }) - - it.each([['09F6VF'], ['013AH6'], ['LK563F']])('getData returns referenceNumber', async referenceNumber => { - const result = await getData(getMockRequest(referenceNumber)) - expect(result.referenceNumber).toEqual(referenceNumber) - }) -}) diff --git a/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/route.spec.js b/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/route.spec.js new file mode 100644 index 0000000000..51aff21010 --- /dev/null +++ b/packages/gafl-webapp-service/src/pages/renewals/identify/__tests__/route.spec.js @@ -0,0 +1,143 @@ +import pageRoute from '../../../../routes/page-route.js' +import { addLanguageCodeToUri } from '../../../../processors/uri-helper.js' +import { getData, validator } from '../route.js' +import { IDENTIFY, NEW_TRANSACTION } from '../../../../uri.js' +import { dateOfBirthValidator, getDateErrorFlags } from '../../../../schema/validators/validators.js' + +jest.mock('../../../../routes/page-route.js', () => jest.fn()) +jest.mock('../../../../uri.js', () => ({ + IDENTIFY: { page: 'identify page', uri: 'identify uri' }, + AUTHENTICATE: { uri: Symbol('authenticate uri') }, + NEW_TRANSACTION: { uri: Symbol('new transaction uri') } +})) +jest.mock('../../../../processors/uri-helper.js') +jest.mock('../../../../schema/validators/validators.js') + +describe('getData', () => { + const getMockRequest = (referenceNumber, pageGet = async () => ({})) => ({ + cache: () => ({ + helpers: { + status: { + getCurrentPermission: () => ({ + referenceNumber: referenceNumber + }) + }, + page: { + getCurrentPermission: pageGet + } + } + }) + }) + + it('addLanguageCodeToUri is called with the expected arguments', async () => { + const request = getMockRequest('013AH6') + await getData(request) + expect(addLanguageCodeToUri).toHaveBeenCalledWith(request, NEW_TRANSACTION.uri) + }) + + it('getData returns correct URI', async () => { + const expectedUri = Symbol('decorated uri') + addLanguageCodeToUri.mockReturnValueOnce(expectedUri) + + const result = await getData(getMockRequest('013AH6')) + expect(result.uri.new).toEqual(expectedUri) + }) + + it.each([['09F6VF'], ['013AH6'], ['LK563F']])('getData returns referenceNumber', async referenceNumber => { + const result = await getData(getMockRequest(referenceNumber)) + expect(result.referenceNumber).toEqual(referenceNumber) + }) + + it('adds return value of getErrorFlags to the page data', async () => { + const errorFlags = { unique: Symbol('error-flags') } + getDateErrorFlags.mockReturnValueOnce(errorFlags) + const result = await getData(getMockRequest()) + expect(result).toEqual(expect.objectContaining(errorFlags)) + }) + + it('passes error to getErrorFlags', async () => { + const error = Symbol('error') + await getData(getMockRequest(undefined, async () => ({ error }))) + expect(getDateErrorFlags).toHaveBeenCalledWith(error) + }) + + it('passes correct page name when getting page cache', async () => { + const pageGet = jest.fn(() => ({})) + await getData(getMockRequest(undefined, pageGet)) + expect(pageGet).toHaveBeenCalledWith(IDENTIFY.page) + }) + + it.each([ + ['full-date', 'object.missing'], + ['day', 'any.required'] + ])('should add error details ({%s: %s}) to the page data', async (errorKey, errorValue) => { + const pageGet = async () => ({ + error: { [errorKey]: errorValue } + }) + + const result = await getData(getMockRequest(undefined, pageGet)) + expect(result.error).toEqual({ errorKey, errorValue }) + }) + + it('omits error if there is no error', async () => { + const result = await getData(getMockRequest()) + expect(result.error).toBeUndefined() + }) +}) + +describe('default', () => { + it('should call the pageRoute with date-of-birth, /buy/date-of-birth, dateOfBirthValidator and nextPage', async () => { + expect(pageRoute).toBeCalledWith(IDENTIFY.page, IDENTIFY.uri, validator, expect.any(Function), getData) + }) +}) + +describe('page route next', () => { + const nextPage = pageRoute.mock.calls[0][3] + beforeEach(jest.clearAllMocks) + + it('passes a function as the nextPage argument', () => { + expect(typeof nextPage).toBe('function') + }) + + it('calls addLanguageCodeToUri', () => { + nextPage() + expect(addLanguageCodeToUri).toHaveBeenCalled() + }) + + it('passes request to addLanguageCodeToUri', () => { + const request = Symbol('request') + nextPage(request) + expect(addLanguageCodeToUri).toHaveBeenCalledWith(request, expect.anything()) + }) + + it('next page returns result of addLanguageCodeToUri', () => { + const expectedResult = Symbol('add language code to uri') + addLanguageCodeToUri.mockReturnValueOnce(expectedResult) + expect(nextPage()).toBe(expectedResult) + }) +}) + +describe('validator', () => { + const getMockRequest = (postcode = 'AA1 1AA', referenceNumber = 'A1B2C3') => ({ + postcode, + referenceNumber + }) + + it('fails if dateOfBirth validator fails', () => { + const expectedError = new Error('expected error') + dateOfBirthValidator.mockImplementationOnce(() => { + throw expectedError + }) + expect(() => validator(getMockRequest)).toThrow(expectedError) + }) + + it('passes if dateOfBirth validator passes', () => { + expect(() => validator(getMockRequest())).not.toThrow() + }) + + it('passes payload to dateOfBirth validator', () => { + const payload = getMockRequest() + validator(payload) + expect(dateOfBirthValidator).toHaveBeenCalledWith(payload) + }) +}) diff --git a/packages/gafl-webapp-service/src/pages/renewals/identify/identify.njk b/packages/gafl-webapp-service/src/pages/renewals/identify/identify.njk index dd62183b50..d863e772ee 100644 --- a/packages/gafl-webapp-service/src/pages/renewals/identify/identify.njk +++ b/packages/gafl-webapp-service/src/pages/renewals/identify/identify.njk @@ -21,14 +21,40 @@ ref: "#ref" } }, - 'date-of-birth': { - 'date.format': { ref: '#date-of-birth-day', text: mssgs.identify_error_enter_bday }, - 'date.max': { ref: '#date-of-birth-day', text: mssgs.identify_error_enter_bday_max }, - 'date.min': { ref: '#date-of-birth-day', text: mssgs.identify_error_enter_bday_min } - }, 'postcode': { 'string.empty': { ref: '#postcode', text: mssgs.identify_error_empty_postcode }, 'string.pattern.base': { ref: '#postcode', text: mssgs.identify_error_pattern_postcode } + }, + 'full-date': { + 'object.missing': { ref: '#date-of-birth-day', text: mssgs.dob_error } + }, + 'day-and-month': { + 'object.missing': { ref: '#date-of-birth-day', text: mssgs.dob_error_missing_day_and_month } + }, + 'day-and-year': { + 'object.missing': { ref: '#date-of-birth-day', text: mssgs.dob_error_missing_day_and_year } + }, + 'month-and-year': { + 'object.missing': { ref: '#date-of-birth-month', text: mssgs.dob_error_missing_month_and_year } + }, + 'day': { + 'any.required': { ref: '#date-of-birth-day', text: mssgs.dob_error_missing_day } + }, + 'month': { + 'any.required': { ref: '#date-of-birth-month', text: mssgs.dob_error_missing_month } + }, + 'year': { + 'any.required': { ref: '#date-of-birth-year', text: mssgs.dob_error_missing_year } + }, + 'non-numeric': { + 'number.base': { ref: '#date-of-birth-day', text: mssgs.dob_error_non_numeric } + }, + 'invalid-date': { + 'any.custom': { ref: '#date-of-birth-day', text: mssgs.dob_error_date_real } + }, + 'date-range': { + 'date.min': { ref: '#date-of-birth-day', text: mssgs.dob_error_year_min }, + 'date.max': { ref: '#date-of-birth-day', text: mssgs.dob_error_year_max } } } %} @@ -37,21 +63,21 @@ { label: mssgs.dob_day, name: "day", - classes: "govuk-input--width-2", + classes: "govuk-input--width-2 govuk-input--error" if data.isDayError else "govuk-input--width-2", value: payload['date-of-birth-day'], attributes: { maxlength : 2 } }, { label: mssgs.dob_month, name: "month", - classes: "govuk-input--width-2", + classes: "govuk-input--width-2 govuk-input--error" if data.isMonthError else "govuk-input--width-2", value: payload['date-of-birth-month'], attributes: { maxlength : 2 } }, { label: mssgs.dob_year, name: "year", - classes: "govuk-input--width-4", + classes: "govuk-input--width-4 govuk-input--error" if data.isYearError else "govuk-input--width-4", value: payload['date-of-birth-year'], attributes: { maxlength : 4 } } @@ -115,7 +141,7 @@ classes: "govuk-!-font-weight-bold govuk-label" } }, - errorMessage: { text: mssgs.enter_dob } if error['date-of-birth'], + errorMessage: { text: errorMap[data.error.errorKey][data.error.errorValue].text } if data.error, hint: { text: mssgs.enter_dob_example } diff --git a/packages/gafl-webapp-service/src/pages/renewals/identify/route.js b/packages/gafl-webapp-service/src/pages/renewals/identify/route.js index a873c01e0f..45fc367fb9 100644 --- a/packages/gafl-webapp-service/src/pages/renewals/identify/route.js +++ b/packages/gafl-webapp-service/src/pages/renewals/identify/route.js @@ -4,10 +4,12 @@ import Joi from 'joi' import { validation } from '@defra-fish/business-rules-lib' import { addLanguageCodeToUri } from '../../../processors/uri-helper.js' import GetDataRedirect from '../../../handlers/get-data-redirect.js' +import { dateOfBirthValidator, getDateErrorFlags } from '../../../schema/validators/validators.js' export const getData = async request => { // If we are supplied a permission number, validate it or throw 400 const permission = await request.cache().helpers.status.getCurrentPermission() + const page = await request.cache().helpers.page.getCurrentPermission(IDENTIFY.page) if (permission.referenceNumber) { const validatePermissionNumber = validation.permission @@ -19,29 +21,35 @@ export const getData = async request => { } } - return { + const pageData = { referenceNumber: permission.referenceNumber, uri: { new: addLanguageCodeToUri(request, NEW_TRANSACTION.uri) - } + }, + ...getDateErrorFlags(page?.error) } + + if (page?.error) { + const [errorKey] = Object.keys(page.error) + const errorValue = page.error[errorKey] + pageData.error = { errorKey, errorValue } + } + + return pageData } -const schema = Joi.object({ - referenceNumber: validation.permission.permissionNumberUniqueComponentValidator(Joi), - 'date-of-birth': validation.contact.createBirthDateValidator(Joi), - postcode: validation.contact.createOverseasPostcodeValidator(Joi) -}).options({ abortEarly: false, allowUnknown: true }) +export const validator = payload => { + dateOfBirthValidator(payload) -const validator = async payload => { - const dateOfBirth = `${payload['date-of-birth-year']}-${payload['date-of-birth-month']}-${payload['date-of-birth-day']}` Joi.assert( { - 'date-of-birth': dateOfBirth, postcode: payload.postcode, referenceNumber: payload.referenceNumber }, - schema + Joi.object({ + referenceNumber: validation.permission.permissionNumberUniqueComponentValidator(Joi), + postcode: validation.contact.createOverseasPostcodeValidator(Joi) + }).options({ abortEarly: false }) ) } diff --git a/packages/gafl-webapp-service/src/pages/summary/licence-summary/__tests__/__snapshots__/route.spec.js.snap b/packages/gafl-webapp-service/src/pages/summary/licence-summary/__tests__/__snapshots__/route.spec.js.snap index 6aa626139f..d689b8af12 100644 --- a/packages/gafl-webapp-service/src/pages/summary/licence-summary/__tests__/__snapshots__/route.spec.js.snap +++ b/packages/gafl-webapp-service/src/pages/summary/licence-summary/__tests__/__snapshots__/route.spec.js.snap @@ -1128,18 +1128,6 @@ Array [ }, }, Object { - "actions": Object { - "items": Array [ - Object { - "attributes": Object { - "id": "change-licence-length", - }, - "href": "/buy/licence-length", - "text": "contact_summary_change", - "visuallyHiddenText": "licence_summary_length", - }, - ], - }, "key": Object { "text": "licence_summary_length", }, diff --git a/packages/gafl-webapp-service/src/pages/summary/licence-summary/__tests__/route.spec.js b/packages/gafl-webapp-service/src/pages/summary/licence-summary/__tests__/route.spec.js index 0637e3ad11..777a8ee5f3 100644 --- a/packages/gafl-webapp-service/src/pages/summary/licence-summary/__tests__/route.spec.js +++ b/packages/gafl-webapp-service/src/pages/summary/licence-summary/__tests__/route.spec.js @@ -7,7 +7,11 @@ import { licenceTypeDisplay } from '../../../../processors/licence-type-display. import { addLanguageCodeToUri } from '../../../../processors/uri-helper.js' import mappingConstants from '../../../../processors/mapping-constants.js' import { displayPermissionPrice } from '../../../../processors/price-display.js' +import { hasJunior } from '../../../../processors/concession-helper.js' +jest.mock('../../../../processors/concession-helper.js', () => ({ + hasJunior: jest.fn(() => false) +})) jest.mock('../../../../processors/licence-type-display.js', () => ({ licenceTypeDisplay: jest.fn(() => 'Special Canal Licence, Shopping Trollies and Old Wellies') })) @@ -370,20 +374,30 @@ describe('licence-summary > route', () => { ) }) + it('calls hasJunior with permission', async () => { + const currentPermission = getMockNewPermission() + const mockRequest = getMockRequest({ currentPermission }) + + await getData(mockRequest) + + expect(hasJunior).toHaveBeenCalledWith(currentPermission) + }) + describe('licence summary rows', () => { it.each` - desc | currentPermission - ${'1 year renewal'} | ${getMockPermission()} - ${'1 year new licence'} | ${getMockNewPermission()} - ${'1 year senior renewal'} | ${getMockSeniorPermission()} - ${'8 day licence'} | ${{ ...getMockNewPermission(), licenceLength: '8D' }} - ${'1 day licence'} | ${{ ...getMockNewPermission(), licenceLength: '1D' }} - ${'Junior licence'} | ${getMockJuniorPermission()} - ${'Blue badge concession'} | ${getMockBlueBadgePermission()} - ${'Continuing permission'} | ${getMockContinuingPermission()} - ${'Another date permission'} | ${{ ...getMockPermission(), licenceToStart: 'another-date' }} - ${'1 year new three rod licence '} | ${{ ...getMockNewPermission(), numberOfRods: '3' }} - `('creates licence summary name rows for $desc', async ({ currentPermission }) => { + desc | currentPermission | junior + ${'1 year renewal'} | ${getMockPermission()} | ${false} + ${'1 year new licence'} | ${getMockNewPermission()} | ${false} + ${'1 year senior renewal'} | ${getMockSeniorPermission()} | ${false} + ${'8 day licence'} | ${{ ...getMockNewPermission(), licenceLength: '8D' }} | ${false} + ${'1 day licence'} | ${{ ...getMockNewPermission(), licenceLength: '1D' }} | ${false} + ${'Junior licence'} | ${getMockJuniorPermission()} | ${true} + ${'Blue badge concession'} | ${getMockBlueBadgePermission()} | ${false} + ${'Continuing permission'} | ${getMockContinuingPermission()} | ${false} + ${'Another date permission'} | ${{ ...getMockPermission(), licenceToStart: 'another-date' }} | ${false} + ${'1 year new three rod licence '} | ${{ ...getMockNewPermission(), numberOfRods: '3' }} | ${false} + `('creates licence summary name rows for $desc', async ({ currentPermission, junior }) => { + hasJunior.mockReturnValueOnce(junior) const mockRequest = getMockRequest({ currentPermission }) const data = await getData(mockRequest) expect(data.licenceSummaryRows).toMatchSnapshot() diff --git a/packages/gafl-webapp-service/src/pages/summary/licence-summary/route.js b/packages/gafl-webapp-service/src/pages/summary/licence-summary/route.js index b43e637f6b..643c547941 100644 --- a/packages/gafl-webapp-service/src/pages/summary/licence-summary/route.js +++ b/packages/gafl-webapp-service/src/pages/summary/licence-summary/route.js @@ -22,6 +22,7 @@ import { CONCESSION, CONCESSION_PROOF } from '../../../processors/mapping-consta import { nextPage } from '../../../routes/next-page.js' import { addLanguageCodeToUri } from '../../../processors/uri-helper.js' import { displayPermissionPrice } from '../../../processors/price-display.js' +import { hasJunior } from '../../../processors/concession-helper.js' import db from 'debug' const debug = db('webapp:licence-summary') @@ -115,7 +116,7 @@ class RowGenerator { generateLicenceLengthRow () { const args = ['licence_summary_length', this.labels[`licence_type_${this.permission.licenceLength.toLowerCase()}`]] - if (this.permission.numberOfRods !== '3') { + if (this.permission.numberOfRods !== '3' && !hasJunior(this.permission)) { args.push(LICENCE_LENGTH.uri, 'change-licence-length') } diff --git a/packages/gafl-webapp-service/src/schema/__tests__/__snapshots__/date.schema.test.js.snap b/packages/gafl-webapp-service/src/schema/__tests__/__snapshots__/date.schema.test.js.snap new file mode 100644 index 0000000000..3619fadce7 --- /dev/null +++ b/packages/gafl-webapp-service/src/schema/__tests__/__snapshots__/date.schema.test.js.snap @@ -0,0 +1,32 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`dateSchemaInput matches expected format 1`] = ` +Object { + "day": "1", + "day-and-month": Object { + "day": "1", + "month": "2", + }, + "day-and-year": Object { + "day": "1", + "year": "2023", + }, + "full-date": Object { + "day": "1", + "month": "2", + "year": "2023", + }, + "invalid-date": "2023-02-01", + "month": "2", + "month-and-year": Object { + "month": "2", + "year": "2023", + }, + "non-numeric": Object { + "day": "1", + "month": "2", + "year": "2023", + }, + "year": "2023", +} +`; diff --git a/packages/gafl-webapp-service/src/schema/__tests__/date.schema.test.js b/packages/gafl-webapp-service/src/schema/__tests__/date.schema.test.js new file mode 100644 index 0000000000..6312a65f0a --- /dev/null +++ b/packages/gafl-webapp-service/src/schema/__tests__/date.schema.test.js @@ -0,0 +1,64 @@ +import Joi from 'joi' +import { dateSchemaInput, dateSchema } from '../date.schema.js' + +describe('dateSchemaInput', () => { + it('matches expected format', () => { + expect(dateSchemaInput('1', '2', '2023')).toMatchSnapshot() + }) + + it.each` + desc | day | month | year | result + ${'all empty'} | ${''} | ${''} | ${''} | ${{ 'full-date': { day: undefined, month: undefined, year: undefined } }} + ${'day and month empty'} | ${''} | ${''} | ${'2020'} | ${{ 'day-and-month': { day: undefined, month: undefined } }} + ${'day and year empty'} | ${''} | ${'11'} | ${''} | ${{ 'day-and-year': { day: undefined, year: undefined } }} + ${'month and year empty'} | ${'12'} | ${''} | ${''} | ${{ 'month-and-year': { month: undefined, year: undefined } }} + ${'day empty'} | ${''} | ${'3'} | ${'2021'} | ${{ day: undefined }} + ${'month empty'} | ${'4'} | ${''} | ${'2003'} | ${{ month: undefined }} + ${'year empty'} | ${'15'} | ${'11'} | ${''} | ${{ year: undefined }} + `('maps empty strings to undefined values when $desc', ({ day, month, year, result }) => { + expect(dateSchemaInput(day, month, year)).toEqual(expect.objectContaining(result)) + }) +}) + +describe('dateSchema', () => { + it.each` + payload | expectedError | payloadDesc + ${{}} | ${'full-date'} | ${'empty day, month and year'} + ${{ year: '1' }} | ${'day-and-month'} | ${'empty day and month'} + ${{ month: '2' }} | ${'day-and-year'} | ${'empty day and year'} + ${{ day: '3' }} | ${'month-and-year'} | ${'empty month and year'} + ${{ month: '5', year: '2023' }} | ${'day'} | ${'empty day'} + ${{ day: '12', year: '2024' }} | ${'month'} | ${'empty month'} + ${{ day: '15', month: '3' }} | ${'year'} | ${'empty year'} + ${{ day: 'Ides', month: 'March', year: '44 B.C.' }} | ${'non-numeric.day'} | ${'non-numerics entered'} + ${{ day: 'Thirteenth', month: '11', year: '1978' }} | ${'non-numeric.day'} | ${'non-numeric day'} + ${{ day: '29', month: 'MAR', year: '2002' }} | ${'non-numeric.month'} | ${'non-numeric month '} + ${{ day: '13', month: '1', year: 'Two thousand and five' }} | ${'non-numeric.year'} | ${'non-numeric year'} + ${{ day: '30', month: '2', year: '1994' }} | ${'invalid-date'} | ${'an invalid date - 1994-02-40'} + ${{ day: '1', month: '13', year: '2022' }} | ${'invalid-date'} | ${'an invalid date - 2022-13-01'} + ${{ day: '29', month: '2', year: '2023' }} | ${'invalid-date'} | ${'an invalid date - 1994-02-40'} + ${{ day: '-1.15', month: '18', year: '22.2222' }} | ${'invalid-date'} | ${'an invalid date - 22.2222-18-1.15'} + `('Error has $expectedError in details when payload has $payloadDesc', ({ payload: { day, month, year }, expectedError }) => { + expect(() => { + Joi.assert(dateSchemaInput(day, month, year), dateSchema) + }).toThrow( + expect.objectContaining({ + details: expect.arrayContaining([ + expect.objectContaining({ + path: expectedError.split('.'), + context: expect.objectContaining({ + label: expectedError, + key: expectedError.split('.').pop() + }) + }) + ]) + }) + ) + }) + + it('valid date passes validation', () => { + expect(() => { + Joi.assert(dateSchemaInput('12', '10', '1987'), dateSchema) + }).not.toThrow() + }) +}) diff --git a/packages/gafl-webapp-service/src/schema/date.schema.js b/packages/gafl-webapp-service/src/schema/date.schema.js new file mode 100644 index 0000000000..fa0cade8e5 --- /dev/null +++ b/packages/gafl-webapp-service/src/schema/date.schema.js @@ -0,0 +1,63 @@ +'use strict' +import Joi from 'joi' + +export const dateSchemaInput = (unparsedDay, unparsedMonth, unparsedYear) => { + const day = unparsedDay === '' ? undefined : unparsedDay + const month = unparsedMonth === '' ? undefined : unparsedMonth + const year = unparsedYear === '' ? undefined : unparsedYear + + return { + 'full-date': { day, month, year }, + 'day-and-month': { day, month }, + 'day-and-year': { day, year }, + 'month-and-year': { month, year }, + day, + month, + year, + 'non-numeric': { day, month, year }, + 'invalid-date': `${year}-${(month || '').padStart(2, '0')}-${(day || '').padStart(2, '0')}` + } +} + +export const dateSchema = Joi.object({ + 'full-date': Joi.object() + .keys({ + day: Joi.any(), + month: Joi.any(), + year: Joi.any() + }) + .or('day', 'month', 'year'), + 'day-and-month': Joi.object() + .keys({ + day: Joi.any(), + month: Joi.any() + }) + .or('day', 'month'), + 'day-and-year': Joi.object() + .keys({ + day: Joi.any(), + year: Joi.any() + }) + .or('day', 'year'), + 'month-and-year': Joi.object() + .keys({ + month: Joi.any(), + year: Joi.any() + }) + .or('month', 'year'), + day: Joi.any().required(), + month: Joi.any().required(), + year: Joi.any().required(), + 'non-numeric': Joi.object().keys({ + day: Joi.number(), + month: Joi.number(), + year: Joi.number() + }), + 'invalid-date': Joi.custom((dateToValidate, helpers) => { + if (new Date(dateToValidate).toISOString() !== `${dateToValidate}T00:00:00.000Z`) { + throw helpers.error('invalid-date') + } + + return dateToValidate + }) +}).options({ abortEarly: true }) diff --git a/packages/gafl-webapp-service/src/schema/validators/__tests__/validators.spec.js b/packages/gafl-webapp-service/src/schema/validators/__tests__/validators.spec.js new file mode 100644 index 0000000000..95ef43e7c1 --- /dev/null +++ b/packages/gafl-webapp-service/src/schema/validators/__tests__/validators.spec.js @@ -0,0 +1,208 @@ +import Joi from 'joi' +import { dateOfBirthValidator, startDateValidator, getDateErrorFlags } from '../validators.js' +import moment from 'moment-timezone' +const dateSchema = require('../../date.schema.js') + +const setupMocks = () => { + Joi.originalAssert = Joi.assert + dateSchema.originalDateSchema = dateSchema.dateSchema + dateSchema.originalDateSchemaInput = dateSchema.dateSchemaInput + + Joi.assert = jest.fn() + dateSchema.dateSchema = Symbol('dateSchema') + dateSchema.dateSchemaInput = jest.fn() +} + +const tearDownMocks = () => { + Joi.assert = Joi.originalAssert + dateSchema.dateSchema = dateSchema.originalDateSchema + dateSchema.dateSchemaInput = dateSchema.originalDateSchemaInput +} + +describe('dateOfBirth validator', () => { + beforeEach(jest.clearAllMocks) + + const getSamplePayload = ({ day = '', month = '', year = '' } = {}) => ({ + 'date-of-birth-day': day, + 'date-of-birth-month': month, + 'date-of-birth-year': year + }) + + it('throws an error for anyone over 120 years old', () => { + const invalidDoB = moment().subtract(120, 'years').subtract(1, 'day') + const samplePayload = getSamplePayload({ + day: invalidDoB.format('DD'), + month: invalidDoB.format('MM'), + year: invalidDoB.format('YYYY') + }) + expect(() => dateOfBirthValidator(samplePayload)).toThrow() + }) + + it('validates for anyone 120 years old', () => { + const validDoB = moment().subtract(120, 'years') + const samplePayload = getSamplePayload({ + day: validDoB.format('DD'), + month: validDoB.format('MM'), + year: validDoB.format('YYYY') + }) + expect(() => dateOfBirthValidator(samplePayload)).not.toThrow() + }) + + it.each([ + ['today', moment()], + ['tomorrow', moment().add(1, 'day')], + ['in the future', moment().add(1, 'month')] + ])('throws an error for a date of birth %s', (_desc, invalidDoB) => { + const samplePayload = getSamplePayload({ + day: invalidDoB.format('DD'), + month: invalidDoB.format('MM'), + year: invalidDoB.format('YYYY') + }) + expect(() => dateOfBirthValidator(samplePayload)).toThrow() + }) + + it.each([ + ['1-3-2004', '1', '3', '2004'], + ['12-1-1999', '12', '1', '1999'], + ['1-12-2006', '1', '12', '2006'] + ])('handles single digit date %s', (_desc, day, month, year) => { + const samplePayload = getSamplePayload({ + day, + month, + year + }) + expect(() => dateOfBirthValidator(samplePayload)).not.toThrow() + }) + + it.each([ + ['01', '03', '1994'], + ['10', '12', '2004'] + ])('passes date of birth day (%s), month (%s) and year (%s) to dateSchemaInput', (day, month, year) => { + setupMocks() + dateOfBirthValidator(getSamplePayload({ day, month, year })) + expect(dateSchema.dateSchemaInput).toHaveBeenCalledWith(day, month, year) + tearDownMocks() + }) + + it('passes dateSchemaInput output and dateSchema to Joi.assert', () => { + setupMocks() + const dsi = Symbol('dsi') + dateSchema.dateSchemaInput.mockReturnValueOnce(dsi) + dateOfBirthValidator(getSamplePayload()) + expect(Joi.assert).toHaveBeenCalledWith(dsi, dateSchema.dateSchema) + tearDownMocks() + }) +}) + +describe('startDate validator', () => { + beforeEach(jest.clearAllMocks) + + const getSamplePayload = ({ day = '', month = '', year = '' } = {}) => ({ + 'licence-start-date-day': day, + 'licence-start-date-month': month, + 'licence-start-date-year': year, + 'licence-to-start': 'another-date' + }) + + it('throws an error for a licence starting before today', () => { + const invalidStartDate = moment().subtract(1, 'day') + const samplePayload = getSamplePayload({ + day: invalidStartDate.format('DD'), + month: invalidStartDate.format('MM'), + year: invalidStartDate.format('YYYY') + }) + expect(() => startDateValidator(samplePayload)).toThrow() + }) + + it('throws an error for a licence starting more than 30 days hence', () => { + const invalidStartDate = moment().add(31, 'days') + const samplePayload = getSamplePayload({ + day: invalidStartDate.format('DD'), + month: invalidStartDate.format('MM'), + year: invalidStartDate.format('YYYY') + }) + expect(() => startDateValidator(samplePayload)).toThrow() + }) + + it('validates for a date within the next 30 days', () => { + const validStartDate = moment().add(4, 'days') + const samplePayload = getSamplePayload({ + day: validStartDate.format('DD'), + month: validStartDate.format('MM'), + year: validStartDate.format('YYYY') + }) + expect(() => startDateValidator(samplePayload)).not.toThrow() + }) + + it.each([ + ['1-3-2024', moment('2024-02-28')], + ['9-7-2024', moment('2024-07-08')] + ])('handles single digit date %s', (date, now) => { + jest.useFakeTimers() + jest.setSystemTime(now.toDate()) + + const [day, month, year] = date.split('-') + const samplePayload = getSamplePayload({ + day, + month, + year + }) + expect(() => startDateValidator(samplePayload)).not.toThrow() + jest.useRealTimers() + }) + + it.each([ + ['01', '03', '1994'], + ['10', '12', '2004'] + ])('passes start date day (%s), month (%s) and year (%s) to dateSchemaInput', (day, month, year) => { + setupMocks() + startDateValidator(getSamplePayload({ day, month, year })) + expect(dateSchema.dateSchemaInput).toHaveBeenCalledWith(day, month, year) + tearDownMocks() + }) + + it('passes dateSchemaInput output and dateSchema to Joi.assert', () => { + setupMocks() + const dsi = Symbol('dsi') + dateSchema.dateSchemaInput.mockReturnValueOnce(dsi) + startDateValidator(getSamplePayload()) + expect(Joi.assert).toHaveBeenCalledWith(dsi, dateSchema.dateSchema) + tearDownMocks() + }) + + it('passes validation if licence is set to start after payment', () => { + const samplePayload = { 'licence-to-start': 'after-payment' } + expect(() => startDateValidator(samplePayload)).not.toThrow() + }) + + it('throws an error if licence-to-start is set to an invalid value', () => { + const samplePayload = { 'licence-to-start': '12th-of-never' } + expect(() => startDateValidator(samplePayload)).toThrow() + }) +}) + +describe('getErrorFlags', () => { + it('sets all error flags to be false when there are no errors', () => { + const result = getDateErrorFlags() + expect(result).toEqual({ isDayError: false, isMonthError: false, isYearError: false }) + }) + + it.each([ + ['full-date', { isDayError: true, isMonthError: true, isYearError: true }], + ['day-and-month', { isDayError: true, isMonthError: true, isYearError: false }], + ['month-and-year', { isDayError: false, isMonthError: true, isYearError: true }], + ['day-and-year', { isDayError: true, isMonthError: false, isYearError: true }], + ['day', { isDayError: true, isMonthError: false, isYearError: false }], + ['month', { isDayError: false, isMonthError: true, isYearError: false }], + ['year', { isDayError: false, isMonthError: false, isYearError: true }], + ['invalid-date', { isDayError: true, isMonthError: true, isYearError: true }], + ['date-range', { isDayError: true, isMonthError: true, isYearError: true }], + ['non-numeric', { isDayError: true, isMonthError: true, isYearError: true }] + ])('when error is %s, should set %o in flags', (errorKey, expected) => { + const error = { [errorKey]: 'anything.at.all' } + + const result = getDateErrorFlags(error) + + expect(result).toEqual(expect.objectContaining(expected)) + }) +}) diff --git a/packages/gafl-webapp-service/src/schema/validators/validators.js b/packages/gafl-webapp-service/src/schema/validators/validators.js new file mode 100644 index 0000000000..70fefe6d25 --- /dev/null +++ b/packages/gafl-webapp-service/src/schema/validators/validators.js @@ -0,0 +1,65 @@ +import Joi from 'joi' +import moment from 'moment' +import { ADVANCED_PURCHASE_MAX_DAYS, SERVICE_LOCAL_TIME } from '@defra-fish/business-rules-lib' +import { dateSchema, dateSchemaInput } from '../date.schema.js' + +const MAX_AGE = 120 +const LICENCE_TO_START_FIELD = 'licence-to-start' +const AFTER_PAYMENT = 'after-payment' +const ANOTHER_DATE = 'another-date' + +const validateDate = (day, month, year, minDate, maxDate) => { + Joi.assert(dateSchemaInput(day, month, year), dateSchema) + const dateRange = moment(`${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`, 'YYYY-MM-DD') + .tz(SERVICE_LOCAL_TIME) + .startOf('day') + .toDate() + Joi.assert({ 'date-range': dateRange }, Joi.object({ 'date-range': Joi.date().min(minDate).max(maxDate) })) +} + +export const dateOfBirthValidator = payload => { + const day = payload['date-of-birth-day'] + const month = payload['date-of-birth-month'] + const year = payload['date-of-birth-year'] + + const minDate = moment().tz(SERVICE_LOCAL_TIME).subtract(MAX_AGE, 'years').startOf('day').toDate() + const maxDate = moment().tz(SERVICE_LOCAL_TIME).subtract(1, 'day').startOf('day').toDate() + validateDate(day, month, year, minDate, maxDate) +} + +export const startDateValidator = payload => { + Joi.assert( + { 'licence-to-start': payload[LICENCE_TO_START_FIELD] }, + Joi.object({ 'licence-to-start': Joi.string().valid(AFTER_PAYMENT, ANOTHER_DATE).required() }) + ) + if (payload[LICENCE_TO_START_FIELD] === ANOTHER_DATE) { + const day = payload['licence-start-date-day'] + const month = payload['licence-start-date-month'] + const year = payload['licence-start-date-year'] + + const minDate = moment().tz(SERVICE_LOCAL_TIME).startOf('day').toDate() + const maxDate = moment().tz(SERVICE_LOCAL_TIME).add(ADVANCED_PURCHASE_MAX_DAYS, 'days').toDate() + validateDate(day, month, year, minDate, maxDate) + } +} + +export const getDateErrorFlags = error => { + const errorFlags = { isDayError: false, isMonthError: false, isYearError: false } + const commonErrors = ['full-date', 'invalid-date', 'date-range', 'non-numeric'] + + if (error) { + const [errorKey] = Object.keys(error) + + if (['day-and-month', 'day-and-year', 'day', ...commonErrors].includes(errorKey)) { + errorFlags.isDayError = true + } + if (['day-and-month', 'month-and-year', 'month', ...commonErrors].includes(errorKey)) { + errorFlags.isMonthError = true + } + if (['day-and-year', 'month-and-year', 'year', ...commonErrors].includes(errorKey)) { + errorFlags.isYearError = true + } + } + + return errorFlags +} diff --git a/packages/gafl-webapp-service/src/services/payment/__test__/govuk-pay-service.spec.js b/packages/gafl-webapp-service/src/services/payment/__test__/govuk-pay-service.spec.js index ac995d1b2a..c027790bcf 100644 --- a/packages/gafl-webapp-service/src/services/payment/__test__/govuk-pay-service.spec.js +++ b/packages/gafl-webapp-service/src/services/payment/__test__/govuk-pay-service.spec.js @@ -309,7 +309,7 @@ describe('The govuk-pay-service', () => { ok: true, json: jest.fn().mockResolvedValue({ success: true, paymentId: 'abc123' }) } - govUkPayApi.createRecurringPayment.mockResolvedValue(mockResponse) + govUkPayApi.createRecurringPaymentAgreement.mockResolvedValue(mockResponse) const unique = Symbol('payload') const payload = { reference: 'd81f1a2b-6508-468f-8342-b6770f60f7cd', @@ -318,7 +318,7 @@ describe('The govuk-pay-service', () => { unique } await sendRecurringPayment(payload) - expect(govUkPayApi.createRecurringPayment).toHaveBeenCalledWith(payload) + expect(govUkPayApi.createRecurringPaymentAgreement).toHaveBeenCalledWith(payload) }) it('should return response body when payment creation is successful', async () => { @@ -326,7 +326,7 @@ describe('The govuk-pay-service', () => { ok: true, json: jest.fn().mockResolvedValue({ success: true, paymentId: 'abc123' }) } - govUkPayApi.createRecurringPayment.mockResolvedValue(mockResponse) + govUkPayApi.createRecurringPaymentAgreement.mockResolvedValue(mockResponse) const result = await sendRecurringPayment(preparedPayment) @@ -338,7 +338,7 @@ describe('The govuk-pay-service', () => { ok: true, json: jest.fn().mockResolvedValue({ success: true, paymentId: 'abc123' }) } - govUkPayApi.createRecurringPayment.mockResolvedValue(mockResponse) + govUkPayApi.createRecurringPaymentAgreement.mockResolvedValue(mockResponse) await sendRecurringPayment(preparedPayment) @@ -352,7 +352,7 @@ describe('The govuk-pay-service', () => { json: jest.fn().mockResolvedValue({ message: 'Server error' }) } const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}) - govUkPayApi.createRecurringPayment.mockResolvedValue(mockResponse) + govUkPayApi.createRecurringPaymentAgreement.mockResolvedValue(mockResponse) try { await sendRecurringPayment(preparedPayment) @@ -370,7 +370,7 @@ describe('The govuk-pay-service', () => { it('should throw error when API call fails with network issue', async () => { const mockError = new Error('Network error') const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(jest.fn()) - govUkPayApi.createRecurringPayment.mockRejectedValue(mockError) + govUkPayApi.createRecurringPaymentAgreement.mockRejectedValue(mockError) try { await sendRecurringPayment(preparedPayment) @@ -389,7 +389,7 @@ describe('The govuk-pay-service', () => { json: jest.fn().mockResolvedValue({ message: 'Rate limit exceeded' }) } const consoleErrorSpy = jest.spyOn(console, 'info').mockImplementation(jest.fn()) - govUkPayApi.createRecurringPayment.mockResolvedValue(mockResponse) + govUkPayApi.createRecurringPaymentAgreement.mockResolvedValue(mockResponse) try { await sendRecurringPayment(preparedPayment) @@ -404,7 +404,7 @@ describe('The govuk-pay-service', () => { status: 500, json: jest.fn().mockResolvedValue({ message: 'Server error' }) } - govUkPayApi.createRecurringPayment.mockResolvedValue(mockResponse) + govUkPayApi.createRecurringPaymentAgreement.mockResolvedValue(mockResponse) try { await sendRecurringPayment(preparedPayment) diff --git a/packages/gafl-webapp-service/src/services/payment/govuk-pay-service.js b/packages/gafl-webapp-service/src/services/payment/govuk-pay-service.js index 80bedb845f..ee150457d3 100644 --- a/packages/gafl-webapp-service/src/services/payment/govuk-pay-service.js +++ b/packages/gafl-webapp-service/src/services/payment/govuk-pay-service.js @@ -109,9 +109,9 @@ export const getPaymentStatus = async (paymentId, recurring = false) => { } } -const createRecurringPayment = async preparedPayment => { +const createRecurringPaymentAgreement = async preparedPayment => { try { - return await govUkPayApi.createRecurringPayment(preparedPayment) + return await govUkPayApi.createRecurringPaymentAgreement(preparedPayment) } catch (err) { /* * Potentially errors caught here (unreachable, timeouts) may be retried - set origin on the error to indicate @@ -122,7 +122,7 @@ const createRecurringPayment = async preparedPayment => { } export const sendRecurringPayment = async preparedPayment => { - const response = await createRecurringPayment(preparedPayment) + const response = await createRecurringPaymentAgreement(preparedPayment) if (response.ok) { const resBody = await response.json() diff --git a/packages/payment-mop-up-job/package-lock.json b/packages/payment-mop-up-job/package-lock.json index d0839e0491..5c90f3883a 100644 --- a/packages/payment-mop-up-job/package-lock.json +++ b/packages/payment-mop-up-job/package-lock.json @@ -1,16 +1,16 @@ { "name": "@defra-fish/payment-mop-up-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@defra-fish/payment-mop-up-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@defra-fish/business-rules-lib": "1.56.0", - "@defra-fish/connectors-lib": "1.56.0", + "@defra-fish/business-rules-lib": "1.57.0-rc.12", + "@defra-fish/connectors-lib": "1.57.0-rc.12", "bottleneck": "^2.19.5", "debug": "^4.3.3", "moment": "^2.29.1" @@ -19,264 +19,11 @@ "node": ">=18.17" } }, - "node_modules/@airbrake/browser": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/browser/-/browser-2.1.8.tgz", - "integrity": "sha512-3xzpkQUq48R+hVbGlxUFLnv8dZg7M9OhBceX473ZrX4osxgfuKRqB+ecNawevKOftBrsjK2gNBayCXTbE+yFzQ==", - "dependencies": { - "@types/promise-polyfill": "^6.0.3", - "@types/request": "2.48.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "promise-polyfill": "^8.1.3", - "tdigest": "^0.1.1" - } - }, - "node_modules/@airbrake/node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/node/-/node-2.1.8.tgz", - "integrity": "sha512-JuEFJk9hW+5YL4kSS+E6KuiBS9YleWnzo+Fu1j9E3VXOC8bGr+wxMGfhQGFuDBHmpco3g4wAY4t+IHZMtaN0rQ==", - "dependencies": { - "@airbrake/browser": "^2.1.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@defra-fish/business-rules-lib": { - "version": "1.50.0-rc.7", - "resolved": "https://registry.npmjs.org/@defra-fish/business-rules-lib/-/business-rules-lib-1.50.0-rc.7.tgz", - "integrity": "sha512-Zc0wkDOx5H4rADDl1TYtVK3HIFl8uB5udcL0VmlXrCGFG3SOZEgeGElR4I0Y4rEz3Y4F/eP/uYSzscf1HGIsCg==", - "dependencies": { - "joi": "^17.6.0", - "moment": "^2.29.1", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@defra-fish/connectors-lib": { - "version": "1.50.0-rc.7", - "resolved": "https://registry.npmjs.org/@defra-fish/connectors-lib/-/connectors-lib-1.50.0-rc.7.tgz", - "integrity": "sha512-DV8J4CnxRuYZTfbX8JCkGhm1gQ4hgScIxdRuoy/X5THMIPaLgDSxBkOH90UT/2D61U8A5QGVfgKjPuKSisfGrA==", - "dependencies": { - "@airbrake/node": "^2.1.7", - "aws-sdk": "^2.1074.0", - "debug": "^4.3.3", - "ioredis": "^4.28.5", - "node-fetch": "^2.6.7", - "redlock": "^4.2.0" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, - "node_modules/@types/node": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", - "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/promise-polyfill": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.6.tgz", - "integrity": "sha512-nKg0HIgdKRKfi5S3IlrpiNWqxiJOqYOV70jAtalqhvb5zJt5IoQMgy1QS3y5wsbUQPOCZHQxaPg+btBUVbA+hA==" - }, - "node_modules/@types/request": { - "version": "2.48.8", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz", - "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sdk": { - "version": "2.1688.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1688.0.tgz", - "integrity": "sha512-L7AWt2+09uDQQfNRUaxvKEM+qHJdwBOln7xiMZg1kE1iNSGSQlwDPGYSFXwdMJDKJkeitJvhFrDhxon3cQ3ppA==", - "hasInstallScript": true, - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -293,337 +40,6 @@ } } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ioredis": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", - "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", - "dependencies": { - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.1", - "denque": "^1.1.0", - "lodash.defaults": "^4.2.0", - "lodash.flatten": "^4.4.0", - "lodash.isarguments": "^3.1.0", - "p-map": "^2.1.0", - "redis-commands": "1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ioredis" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -636,225 +52,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/promise-polyfill": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", - "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==" - }, - "node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "node_modules/redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "dependencies": { - "redis-errors": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/redlock": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/redlock/-/redlock-4.2.0.tgz", - "integrity": "sha512-j+oQlG+dOwcetUt2WJWttu4CZVeRzUrcVcISFmEmfyuwCVSJ93rDT7YSgg7H7rnxwoRyk/jU46kycVka5tW7jA==", - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - }, - "node_modules/standard-as-callback": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" - }, - "node_modules/tdigest": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", - "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", - "dependencies": { - "bintrees": "1.0.2" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" - }, - "node_modules/url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } } } } \ No newline at end of file diff --git a/packages/payment-mop-up-job/package.json b/packages/payment-mop-up-job/package.json index 647aee3355..f11d584891 100644 --- a/packages/payment-mop-up-job/package.json +++ b/packages/payment-mop-up-job/package.json @@ -1,6 +1,6 @@ { "name": "@defra-fish/payment-mop-up-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "description": "Process incomplete web-sales", "type": "module", "engines": { @@ -36,8 +36,8 @@ "test": "echo \"Error: run tests from root\" && exit 1" }, "dependencies": { - "@defra-fish/business-rules-lib": "1.56.0", - "@defra-fish/connectors-lib": "1.56.0", + "@defra-fish/business-rules-lib": "1.57.0-rc.12", + "@defra-fish/connectors-lib": "1.57.0-rc.12", "bottleneck": "^2.19.5", "debug": "^4.3.3", "moment": "^2.29.1" diff --git a/packages/pocl-job/README.md b/packages/pocl-job/README.md index aca7e211e2..475e61e9ef 100644 --- a/packages/pocl-job/README.md +++ b/packages/pocl-job/README.md @@ -9,21 +9,16 @@ to maintain state during the import process. # Environment variables -| name | description | required | default | valid | notes | -| ------------------------- | ----------------------------------------------------------------------------------- | :------: | --------- | ----------------------------------------------- | ----- | -| NODE_ENV | Node environment | no | | development, test, production | | -| POCL_FILE_STAGING_TABLE | The DynamoDB table used for staging POCL files | yes | | | | -| POCL_RECORD_STAGING_TABLE | The DynamoDB table used for staging POCL records | yes | | | | -| POCL_STAGING_TTL | The time to live for records in either staging table | no | 168 hours | | | -| POCL_FTP_HOST | The hostname of the target FTP server | yes | | | | -| POCL_FTP_PORT | The port of the FTP service on the target server | yes | | | | -| POCL_FTP_PATH | The base path under which files should be written to the FTP server | yes | | | | -| POCL_FTP_USERNAME | The username used to authenticate with the FTP server | yes | | | | -| POCL_FTP_PRIVATE_KEY_PATH | The path to the folder containing the keys used to authenticate with the FTP server | yes | | | | -| POCL_S3_BUCKET | The name of the AWS S3 bucket in which to stage pocl data | yes | | | | -| DEBUG | Use to enable output of debug information to the console | yes | | pocl:\*, pocl:staging, pocl:transport, pocl:ftp | | -| AIRBRAKE_HOST | URL of airbrake host | no | | | | -| AIRBRAKE_PROJECT_KEY | Project key for airbrake logging | no | | | | +| name | description | required | default | valid | notes | +| ------------------------- | --------------------------------------------------------- | :------: | --------- | ----------------------------------------------- | ----- | +| NODE_ENV | Node environment | no | | development, test, production | | +| POCL_FILE_STAGING_TABLE | The DynamoDB table used for staging POCL files | yes | | | | +| POCL_RECORD_STAGING_TABLE | The DynamoDB table used for staging POCL records | yes | | | | +| POCL_STAGING_TTL | The time to live for records in either staging table | no | 168 hours | | | +| POCL_S3_BUCKET | The name of the AWS S3 bucket in which to stage pocl data | yes | | | | +| DEBUG | Use to enable output of debug information to the console | yes | | pocl:\*, pocl:staging, pocl:transport, pocl:ftp | | +| AIRBRAKE_HOST | URL of airbrake host | no | | | | +| AIRBRAKE_PROJECT_KEY | Project key for airbrake logging | no | | | | ### See also: diff --git a/packages/pocl-job/package-lock.json b/packages/pocl-job/package-lock.json index 8ed1eb925b..d2b621b636 100644 --- a/packages/pocl-job/package-lock.json +++ b/packages/pocl-job/package-lock.json @@ -1,16 +1,16 @@ { "name": "@defra-fish/pocl-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@defra-fish/pocl-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@defra-fish/business-rules-lib": "1.56.0", - "@defra-fish/connectors-lib": "1.56.0", + "@defra-fish/business-rules-lib": "1.57.0-rc.12", + "@defra-fish/connectors-lib": "1.57.0-rc.12", "commander": "^7.2.0", "debug": "^4.3.3", "filesize": "^6.4.0", @@ -23,256 +23,6 @@ "node": ">=18.17" } }, - "node_modules/@airbrake/browser": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/browser/-/browser-2.1.8.tgz", - "integrity": "sha512-3xzpkQUq48R+hVbGlxUFLnv8dZg7M9OhBceX473ZrX4osxgfuKRqB+ecNawevKOftBrsjK2gNBayCXTbE+yFzQ==", - "dependencies": { - "@types/promise-polyfill": "^6.0.3", - "@types/request": "2.48.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "promise-polyfill": "^8.1.3", - "tdigest": "^0.1.1" - } - }, - "node_modules/@airbrake/node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/node/-/node-2.1.8.tgz", - "integrity": "sha512-JuEFJk9hW+5YL4kSS+E6KuiBS9YleWnzo+Fu1j9E3VXOC8bGr+wxMGfhQGFuDBHmpco3g4wAY4t+IHZMtaN0rQ==", - "dependencies": { - "@airbrake/browser": "^2.1.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@defra-fish/business-rules-lib": { - "version": "1.50.0-rc.8", - "resolved": "https://registry.npmjs.org/@defra-fish/business-rules-lib/-/business-rules-lib-1.50.0-rc.8.tgz", - "integrity": "sha512-Xo+lI+8DON5vahQKQe8ZX1fLpmE2TQm7eThYaFeUxBAEwbhhP7u7l3Ck49YR9hzWsAUWMLWGKgUrWAhCdId/3g==", - "dependencies": { - "joi": "^17.6.0", - "moment": "^2.29.1", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@defra-fish/connectors-lib": { - "version": "1.50.0-rc.8", - "resolved": "https://registry.npmjs.org/@defra-fish/connectors-lib/-/connectors-lib-1.50.0-rc.8.tgz", - "integrity": "sha512-aXPMRNfXBF6xytV+TD7C3fbeEmMb0m2VPsaDiq4uN4ShqqTg2q3OuAo6YUZypKOkX2tH6/Hj4Qpb3UMerNJ6hg==", - "dependencies": { - "@airbrake/node": "^2.1.7", - "aws-sdk": "^2.1074.0", - "debug": "^4.3.3", - "ioredis": "^4.28.5", - "node-fetch": "^2.6.7", - "redlock": "^4.2.0" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, - "node_modules/@types/node": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", - "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/promise-polyfill": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.6.tgz", - "integrity": "sha512-nKg0HIgdKRKfi5S3IlrpiNWqxiJOqYOV70jAtalqhvb5zJt5IoQMgy1QS3y5wsbUQPOCZHQxaPg+btBUVbA+hA==" - }, - "node_modules/@types/request": { - "version": "2.48.8", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz", - "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sdk": { - "version": "2.1688.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1688.0.tgz", - "integrity": "sha512-L7AWt2+09uDQQfNRUaxvKEM+qHJdwBOln7xiMZg1kE1iNSGSQlwDPGYSFXwdMJDKJkeitJvhFrDhxon3cQ3ppA==", - "hasInstallScript": true, - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-sdk/node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" - }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -281,14 +31,6 @@ "node": ">= 10" } }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -305,73 +47,6 @@ } } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/filesize": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", @@ -380,251 +55,6 @@ "node": ">= 0.4.0" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ioredis": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", - "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", - "dependencies": { - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.1", - "denque": "^1.1.0", - "lodash.defaults": "^4.2.0", - "lodash.flatten": "^4.4.0", - "lodash.isarguments": "^3.1.0", - "p-map": "^2.1.0", - "redis-commands": "1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ioredis" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, "node_modules/md5-file": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", @@ -636,25 +66,6 @@ "node": ">=10.13.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -679,95 +90,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/promise-polyfill": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", - "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==" - }, - "node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "node_modules/redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "dependencies": { - "redis-errors": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/redlock": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/redlock/-/redlock-4.2.0.tgz", - "integrity": "sha512-j+oQlG+dOwcetUt2WJWttu4CZVeRzUrcVcISFmEmfyuwCVSJ93rDT7YSgg7H7rnxwoRyk/jU46kycVka5tW7jA==", - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -794,131 +116,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - }, - "node_modules/standard-as-callback": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" - }, - "node_modules/tdigest": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", - "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", - "dependencies": { - "bintrees": "1.0.2" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" - }, - "node_modules/url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } } } } \ No newline at end of file diff --git a/packages/pocl-job/package.json b/packages/pocl-job/package.json index a8c04b3d38..d5035ad6ae 100644 --- a/packages/pocl-job/package.json +++ b/packages/pocl-job/package.json @@ -1,6 +1,6 @@ { "name": "@defra-fish/pocl-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "description": "Post Office Counter Licence sales processor", "type": "module", "engines": { @@ -35,8 +35,8 @@ "test": "echo \"Error: run tests from root\" && exit 1" }, "dependencies": { - "@defra-fish/business-rules-lib": "1.56.0", - "@defra-fish/connectors-lib": "1.56.0", + "@defra-fish/business-rules-lib": "1.57.0-rc.12", + "@defra-fish/connectors-lib": "1.57.0-rc.12", "commander": "^7.2.0", "debug": "^4.3.3", "filesize": "^6.4.0", diff --git a/packages/recurring-payments-job/package-lock.json b/packages/recurring-payments-job/package-lock.json index 22433b8cc3..c48efaa4e2 100644 --- a/packages/recurring-payments-job/package-lock.json +++ b/packages/recurring-payments-job/package-lock.json @@ -1,16 +1,16 @@ { "name": "@defra-fish/recurring-payments-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@defra-fish/recurring-payments-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@defra-fish/business-rules-lib": "1.56.0", - "@defra-fish/connectors-lib": "1.56.0", + "@defra-fish/business-rules-lib": "1.57.0-rc.12", + "@defra-fish/connectors-lib": "1.57.0-rc.12", "commander": "^7.2.0", "moment-timezone": "^0.5.34" }, @@ -18,251 +18,6 @@ "node": ">=18.17" } }, - "node_modules/@airbrake/browser": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/browser/-/browser-2.1.8.tgz", - "integrity": "sha512-3xzpkQUq48R+hVbGlxUFLnv8dZg7M9OhBceX473ZrX4osxgfuKRqB+ecNawevKOftBrsjK2gNBayCXTbE+yFzQ==", - "dependencies": { - "@types/promise-polyfill": "^6.0.3", - "@types/request": "2.48.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "promise-polyfill": "^8.1.3", - "tdigest": "^0.1.1" - } - }, - "node_modules/@airbrake/node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/node/-/node-2.1.8.tgz", - "integrity": "sha512-JuEFJk9hW+5YL4kSS+E6KuiBS9YleWnzo+Fu1j9E3VXOC8bGr+wxMGfhQGFuDBHmpco3g4wAY4t+IHZMtaN0rQ==", - "dependencies": { - "@airbrake/browser": "^2.1.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@defra-fish/business-rules-lib": { - "version": "1.50.0-rc.7", - "resolved": "https://registry.npmjs.org/@defra-fish/business-rules-lib/-/business-rules-lib-1.50.0-rc.7.tgz", - "integrity": "sha512-Zc0wkDOx5H4rADDl1TYtVK3HIFl8uB5udcL0VmlXrCGFG3SOZEgeGElR4I0Y4rEz3Y4F/eP/uYSzscf1HGIsCg==", - "dependencies": { - "joi": "^17.6.0", - "moment": "^2.29.1", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@defra-fish/connectors-lib": { - "version": "1.50.0-rc.7", - "resolved": "https://registry.npmjs.org/@defra-fish/connectors-lib/-/connectors-lib-1.50.0-rc.7.tgz", - "integrity": "sha512-DV8J4CnxRuYZTfbX8JCkGhm1gQ4hgScIxdRuoy/X5THMIPaLgDSxBkOH90UT/2D61U8A5QGVfgKjPuKSisfGrA==", - "dependencies": { - "@airbrake/node": "^2.1.7", - "aws-sdk": "^2.1074.0", - "debug": "^4.3.3", - "ioredis": "^4.28.5", - "node-fetch": "^2.6.7", - "redlock": "^4.2.0" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, - "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/promise-polyfill": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.6.tgz", - "integrity": "sha512-nKg0HIgdKRKfi5S3IlrpiNWqxiJOqYOV70jAtalqhvb5zJt5IoQMgy1QS3y5wsbUQPOCZHQxaPg+btBUVbA+hA==" - }, - "node_modules/@types/request": { - "version": "2.48.8", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz", - "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sdk": { - "version": "2.1641.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1641.0.tgz", - "integrity": "sha512-XkKbVu4VKFjY7wsTSWEYxBR2fVN8gUovAvRrHuJt9mMDdDh/wPkBZ04ayGT+Bd5bgmmIeE3sk3UMokKQEudJEQ==", - "hasInstallScript": true, - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -271,361 +26,6 @@ "node": ">= 10" } }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ioredis": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", - "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", - "dependencies": { - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.1", - "denque": "^1.1.0", - "lodash.defaults": "^4.2.0", - "lodash.flatten": "^4.4.0", - "lodash.isarguments": "^3.1.0", - "p-map": "^2.1.0", - "redis-commands": "1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ioredis" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/joi": { - "version": "17.13.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz", - "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==", - "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/moment": { "version": "2.30.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", @@ -644,230 +44,6 @@ "engines": { "node": "*" } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/promise-polyfill": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", - "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==" - }, - "node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "node_modules/redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "dependencies": { - "redis-errors": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/redlock": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/redlock/-/redlock-4.2.0.tgz", - "integrity": "sha512-j+oQlG+dOwcetUt2WJWttu4CZVeRzUrcVcISFmEmfyuwCVSJ93rDT7YSgg7H7rnxwoRyk/jU46kycVka5tW7jA==", - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - }, - "node_modules/standard-as-callback": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" - }, - "node_modules/tdigest": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", - "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", - "dependencies": { - "bintrees": "1.0.2" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } } } } \ No newline at end of file diff --git a/packages/recurring-payments-job/package.json b/packages/recurring-payments-job/package.json index 1bbb4b7822..565dd11872 100644 --- a/packages/recurring-payments-job/package.json +++ b/packages/recurring-payments-job/package.json @@ -1,6 +1,6 @@ { "name": "@defra-fish/recurring-payments-job", - "version": "1.56.0", + "version": "1.57.0-rc.12", "description": "Rod Licensing Recurring Payments Job", "type": "module", "engines": { @@ -36,8 +36,8 @@ "test": "echo \"Error: run tests from root\" && exit 1" }, "dependencies": { - "@defra-fish/business-rules-lib": "1.56.0", - "@defra-fish/connectors-lib": "1.56.0", + "@defra-fish/business-rules-lib": "1.57.0-rc.12", + "@defra-fish/connectors-lib": "1.57.0-rc.12", "commander": "^7.2.0", "moment-timezone": "^0.5.34" } diff --git a/packages/sales-api-service/package-lock.json b/packages/sales-api-service/package-lock.json index a9ad5f9264..510b51398e 100644 --- a/packages/sales-api-service/package-lock.json +++ b/packages/sales-api-service/package-lock.json @@ -1,17 +1,17 @@ { "name": "@defra-fish/sales-api-service", - "version": "1.56.0", + "version": "1.57.0-rc.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@defra-fish/sales-api-service", - "version": "1.56.0", + "version": "1.57.0-rc.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@defra-fish/business-rules-lib": "1.56.0", - "@defra-fish/connectors-lib": "1.56.0", - "@defra-fish/dynamics-lib": "1.56.0", + "@defra-fish/business-rules-lib": "1.57.0-rc.12", + "@defra-fish/connectors-lib": "1.57.0-rc.12", + "@defra-fish/dynamics-lib": "1.57.0-rc.12", "@hapi/boom": "^9.1.2", "@hapi/hapi": "^20.1.3", "@hapi/inert": "^6.0.3", @@ -30,81 +30,6 @@ "node": ">=18.17" } }, - "node_modules/@airbrake/browser": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/browser/-/browser-2.1.8.tgz", - "integrity": "sha512-3xzpkQUq48R+hVbGlxUFLnv8dZg7M9OhBceX473ZrX4osxgfuKRqB+ecNawevKOftBrsjK2gNBayCXTbE+yFzQ==", - "dependencies": { - "@types/promise-polyfill": "^6.0.3", - "@types/request": "2.48.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "promise-polyfill": "^8.1.3", - "tdigest": "^0.1.1" - } - }, - "node_modules/@airbrake/node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/node/-/node-2.1.8.tgz", - "integrity": "sha512-JuEFJk9hW+5YL4kSS+E6KuiBS9YleWnzo+Fu1j9E3VXOC8bGr+wxMGfhQGFuDBHmpco3g4wAY4t+IHZMtaN0rQ==", - "dependencies": { - "@airbrake/browser": "^2.1.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@defra-fish/business-rules-lib": { - "version": "1.50.0-rc.10", - "resolved": "https://registry.npmjs.org/@defra-fish/business-rules-lib/-/business-rules-lib-1.50.0-rc.10.tgz", - "integrity": "sha512-HGPMV/w4Lh11Pvdoqy985FAJVpwtEdBRBzeP4uGHSGgq+DMsSN9Cl/nK1Ul7r7hkDyKq/cLkfDcd0ys4tOWzWA==", - "dependencies": { - "joi": "^17.6.0", - "moment": "^2.29.1", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@defra-fish/connectors-lib": { - "version": "1.50.0-rc.10", - "resolved": "https://registry.npmjs.org/@defra-fish/connectors-lib/-/connectors-lib-1.50.0-rc.10.tgz", - "integrity": "sha512-l5KCX2Hath6rhSWZWxhWsBkkZUU0IZhQ87wvWtOsuGE5F4FCUTLuobGPe3SaiTvLQ3TZruDaGnXECxMtPYxVEQ==", - "dependencies": { - "@airbrake/node": "^2.1.7", - "aws-sdk": "^2.1074.0", - "debug": "^4.3.3", - "ioredis": "^4.28.5", - "node-fetch": "^2.6.7", - "redlock": "^4.2.0" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@defra-fish/dynamics-lib": { - "version": "1.50.0-rc.10", - "resolved": "https://registry.npmjs.org/@defra-fish/dynamics-lib/-/dynamics-lib-1.50.0-rc.10.tgz", - "integrity": "sha512-7WM4VgFmlh07oxlesAPyktRzhOpKacyLw1WReytDrTYJ82+aj2YttoobxPHdFZZXU1bDhQzSnEMYRJdPMTvibw==", - "dependencies": { - "cache-manager": "^3.6.0", - "cache-manager-ioredis": "^2.1.0", - "debug": "^4.3.3", - "dynamics-web-api": "1.7.3", - "joi": "^17.6.0", - "moment": "^2.29.1", - "pluralize": "^8.0.0", - "simple-oauth2": "^4.3.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=18.17" - } - }, "node_modules/@hapi/accept": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.2.tgz", @@ -434,59 +359,6 @@ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, - "node_modules/@types/node": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", - "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/promise-polyfill": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.6.tgz", - "integrity": "sha512-nKg0HIgdKRKfi5S3IlrpiNWqxiJOqYOV70jAtalqhvb5zJt5IoQMgy1QS3y5wsbUQPOCZHQxaPg+btBUVbA+hA==" - }, - "node_modules/@types/request": { - "version": "2.48.8", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz", - "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -495,137 +367,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sdk": { - "version": "2.1688.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1688.0.tgz", - "integrity": "sha512-L7AWt2+09uDQQfNRUaxvKEM+qHJdwBOln7xiMZg1kE1iNSGSQlwDPGYSFXwdMJDKJkeitJvhFrDhxon3cQ3ppA==", - "hasInstallScript": true, - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/cache-manager": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-3.6.3.tgz", - "integrity": "sha512-dS4DnV6c6cQcVH5OxzIU1XZaACXwvVIiUPkFytnRmLOACuBGv3GQgRQ1RJGRRw4/9DF14ZK2RFlZu1TUgDniMg==", - "dependencies": { - "async": "3.2.3", - "lodash.clonedeep": "^4.5.0", - "lru-cache": "6.0.0" - } - }, - "node_modules/cache-manager-ioredis": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cache-manager-ioredis/-/cache-manager-ioredis-2.1.0.tgz", - "integrity": "sha512-TCxbp9ceuFveTKWuNaCX8QjoC41rAlHen4s63u9Yd+iXlw3efYmimc/u935PKPxSdhkXpnMes4mxtK3/yb0L4g==", - "dependencies": { - "ioredis": "^4.14.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -639,17 +380,6 @@ "node": ">=0.10.0" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -663,14 +393,6 @@ "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", "hasInstallScript": true }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -687,30 +409,6 @@ } } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/denque": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", @@ -733,42 +431,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dynamics-web-api": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/dynamics-web-api/-/dynamics-web-api-1.7.3.tgz", - "integrity": "sha512-ExscNNVrlXr/KoK5Sg/8GJyWndenHC26YKhnZVHaKOtAxWqsQzvveWnDl289BbFwPmwM18ZZWk8G5fFqPp981w==", - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -781,77 +443,11 @@ "node": ">=4" } }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/format-util": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==" }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -903,77 +499,6 @@ "joi": "17.x" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/http-status": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.5.0.tgz", @@ -982,33 +507,11 @@ "node": ">= 0.4.0" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/humanize-duration": { "version": "3.20.1", "resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.20.1.tgz", "integrity": "sha512-r2FR5Tkwo482oDmoutbX22KLzmz83UlWD8KgfQuM+EvxxDS10m2tRgHsKU+M6nFxaDU72YCKmLKi3lYB0CPMnw==" }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, "node_modules/ioredis": { "version": "4.28.5", "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", @@ -1034,46 +537,6 @@ "url": "https://opencollective.com/ioredis" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -1082,33 +545,6 @@ "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/joi": { "version": "17.6.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", @@ -1149,11 +585,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, "node_modules/lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", @@ -1198,17 +629,6 @@ "node": ">= 0.6" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", @@ -1243,25 +663,6 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/ono": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz", @@ -1278,22 +679,6 @@ "node": ">=6" } }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/pretty-bytes": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", @@ -1302,25 +687,6 @@ "node": ">=6" } }, - "node_modules/promise-polyfill": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", - "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==" - }, - "node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/redis-commands": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", @@ -1345,49 +711,6 @@ "node": ">=4" } }, - "node_modules/redlock": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/redlock/-/redlock-4.2.0.tgz", - "integrity": "sha512-j+oQlG+dOwcetUt2WJWttu4CZVeRzUrcVcISFmEmfyuwCVSJ93rDT7YSgg7H7rnxwoRyk/jU46kycVka5tW7jA==", - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/simple-oauth2": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-4.3.0.tgz", - "integrity": "sha512-gjLIfy7M7WZSf3k5IZCQfEozbQwmW80zR9YMH4ph/WWG6S4U6sGhPujz8X6Hj6sZ8l7acSAxiyM4tF0vIN+E+A==", - "dependencies": { - "@hapi/hoek": "^9.0.4", - "@hapi/wreck": "^17.0.0", - "debug": "^4.1.1", - "joi": "^17.3.0" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -1401,11 +724,6 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - }, "node_modules/standard-as-callback": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", @@ -1461,19 +779,6 @@ "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.5.0.tgz", "integrity": "sha512-s00bemwjowAeGGCPxj4BmZrTbeKc9ig/99UEuJUVsaDXovIALD5/Hj0tmDCBGT3tgZQ9O7LrBdPmUlyhcudsLQ==" }, - "node_modules/tdigest": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", - "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", - "dependencies": { - "bintrees": "1.0.2" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/uglify-js": { "version": "3.15.1", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz", @@ -1486,32 +791,6 @@ "node": ">=0.8.0" } }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" - }, - "node_modules/url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -1528,63 +807,11 @@ "node": ">= 0.10" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/packages/sales-api-service/package.json b/packages/sales-api-service/package.json index 6fe248061e..30946413e7 100644 --- a/packages/sales-api-service/package.json +++ b/packages/sales-api-service/package.json @@ -1,6 +1,6 @@ { "name": "@defra-fish/sales-api-service", - "version": "1.56.0", + "version": "1.57.0-rc.12", "description": "Rod Licensing Sales API", "type": "module", "engines": { @@ -35,9 +35,9 @@ "test": "echo \"Error: run tests from root\" && exit 1" }, "dependencies": { - "@defra-fish/business-rules-lib": "1.56.0", - "@defra-fish/connectors-lib": "1.56.0", - "@defra-fish/dynamics-lib": "1.56.0", + "@defra-fish/business-rules-lib": "1.57.0-rc.12", + "@defra-fish/connectors-lib": "1.57.0-rc.12", + "@defra-fish/dynamics-lib": "1.57.0-rc.12", "@hapi/boom": "^9.1.2", "@hapi/hapi": "^20.1.3", "@hapi/inert": "^6.0.3", diff --git a/packages/sales-api-service/src/services/__tests__/__snapshots__/recurring-payments.service.spec.js.snap b/packages/sales-api-service/src/services/__tests__/__snapshots__/recurring-payments.service.spec.js.snap index e67aacad92..7c91321273 100644 --- a/packages/sales-api-service/src/services/__tests__/__snapshots__/recurring-payments.service.spec.js.snap +++ b/packages/sales-api-service/src/services/__tests__/__snapshots__/recurring-payments.service.spec.js.snap @@ -8,7 +8,7 @@ Object { "endDate": 2023-11-12T00:00:00.000Z, "name": "Test Name", "nextDueDate": 2023-11-02T00:00:00.000Z, - "publicId": "1234456", + "publicId": "abcdef99987", "status": 0, } `; diff --git a/packages/sales-api-service/src/services/__tests__/recurring-payments.service.spec.js b/packages/sales-api-service/src/services/__tests__/recurring-payments.service.spec.js index 6631d0c5e9..12f17f891c 100644 --- a/packages/sales-api-service/src/services/__tests__/recurring-payments.service.spec.js +++ b/packages/sales-api-service/src/services/__tests__/recurring-payments.service.spec.js @@ -1,5 +1,6 @@ -import { findDueRecurringPayments } from '@defra-fish/dynamics-lib' -import { getRecurringPayments, processRecurringPayment } from '../recurring-payments.service.js' +import { findDueRecurringPayments, Permission } from '@defra-fish/dynamics-lib' +import { getRecurringPayments, processRecurringPayment, generateRecurringPaymentRecord } from '../recurring-payments.service.js' +import { createHash } from 'node:crypto' jest.mock('@defra-fish/dynamics-lib', () => ({ ...jest.requireActual('@defra-fish/dynamics-lib'), @@ -8,6 +9,13 @@ jest.mock('@defra-fish/dynamics-lib', () => ({ findDueRecurringPayments: jest.fn() })) +jest.mock('node:crypto', () => ({ + createHash: jest.fn(() => ({ + update: () => {}, + digest: () => 'abcdef99987' + })) +})) + const dynamicsLib = jest.requireMock('@defra-fish/dynamics-lib') const getMockRecurringPayment = () => ({ @@ -81,6 +89,22 @@ const getMockPermission = () => ({ }) describe('recurring payments service', () => { + const createSimpleSampleTransactionRecord = () => ({ payment: { recurring: true }, permissions: [{}] }) + const createSamplePermission = overrides => { + const p = new Permission() + p.referenceNumber = 'ABC123' + p.issueDate = '2024-12-04T11:15:12Z' + p.startDate = '2024-12-04T11:45:12Z' + p.endDate = '2025-12-03T23:59:59.999Z' + p.stagingId = 'aaa-111-bbb-222' + p.isRenewal = false + p.isLicenseForYou = 1 + for (const key in overrides) { + p[key] = overrides[key] + } + return p + } + beforeEach(jest.clearAllMocks) describe('getRecurringPayments', () => { it('should equal result of findDueRecurringPayments query', async () => { @@ -123,7 +147,6 @@ describe('recurring payments service', () => { cancelledReason: null, endDate: new Date('2023-11-12'), agreementId: '435678', - publicId: '1234456', status: 0 } }, @@ -133,5 +156,187 @@ describe('recurring payments service', () => { const result = await processRecurringPayment(transactionRecord, contact) expect(result.recurringPayment).toMatchSnapshot() }) + + it.each(['abc-123', 'def-987'])('generates a publicId %s for the recurring payment', async samplePublicId => { + createHash.mockReturnValue({ + update: () => {}, + digest: () => samplePublicId + }) + const result = await processRecurringPayment(createSimpleSampleTransactionRecord(), getMockContact()) + expect(result.recurringPayment.publicId).toBe(samplePublicId) + }) + + it('passes the unique id of the entity to the hash.update function', async () => { + const update = jest.fn() + createHash.mockReturnValueOnce({ + update, + digest: () => {} + }) + const { recurringPayment } = await processRecurringPayment(createSimpleSampleTransactionRecord(), getMockContact()) + expect(update).toHaveBeenCalledWith(recurringPayment.uniqueContentId) + }) + + it('hashes using sha256', async () => { + await processRecurringPayment(createSimpleSampleTransactionRecord(), getMockContact()) + expect(createHash).toHaveBeenCalledWith('sha256') + }) + + it('uses base64 hash string', async () => { + const digest = jest.fn() + createHash.mockReturnValueOnce({ + update: () => {}, + digest + }) + await processRecurringPayment(createSimpleSampleTransactionRecord(), getMockContact()) + expect(digest).toHaveBeenCalledWith('base64') + }) + }) + + describe('generateRecurringPaymentRecord', () => { + const createFinalisedSampleTransaction = (agreementId, permission) => ({ + expires: 1732892402, + cost: 35.8, + isRecurringPaymentSupported: true, + permissions: [ + { + permitId: 'permit-id-1', + licensee: {}, + referenceNumber: '23211125-2WC3FBP-ABNDT8', + isLicenceForYou: true, + ...permission + } + ], + agreementId, + payment: { + amount: 35.8, + source: 'Gov Pay', + method: 'Debit card', + timestamp: '2024-11-22T15:00:45.922Z' + }, + id: 'd26d646f-ed0f-4cf1-b6c1-ccfbbd611757', + dataSource: 'Web Sales', + transactionId: 'd26d646f-ed0f-4cf1-b6c1-ccfbbd611757', + status: { id: 'FINALISED' } + }) + + it.each([ + [ + 'same day start - next due on issue date plus one year minus ten days', + 'iujhy7u8ijhy7u8iuuiuu8ie89', + { + startDate: '2024-11-22T15:30:45.922Z', + issueDate: '2024-11-22T15:00:45.922Z', + endDate: '2025-11-21T23:59:59.999Z' + }, + '2025-11-12T00:00:00.000Z' + ], + [ + 'next day start - next due on end date minus ten days', + '89iujhy7u8i87yu9iokjuij901', + { + startDate: '2024-11-23T00:00:00.000Z', + issueDate: '2024-11-22T15:00:45.922Z', + endDate: '2025-11-22T23:59:59.999Z' + }, + '2025-11-12T00:00:00.000Z' + ], + [ + 'starts ten days after issue - next due on issue date plus one year', + '9o8u7yhui89u8i9oiu8i8u7yhu', + { + startDate: '2024-11-22T00:00:00.000Z', + issueDate: '2024-11-12T15:00:45.922Z', + endDate: '2025-11-21T23:59:59.999Z' + }, + '2025-11-12T00:00:00.000Z' + ], + [ + 'starts twenty days after issue - next due on issue date plus one year', + '9o8u7yhui89u8i9oiu8i8u7yhu', + { + startDate: '2024-12-01T00:00:00.000Z', + issueDate: '2024-11-12T15:00:45.922Z', + endDate: '2025-01-30T23:59:59.999Z' + }, + '2025-11-12T00:00:00.000Z' + ], + [ + "issued on 29th Feb '24, starts on 30th March '24 - next due on 28th Feb '25", + 'hy7u8ijhyu78jhyu8iu8hjiujn', + { + startDate: '2024-03-30T00:00:00.000Z', + issueDate: '2024-02-29T12:38:24.123Z', + endDate: '2025-03-29T23:59:59.999Z' + }, + '2025-02-28T00:00:00.000Z' + ], + [ + "issued on 30th March '25 at 1am, starts at 1:30am - next due on 20th March '26", + 'jhy67uijhy67u87yhtgjui8u7j', + { + startDate: '2025-03-30T01:30:00.000Z', + issueDate: '2025-03-30T01:00:00.000Z', + endDate: '2026-03-29T23:59:59.999Z' + }, + '2026-03-20T00:00:00.000Z' + ] + ])('creates record from transaction with %s', (_d, agreementId, permissionData, expectedNextDueDate) => { + const sampleTransaction = createFinalisedSampleTransaction(agreementId, permissionData) + const permission = createSamplePermission(permissionData) + + const rpRecord = generateRecurringPaymentRecord(sampleTransaction, permission) + + expect(rpRecord).toEqual( + expect.objectContaining({ + payment: expect.objectContaining({ + recurring: expect.objectContaining({ + name: '', + nextDueDate: expectedNextDueDate, + cancelledDate: null, + cancelledReason: null, + endDate: permissionData.endDate, + agreementId, + status: 1 + }) + }), + permissions: expect.arrayContaining([permission]) + }) + ) + }) + + it.each([ + [ + 'start date is thirty one days after issue date', + { + startDate: '2024-12-14T00:00:00.000Z', + issueDate: '2024-11-12T15:00:45.922Z', + endDate: '2025-12-13T23:59:59.999Z' + } + ], + [ + 'start date precedes issue date', + { + startDate: '2024-11-11T00:00:00.000Z', + issueDate: '2024-11-12T15:00:45.922Z', + endDate: '2025-11-10T23:59:59.999Z' + } + ] + ])('throws an error for invalid dates when %s', (_d, permission) => { + const sampleTransaction = createFinalisedSampleTransaction('hyu78ijhyu78ijuhyu78ij9iu6', permission) + + expect(() => generateRecurringPaymentRecord(sampleTransaction)).toThrow('Invalid dates provided for permission') + }) + + it('returns a false flag when agreementId is not present', () => { + const sampleTransaction = createFinalisedSampleTransaction(null, { + startDate: '2024-11-22T15:30:45.922Z', + issueDate: '2024-11-22T15:00:45.922Z', + endDate: '2025-11-21T23:59:59.999Z' + }) + + const rpRecord = generateRecurringPaymentRecord(sampleTransaction) + + expect(rpRecord.payment.recurring).toBeFalsy() + }) }) }) diff --git a/packages/sales-api-service/src/services/recurring-payments.service.js b/packages/sales-api-service/src/services/recurring-payments.service.js index aee997d2a7..36e8e0bf3a 100644 --- a/packages/sales-api-service/src/services/recurring-payments.service.js +++ b/packages/sales-api-service/src/services/recurring-payments.service.js @@ -1,22 +1,62 @@ import { executeQuery, findDueRecurringPayments, RecurringPayment } from '@defra-fish/dynamics-lib' +import { createHash } from 'node:crypto' +import { ADVANCED_PURCHASE_MAX_DAYS } from '@defra-fish/business-rules-lib' +import moment from 'moment' export const getRecurringPayments = date => executeQuery(findDueRecurringPayments(date)) +const getNextDueDate = (startDate, issueDate, endDate) => { + const mStart = moment(startDate) + if (mStart.isAfter(moment(issueDate)) && mStart.isSameOrBefore(moment(issueDate).add(ADVANCED_PURCHASE_MAX_DAYS, 'days'), 'day')) { + if (mStart.isSame(moment(issueDate), 'day')) { + return moment(startDate).add(1, 'year').subtract(10, 'days').startOf('day').toISOString() + } + if (mStart.isBefore(moment(issueDate).add(10, 'days'), 'day')) { + return moment(endDate).subtract(10, 'days').startOf('day').toISOString() + } + return moment(issueDate).add(1, 'year').startOf('day').toISOString() + } + throw new Error('Invalid dates provided for permission') +} + +export const generateRecurringPaymentRecord = (transactionRecord, permission) => { + if (transactionRecord.agreementId) { + const [{ startDate, issueDate, endDate }] = transactionRecord.permissions + return { + payment: { + recurring: { + name: '', + nextDueDate: getNextDueDate(startDate, issueDate, endDate), + cancelledDate: null, + cancelledReason: null, + endDate, + agreementId: transactionRecord.agreementId, + status: 1 + } + }, + permissions: [permission] + } + } + return { payment: { recurring: false } } +} + /** * Process a recurring payment instruction * @param transactionRecord * @returns {Promise<{recurringPayment: RecurringPayment | null}>} */ export const processRecurringPayment = async (transactionRecord, contact) => { + const hash = createHash('sha256') if (transactionRecord.payment?.recurring) { const recurringPayment = new RecurringPayment() + hash.update(recurringPayment.uniqueContentId) recurringPayment.name = transactionRecord.payment.recurring.name recurringPayment.nextDueDate = transactionRecord.payment.recurring.nextDueDate recurringPayment.cancelledDate = transactionRecord.payment.recurring.cancelledDate recurringPayment.cancelledReason = transactionRecord.payment.recurring.cancelledReason recurringPayment.endDate = transactionRecord.payment.recurring.endDate recurringPayment.agreementId = transactionRecord.payment.recurring.agreementId - recurringPayment.publicId = transactionRecord.payment.recurring.publicId + recurringPayment.publicId = hash.digest('base64') recurringPayment.status = transactionRecord.payment.recurring.status const [permission] = transactionRecord.permissions recurringPayment.bindToEntity(RecurringPayment.definition.relationships.activePermission, permission) diff --git a/packages/sales-api-service/src/services/transactions/__tests__/process-transaction-queue.spec.js b/packages/sales-api-service/src/services/transactions/__tests__/process-transaction-queue.spec.js index f86a4c786d..4196a345b8 100644 --- a/packages/sales-api-service/src/services/transactions/__tests__/process-transaction-queue.spec.js +++ b/packages/sales-api-service/src/services/transactions/__tests__/process-transaction-queue.spec.js @@ -26,6 +26,7 @@ import { TRANSACTION_STAGING_TABLE, TRANSACTION_STAGING_HISTORY_TABLE } from '.. import AwsMock from 'aws-sdk' import { POCL_DATA_SOURCE, DDE_DATA_SOURCE } from '@defra-fish/business-rules-lib' import moment from 'moment' +import { processRecurringPayment, generateRecurringPaymentRecord } from '../../recurring-payments.service.js' jest.mock('../../reference-data.service.js', () => ({ ...jest.requireActual('../../reference-data.service.js'), @@ -64,9 +65,12 @@ jest.mock('@defra-fish/business-rules-lib', () => ({ START_AFTER_PAYMENT_MINUTES: 30 })) +jest.mock('../../recurring-payments.service.js') + describe('transaction service', () => { beforeAll(() => { TRANSACTION_STAGING_TABLE.TableName = 'TestTable' + processRecurringPayment.mockResolvedValue({}) }) beforeEach(jest.clearAllMocks) @@ -125,6 +129,7 @@ describe('transaction service', () => { [ 'licences with a recurring payment', () => { + processRecurringPayment.mockResolvedValueOnce({ recurringPayment: new RecurringPayment() }) const mockRecord = mockFinalisedTransactionRecord() mockRecord.payment.recurring = { name: 'Test name', @@ -143,9 +148,9 @@ describe('transaction service', () => { expect.any(Transaction), expect.any(TransactionJournal), expect.any(TransactionJournal), - expect.any(RecurringPayment), expect.any(Contact), expect.any(Permission), + expect.any(RecurringPayment), expect.any(RecurringPaymentInstruction), expect.any(ConcessionProof) ] @@ -369,6 +374,43 @@ describe('transaction service', () => { expect(paymentJournal.total).toBe(cost) }) }) + + describe('recurring payment processing', () => { + it('passes transaction record to generateRecurringPaymentRecord', async () => { + const callingArgs = {} + generateRecurringPaymentRecord.mockImplementationOnce(transaction => { + callingArgs.transaction = JSON.parse(JSON.stringify(transaction)) + }) + const mockRecord = mockFinalisedTransactionRecord() + AwsMock.DynamoDB.DocumentClient.__setResponse('get', { Item: mockRecord }) + await processQueue({ id: mockRecord.id }) + // jest.fn args aren't immutable and transaction is changed in processQueue, so we use our clone that hasn't changed + expect(callingArgs.transaction).toEqual(mockRecord) + }) + + it('passes permission to generateRecurringPaymentRecord', async () => { + const mockRecord = mockFinalisedTransactionRecord() + const expectedPermissionData = {} + const keysToCopy = ['referenceNumber', 'issueDate', 'startDate', 'endDate', 'isRenewal'] + for (const key of keysToCopy) { + expectedPermissionData[key] = mockRecord.permissions[0][key] + } + AwsMock.DynamoDB.DocumentClient.__setResponse('get', { Item: mockRecord }) + + await processQueue({ id: mockRecord.id }) + + expect(generateRecurringPaymentRecord).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining(expectedPermissionData)) + }) + + it('passes return value of generateRecurringPaymentRecord to processRecurringPayment', async () => { + const rprSymbol = Symbol('rpr') + const finalisedTransaction = mockFinalisedTransactionRecord() + generateRecurringPaymentRecord.mockReturnValueOnce(rprSymbol) + AwsMock.DynamoDB.DocumentClient.__setResponse('get', { Item: finalisedTransaction }) + await processQueue({ id: finalisedTransaction.id }) + expect(processRecurringPayment).toHaveBeenCalledWith(rprSymbol, expect.any(Contact)) + }) + }) }) describe('.getTransactionJournalRefNumber', () => { diff --git a/packages/sales-api-service/src/services/transactions/process-transaction-queue.js b/packages/sales-api-service/src/services/transactions/process-transaction-queue.js index 0af121ba12..e10221e4b7 100644 --- a/packages/sales-api-service/src/services/transactions/process-transaction-queue.js +++ b/packages/sales-api-service/src/services/transactions/process-transaction-queue.js @@ -12,7 +12,7 @@ import { } from '@defra-fish/dynamics-lib' import { DDE_DATA_SOURCE, FULFILMENT_SWITCHOVER_DATE, POCL_TRANSACTION_SOURCES } from '@defra-fish/business-rules-lib' import { getReferenceDataForEntityAndId, getGlobalOptionSetValue, getReferenceDataForEntity } from '../reference-data.service.js' -import { processRecurringPayment } from '../recurring-payments.service.js' +import { generateRecurringPaymentRecord, processRecurringPayment } from '../recurring-payments.service.js' import { resolveContactPayload } from '../contacts.service.js' import { retrieveStagedTransaction } from './retrieve-transaction.js' import { TRANSACTION_STAGING_TABLE, TRANSACTION_STAGING_HISTORY_TABLE } from '../../config.js' @@ -65,11 +65,6 @@ export async function processQueue ({ id }) { isRenewal ) - const { recurringPayment } = await processRecurringPayment(transactionRecord, contact) - if (recurringPayment) { - entities.push(recurringPayment) - } - permission.bindToEntity(Permission.definition.relationships.licensee, contact) permission.bindToEntity(Permission.definition.relationships.permit, permit) permission.bindToEntity(Permission.definition.relationships.transaction, transaction) @@ -78,7 +73,10 @@ export async function processQueue ({ id }) { entities.push(contact, permission) + const { recurringPayment } = await processRecurringPayment(generateRecurringPaymentRecord(transactionRecord, permission), contact) + if (recurringPayment && permit.isRecurringPaymentSupported) { + entities.push(recurringPayment) const paymentInstruction = new RecurringPaymentInstruction() paymentInstruction.bindToEntity(RecurringPaymentInstruction.definition.relationships.licensee, contact) paymentInstruction.bindToEntity(RecurringPaymentInstruction.definition.relationships.permit, permit) diff --git a/packages/sqs-receiver-service/package-lock.json b/packages/sqs-receiver-service/package-lock.json index a2c0d78a56..33aef08177 100644 --- a/packages/sqs-receiver-service/package-lock.json +++ b/packages/sqs-receiver-service/package-lock.json @@ -1,15 +1,15 @@ { "name": "@defra-fish/sqs-receiver-service", - "version": "1.56.0", + "version": "1.57.0-rc.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@defra-fish/sqs-receiver-service", - "version": "1.56.0", + "version": "1.57.0-rc.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@defra-fish/connectors-lib": "1.56.0", + "@defra-fish/connectors-lib": "1.57.0-rc.12", "debug": "^4.3.1", "joi": "^17.3.0", "node-fetch": "^2.6.1", @@ -22,49 +22,6 @@ "node": ">=18.17" } }, - "node_modules/@airbrake/browser": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/browser/-/browser-2.1.8.tgz", - "integrity": "sha512-3xzpkQUq48R+hVbGlxUFLnv8dZg7M9OhBceX473ZrX4osxgfuKRqB+ecNawevKOftBrsjK2gNBayCXTbE+yFzQ==", - "dependencies": { - "@types/promise-polyfill": "^6.0.3", - "@types/request": "2.48.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "promise-polyfill": "^8.1.3", - "tdigest": "^0.1.1" - } - }, - "node_modules/@airbrake/node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@airbrake/node/-/node-2.1.8.tgz", - "integrity": "sha512-JuEFJk9hW+5YL4kSS+E6KuiBS9YleWnzo+Fu1j9E3VXOC8bGr+wxMGfhQGFuDBHmpco3g4wAY4t+IHZMtaN0rQ==", - "dependencies": { - "@airbrake/browser": "^2.1.8", - "cross-fetch": "^3.1.5", - "error-stack-parser": "^2.0.4", - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@defra-fish/connectors-lib": { - "version": "1.50.0-rc.7", - "resolved": "https://registry.npmjs.org/@defra-fish/connectors-lib/-/connectors-lib-1.50.0-rc.7.tgz", - "integrity": "sha512-DV8J4CnxRuYZTfbX8JCkGhm1gQ4hgScIxdRuoy/X5THMIPaLgDSxBkOH90UT/2D61U8A5QGVfgKjPuKSisfGrA==", - "dependencies": { - "@airbrake/node": "^2.1.7", - "aws-sdk": "^2.1074.0", - "debug": "^4.3.3", - "ioredis": "^4.28.5", - "node-fetch": "^2.6.7", - "redlock": "^4.2.0" - }, - "engines": { - "node": ">=18.17" - } - }, "node_modules/@hapi/hoek": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", @@ -311,40 +268,6 @@ "node": ">= 6" } }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, - "node_modules/@types/node": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", - "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/promise-polyfill": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.6.tgz", - "integrity": "sha512-nKg0HIgdKRKfi5S3IlrpiNWqxiJOqYOV70jAtalqhvb5zJt5IoQMgy1QS3y5wsbUQPOCZHQxaPg+btBUVbA+hA==" - }, - "node_modules/@types/request": { - "version": "2.48.8", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz", - "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -464,54 +387,6 @@ "semver": "bin/semver" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sdk": { - "version": "2.1688.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1688.0.tgz", - "integrity": "sha512-L7AWt2+09uDQQfNRUaxvKEM+qHJdwBOln7xiMZg1kE1iNSGSQlwDPGYSFXwdMJDKJkeitJvhFrDhxon3cQ3ppA==", - "hasInstallScript": true, - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/axios": { "version": "0.21.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", @@ -527,25 +402,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -555,11 +411,6 @@ "node": ">=8" } }, - "node_modules/bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" - }, "node_modules/blessed": { "version": "0.1.81", "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", @@ -572,11 +423,6 @@ "node": ">= 0.8.0" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "node_modules/bodec": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz", @@ -605,16 +451,6 @@ "node": ">=8" } }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -630,24 +466,6 @@ "node": ">= 0.8" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -700,14 +518,6 @@ "node": ">=8.10.0" } }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -726,17 +536,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", @@ -774,14 +573,6 @@ "moment-timezone": "^0.5.x" } }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/culvert": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", @@ -825,22 +616,6 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/degenerator": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-2.2.0.tgz", @@ -855,22 +630,6 @@ "node": ">= 6" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -901,33 +660,6 @@ "node": ">=8.6" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -999,14 +731,6 @@ "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI=", "dev": true }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -1060,27 +784,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -1132,24 +835,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1215,17 +901,6 @@ "node": ">= 6" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -1253,64 +928,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/http-errors": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", @@ -1366,11 +983,6 @@ "node": ">=0.10.0" } }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1384,7 +996,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/ini": { "version": "1.3.8", @@ -1392,52 +1005,12 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/ioredis": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", - "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", - "dependencies": { - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.1", - "denque": "^1.1.0", - "lodash.defaults": "^4.2.0", - "lodash.flatten": "^4.4.0", - "lodash.isarguments": "^3.1.0", - "p-map": "^2.1.0", - "redis-commands": "1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ioredis" - } - }, "node_modules/ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1450,17 +1023,6 @@ "node": ">=8" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", @@ -1482,20 +1044,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -1517,33 +1065,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/joi": { "version": "17.6.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", @@ -1605,21 +1126,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, "node_modules/log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", @@ -1638,25 +1144,6 @@ "yallist": "^3.0.2" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1833,14 +1320,6 @@ "node": ">= 0.8.0" } }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" - } - }, "node_modules/pac-proxy-agent": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-4.1.0.tgz", @@ -2016,14 +1495,6 @@ "charm": "~0.1.1" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -2033,11 +1504,6 @@ "node": ">= 0.8.0" } }, - "node_modules/promise-polyfill": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", - "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==" - }, "node_modules/promptly": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", @@ -2081,20 +1547,6 @@ "node": ">=8" } }, - "node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/raw-body": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", @@ -2152,41 +1604,6 @@ "node": ">=8.10.0" } }, - "node_modules/redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "node_modules/redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "dependencies": { - "redis-errors": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/redlock": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/redlock/-/redlock-4.2.0.tgz", - "integrity": "sha512-j+oQlG+dOwcetUt2WJWttu4CZVeRzUrcVcISFmEmfyuwCVSJ93rDT7YSgg7H7rnxwoRyk/jU46kycVka5tW7jA==", - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/require-in-the-middle": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.1.0.tgz", @@ -2257,11 +1674,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" - }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -2295,22 +1707,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -2392,16 +1788,6 @@ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "dev": true }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - }, - "node_modules/standard-as-callback": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" - }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -2429,14 +1815,6 @@ "node": ">=8" } }, - "node_modules/tdigest": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", - "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", - "dependencies": { - "bintrees": "1.0.2" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2490,11 +1868,6 @@ "node": ">= 0.8.0" } }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" - }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -2513,27 +1886,6 @@ "node": ">= 0.8" } }, - "node_modules/url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -2580,24 +1932,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -2634,26 +1968,6 @@ } } }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/xregexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", diff --git a/packages/sqs-receiver-service/package.json b/packages/sqs-receiver-service/package.json index b97ccf8714..4cdd575b33 100644 --- a/packages/sqs-receiver-service/package.json +++ b/packages/sqs-receiver-service/package.json @@ -1,6 +1,6 @@ { "name": "@defra-fish/sqs-receiver-service", - "version": "1.56.0", + "version": "1.57.0-rc.12", "description": "SQS Receiver service", "type": "module", "engines": { @@ -35,7 +35,7 @@ "test": "echo \"Error: run tests from root\" && exit 1" }, "dependencies": { - "@defra-fish/connectors-lib": "1.56.0", + "@defra-fish/connectors-lib": "1.57.0-rc.12", "debug": "^4.3.1", "joi": "^17.3.0", "node-fetch": "^2.6.1",