diff --git a/.github/workflows/close-stale-prs-after-30-days.yml b/.github/workflows/close-stale-prs-after-30-days.yml
new file mode 100644
index 000000000..7e06a9486
--- /dev/null
+++ b/.github/workflows/close-stale-prs-after-30-days.yml
@@ -0,0 +1,19 @@
+name: 'Close stale PRs after 30 days'
+on:
+ schedule:
+ - cron: '0 0 * * *'
+ workflow_dispatch:
+
+permissions:
+ pull-requests: write
+
+jobs:
+ stale:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/stale@v9
+ with:
+ stale-pr-message: 'This PR has been marked with label stale Since it has been inactive for 20 days. It will automatically be closed in 10 days if no further activity occurs.'
+ close-pr-message: 'This PR has been automatically closed because it has been inactive for 30 days. Please reopen if you are still working on it.'
+ days-before-pr-stale: 20
+ days-before-pr-close: 10
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index ba81203fc..a6af58c1f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,4 +21,5 @@ data
*.tar.gz
.secrets
-.env*
\ No newline at end of file
+.env*
+notebooks
\ No newline at end of file
diff --git a/package.json b/package.json
index 70fd13275..0170b7e64 100644
--- a/package.json
+++ b/package.json
@@ -57,6 +57,7 @@
"pino-pretty": "^11.0.0",
"prettier": "^3.4.2",
"react-intl": "^6.4.3",
+ "vite-tsconfig-paths": "^3.5.0",
"vitest": "^2.1.2"
},
"dependencies": {
@@ -65,7 +66,7 @@
"@hapi/hapi": "^20.0.1",
"@hapi/inert": "^6.0.3",
"@opencrvs/mosip": "^1.7.0-alpha.17",
- "@opencrvs/toolkit": "0.0.33",
+ "@opencrvs/toolkit": "0.0.34-rr",
"@types/chalk": "^2.2.0",
"@types/csv2json": "^1.4.0",
"@types/fhir": "^0.0.30",
diff --git a/src/api/certificates/handler.ts b/src/api/certificates/handler.ts
index 7f15b64f6..a66a82223 100644
--- a/src/api/certificates/handler.ts
+++ b/src/api/certificates/handler.ts
@@ -188,6 +188,56 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) {
bolditalics: '/api/countryconfig/fonts/NotoSans-Regular.ttf'
}
}
+ },
+ {
+ id: 'tennis-club-membership-certificate',
+ event: Event.TENNIS_CLUB_MEMBERSHIP,
+ label: {
+ id: 'certificates.tennis-club-membership.certificate.copy',
+ defaultMessage: 'Tennis Club Membership Certificate copy',
+ description: 'The label for a tennis-club-membership certificate'
+ },
+ isDefault: false,
+ fee: {
+ onTime: 7,
+ late: 10.6,
+ delayed: 18
+ },
+ svgUrl:
+ '/api/countryconfig/certificates/tennis-club-membership-certificate.svg',
+ fonts: {
+ 'Noto Sans': {
+ normal: '/api/countryconfig/fonts/NotoSans-Regular.ttf',
+ bold: '/api/countryconfig/fonts/NotoSans-Bold.ttf',
+ italics: '/api/countryconfig/fonts/NotoSans-Regular.ttf',
+ bolditalics: '/api/countryconfig/fonts/NotoSans-Regular.ttf'
+ }
+ }
+ },
+ {
+ id: 'tennis-club-membership-certified-certificate',
+ event: Event.TENNIS_CLUB_MEMBERSHIP,
+ label: {
+ id: 'certificates.tennis-club-membership.certificate.certified-copy',
+ defaultMessage: 'Tennis Club Membership Certificate certified copy',
+ description: 'The label for a tennis-club-membership certificate'
+ },
+ isDefault: false,
+ fee: {
+ onTime: 7,
+ late: 10.6,
+ delayed: 18
+ },
+ svgUrl:
+ '/api/countryconfig/certificates/tennis-club-membership-certified-certificate.svg',
+ fonts: {
+ 'Noto Sans': {
+ normal: '/api/countryconfig/fonts/NotoSans-Regular.ttf',
+ bold: '/api/countryconfig/fonts/NotoSans-Bold.ttf',
+ italics: '/api/countryconfig/fonts/NotoSans-Regular.ttf',
+ bolditalics: '/api/countryconfig/fonts/NotoSans-Regular.ttf'
+ }
+ }
}
]
return certificateConfigs
diff --git a/src/api/certificates/source/tennis-club-membership-certificate.svg b/src/api/certificates/source/tennis-club-membership-certificate.svg
new file mode 100644
index 000000000..9b0b28aef
--- /dev/null
+++ b/src/api/certificates/source/tennis-club-membership-certificate.svg
@@ -0,0 +1,157 @@
+
\ No newline at end of file
diff --git a/src/api/certificates/source/tennis-club-membership-certified-certificate.svg b/src/api/certificates/source/tennis-club-membership-certified-certificate.svg
new file mode 100644
index 000000000..15b15a212
--- /dev/null
+++ b/src/api/certificates/source/tennis-club-membership-certified-certificate.svg
@@ -0,0 +1,157 @@
+
\ No newline at end of file
diff --git a/src/api/custom-event/handler.ts b/src/api/custom-event/handler.ts
index ad2c58b24..c537c0be4 100644
--- a/src/api/custom-event/handler.ts
+++ b/src/api/custom-event/handler.ts
@@ -8,10 +8,13 @@
*
* Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS.
*/
-import * as Hapi from '@hapi/hapi'
+import { env } from '@countryconfig/environment'
import { tennisClubMembershipEvent } from '@countryconfig/form/tennis-club-membership'
-import { EventDocument } from '@opencrvs/toolkit/events'
import { birthEvent } from '@countryconfig/form/v2/birth'
+import { logger } from '@countryconfig/logger'
+import * as Hapi from '@hapi/hapi'
+import { createClient } from '@opencrvs/toolkit/api'
+import { EventDocument } from '@opencrvs/toolkit/events'
export function getCustomEventsHandler(
request: Hapi.Request,
@@ -20,12 +23,25 @@ export function getCustomEventsHandler(
return h.response([tennisClubMembershipEvent, birthEvent]).code(200)
}
-export function onRegisterHandler(
+export async function onRegisterHandler(
request: Hapi.Request,
h: Hapi.ResponseToolkit
) {
const event = EventDocument.parse(request.payload)
- console.log(event)
+ const client = createClient(
+ env.GATEWAY_URL + '/events',
+ request.headers.authorization
+ )
+
+ logger.info(`Confirming registration ${event.id}`)
+ await client.event.registration.confirm.mutate({
+ eventId: event.id,
+ data: {
+ status: 'CONFIRMED'
+ }
+ })
+ logger.info(`Registration ${event.id} confirmed`)
+
return h.response().code(200)
}
diff --git a/src/client-config.js b/src/client-config.js
index d423e7c05..978bd7516 100644
--- a/src/client-config.js
+++ b/src/client-config.js
@@ -27,5 +27,8 @@ window.config = {
REGISTRATIONS_DASHBOARD_URL: '',
// http://localhost:4444/public/dashboard/a17e9bc0-15a2-4bd1-92fa-ab0f346227ca#bordered=false&titled=false&refresh=300
STATISTICS_DASHBOARD_URL: '',
- FEATURES: {}
+ FEATURES: {
+ // The V2_EVENTS variable is passed down from src/index.ts:309
+ V2_EVENTS: {{ V2_EVENTS }}
+ }
}
diff --git a/src/data-seeding/employees/source/default-employees.csv b/src/data-seeding/employees/source/default-employees.csv
index f3cc79280..00061ca97 100644
--- a/src/data-seeding/employees/source/default-employees.csv
+++ b/src/data-seeding/employees/source/default-employees.csv
@@ -1,12 +1,12 @@
primaryOfficeId,givenNames,familyName,role,mobile,username,email,password
-CRVS_OFFICE_JWMRGwDBXK,Kalusha,Bwalya,SOCIAL_WORKER,+260911111111,k.bwalya,kalushabwalya17@gmail.com,test
-CRVS_OFFICE_JWMRGwDBXK,Felix,Katongo,REGISTRATION_AGENT,+260922222222,f.katongo,kalushabwalya17+@gmail.com,test
-CRVS_OFFICE_JWMRGwDBXK,Kennedy,Mweene,LOCAL_REGISTRAR,+260933333333,k.mweene,kalushabwalya1.7@gmail.com,test
-CRVS_OFFICE_JWMRGwDBXK,Emmanuel,Mayuka,LOCAL_SYSTEM_ADMIN,+260921681112,e.mayuka,kalushabwalya.17@gmail.com,test
-CRVS_OFFICE_2OKicPQMNI,Jonathan,Campbell,NATIONAL_SYSTEM_ADMIN,+260921111111,j.campbell,kalushabwaly.a17@gmail.com,test
-CRVS_OFFICE_okQp4uKCz0,Patrick,Gondwe,LOCAL_LEADER,+260912121212,p.gondwe,kalushabwal.ya17@gmail.com,test
-CRVS_OFFICE_okQp4uKCz0,Joshua,Mutale,REGISTRATION_AGENT,+260923232323,j.mutale,kalushabwa.lya17@gmail.com,test
-CRVS_OFFICE_okQp4uKCz0,Derrick,Bulaya,LOCAL_REGISTRAR,+260934343434,d.bulaya,kalushabw.alya17@gmail.com,test
-CRVS_OFFICE_okQp4uKCz0,Alex,Ngonga,LOCAL_SYSTEM_ADMIN,+260978787878,a.ngonga,kalushab.walya17@gmail.com,test
-CRVS_OFFICE_2OKicPQMNI,Edgar,Kazembe,PERFORMANCE_MANAGER,+260977777777,e.kazembe,kalusha.bwalya17@gmail.com,test
-CRVS_OFFICE_2OKicPQMNI,Joseph,Musonda,NATIONAL_REGISTRAR,+260915151515,j.musonda,kalush.abwalya17@gmail.com,test
+CRVS_OFFICE_JWMRGwDBXK,Kalusha,Bwalya,SOCIAL_WORKER,+260911111111,k.bwalya,opencrvsmosipcollab@gmail.com,test
+CRVS_OFFICE_JWMRGwDBXK,Felix,Katongo,REGISTRATION_AGENT,+260922222222,f.katongo,opencrvsmosipcollab+@gmail.com,test
+CRVS_OFFICE_JWMRGwDBXK,Kennedy,Mweene,LOCAL_REGISTRAR,+260933333333,k.mweene,opencrvsmosipcolla.b@gmail.com,test
+CRVS_OFFICE_JWMRGwDBXK,Emmanuel,Mayuka,LOCAL_SYSTEM_ADMIN,+260921681112,e.mayuka,opencrvsmosipcoll.ab@gmail.com,test
+CRVS_OFFICE_2OKicPQMNI,Jonathan,Campbell,NATIONAL_SYSTEM_ADMIN,+260921111111,j.campbell,opencrvsmosipcol.lab@gmail.com,test
+CRVS_OFFICE_okQp4uKCz0,Patrick,Gondwe,LOCAL_LEADER,+260912121212,p.gondwe,opencrvsmosipco.llab@gmail.com,test
+CRVS_OFFICE_okQp4uKCz0,Joshua,Mutale,REGISTRATION_AGENT,+260923232323,j.mutale,opencrvsmosipc.ollab@gmail.com,test
+CRVS_OFFICE_okQp4uKCz0,Derrick,Bulaya,LOCAL_REGISTRAR,+260934343434,d.bulaya,opencrvsmosip.collab@gmail.com,test
+CRVS_OFFICE_okQp4uKCz0,Alex,Ngonga,LOCAL_SYSTEM_ADMIN,+260978787878,a.ngonga,opencrvsmosi.pcollab@gmail.com,test
+CRVS_OFFICE_2OKicPQMNI,Edgar,Kazembe,PERFORMANCE_MANAGER,+260977777777,e.kazembe,opencrvsmos.ipcollab@gmail.com,test
+CRVS_OFFICE_2OKicPQMNI,Joseph,Musonda,NATIONAL_REGISTRAR,+260915151515,j.musonda,opencrvsmo.sipcollab@gmail.com,test
diff --git a/src/form/tennis-club-membership.ts b/src/form/tennis-club-membership.ts
index 130741436..e2f5f16f9 100644
--- a/src/form/tennis-club-membership.ts
+++ b/src/form/tennis-club-membership.ts
@@ -10,7 +10,6 @@
*/
import { defineConfig, defineForm } from '@opencrvs/toolkit/events'
-
import {
defineConditional,
or,
@@ -18,20 +17,19 @@ import {
userHasScope,
and,
not,
- field,
- deduplication
+ field
} from '@opencrvs/toolkit/conditionals'
-import { getAddressFields } from './v2/person/address'
+import { Event } from './types/types'
const TENNIS_CLUB_FORM = defineForm({
label: {
- id: 'event.tennis-club-membership.action.declare.form.label',
+ id: 'v2.event.tennis-club-membership.action.declare.form.label',
defaultMessage: 'Tennis club membership application',
description: 'This is what this form is referred as in the system'
},
review: {
title: {
- id: 'event.tennis-club-membership.action.declare.form.review.title',
+ id: 'v2.event.tennis-club-membership.action.declare.form.review.title',
defaultMessage: 'Member declaration for {firstname} {surname}',
description: 'Title of the form to show in review page'
}
@@ -40,7 +38,7 @@ const TENNIS_CLUB_FORM = defineForm({
version: {
id: '1.0.0',
label: {
- id: 'event.tennis-club-membership.action.declare.form.version.1',
+ id: 'v2.event.tennis-club-membership.action.declare.form.version.1',
defaultMessage: 'Version 1',
description: 'This is the first version of the form'
}
@@ -49,7 +47,7 @@ const TENNIS_CLUB_FORM = defineForm({
{
id: 'applicant',
title: {
- id: 'event.tennis-club-membership.action.declare.form.section.who.title',
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.who.title',
defaultMessage: 'Who is applying for the membership?',
description: 'This is the title of the section'
},
@@ -61,7 +59,7 @@ const TENNIS_CLUB_FORM = defineForm({
label: {
defaultMessage: "Applicant's first name",
description: 'This is the label for the field',
- id: 'event.tennis-club-membership.action.declare.form.section.who.field.firstname.label'
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.who.field.firstname.label'
}
},
{
@@ -71,7 +69,7 @@ const TENNIS_CLUB_FORM = defineForm({
label: {
defaultMessage: "Applicant's surname",
description: 'This is the label for the field',
- id: 'event.tennis-club-membership.action.declare.form.section.who.field.surname.label'
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.who.field.surname.label'
}
},
{
@@ -83,7 +81,7 @@ const TENNIS_CLUB_FORM = defineForm({
message: {
defaultMessage: 'Please enter a valid date',
description: 'This is the error message for invalid date',
- id: 'event.tennis-club-membership.action.declare.form.section.who.field.dob.error'
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.who.field.dob.error'
},
validator: field('applicant.dob').isBeforeNow().apply()
}
@@ -91,7 +89,7 @@ const TENNIS_CLUB_FORM = defineForm({
label: {
defaultMessage: "Applicant's date of birth",
description: 'This is the label for the field',
- id: 'event.tennis-club-membership.action.declare.form.section.who.field.dob.label'
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.who.field.dob.label'
}
},
{
@@ -101,7 +99,7 @@ const TENNIS_CLUB_FORM = defineForm({
label: {
defaultMessage: "Applicant's profile picture",
description: 'This is the label for the field',
- id: 'event.tennis-club-membership.action.declare.form.section.who.field.image.label'
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.who.field.image.label'
}
},
{
@@ -111,29 +109,15 @@ const TENNIS_CLUB_FORM = defineForm({
label: {
defaultMessage: "Applicant's profile picture description",
description: 'This is the label for the field',
- id: 'event.tennis-club-membership.action.declare.form.section.who.field.image.label'
- }
- },
- {
- id: 'applicant.address.helper',
- type: 'PARAGRAPH',
- required: false,
- label: {
- defaultMessage: "Applicant's address",
- description: 'This is the label for the field',
- id: 'event.tennis-club-membership.action.declare.form.section.who.field.address.helper.label'
- },
- options: {
- fontVariant: 'h3'
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.who.field.image.label'
}
- },
- ...getAddressFields('applicant')
+ }
]
},
{
id: 'recommender',
title: {
- id: 'event.tennis-club-membership.action.declare.form.section.recommender.title',
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.recommender.title',
defaultMessage: 'Who is recommending the applicant?',
description: 'This is the title of the section'
},
@@ -146,7 +130,7 @@ const TENNIS_CLUB_FORM = defineForm({
label: {
defaultMessage: 'No recommender',
description: 'This is the label for the field',
- id: 'event.tennis-club-membership.action.declare.form.section.recommender.field.none.label'
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.recommender.field.none.label'
}
},
{
@@ -162,7 +146,7 @@ const TENNIS_CLUB_FORM = defineForm({
label: {
defaultMessage: "Recommender's first name",
description: 'This is the label for the field',
- id: 'event.tennis-club-membership.action.declare.form.section.recommender.field.firstname.label'
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.recommender.field.firstname.label'
}
},
{
@@ -178,7 +162,7 @@ const TENNIS_CLUB_FORM = defineForm({
label: {
defaultMessage: "Recommender's surname",
description: 'This is the label for the field',
- id: 'event.tennis-club-membership.action.declare.form.section.recommender.field.surname.label'
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.recommender.field.surname.label'
}
},
{
@@ -194,7 +178,7 @@ const TENNIS_CLUB_FORM = defineForm({
label: {
defaultMessage: "Recommender's membership ID",
description: 'This is the label for the field',
- id: 'event.tennis-club-membership.action.declare.form.section.recommender.field.id.label'
+ id: 'v2.event.tennis-club-membership.action.declare.form.section.recommender.field.id.label'
}
}
]
@@ -202,83 +186,425 @@ const TENNIS_CLUB_FORM = defineForm({
]
})
+const TENNIS_CLUB_MEMBERSHIP_CERTIFICATE_COLLECTOR_FORM = defineForm({
+ label: {
+ id: 'v2.event.tennis-club-membership.action.certificate.form.label',
+ defaultMessage: 'Tennis club membership certificate collector',
+ description: 'This is what this form is referred as in the system'
+ },
+ review: {
+ title: {
+ id: 'v2.event.tennis-club-membership.action.certificate.form.review.title',
+ defaultMessage: 'Member certificate collector for {firstname} {surname}',
+ description: 'Title of the form to show in review page'
+ }
+ },
+ active: true,
+ version: {
+ id: '1.0.0',
+ label: {
+ id: 'v2.event.tennis-club-membership.action.certificate.form.version.1',
+ defaultMessage: 'Version 1',
+ description: 'This is the first version of the form'
+ }
+ },
+ pages: [
+ {
+ id: 'collector',
+ title: {
+ id: 'v2.event.tennis-club-membership.action.certificate.form.section.who.title',
+ defaultMessage: 'Print certified copy',
+ description: 'This is the title of the section'
+ },
+ fields: [
+ {
+ id: 'collector.requesterId',
+ type: 'SELECT',
+ required: true,
+ label: {
+ defaultMessage: 'Requester',
+ description: 'This is the label for the field',
+ id: 'v2.event.tennis-club-membership.action.certificate.form.section.requester.label'
+ },
+ options: [
+ {
+ label: {
+ id: 'v2.event.tennis-club-membership.action.certificate.form.section.requester.informant.label',
+ defaultMessage: 'Print and issue Informant',
+ description: 'This is the label for the field'
+ },
+ value: 'INFORMANT'
+ },
+ {
+ label: {
+ id: 'v2.event.tennis-club-membership.action.certificate.form.section.requester.other.label',
+ defaultMessage: 'Print and issue someone else',
+ description: 'This is the label for the field'
+ },
+ value: 'OTHER'
+ },
+ {
+ label: {
+ id: 'v2.event.tennis-club-membership.action.certificate.form.section.requester.printInAdvance.label',
+ defaultMessage: 'Print in advance',
+ description: 'This is the label for the field'
+ },
+ value: 'PRINT_IN_ADVANCE'
+ }
+ ]
+ },
+ {
+ id: 'collector.OTHER.idType',
+ type: 'SELECT',
+ required: true,
+ label: {
+ defaultMessage: 'Select Type of ID',
+ description: 'This is the label for selecting the type of ID',
+ id: 'v2.event.tennis-club-membership.action.form.section.idType.label'
+ },
+ conditionals: [
+ {
+ type: 'HIDE',
+ conditional: field('collector.requesterId')
+ .or((field) => field.isUndefined().not.inArray(['OTHER']))
+ .apply()
+ }
+ ],
+ options: [
+ {
+ label: {
+ id: 'v2.event.tennis-club-membership.action.form.section.idType.passport.label',
+ defaultMessage: 'Passport',
+ description: 'Option for selecting Passport as the ID type'
+ },
+ value: 'PASSPORT'
+ },
+ {
+ label: {
+ id: 'v2.event.tennis-club-membership.action.form.section.idType.drivingLicense.label',
+ defaultMessage: 'Driving License',
+ description:
+ 'Option for selecting Driving License as the ID type'
+ },
+ value: 'DRIVING_LICENSE'
+ },
+ {
+ label: {
+ id: 'v2.event.tennis-club-membership.action.form.section.idType.refugeeNumber.label',
+ defaultMessage: 'Refugee Number',
+ description:
+ 'Option for selecting Refugee Number as the ID type'
+ },
+ value: 'REFUGEE_NUMBER'
+ },
+ {
+ label: {
+ id: 'v2.event.tennis-club-membership.action.form.section.idType.alienNumber.label',
+ defaultMessage: 'Alien Number',
+ description: 'Option for selecting Alien Number as the ID type'
+ },
+ value: 'ALIEN_NUMBER'
+ },
+ {
+ label: {
+ id: 'v2.event.tennis-club-membership.action.form.section.idType.other.label',
+ defaultMessage: 'Other',
+ description: 'Option for selecting Other as the ID type'
+ },
+ value: 'OTHER'
+ },
+ {
+ label: {
+ id: 'v2.event.tennis-club-membership.action.form.section.idType.noId.label',
+ defaultMessage: 'No ID',
+ description: 'Option for selecting No ID as the ID type'
+ },
+ value: 'NO_ID'
+ }
+ ]
+ },
+ {
+ id: 'collector.PASSPORT.details',
+ type: 'TEXT',
+ required: true,
+ label: {
+ defaultMessage: 'Passport Details',
+ description: 'Field for entering Passport details',
+ id: 'v2.event.tennis-club-membership.action.form.section.passportDetails.label'
+ },
+ conditionals: [
+ {
+ type: 'HIDE',
+ conditional: field('collector.OTHER.idType')
+ .or((field) => field.isUndefined().not.inArray(['PASSPORT']))
+ .apply()
+ }
+ ]
+ },
+ {
+ id: 'collector.DRIVING_LICENSE.details',
+ type: 'TEXT',
+ required: true,
+ label: {
+ defaultMessage: 'Driving License Details',
+ description: 'Field for entering Driving License details',
+ id: 'v2.event.tennis-club-membership.action.form.section.drivingLicenseDetails.label'
+ },
+ conditionals: [
+ {
+ type: 'HIDE',
+ conditional: field('collector.OTHER.idType')
+ .or((field) =>
+ field.isUndefined().not.inArray(['DRIVING_LICENSE'])
+ )
+ .apply()
+ }
+ ]
+ },
+ {
+ id: 'collector.REFUGEE_NUMBER.details',
+ type: 'TEXT',
+ required: true,
+ label: {
+ defaultMessage: 'Refugee Number Details',
+ description: 'Field for entering Refugee Number details',
+ id: 'v2.event.tennis-club-membership.action.form.section.refugeeNumberDetails.label'
+ },
+ conditionals: [
+ {
+ type: 'HIDE',
+ conditional: field('collector.OTHER.idType')
+ .or((field) =>
+ field.isUndefined().not.inArray(['REFUGEE_NUMBER'])
+ )
+ .apply()
+ }
+ ]
+ },
+ {
+ id: 'collector.ALIEN_NUMBER.details',
+ type: 'TEXT',
+ required: true,
+ label: {
+ defaultMessage: 'Alien Number Details',
+ description: 'Field for entering Alien Number details',
+ id: 'v2.event.tennis-club-membership.action.form.section.alienNumberDetails.label'
+ },
+ conditionals: [
+ {
+ type: 'HIDE',
+ conditional: field('collector.OTHER.idType')
+ .or((field) =>
+ field.isUndefined().not.inArray(['ALIEN_NUMBER'])
+ )
+ .apply()
+ }
+ ]
+ },
+ {
+ id: 'collector.OTHER.idTypeOther',
+ type: 'TEXT',
+ required: true,
+ label: {
+ defaultMessage: 'Other ID Type (if applicable)',
+ description: 'Field for entering ID type if "Other" is selected',
+ id: 'v2.event.tennis-club-membership.action.form.section.idTypeOther.label'
+ },
+ conditionals: [
+ {
+ type: 'HIDE',
+ conditional: field('collector.OTHER.idType')
+ .or((field) => field.isUndefined().not.inArray(['OTHER']))
+ .apply()
+ }
+ ]
+ },
+ {
+ id: 'collector.OTHER.firstName',
+ type: 'TEXT',
+ required: true,
+ label: {
+ defaultMessage: 'First Name',
+ description: 'This is the label for the first name field',
+ id: 'v2.event.tennis-club-membership.action.form.section.firstName.label'
+ },
+ conditionals: [
+ {
+ type: 'HIDE',
+ conditional: field('collector.requesterId')
+ .or((field) => field.isUndefined().not.inArray(['OTHER']))
+ .apply()
+ }
+ ]
+ },
+ {
+ id: 'collector.OTHER.lastName',
+ type: 'TEXT',
+ required: true,
+ label: {
+ defaultMessage: 'Last Name',
+ description: 'This is the label for the last name field',
+ id: 'v2.event.tennis-club-membership.action.form.section.lastName.label'
+ },
+ conditionals: [
+ {
+ type: 'HIDE',
+ conditional: field('collector.requesterId')
+ .or((field) => field.isUndefined().not.inArray(['OTHER']))
+ .apply()
+ }
+ ]
+ },
+ {
+ id: 'collector.OTHER.relationshipToMember',
+ type: 'TEXT',
+ required: true,
+ label: {
+ defaultMessage: 'Relationship to Member',
+ description:
+ 'This is the label for the relationship to member field',
+ id: 'v2.event.tennis-club-membership.action.form.section.relationshipToMember.label'
+ },
+ conditionals: [
+ {
+ type: 'HIDE',
+ conditional: field('collector.requesterId')
+ .or((field) => field.isUndefined().not.inArray(['OTHER']))
+ .apply()
+ }
+ ]
+ },
+ {
+ id: 'collector.OTHER.signedAffidavit',
+ type: 'FILE',
+ required: false,
+ label: {
+ defaultMessage: 'Signed Affidavit (Optional)',
+ description: 'This is the label for uploading a signed affidavit',
+ id: 'v2.event.tennis-club-membership.action.form.section.signedAffidavit.label'
+ },
+ conditionals: [
+ {
+ type: 'HIDE',
+ conditional: field('collector.requesterId')
+ .or((field) => field.isUndefined().not.inArray(['OTHER']))
+ .apply()
+ }
+ ]
+ }
+ ]
+ }
+ ]
+})
+
export const tennisClubMembershipEvent = defineConfig({
- id: 'TENNIS_CLUB_MEMBERSHIP',
+ id: Event.TENNIS_CLUB_MEMBERSHIP,
label: {
defaultMessage: 'Tennis club membership application',
description: 'This is what this event is referred as in the system',
- id: 'event.tennis-club-membership.label'
+ id: 'v2.event.tennis-club-membership.label'
},
summary: {
title: {
- id: 'event.tennis-club-membership.summary.title',
+ id: '',
label: {
defaultMessage: '{applicant.firstname} {applicant.surname}',
description: 'This is the title of the summary',
- id: 'event.tennis-club-membership.summary.title'
- },
- emptyValueMessage: {
- defaultMessage: 'Membership application',
- description:
- 'This is the message shown when the applicant name is missing',
- id: 'event.tennis-club-membership.summary.title.empty'
+ id: 'v2.event.tennis-club-membership.summary.title'
}
},
fields: [
{
- id: 'event.tennis-club-membership.summary.applicant.name',
+ id: 'applicant.firstname',
+ emptyValueMessage: {
+ defaultMessage: "Applicant's first name missing",
+ description:
+ "Shown when the applicant's first name is missing in summary",
+ id: 'v2.event.tennis-club-membership.summary.field.applicant.firstname.empty'
+ },
label: {
- defaultMessage: 'Applicant',
- description: 'This is the label for the field',
- id: 'event.tennis-club-membership.summary.field.name.label'
+ defaultMessage: "Applicant's First Name",
+ description: "Label for the applicant's first name field",
+ id: 'v2.event.tennis-club-membership.summary.field.applicant.firstname.label'
},
value: {
- defaultMessage: '{applicant.firstname} {applicant.surname}',
- id: 'event.tennis-club-membership.summary.field.name.label',
- description: 'This is the value for the field'
- },
- emptyValueMessage: {
- defaultMessage: "Applicant's name is missing",
- description:
- "shown when the applicant's names are missing in summary",
- id: 'event.tennis-club-membership.summary.field.applicant.firstname.empty'
+ defaultMessage: 'First Name',
+ description: "Value for the applicant's first name field",
+ id: 'v2.event.tennis-club-membership.summary.field.applicant.firstname.value'
}
},
{
- id: 'event.tennis-club-membership.summary.recommender.name',
+ id: 'applicant.surname',
+ emptyValueMessage: {
+ defaultMessage: "Applicant's surname missing",
+ description: 'Shown when the surname is missing in summary',
+ id: 'v2.event.tennis-club-membership.summary.field.applicant.surname.empty'
+ },
label: {
- defaultMessage: 'Recommender',
- description: 'This is the label for the field',
- id: 'event.tennis-club-membership.summary.field.recommender.name.label'
+ defaultMessage: "Applicant's Surname",
+ description: 'Label for the applicant’s surname field',
+ id: 'v2.event.tennis-club-membership.summary.field.applicant.surname.label'
},
value: {
- defaultMessage: '{recommender.firstname} {recommender.surname}',
- id: 'event.tennis-club-membership.summary.field.name.label',
- description: 'This is the value for the field'
- },
+ defaultMessage: 'Surname',
+ description: 'Value for the applicant’s surname field',
+ id: 'v2.event.tennis-club-membership.summary.field.applicant.surname.value'
+ }
+ },
+ {
+ id: 'recommender.firstname',
emptyValueMessage: {
- defaultMessage: "Recommender's name is missing",
+ defaultMessage: "Recommender's first name missing",
description:
- "shown when the recommender's names are missing in summary",
- id: 'event.tennis-club-membership.summary.field.recommender.name.empty'
+ 'Shown when the recommender first name is missing in summary',
+ id: 'v2.event.tennis-club-membership.summary.field.recommender.firstname.empty'
+ },
+ label: {
+ defaultMessage: "Recommender's First Name",
+ description: 'Label for the recommender’s first name field',
+ id: 'v2.event.tennis-club-membership.summary.field.recommender.firstname.label'
+ },
+ value: {
+ defaultMessage: 'First Name',
+ description: 'Value for the recommender’s first name field',
+ id: 'v2.event.tennis-club-membership.summary.field.recommender.firstname.value'
}
},
{
- id: 'recommender.id',
+ id: 'recommender.surname',
+ emptyValueMessage: {
+ defaultMessage: "Recommender's surname missing",
+ description:
+ 'Shown when the recommender surname is missing in summary',
+ id: 'v2.event.tennis-club-membership.summary.field.recommender.surname.empty'
+ },
label: {
- defaultMessage: 'Membership ID',
- description: 'This is the label for the field',
- id: 'event.tennis-club-membership.summary.field.recommender.id.label'
+ defaultMessage: "Recommender's Surname",
+ description: 'Label for the recommender’s surname field',
+ id: 'v2.event.tennis-club-membership.summary.field.recommender.surname.label'
},
value: {
- defaultMessage: '{recommender.id}',
- id: 'event.tennis-club-membership.summary.field.recommender.id',
- description: 'This is the value for the field'
- },
+ defaultMessage: 'Surname',
+ description: 'Value for the recommender’s surname field',
+ id: 'v2.event.tennis-club-membership.summary.field.recommender.surname.value'
+ }
+ },
+ {
+ id: 'recommender.id',
emptyValueMessage: {
defaultMessage: "Recommender's id missing",
- description: 'shown when the recommender id is missing in summary',
- id: 'event.tennis-club-membership.summary.field.recommender.id.empty'
+ description: 'Shown when the recommender id is missing in summary',
+ id: 'v2.event.tennis-club-membership.summary.field.recommender.id.empty'
+ },
+ label: {
+ defaultMessage: "Recommender's ID",
+ description: 'Label for the recommender’s ID field',
+ id: 'v2.event.tennis-club-membership.summary.field.recommender.id.label'
+ },
+ value: {
+ defaultMessage: 'ID',
+ description: 'Value for the recommender’s ID field',
+ id: 'v2.event.tennis-club-membership.summary.field.recommender.id.value'
}
}
]
@@ -292,7 +618,7 @@ export const tennisClubMembershipEvent = defineConfig({
label: {
defaultMessage: '{applicant.firstname} {applicant.surname}',
description: 'Label for name in all workqueue',
- id: 'event.tennis-club-membership.workqueue.all.name.label'
+ id: 'v2.event.tennis-club-membership.workqueue.all.name.label'
}
}
],
@@ -307,7 +633,7 @@ export const tennisClubMembershipEvent = defineConfig({
label: {
defaultMessage: '{applicant.firstname} {applicant.surname}',
description: 'Label for name in all workqueue',
- id: 'event.tennis-club-membership.workqueue.readyForReview.name.label'
+ id: 'v2.event.tennis-club-membership.workqueue.readyForReview.name.label'
}
}
],
@@ -326,7 +652,7 @@ export const tennisClubMembershipEvent = defineConfig({
label: {
defaultMessage: '{applicant.firstname} {applicant.surname}',
description: 'Label for name in all workqueue',
- id: 'event.tennis-club-membership.workqueue.registered.name.label'
+ id: 'v2.event.tennis-club-membership.workqueue.registered.name.label'
}
}
],
@@ -337,21 +663,6 @@ export const tennisClubMembershipEvent = defineConfig({
]
}
],
- deduplication: [
- {
- id: 'STANDARD CHECK',
- label: {
- defaultMessage: 'Standard check',
- description:
- 'This could be shown to the user in a reason for duplicate detected',
- id: '...'
- },
- query: deduplication.or([
- deduplication.field('requester.phone').strictMatches(),
- deduplication.field('requester.name').fuzzyMatches()
- ])
- }
- ],
actions: [
{
type: 'DECLARE',
@@ -359,10 +670,15 @@ export const tennisClubMembershipEvent = defineConfig({
defaultMessage: 'Declare',
description:
'This is shown as the action name anywhere the user can trigger the action from',
- id: 'event.tennis-club-membership.action.declare.label'
+ id: 'v2.event.tennis-club-membership.action.declare.label'
},
forms: [TENNIS_CLUB_FORM],
- allowedWhen: defineConditional(not(eventHasAction('DECLARE')))
+ conditionals: [
+ {
+ type: 'SHOW',
+ conditional: defineConditional(not(eventHasAction('DECLARE')))
+ }
+ ]
},
{
type: 'DELETE',
@@ -370,10 +686,15 @@ export const tennisClubMembershipEvent = defineConfig({
defaultMessage: 'Delete draft',
description:
'This is shown as the action name anywhere the user can trigger the action from',
- id: 'event.tennis-club-membership.action.delete.label'
+ id: 'v2.event.tennis-club-membership.action.delete.label'
},
forms: [],
- allowedWhen: defineConditional(not(eventHasAction('DECLARE')))
+ conditionals: [
+ {
+ type: 'SHOW',
+ conditional: defineConditional(not(eventHasAction('DECLARE')))
+ }
+ ]
},
{
type: 'VALIDATE',
@@ -381,11 +702,16 @@ export const tennisClubMembershipEvent = defineConfig({
defaultMessage: 'Validate',
description:
'This is shown as the action name anywhere the user can trigger the action from',
- id: 'event.tennis-club-membership.action.validate.label'
+ id: 'v2.event.tennis-club-membership.action.validate.label'
},
- allowedWhen: defineConditional(
- and(eventHasAction('DECLARE'), not(eventHasAction('REGISTER')))
- ),
+ conditionals: [
+ {
+ type: 'SHOW',
+ conditional: defineConditional(
+ and(eventHasAction('DECLARE'), not(eventHasAction('VALIDATE')))
+ )
+ }
+ ],
forms: [TENNIS_CLUB_FORM]
},
{
@@ -394,34 +720,60 @@ export const tennisClubMembershipEvent = defineConfig({
defaultMessage: 'Register',
description:
'This is shown as the action name anywhere the user can trigger the action from',
- id: 'event.tennis-club-membership.action.register.label'
+ id: 'v2.event.tennis-club-membership.action.register.label'
},
- allowedWhen: defineConditional(
- and(
- or(
- eventHasAction('VALIDATE'),
- and(eventHasAction('DECLARE'), userHasScope('register'))
- ),
- not(eventHasAction('REGISTER'))
- )
- ),
+ conditionals: [
+ {
+ type: 'SHOW',
+ conditional: defineConditional(
+ and(
+ or(
+ eventHasAction('VALIDATE'),
+ and(eventHasAction('DECLARE'), userHasScope('register'))
+ ),
+ not(eventHasAction('REGISTER'))
+ )
+ )
+ }
+ ],
forms: [TENNIS_CLUB_FORM]
},
+ {
+ type: 'PRINT_CERTIFICATE',
+ label: {
+ defaultMessage: 'Print certificate',
+ description:
+ 'This is shown as the action name anywhere the user can trigger the action from',
+ id: 'v2.event.tennis-club-membership.action.collect-certificate.label'
+ },
+ conditionals: [
+ {
+ type: 'SHOW',
+ conditional: defineConditional(eventHasAction('REGISTER'))
+ }
+ ],
+ forms: [TENNIS_CLUB_MEMBERSHIP_CERTIFICATE_COLLECTOR_FORM]
+ },
{
type: 'REQUEST_CORRECTION',
label: {
defaultMessage: 'Request correction',
description:
'This is shown as the action name anywhere the user can trigger the action from',
- id: 'event.tennis-club-membership.action.requestCorrection.label'
+ id: 'v2.event.tennis-club-membership.action.requestCorrection.label'
},
- allowedWhen: defineConditional(and(eventHasAction('REGISTER'))),
+ conditionals: [
+ {
+ type: 'SHOW',
+ conditional: defineConditional(and(eventHasAction('REGISTER')))
+ }
+ ],
forms: [TENNIS_CLUB_FORM],
onboardingForm: [
{
id: 'correction-requester',
title: {
- id: 'event.tennis-club-membership.action.requestCorrection.form.section.corrector',
+ id: 'v2.event.tennis-club-membership.action.requestCorrection.form.section.corrector',
defaultMessage: 'Correction requester',
description: 'This is the title of the section'
},
@@ -430,7 +782,7 @@ export const tennisClubMembershipEvent = defineConfig({
id: 'correction.requester.relationshop.intro',
type: 'PAGE_HEADER',
label: {
- id: 'correction.requester.relationshop.intro.label',
+ id: 'v2.correction.requester.relationshop.intro.label',
defaultMessage:
'Note: In the case that the child is now of legal age (18) then only they should be able to request a change to their birth record.',
description: 'The title for the corrector form'
@@ -490,7 +842,7 @@ export const tennisClubMembershipEvent = defineConfig({
{
id: 'identity-check',
title: {
- id: 'event.tennis-club-membership.action.requestCorrection.form.section.verify',
+ id: 'v2.event.tennis-club-membership.action.requestCorrection.form.section.verify',
defaultMessage: 'Verify their identity',
description: 'This is the title of the section'
},
@@ -499,7 +851,7 @@ export const tennisClubMembershipEvent = defineConfig({
id: 'correction.identity-check.instructions',
type: 'PAGE_HEADER',
label: {
- id: 'correction.corrector.identity.instruction',
+ id: 'v2.correction.corrector.identity.instruction',
defaultMessage:
'Please verify the identity of the person making this request',
description: 'The title for the corrector form'
@@ -510,7 +862,7 @@ export const tennisClubMembershipEvent = defineConfig({
type: 'RADIO_GROUP',
options: {},
label: {
- id: 'correction.corrector.identity.verified.label',
+ id: 'v2.correction.corrector.identity.verified.label',
defaultMessage: 'Identity verified',
description: 'The title for the corrector form'
},
@@ -520,7 +872,7 @@ export const tennisClubMembershipEvent = defineConfig({
{
value: 'VERIFIED',
label: {
- id: 'correction.corrector.identity.verified',
+ id: 'v2.correction.corrector.identity.verified',
defaultMessage: 'I have verified their identity',
description:
'Label for verified option in corrector identity check page'
@@ -535,7 +887,7 @@ export const tennisClubMembershipEvent = defineConfig({
{
id: 'correction-request.supporting-documents',
title: {
- id: 'event.tennis-club-membership.action.requestCorrection.form.section.verify',
+ id: 'v2.event.tennis-club-membership.action.requestCorrection.form.section.verify',
defaultMessage: 'Upload supporting documents',
description: 'This is the title of the section'
},
@@ -544,7 +896,7 @@ export const tennisClubMembershipEvent = defineConfig({
id: 'correction.supportingDocs.introduction',
type: 'PAGE_HEADER',
label: {
- id: 'correction.corrector.paragraph.title',
+ id: 'v2.correction.corrector.paragraph.title',
defaultMessage:
'For all record corrections at a minimum an affidavit must be provided. For material errors and omissions eg. in paternity cases, a court order must also be provided.',
description: 'The title for the corrector form'
@@ -554,7 +906,7 @@ export const tennisClubMembershipEvent = defineConfig({
id: 'correction.supportingDocs',
type: 'FILE',
label: {
- id: 'correction.corrector.title',
+ id: 'v2.correction.corrector.title',
defaultMessage: 'Upload supporting documents',
description: 'The title for the corrector form'
}
@@ -563,7 +915,7 @@ export const tennisClubMembershipEvent = defineConfig({
id: 'correction.request.supportingDocuments',
type: 'RADIO_GROUP',
label: {
- id: 'correction.corrector.title',
+ id: 'v2.correction.corrector.title',
defaultMessage: 'Who is requesting a change to this record?',
description: 'The title for the corrector form'
},
@@ -575,7 +927,7 @@ export const tennisClubMembershipEvent = defineConfig({
{
value: 'ATTEST',
label: {
- id: 'correction.supportingDocuments.attest.label',
+ id: 'v2.correction.supportingDocuments.attest.label',
defaultMessage:
'I attest to seeing supporting documentation and have a copy filed at my office',
description: ''
@@ -584,7 +936,7 @@ export const tennisClubMembershipEvent = defineConfig({
{
value: 'NOT_NEEDED',
label: {
- id: 'correction.supportingDocuments.notNeeded.label',
+ id: 'v2.correction.supportingDocuments.notNeeded.label',
defaultMessage: 'No supporting documents required',
description: ''
}
@@ -596,7 +948,7 @@ export const tennisClubMembershipEvent = defineConfig({
{
id: 'correction-request.additional-details',
title: {
- id: 'event.tennis-club-membership.action.requestCorrection.form.section.corrector',
+ id: 'v2.event.tennis-club-membership.action.requestCorrection.form.section.corrector',
defaultMessage: 'Reason for correction',
description: 'This is the title of the section'
},
@@ -605,7 +957,7 @@ export const tennisClubMembershipEvent = defineConfig({
id: 'correction.request.reason',
type: 'TEXT',
label: {
- id: 'correction.reason.title',
+ id: 'v2.correction.reason.title',
defaultMessage: 'Reason for correction?',
description: 'The title for the corrector form'
}
@@ -620,14 +972,19 @@ export const tennisClubMembershipEvent = defineConfig({
defaultMessage: 'My custom action',
description:
'This is shown as the action name anywhere the user can trigger the action from',
- id: 'event.tennis-club-membership.action.sdf.label'
+ id: 'v2.event.tennis-club-membership.action.sdf.label'
},
- allowedWhen: defineConditional(
- or(
- eventHasAction('VALIDATE'),
- and(eventHasAction('DECLARE'), userHasScope('register'))
- )
- ),
+ conditionals: [
+ {
+ type: 'SHOW',
+ conditional: defineConditional(
+ or(
+ eventHasAction('VALIDATE'),
+ and(eventHasAction('DECLARE'), userHasScope('register'))
+ )
+ )
+ }
+ ],
forms: []
}
]
diff --git a/src/form/types/types.ts b/src/form/types/types.ts
index 3adceacb6..2f1d734f0 100644
--- a/src/form/types/types.ts
+++ b/src/form/types/types.ts
@@ -43,7 +43,8 @@ export type Validation = (
export enum Event {
Birth = 'birth',
Death = 'death',
- Marriage = 'marriage'
+ Marriage = 'marriage',
+ TENNIS_CLUB_MEMBERSHIP = 'tennis-club-membership'
}
export type ValidationInitializer = (...value: any[]) => Validation
@@ -697,8 +698,8 @@ type FunctionParamsToDescriptor =
T extends Array
? { [K in keyof T]: FunctionParamsToDescriptor }
: T extends IFormFieldQueryMapFunction | IFormFieldMutationMapFunction // It's a query transformation function - return a query transformation descriptor
- ? Descriptor
- : T // It's a none of the above - return self
+ ? Descriptor
+ : T // It's a none of the above - return self
export interface IStaticFieldType {
kind: 'static'
@@ -1004,3 +1005,5 @@ export type AllowedAddressConfigurations = {
}
export type AdministrativeLevel = 1 | 2 | 3 | 4 | 5
+
+export const moi = 'asd'
diff --git a/src/form/v2/birth/__snapshots__/birth.test.ts.snap b/src/form/v2/birth/__snapshots__/birth.test.ts.snap
index 661125f81..03342fe41 100644
--- a/src/form/v2/birth/__snapshots__/birth.test.ts.snap
+++ b/src/form/v2/birth/__snapshots__/birth.test.ts.snap
@@ -4,49 +4,54 @@ exports[`birth configuration is parsed 1`] = `
{
"actions": [
{
- "allowedWhen": {
- "not": {
- "properties": {
- "$event": {
+ "conditionals": [
+ {
+ "conditional": {
+ "not": {
"properties": {
- "actions": {
- "contains": {
- "not": {
- "properties": {
- "draft": {
- "const": true,
+ "$event": {
+ "properties": {
+ "actions": {
+ "contains": {
+ "not": {
+ "properties": {
+ "draft": {
+ "const": true,
+ },
+ },
},
+ "properties": {
+ "draft": {
+ "type": "boolean",
+ },
+ "type": {
+ "const": "DECLARE",
+ },
+ },
+ "required": [
+ "type",
+ ],
+ "type": "object",
},
+ "type": "array",
},
- "properties": {
- "draft": {
- "type": "boolean",
- },
- "type": {
- "const": "DECLARE",
- },
- },
- "required": [
- "type",
- ],
- "type": "object",
},
- "type": "array",
+ "required": [
+ "actions",
+ ],
+ "type": "object",
},
},
"required": [
- "actions",
+ "$event",
],
"type": "object",
},
+ "type": "object",
},
- "required": [
- "$event",
- ],
- "type": "object",
+ "type": "SHOW",
},
- "type": "object",
- },
+ ],
"forms": [
{
"active": true,
@@ -17254,7 +17259,7 @@ exports[`birth configuration is parsed 1`] = `
},
],
"deduplication": [],
- "id": "BIRTH",
+ "id": "birth",
"label": {
"defaultMessage": "Birth declaration",
"description": "This is what this event is referred as in the system",
diff --git a/src/form/v2/birth/forms/child.ts b/src/form/v2/birth/forms/child.ts
index f3e9ac88b..1d4d454e3 100644
--- a/src/form/v2/birth/forms/child.ts
+++ b/src/form/v2/birth/forms/child.ts
@@ -52,17 +52,17 @@ const genderMessageDescriptors = {
MALE: {
defaultMessage: 'Male',
description: 'Label for option male',
- id: 'form.field.label.sexMale'
+ id: 'v2.form.field.label.sexMale'
},
FEMALE: {
defaultMessage: 'Female',
description: 'Label for option female',
- id: 'form.field.label.sexFemale'
+ id: 'v2.form.field.label.sexFemale'
},
UNKNOWN: {
defaultMessage: 'Unknown',
description: 'Label for option unknown',
- id: 'form.field.label.sexUnknown'
+ id: 'v2.form.field.label.sexUnknown'
}
} satisfies Record
@@ -70,27 +70,27 @@ const typeOfBirthMessageDescriptors = {
SINGLE: {
defaultMessage: 'Single',
description: 'Label for single birth',
- id: 'form.field.label.birthTypeSingle'
+ id: 'v2.form.field.label.birthTypeSingle'
},
TWIN: {
defaultMessage: 'Twin',
description: 'Label for twin birth',
- id: 'form.field.label.birthTypeTwin'
+ id: 'v2.form.field.label.birthTypeTwin'
},
TRIPLET: {
defaultMessage: 'Triplet',
description: 'Label for triplet birth',
- id: 'form.field.label.birthTypeTriplet'
+ id: 'v2.form.field.label.birthTypeTriplet'
},
QUADRUPLET: {
defaultMessage: 'Quadruplet',
description: 'Label for quadruplet birth',
- id: 'form.field.label.birthTypeQuadruplet'
+ id: 'v2.form.field.label.birthTypeQuadruplet'
},
HIGHER_MULTIPLE_DELIVERY: {
defaultMessage: 'Higher multiple delivery',
description: 'Label for higher multiple delivery birth',
- id: 'form.field.label.birthTypeHigherMultipleDelivery'
+ id: 'v2.form.field.label.birthTypeHigherMultipleDelivery'
}
} satisfies Record
@@ -98,37 +98,37 @@ const attendantAtBirthMessageDescriptors = {
PHYSICIAN: {
defaultMessage: 'Physician',
description: 'Label for physician attendant',
- id: 'form.field.label.attendantAtBirthPhysician'
+ id: 'v2.form.field.label.attendantAtBirthPhysician'
},
NURSE: {
defaultMessage: 'Nurse',
description: 'Label for nurse attendant',
- id: 'form.field.label.attendantAtBirthNurse'
+ id: 'v2.form.field.label.attendantAtBirthNurse'
},
MIDWIFE: {
defaultMessage: 'Midwife',
description: 'Label for midwife attendant',
- id: 'form.field.label.attendantAtBirthMidwife'
+ id: 'v2.form.field.label.attendantAtBirthMidwife'
},
OTHER_PARAMEDICAL_PERSONNEL: {
defaultMessage: 'Other paramedical personnel',
description: 'Label for other paramedical personnel',
- id: 'form.field.label.attendantAtBirthOtherParamedicalPersonnel'
+ id: 'v2.form.field.label.attendantAtBirthOtherParamedicalPersonnel'
},
LAYPERSON: {
defaultMessage: 'Layperson',
description: 'Label for layperson attendant',
- id: 'form.field.label.attendantAtBirthLayperson'
+ id: 'v2.form.field.label.attendantAtBirthLayperson'
},
TRADITIONAL_BIRTH_ATTENDANT: {
defaultMessage: 'Traditional birth attendant',
description: 'Label for traditional birth attendant',
- id: 'form.field.label.attendantAtBirthTraditionalBirthAttendant'
+ id: 'v2.form.field.label.attendantAtBirthTraditionalBirthAttendant'
},
NONE: {
defaultMessage: 'None',
description: 'Label for no attendant',
- id: 'form.field.label.attendantAtBirthNone'
+ id: 'v2.form.field.label.attendantAtBirthNone'
}
} satisfies Record
@@ -136,17 +136,17 @@ const placeOfBirthMessageDescriptors = {
HEALTH_FACILITY: {
defaultMessage: 'Health Institution',
description: 'Select item for Health Institution',
- id: 'form.field.label.healthInstitution'
+ id: 'v2.form.field.label.healthInstitution'
},
PRIVATE_HOME: {
defaultMessage: 'Residential address',
description: 'Select item for Private Home',
- id: 'form.field.label.privateHome'
+ id: 'v2.form.field.label.privateHome'
},
OTHER: {
defaultMessage: 'Other',
description: 'Select item for Other location',
- id: 'form.field.label.otherInstitution'
+ id: 'v2.form.field.label.otherInstitution'
}
} satisfies Record
@@ -172,7 +172,7 @@ export const childPage = defineFormPage({
title: {
defaultMessage: "Child's details",
description: 'Form section title for Child',
- id: 'form.birth.child.title'
+ id: 'v2.form.birth.child.title'
},
fields: [
{
@@ -182,7 +182,7 @@ export const childPage = defineFormPage({
label: {
defaultMessage: 'First name(s)',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.child.field.firstname.label'
+ id: 'v2.event.birth.action.declare.form.section.child.field.firstname.label'
}
},
{
@@ -192,7 +192,7 @@ export const childPage = defineFormPage({
label: {
defaultMessage: 'Last name',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.child.field.surname.label'
+ id: 'v2.event.birth.action.declare.form.section.child.field.surname.label'
}
},
{
@@ -202,7 +202,7 @@ export const childPage = defineFormPage({
label: {
defaultMessage: 'Sex',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.child.field.gender.label'
+ id: 'v2.event.birth.action.declare.form.section.child.field.gender.label'
},
options: genderOptions
},
@@ -215,7 +215,7 @@ export const childPage = defineFormPage({
message: {
defaultMessage: 'Please enter a valid date',
description: 'This is the error message for invalid date',
- id: 'event.birth.action.declare.form.section.child.field.dob.error'
+ id: 'v2.event.birth.action.declare.form.section.child.field.dob.error'
},
validator: field('child.dob').isBeforeNow().apply()
}
@@ -223,7 +223,7 @@ export const childPage = defineFormPage({
label: {
defaultMessage: 'Date of birth',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.child.field.dob.label'
+ id: 'v2.event.birth.action.declare.form.section.child.field.dob.label'
}
},
{
@@ -238,7 +238,7 @@ export const childPage = defineFormPage({
label: {
defaultMessage: 'Place of delivery',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.child.field.placeOfBirth.label'
+ id: 'v2.event.birth.action.declare.form.section.child.field.placeOfBirth.label'
},
options: placeOfBirthOptions
},
@@ -249,7 +249,7 @@ export const childPage = defineFormPage({
label: {
defaultMessage: 'Health Institution',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.child.field.birthLocation.label'
+ id: 'v2.event.birth.action.declare.form.section.child.field.birthLocation.label'
},
options: {
type: 'HEALTH_FACILITY'
@@ -298,7 +298,7 @@ export const childPage = defineFormPage({
label: {
defaultMessage: 'Attendant at birth',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.child.field.attendantAtBirth.label'
+ id: 'v2.event.birth.action.declare.form.section.child.field.attendantAtBirth.label'
},
options: attendantAtBirthOptions
},
@@ -309,7 +309,7 @@ export const childPage = defineFormPage({
label: {
defaultMessage: 'Type of birth',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.child.field.birthType.label'
+ id: 'v2.event.birth.action.declare.form.section.child.field.birthType.label'
},
options: typeOfBirthOptions
},
@@ -320,14 +320,14 @@ export const childPage = defineFormPage({
label: {
defaultMessage: 'Weight at birth',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.child.field.weightAtBirth.label'
+ id: 'v2.event.birth.action.declare.form.section.child.field.weightAtBirth.label'
},
options: {
type: 'number',
postfix: {
defaultMessage: 'Kilograms (kg)',
description: 'This is the postfix for the weight field',
- id: 'event.birth.action.declare.form.section.child.field.weightAtBirth.postfix'
+ id: 'v2.event.birth.action.declare.form.section.child.field.weightAtBirth.postfix'
}
}
}
diff --git a/src/form/v2/birth/forms/declare.ts b/src/form/v2/birth/forms/declare.ts
index 4cf2a2f20..e5ab15a8e 100644
--- a/src/form/v2/birth/forms/declare.ts
+++ b/src/form/v2/birth/forms/declare.ts
@@ -10,7 +10,12 @@
*/
import { defineForm } from '@opencrvs/toolkit/events'
-import { and, field, or } from '@opencrvs/toolkit/conditionals'
+import {
+ and,
+ defineConditional,
+ field,
+ or
+} from '@opencrvs/toolkit/conditionals'
import { childPage } from './child'
import { informantPage, InformantTypes } from './informant'
import { appendConditionalsToFields, emptyMessage } from '../../utils'
@@ -18,14 +23,14 @@ import { getPersonInputFields, PersonType } from '../../person'
export const BIRTH_DECLARE_FORM = defineForm({
label: {
- id: 'event.birth.action.declare.form.label',
defaultMessage: 'Birth decalration form',
+ id: 'v2.event.birth.action.declare.form.label',
description: 'This is what this form is referred as in the system'
},
review: {
title: {
- id: 'event.birth.action.declare.form.review.title',
defaultMessage: 'Birth declaration for {firstname} {surname}',
+ id: 'v2.event.birth.action.declare.form.review.title',
description: 'Title of the form to show in review page'
}
},
@@ -33,8 +38,8 @@ export const BIRTH_DECLARE_FORM = defineForm({
version: {
id: '1.0.0',
label: {
- id: 'event.birth.action.declare.form.version.1',
defaultMessage: 'Version 1',
+ id: 'v2.event.birth.action.declare.form.version.1',
description: 'This is the first version of the form'
}
},
@@ -45,15 +50,15 @@ export const BIRTH_DECLARE_FORM = defineForm({
defaultMessage:
'Introduce the birth registration process to the informant',
description: 'Event information title for the birth',
- id: 'register.eventInfo.birth.title'
+ id: 'v2.register.eventInfo.birth.title'
},
fields: [
{
type: 'BULLET_LIST',
id: 'form.section.information.birth.bulletList',
label: {
- id: 'form.section.information.birth.bulletList.label',
defaultMessage: 'Birth Information',
+ id: 'v2.form.section.information.birth.bulletList.label',
description: 'Label for the birth information bullet list'
},
hideLabel: true,
@@ -62,25 +67,25 @@ export const BIRTH_DECLARE_FORM = defineForm({
defaultMessage:
'I am going to help you make a declaration of birth.',
description: 'Form information for birth',
- id: 'form.section.information.birth.bullet1'
+ id: 'v2.form.section.information.birth.bullet1'
},
{
defaultMessage:
'As the legal Informant it is important that all the information provided by you is accurate.',
description: 'Form information for birth',
- id: 'form.section.information.birth.bullet2'
+ id: 'v2.form.section.information.birth.bullet2'
},
{
defaultMessage:
'Once the declaration is processed you will receive an SMS to tell you when to visit the office to collect the certificate - Take your ID with you.',
description: 'Form information for birth',
- id: 'form.section.information.birth.bullet3'
+ id: 'v2.form.section.information.birth.bullet3'
},
{
defaultMessage:
'Make sure you collect the certificate. A birth certificate is critical for this child, especially to make their life easy later on. It will help to access health services, school examinations and government benefits.',
description: 'Form information for birth',
- id: 'form.section.information.birth.bullet4'
+ id: 'v2.form.section.information.birth.bullet4'
}
],
font: 'reg16'
@@ -94,7 +99,7 @@ export const BIRTH_DECLARE_FORM = defineForm({
title: {
defaultMessage: "Mother's details",
description: 'Form section title for mothers details',
- id: 'form.section.mother.title'
+ id: 'v2.form.section.mother.title'
},
fields: [
...appendConditionalsToFields({
@@ -132,18 +137,20 @@ export const BIRTH_DECLARE_FORM = defineForm({
label: {
defaultMessage: 'Reason',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.mother.field.reason.label'
+ id: 'v2.event.birth.action.declare.form.section.mother.field.reason.label'
},
conditionals: [
{
type: 'HIDE',
- conditional: or(
- field('mother.detailsNotAvailable')
- .or((field) => field.isUndefined().inArray(['false']))
- .apply(),
- field('informant.relation')
- .inArray([InformantTypes.MOTHER])
- .apply()
+ conditional: defineConditional(
+ or(
+ field('mother.detailsNotAvailable')
+ .or((field) => field.isUndefined().inArray(['false']))
+ .apply(),
+ field('informant.relation')
+ .inArray([InformantTypes.MOTHER])
+ .apply()
+ )
)
}
]
@@ -158,20 +165,22 @@ export const BIRTH_DECLARE_FORM = defineForm({
label: {
defaultMessage: 'No. of previous births',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.mother.field.previousBirths.label'
+ id: 'v2.event.birth.action.declare.form.section.mother.field.previousBirths.label'
}
}
],
newConditionals: [
{
type: 'HIDE',
- conditional: and(
- field('mother.detailsNotAvailable').inArray(['true']).apply(),
- field('informant.relation')
- .or((field) =>
- field.isUndefined().not.inArray([InformantTypes.MOTHER])
- )
- .apply()
+ conditional: defineConditional(
+ and(
+ field('mother.detailsNotAvailable').inArray(['true']).apply(),
+ field('informant.relation')
+ .or((field) =>
+ field.isUndefined().not.inArray([InformantTypes.MOTHER])
+ )
+ .apply()
+ )
)
}
]
@@ -184,7 +193,7 @@ export const BIRTH_DECLARE_FORM = defineForm({
title: {
defaultMessage: "Father's details",
description: 'Form section title for fathers details',
- id: 'form.section.father.title'
+ id: 'v2.form.section.father.title'
},
fields: [
...appendConditionalsToFields({
@@ -221,7 +230,7 @@ export const BIRTH_DECLARE_FORM = defineForm({
label: {
defaultMessage: 'Reason',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.father.field.reason.label'
+ id: 'v2.event.birth.action.declare.form.section.father.field.reason.label'
},
conditionals: [
{
@@ -242,13 +251,15 @@ export const BIRTH_DECLARE_FORM = defineForm({
newConditionals: [
{
type: 'HIDE',
- conditional: and(
- field('father.detailsNotAvailable').inArray(['true']).apply(),
- field('informant.relation')
- .or((field) =>
- field.isUndefined().not.inArray([InformantTypes.FATHER])
- )
- .apply()
+ conditional: defineConditional(
+ and(
+ field('father.detailsNotAvailable').inArray(['true']).apply(),
+ field('informant.relation')
+ .or((field) =>
+ field.isUndefined().not.inArray([InformantTypes.FATHER])
+ )
+ .apply()
+ )
)
}
]
@@ -260,7 +271,7 @@ export const BIRTH_DECLARE_FORM = defineForm({
title: {
defaultMessage: 'Upload supporting documents',
description: 'Form section title for documents',
- id: 'form.section.documents.title'
+ id: 'v2.form.section.documents.title'
},
fields: [
{
@@ -280,7 +291,7 @@ export const BIRTH_DECLARE_FORM = defineForm({
label: {
defaultMessage: 'Proof of birth',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.documents.field.proofOfBirth.label'
+ id: 'v2.event.birth.action.declare.form.section.documents.field.proofOfBirth.label'
}
},
{
@@ -290,7 +301,7 @@ export const BIRTH_DECLARE_FORM = defineForm({
label: {
defaultMessage: "Proof of mother's ID",
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.documents.field.proofOfMother.label'
+ id: 'v2.event.birth.action.declare.form.section.documents.field.proofOfMother.label'
}
},
@@ -301,7 +312,7 @@ export const BIRTH_DECLARE_FORM = defineForm({
label: {
defaultMessage: "Proof of father's ID",
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.documents.field.proofOfFather.label'
+ id: 'v2.event.birth.action.declare.form.section.documents.field.proofOfFather.label'
}
},
@@ -312,7 +323,7 @@ export const BIRTH_DECLARE_FORM = defineForm({
label: {
defaultMessage: 'Other',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.documents.field.proofOther.label'
+ id: 'v2.event.birth.action.declare.form.section.documents.field.proofOther.label'
}
}
]
diff --git a/src/form/v2/birth/forms/informant.ts b/src/form/v2/birth/forms/informant.ts
index c9002ff3e..7e8a23f9a 100644
--- a/src/form/v2/birth/forms/informant.ts
+++ b/src/form/v2/birth/forms/informant.ts
@@ -34,42 +34,42 @@ const informantMessageDescriptors = {
MOTHER: {
defaultMessage: 'Mother',
description: 'Label for option mother',
- id: 'form.field.label.informantRelation.mother'
+ id: 'v2.form.field.label.informantRelation.mother'
},
FATHER: {
defaultMessage: 'Father',
description: 'Label for option father',
- id: 'form.field.label.informantRelation.father'
+ id: 'v2.form.field.label.informantRelation.father'
},
GRANDFATHER: {
defaultMessage: 'Grandfather',
description: 'Label for option Grandfather',
- id: 'form.field.label.informantRelation.grandfather'
+ id: 'v2.form.field.label.informantRelation.grandfather'
},
GRANDMOTHER: {
defaultMessage: 'Grandmother',
description: 'Label for option Grandmother',
- id: 'form.field.label.informantRelation.grandmother'
+ id: 'v2.form.field.label.informantRelation.grandmother'
},
BROTHER: {
defaultMessage: 'Brother',
description: 'Label for option brother',
- id: 'form.field.label.informantRelation.brother'
+ id: 'v2.form.field.label.informantRelation.brother'
},
SISTER: {
defaultMessage: 'Sister',
description: 'Label for option Sister',
- id: 'form.field.label.informantRelation.sister'
+ id: 'v2.form.field.label.informantRelation.sister'
},
LEGAL_GUARDIAN: {
defaultMessage: 'Legal guardian',
description: 'Label for option Legal Guardian',
- id: 'form.field.label.informantRelation.legalGuardian'
+ id: 'v2.form.field.label.informantRelation.legalGuardian'
},
OTHER: {
defaultMessage: 'Someone else',
description: 'Label for option someone else',
- id: 'form.field.label.informantRelation.others'
+ id: 'v2.form.field.label.informantRelation.others'
}
} satisfies Record
@@ -83,7 +83,7 @@ export const informantPage = defineFormPage({
title: {
defaultMessage: "Informant's details",
description: 'Form section title for informants details',
- id: 'form.section.informant.title'
+ id: 'v2.form.section.informant.title'
},
fields: [
{
@@ -93,7 +93,7 @@ export const informantPage = defineFormPage({
label: {
defaultMessage: 'Relationship to child',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.informant.field.relation.label'
+ id: 'v2.event.birth.action.declare.form.section.informant.field.relation.label'
},
options: birthInformantTypeOptions
},
@@ -104,7 +104,7 @@ export const informantPage = defineFormPage({
label: {
defaultMessage: 'Relationship to child',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.informant.field.other.relation.label'
+ id: 'v2.event.birth.action.declare.form.section.informant.field.other.relation.label'
},
conditionals: [
{
@@ -123,7 +123,7 @@ export const informantPage = defineFormPage({
...getAddressFields(PersonType.informant),
{
- id: 'informant.address.divider.end',
+ id: 'v2.informant.address.divider.end',
type: 'DIVIDER',
label: emptyMessage
}
@@ -148,7 +148,7 @@ export const informantPage = defineFormPage({
label: {
defaultMessage: 'Phone number',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.informant.field.phoneNo.label'
+ id: 'v2.event.birth.action.declare.form.section.informant.field.phoneNo.label'
}
},
{
@@ -158,7 +158,7 @@ export const informantPage = defineFormPage({
label: {
defaultMessage: 'Email',
description: 'This is the label for the field',
- id: 'event.birth.action.declare.form.section.informant.field.email.label'
+ id: 'v2.event.birth.action.declare.form.section.informant.field.email.label'
},
options: {
type: 'email'
diff --git a/src/form/v2/birth/index.ts b/src/form/v2/birth/index.ts
index d3dea4754..0ca7e6d91 100644
--- a/src/form/v2/birth/index.ts
+++ b/src/form/v2/birth/index.ts
@@ -16,13 +16,14 @@ import {
not
} from '@opencrvs/toolkit/conditionals'
import { BIRTH_DECLARE_FORM } from './forms/declare'
+import { Event } from '@countryconfig/form/types/types'
export const birthEvent = defineConfig({
- id: 'BIRTH',
+ id: Event.Birth,
label: {
defaultMessage: 'Birth declaration',
description: 'This is what this event is referred as in the system',
- id: 'event.birth.label'
+ id: 'v2.event.birth.label'
},
summary: {
title: {
@@ -30,7 +31,7 @@ export const birthEvent = defineConfig({
label: {
defaultMessage: '{child.firstname} {child.surname}',
description: 'This is the title of the summary',
- id: 'event.birth.summary.title'
+ id: 'v2.event.birth.summary.title'
}
},
fields: []
@@ -44,7 +45,7 @@ export const birthEvent = defineConfig({
label: {
defaultMessage: '{child.surname} {child.firstname}',
description: 'Label for name in all workqueue',
- id: 'event.birth.workqueue.all.name.label'
+ id: 'v2.event.birth.workqueue.all.name.label'
}
}
],
@@ -58,10 +59,15 @@ export const birthEvent = defineConfig({
defaultMessage: 'Declare',
description:
'This is shown as the action name anywhere the user can trigger the action from',
- id: 'event.birth.action.declare.label'
+ id: 'v2.event.birth.action.declare.label'
},
forms: [BIRTH_DECLARE_FORM],
- allowedWhen: defineConditional(not(eventHasAction('DECLARE')))
+ conditionals: [
+ {
+ type: 'SHOW',
+ conditional: defineConditional(not(eventHasAction('DECLARE')))
+ }
+ ]
}
]
})
diff --git a/src/form/v2/person/address.ts b/src/form/v2/person/address.ts
index e80f46ae8..1a90969df 100644
--- a/src/form/v2/person/address.ts
+++ b/src/form/v2/person/address.ts
@@ -29,12 +29,12 @@ const UrbanRuralTypes = {
const urbanRuralMessageDescriptors = {
URBAN: {
defaultMessage: 'Urban',
- id: 'form.field.label.urban',
+ id: 'v2.form.field.label.urban',
description: 'Label for form field checkbox option Urban'
},
RURAL: {
defaultMessage: 'Rural',
- id: 'form.field.label.rural',
+ id: 'v2.form.field.label.rural',
description: 'Label for form field checkbox option Rural'
}
} satisfies Record
@@ -55,7 +55,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'State',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.other.state.label`
+ id: `v2.event.action.declare.form.section.person.field.address.other.state.label`
}
},
{
@@ -65,7 +65,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'District',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.other.district.label`
+ id: `v2.event.action.declare.form.section.person.field.address.other.district.label`
}
},
{
@@ -75,7 +75,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'City / Town',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.other.town.label`
+ id: `v2.event.action.declare.form.section.person.field.address.other.town.label`
}
},
{
@@ -85,7 +85,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Address Line 1',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.other.addressLine1.label`
+ id: `v2.event.action.declare.form.section.person.field.address.other.addressLine1.label`
}
},
{
@@ -95,7 +95,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Address Line 2',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.other.addressLine2.label`
+ id: `v2.event.action.declare.form.section.person.field.address.other.addressLine2.label`
}
},
{
@@ -105,7 +105,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Address Line 3',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.other.addressLine3.label`
+ id: `v2.event.action.declare.form.section.person.field.address.other.addressLine3.label`
}
},
{
@@ -115,7 +115,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Postcode / Zip',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.other.zipCode.label`
+ id: `v2.event.action.declare.form.section.person.field.address.other.zipCode.label`
}
}
]
@@ -128,7 +128,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Town',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.town.label`
+ id: `v2.event.action.declare.form.section.person.field.address.town.label`
}
},
@@ -139,7 +139,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Residential Area',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.residentialArea.label`
+ id: `v2.event.action.declare.form.section.person.field.address.residentialArea.label`
}
},
{
@@ -149,7 +149,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Street',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.street.label`
+ id: `v2.event.action.declare.form.section.person.field.address.street.label`
}
},
{
@@ -159,7 +159,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Number',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.number.label`
+ id: `v2.event.action.declare.form.section.person.field.address.number.label`
}
},
{
@@ -169,7 +169,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Postcode / Zip',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.zipCode.label`
+ id: `v2.event.action.declare.form.section.person.field.address.zipCode.label`
}
}
]
@@ -181,7 +181,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Province',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.address.province.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.address.province.label`
},
options: {
type: 'ADMIN_STRUCTURE'
@@ -194,7 +194,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'District',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.address.district.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.address.district.label`
},
options: {
partOf: {
@@ -213,7 +213,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Urban or Rural',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.address.urbanOrRural.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.address.urbanOrRural.label`
},
hideLabel: true
},
@@ -235,7 +235,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Village',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.address.village.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.address.village.label`
},
conditionals: [
{
@@ -256,7 +256,7 @@ export const getAddressFields = (person: AddressType): FieldConfig[] => {
label: {
defaultMessage: 'Country',
description: 'This is the label for the field',
- id: `event.action.declare.form.section.person.field.address.country.label`
+ id: `v2.event.action.declare.form.section.person.field.address.country.label`
}
},
...appendConditionalsToFields({
diff --git a/src/form/v2/person/index.ts b/src/form/v2/person/index.ts
index 8b5d6eab3..a6e3e9037 100644
--- a/src/form/v2/person/index.ts
+++ b/src/form/v2/person/index.ts
@@ -54,22 +54,22 @@ const idTypeMessageDescriptors = {
NATIONAL_ID: {
defaultMessage: 'National ID',
description: 'Option for form field: Type of ID',
- id: 'form.field.label.iDTypeNationalID'
+ id: 'v2.form.field.label.iDTypeNationalID'
},
PASSPORT: {
defaultMessage: 'Passport',
description: 'Option for form field: Type of ID',
- id: 'form.field.label.iDTypePassport'
+ id: 'v2.form.field.label.iDTypePassport'
},
BIRTH_REGISTRATION_NUMBER: {
defaultMessage: 'Birth Registration Number',
description: 'Option for form field: Type of ID',
- id: 'form.field.label.iDTypeBRN'
+ id: 'v2.form.field.label.iDTypeBRN'
},
NONE: {
defaultMessage: 'None',
description: 'Option for form field: Type of ID',
- id: 'form.field.label.iDTypeNone'
+ id: 'v2.form.field.label.iDTypeNone'
}
} satisfies Record
@@ -77,32 +77,32 @@ const maritalStatusMessageDescriptors = {
SINGLE: {
defaultMessage: 'Single',
description: 'Option for form field: Marital status',
- id: 'form.field.label.maritalStatusSingle'
+ id: 'v2.form.field.label.maritalStatusSingle'
},
MARRIED: {
defaultMessage: 'Married',
description: 'Option for form field: Marital status',
- id: 'form.field.label.maritalStatusMarried'
+ id: 'v2.form.field.label.maritalStatusMarried'
},
WIDOWED: {
defaultMessage: 'Widowed',
description: 'Option for form field: Marital status',
- id: 'form.field.label.maritalStatusWidowed'
+ id: 'v2.form.field.label.maritalStatusWidowed'
},
DIVORCED: {
defaultMessage: 'Divorced',
description: 'Option for form field: Marital status',
- id: 'form.field.label.maritalStatusDivorced'
+ id: 'v2.form.field.label.maritalStatusDivorced'
},
SEPARATED: {
defaultMessage: 'Separated',
description: 'Option for form field: Marital status',
- id: 'form.field.label.maritalStatusSeparated'
+ id: 'v2.form.field.label.maritalStatusSeparated'
},
NOT_STATED: {
defaultMessage: 'Not stated',
description: 'Option for form field: Marital status',
- id: 'form.field.label.maritalStatusNotStated'
+ id: 'v2.form.field.label.maritalStatusNotStated'
}
} satisfies Record
@@ -110,22 +110,22 @@ const educationalAttainmentMessageDescriptors = {
NO_SCHOOLING: {
defaultMessage: 'No schooling',
description: 'Option for form field: no education',
- id: 'form.field.label.educationAttainmentNone'
+ id: 'v2.form.field.label.educationAttainmentNone'
},
PRIMARY_ISCED_1: {
defaultMessage: 'Primary',
description: 'Option for form field: ISCED1 education',
- id: 'form.field.label.educationAttainmentISCED1'
+ id: 'v2.form.field.label.educationAttainmentISCED1'
},
POST_SECONDARY_ISCED_4: {
defaultMessage: 'Secondary',
description: 'Option for form field: ISCED4 education',
- id: 'form.field.label.educationAttainmentISCED4'
+ id: 'v2.form.field.label.educationAttainmentISCED4'
},
FIRST_STAGE_TERTIARY_ISCED_5: {
defaultMessage: 'Tertiary',
description: 'Option for form field: ISCED5 education',
- id: 'form.field.label.educationAttainmentISCED5'
+ id: 'v2.form.field.label.educationAttainmentISCED5'
}
} satisfies Record
@@ -148,12 +148,12 @@ const YesNoTypes = {
const yesNoMessageDescriptors = {
YES: {
defaultMessage: 'Yes',
- id: 'form.field.label.Yes',
+ id: 'v2.form.field.label.Yes',
description: 'Label for form field radio option Yes'
},
NO: {
defaultMessage: 'No',
- id: 'form.field.label.No',
+ id: 'v2.form.field.label.No',
description: 'Label for form field radio option No'
}
} satisfies Record
@@ -171,7 +171,7 @@ const getIdFields = (person: PersonType): FieldConfig[] => [
label: {
defaultMessage: 'Type of ID',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.idType.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.idType.label`
},
options: idTypeOptions
},
@@ -182,7 +182,7 @@ const getIdFields = (person: PersonType): FieldConfig[] => [
label: {
defaultMessage: 'ID Number',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.nid.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.nid.label`
},
conditionals: [
{
@@ -200,7 +200,7 @@ const getIdFields = (person: PersonType): FieldConfig[] => [
label: {
defaultMessage: 'ID Number',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.passport.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.passport.label`
},
conditionals: [
{
@@ -218,7 +218,7 @@ const getIdFields = (person: PersonType): FieldConfig[] => [
label: {
defaultMessage: 'ID Number',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.brn.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.brn.label`
},
conditionals: [
{
@@ -243,7 +243,7 @@ export const getPersonInputCommonFields = (
label: {
defaultMessage: 'First name(s)',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.firstname.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.firstname.label`
}
},
{
@@ -253,7 +253,7 @@ export const getPersonInputCommonFields = (
label: {
defaultMessage: 'Last name',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.surname.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.surname.label`
}
},
{
@@ -265,7 +265,7 @@ export const getPersonInputCommonFields = (
message: {
defaultMessage: 'Please enter a valid date',
description: 'This is the error message for invalid date',
- id: `event.birth.action.declare.form.section.${person}.field.dob.error`
+ id: `v2.event.birth.action.declare.form.section.person.field.dob.error`
},
validator: field(`${person}.dob`).isBeforeNow().apply()
}
@@ -273,7 +273,7 @@ export const getPersonInputCommonFields = (
label: {
defaultMessage: 'Date of birth',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.dob.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.dob.label`
},
conditionals: [
{
@@ -289,7 +289,7 @@ export const getPersonInputCommonFields = (
label: {
defaultMessage: 'Exact date of birth unknown',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.age.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.age.checkbox.label`
}
},
{
@@ -299,13 +299,13 @@ export const getPersonInputCommonFields = (
label: {
defaultMessage: `Age of ${person}`,
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.age.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.age.text.label`
},
options: {
postfix: {
defaultMessage: 'years',
description: 'This is the postfix for age field',
- id: `event.birth.action.declare.form.section.${person}.field.age.postfix`
+ id: `v2.event.birth.action.declare.form.section.person.field.age.postfix`
}
},
conditionals: [
@@ -324,7 +324,7 @@ export const getPersonInputCommonFields = (
label: {
defaultMessage: 'Nationality',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.nationality.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.nationality.label`
}
},
...getIdFields(person),
@@ -339,7 +339,7 @@ export const getPersonInputCommonFields = (
label: {
defaultMessage: 'Usual place of residence',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.addressHelper.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.addressHelper.label`
},
options: { fontVariant: 'h3' }
}
@@ -357,7 +357,7 @@ const fatherAddressFields = [
label: {
defaultMessage: "Same as mother's usual place of residence?",
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${PersonType.father}.field.address.addressSameAs.label`
+ id: `v2.event.birth.action.declare.form.section.father.field.address.addressSameAs.label`
}
}
],
@@ -399,7 +399,7 @@ export const getPersonInputFields = (person: PersonType): FieldConfig[] => {
label: {
defaultMessage: 'Marital Status',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.maritalStatus.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.maritalStatus.label`
},
options: maritalStatusOptions
},
@@ -410,7 +410,7 @@ export const getPersonInputFields = (person: PersonType): FieldConfig[] => {
label: {
defaultMessage: 'Level of education',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.educationalAttainment.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.educationalAttainment.label`
},
options: educationalAttainmentOptions
},
@@ -421,7 +421,7 @@ export const getPersonInputFields = (person: PersonType): FieldConfig[] => {
label: {
defaultMessage: 'Occupation',
description: 'This is the label for the field',
- id: `event.birth.action.declare.form.section.${person}.field.occupation.label`
+ id: `v2.event.birth.action.declare.form.section.person.field.occupation.label`
}
}
]
diff --git a/src/form/v2/utils.ts b/src/form/v2/utils.ts
index 27ce7fff5..141cddbf3 100644
--- a/src/form/v2/utils.ts
+++ b/src/form/v2/utils.ts
@@ -43,5 +43,5 @@ export const createSelectOptions = <
export const emptyMessage = {
defaultMessage: '',
description: 'empty string',
- id: 'messages.emptyString'
+ id: 'v2.messages.emptyString'
}
diff --git a/src/index.ts b/src/index.ts
index 64bd8be09..c19bd6c8f 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -13,6 +13,7 @@ require('dotenv').config()
import fetch from 'node-fetch'
import path from 'path'
+import Handlebars from 'handlebars'
import * as Hapi from '@hapi/hapi'
import * as Pino from 'hapi-pino'
import * as JWT from 'hapi-auth-jwt2'
@@ -71,6 +72,7 @@ import {
onAnyActionHandler,
onRegisterHandler
} from '@countryconfig/api/custom-event/handler'
+import { readFileSync } from 'fs'
export interface ITokenPayload {
sub: string
@@ -305,6 +307,14 @@ export async function createServer() {
? '/client-config.prod.js'
: '/client-config.js'
+ if (process.env.NODE_ENV !== 'production') {
+ const template = Handlebars.compile(
+ readFileSync(join(__dirname, file), 'utf8')
+ )
+ const result = template({ V2_EVENTS: process.env.V2_EVENTS || false })
+ return h.response(result).type('application/javascript')
+ }
+
return h.file(join(__dirname, file))
},
options: {
@@ -569,7 +579,7 @@ export async function createServer() {
server.route({
method: 'POST',
- path: '/events/TENNIS_CLUB_MEMBERSHIP/actions/register',
+ path: '/events/TENNIS_CLUB_MEMBERSHIP/actions/REGISTER',
handler: onRegisterHandler,
options: {
tags: ['api', 'custom-event'],
diff --git a/src/translations/client.csv b/src/translations/client.csv
index 6ab30eaba..57b4c37f9 100644
--- a/src/translations/client.csv
+++ b/src/translations/client.csv
@@ -797,19 +797,6 @@ error.title,Error title,Oops!,Oups !
error.title.unauthorized,Error title unauthorized,Unauthorized!,Non autorisé !
error.userListError,Error message when user list loads fails,Failed to load users,Impossible de charger les utilisateurs
error.weAreTryingToFixThisError,Error description,This page could not be found,"Ce n'est pas vous, c'est nous. C'est notre faute."
-event.history.timeFormat,"MMMM dd, yyyy · hh.mm a","MMMM dd, yyyy · hh.mm a",
-event.tennis-club-membership.action.declare.form.label,This is what this form is referred as in the system,Tennis club membership application,Demande d'adhésion au club de tennis
-event.tennis-club-membership.action.declare.form.section.recommender.field.firstname.label,This is the label for the field,Recommender's first name,Prénom du recommandeur
-event.tennis-club-membership.action.declare.form.section.recommender.field.id.label,This is the label for the field,Recommender's membership ID,ID d'adhésion du recommandeur
-event.tennis-club-membership.action.declare.form.section.recommender.field.surname.label,This is the label for the field,Recommender's surname,Nom de famille du recommandeur
-event.tennis-club-membership.action.declare.form.section.recommender.title,This is the title of the section,Who is recommending the applicant?,Qui recommande le demandeur?
-event.tennis-club-membership.action.declare.form.section.who.field.dob.label,This is the label for the field,Applicant's date of birth,Date de naissance du demandeur
-event.tennis-club-membership.action.declare.form.section.who.field.firstname.label,This is the label for the field,Applicant's first name,Prénom du demandeur
-event.tennis-club-membership.action.declare.form.section.who.field.surname.label,This is the label for the field,Applicant's surname,Nom de famille du demandeur
-event.tennis-club-membership.action.declare.form.section.who.title,This is the title of the section,Who is applying for the membership?,Qui postule pour l'adhésion?
-event.tennis-club-membership.action.declare.form.version.1,This is the first version of the form,Version 1,Version 1
-event.tennis-club-membership.action.declare.label,This is shown as the action name anywhere the user can trigger the action from,Send an application,Envoyer une demande
-event.tennis-club-membership.label,This is what this event is referred as in the system,Tennis club membership application,Demande d'adhésion au club de tennis
exitModal.cancel,The label for cancel button in exit modal,Cancel,Annuler
exitModal.exitWithoutSaving,The title for exit without saving modal,Exit without saving changes?,Quitter sans enregistrer les modifications?
exitModal.exitWithoutSavingDescription,The description for exit without saving modal,You have unsaved changes on your declaration form. Are you sure you want to exit without saving?,Vous avez des modifications non enregistrées sur votre formulaire de déclaration. Êtes-vous sûr de vouloir quitter sans enregistrer?
@@ -2305,6 +2292,418 @@ userSetup.type.healthSystem,The description for health system type,Health System
userSetup.type.hospital,The description for HOSPITAL type,Hospital,Hôpital
userSetup.type.system,The description for system type,System,Système
userSetup.waiting,The message that displays when the user is waiting for the account to be created,Setting up your account,Configuration de votre compte
+v2.action.correct,Label for correct record button in dropdown menu,Correct Record,Corriger l'enregistrement
+v2.actionModal.PrimaryAction,The label for primary action button of action modal,"{action, select, declare{Declare} other{{action}}}","{action, select, declare{Declare} other{{action}}}"
+v2.actionModal.cancel,The label for cancel button of action modal,Cancel,Annuler
+v2.actionModal.description,The description for action modal,The declarant will be notified of this action and a record of this decision will be recorded,Le déclarant sera informé de cette action et un enregistrement de cette décision sera conservé
+v2.actionModal.title,The title for action modal,"{action, select, declare{Declare} other{{action}}} the member?","{action, select, declare{Declare} other{{action}}} the member?"
+v2.buttons.cancel,Cancel button text in the modal,Cancel,Annuler
+v2.buttons.change,The label for the change button,Change,Changer
+v2.buttons.confirm,Confirm button,Confirm,Confirm
+v2.buttons.continue,Continue Button Text,Continue,Continuer
+v2.buttons.exit,Label for Exit button on EventTopBar,EXIT,QUITTER
+v2.buttons.print,Print button text,Print,Imprimer
+v2.buttons.saveExit,The label for the save and exit button,Save & Exit,Enregistrer et quitter
+v2.changeModal.cancel,The label for cancel button of change modal,Cancel,Annuler
+v2.changeModal.continue,The label for continue button of change modal,Continue,Continuer
+v2.changeModal.description,The description for change modal,A record will be created of any changes you make,Un enregistrement sera créé pour toute modification que vous apporterez
+v2.changeModal.title,The title for change modal,Edit declaration?,Modifier la déclaration ?
+v2.config.application.vsexport,Vital statistics title,Vital statistics,Statistiques de l'état civil
+v2.constants.PIN,PIN label,PIN,PIN
+v2.constants.address,Label for address,Address,Adresse
+v2.constants.allEvents,Label for select option All events,All events,Tous les événements
+v2.constants.allStatuses,Label for select option All statuses,All statuses,Tous les statuts
+v2.constants.application.title,Application title,Application,Application
+v2.constants.applicationName,Declaration name of CRVS,OpenCRVS,OpenCRVS
+v2.constants.assignRecord,A label for the Assign record -button,Assign record,Assigner l'enregistrement
+v2.constants.averageRateOfRegistrations,A label for Average rate of registrations,avg. {amount}%,avg. {amount}%
+v2.constants.birth,A label from the birth event,Birth,Naissance
+v2.constants.births,A label from the births event,Births,Naissances
+v2.constants.by,Label for By (the person who performed the action),By,Par
+v2.constants.certificate.title,Certificate title,Certificate,Certificat
+v2.constants.certificationPaymentTitle,Label for certification payment performance reports,"Payment collected for {event, select, birth{birth} death{death} other{birth}} certificates","Payment collected for {event, select, birth{birth} death{death} other{birth}} certificates"
+v2.constants.certified,A label for certified,certified,certifié
+v2.constants.collected,The status label for collected,collected,collecté
+v2.constants.collectedBy,The collected by sec text,Collected by,Collecté par
+v2.constants.comment,Label for rejection comment,Comment,Commentaire
+v2.constants.countryName,Name of the OpenCRVS implementation country,Farajaland,Farajaland
+v2.constants.customTimePeriod,Label for Custom time period,Custom time period,Période personnalisée
+v2.constants.dateOfDeclaration,Date of declaration label,Date of declaration,Date de déclaration
+v2.constants.death,A label from the death event,Death,Décès
+v2.constants.deaths,A label from the deaths event,Deaths,Décès
+v2.constants.declaration,A label for declaration,declaration,déclaration
+v2.constants.declarationCollectedOn,Label for the workflow timestamp when the status is collected,Certificate collected on,Certificat collecté le
+v2.constants.declarationFailedOn,Label for the workflow timestamp when the status is failed,Failed to send on,Échec de l'envoi le
+v2.constants.declarationRegisteredOn,Label for the workflow timestamp when the status is registered,Declaration registered on,Déclaration enregistrée le
+v2.constants.declarationRejectedOn,Label for the workflow timestamp when the status is rejected,Declaration sent for updates on,Déclaration envoyée pour mise à jour le
+v2.constants.declarationRequestedCorrectionOn,Label for the workflow timestamp when the status is requested correction,Declaration requested correction on,Déclaration demandant une correction le
+v2.constants.declarationSentForExternalValidationOn,Label for the workflow timestamp when the status is waiting_validation,Declaration sent for external validation on,Déclaration envoyée pour validation externe le
+v2.constants.declarationStarted,Label for table header column Declaration started,Started,Commencé
+v2.constants.declarationStartedBy,Label for table header column Started by,Started by,Commencé par
+v2.constants.declarationStartedOn,Label for the workflow timestamp when the status is draft created,Started on,Commencé le
+v2.constants.declarationState,A label to describe when the declaration was actioned on,Declaration {action} on,Declaration {action} on
+v2.constants.declarationSubmittedOn,Label for the workflow timestamp when the status is declaration,Declaration submitted on,Déclaration soumise le
+v2.constants.declarationUpdatedOn,Label for the workflow timestamp when the status is draft updated,Updated on,Mis à jour le
+v2.constants.declarationValidatedOn,Label for the workflow timestamp when the status is validated,Declaration reviewed on,Déclaration revue le
+v2.constants.declarations,Declaration title,Declarations,Déclarations
+v2.constants.declarationsCount,A label for declarations count,Declarations ({totalItems}),Declarations ({totalItems})
+v2.constants.declrationArchivedOn,Label for the workflow timestamp when the status is archived,Application archived on,Demande archivée le
+v2.constants.dob,Date of birth label,D.o.B.,Date de naissance
+v2.constants.dod,Label for DoD in work queue list item,D.o.D,Date de décès
+v2.constants.downloaded,Label for application download status Downloaded,Downloaded,Téléchargé
+v2.constants.downloading,Label for declaration download status Downloading,Downloading...,Téléchargement en cours...
+v2.constants.duplicateOf,table header for `duplicate of` in record audit,Duplicate of,Duplicata de
+v2.constants.emailAddress,Email label,Email Address,Adresse e-mail
+v2.constants.emailBody,Label for email body input,Message,Message
+v2.constants.emailSubject,Label for email subject input,Subject,Sujet
+v2.constants.estimatedNumberOfEvents,A label for Estimated number of events,"Estimated no. of {eventType, select, birth {birth} death {death} other {birth}}s","Estimated no. of {eventType, select, birth {birth} death {death} other {birth}}s"
+v2.constants.estimatedNumberOfRegistartion,A label for estimated no. of registrations,Estimated no. of registrations,Nombre estimé d'enregistrements
+v2.constants.estimatedTargetDaysRegistrationTitle,A label for estimated vs total registered in {registrationTargetDays} days,Estimated vs total registered in {registrationTargetDays} days,Estimated vs total registered in {registrationTargetDays} days
+v2.constants.event,Label for Event of event in work queue list item,Event,Événement
+v2.constants.eventDate,Label for event date in list item,Date of event,Date de l'événement
+v2.constants.eventType,Label for table header column Event type,Event,Événement
+v2.constants.export,Label used for export,Export,Exporter
+v2.constants.failedToSend,Label for declaration status Failed,Failed to send,Échec de l'envoi
+v2.constants.femaleOver18,Label for femaleOver18,Female Over 18,Femme de plus de 18 ans
+v2.constants.femaleUnder18,Label for femaleUnder18,Female Under 18,Femme de moins de 18 ans
+v2.constants.form.title,Form Declaration title,Declaration forms,Formulaires de déclaration
+v2.constants.from,Label for text From,From,De
+v2.constants.gender,Gender label,Gender,Sexe
+v2.constants.history,History heading,History,Historique
+v2.constants.id,ID Label,ID,ID
+v2.constants.inReview.status,A label for In Review,In Review,En revue
+v2.constants.incomplete.status,A label for Incomplete,Incomplete,Incomplet
+v2.constants.informant,Informant Label,Informant,Informant
+v2.constants.informantContactNumber,The title of contact number label,Informant contact number,Numéro de contact de l'informant
+v2.constants.integrations,Integration title,Integrations,Intégrations
+v2.constants.issuedBy,The issued by sec text,Issued by,Émis par
+v2.constants.label.action,Action Label,Action,Action
+v2.constants.label.date,Date Label,Date,Date
+v2.constants.language,language label,Language,Langue
+v2.constants.last12Months,Label for preset date range Last 12 months,Last 12 months,12 derniers mois
+v2.constants.last30Days,Label for preset date range Last 30 days,Last 30 days,30 derniers jours
+v2.constants.lastEdited,Label for rejection date in work queue list item,Last edited,Dernière modification
+v2.constants.lastUpdated,Label for Last updated in list item,Last updated,Dernière mise à jour
+v2.constants.loadMore,A label for load more,Load more,Charger plus
+v2.constants.location,Label for location,Location,Localisation
+v2.constants.maleOver18,Label for maleOver18,Male Over 18,Homme de plus de 18 ans
+v2.constants.maleUnder18,Label for maleUnder18,Male Under 18,Homme de moins de 18 ans
+v2.constants.marriage,A label from the marriage event,Marriage,Mariage
+v2.constants.marriages,A label from the marriages event,Marriages,Mariages
+v2.constants.matchedTo,table header for `Matched to` in record audit,Matched to,Correspond à
+v2.constants.month,Label for month,Month,Mois
+v2.constants.name,Name label,Name,Nom
+v2.constants.noConnection,No Connection hover text,No connection,Pas de connexion
+v2.constants.noNameProvided,Label for empty title,No name provided,Aucun nom fourni
+v2.constants.noResults,Text to display if the search return no results for the current filters,No result,Aucun résultat
+v2.constants.noResultsOutbox,Text to display if there is no items in outbox,No records require processing,Aucun enregistrement à traiter
+v2.constants.notificationSent,label for notification sent,Notification sent,Notification envoyée
+v2.constants.over5Years,Label for registrations over 5 years,Over 5 years,Plus de 5 ans
+v2.constants.password,Password label,Password,Mot de passe
+v2.constants.pendingConnection,Label for declaration status Pending Connection,Pending connection,Connexion en attente
+v2.constants.percentageOfEstimation,A label for percentage of estimate,Percentage of estimate,Pourcentage de l'estimation
+v2.constants.performance,Performance title,Performance,Performance
+v2.constants.phoneNumber,Phone label,Phone number,Numéro de téléphone
+v2.constants.reason,Label for Reason the declaration was rejected,Reason,Raison
+v2.constants.record,Label for header table header Record,Record,Enregistrement
+v2.constants.refresh,label for refresh,Refresh,Actualiser
+v2.constants.registered,A label for registered,Registered,Enregistré
+v2.constants.registered.status,A label for registered,Registered,Enregistré
+v2.constants.registeredAt,Label for comparison row registeredAt type,Registered at,Enregistré à
+v2.constants.registeredBy,Label for comparison row registeredBy type,Registered by,Enregistré par
+v2.constants.registeredInTargetd,A label for Registered in {registrationTargetDays} days,Registered in {registrationTargetDays} days,Enregistré dans les {registrationTargetDays} jours
+v2.constants.registeredWithinTargetd,A label for Registered {registrationTargetDays} within days of event,Registered within\n{registrationTargetDays} days of event,Enregistré dans les\n{registrationTargetDays} jours de l'événement
+v2.constants.rejected,A label for rejected,rejected,rejeté
+v2.constants.rejectedDays,The title of rejected days of declaration,Sent for updates {text},Envoyé pour mises à jour {text}
+v2.constants.relationship,Relationship Label for death,Relationship,Relation
+v2.constants.requestReason,Label for Reason the declaration was corrected,Reason for request,Raison de la demande
+v2.constants.requestedCorrection,A label for requested correction,requested correction,correction demandée
+v2.constants.requireUpdatesLoading,The text when all rejected declarations are loading,Checking your declarations,Vérification de vos déclarations
+v2.constants.requiresUpdates.status,A label for Requires updates,Requires updates,Nécessite des mises à jour
+v2.constants.review,A label from the review button,Review,Revue
+v2.constants.role,Role label,Role,Rôle
+v2.constants.search,The title of the page,Search,Rechercher
+v2.constants.sending,Label for declaration status Submitting,Sending...,Envoi en cours...
+v2.constants.sentForApproval,label for sent for approval,Sent for approval,Envoyé pour approbation
+v2.constants.sentForReview,label for sent for review,Sent for review,Envoyé pour revue
+v2.constants.sentForUpdates,label for sent for updates,Sent for updates,Envoyé pour mises à jour
+v2.constants.sentForUpdatesOn,Label for rejection date in work queue list item,Sent for updates on,Envoyé pour mises à jour le
+v2.constants.sentForValidation,label for sent for validation,Sent for validation,Envoyé pour validation
+v2.constants.sentOn,Label for rejection date in work queue list item,Sent on,Envoyé le
+v2.constants.showMore,Label for show more link,Show next {pageSize},Afficher les {pageSize} suivants
+v2.constants.skipToMainContent,Label for a keyboard accessibility link which skips to the main content,Skip to main content,Passer au contenu principal
+v2.constants.startedAt,Label for Started At in list item,Started,Commencé
+v2.constants.startedBy,Label for Started by in list item,Started by,Commencé par
+v2.constants.status,Title for column,Status,Statut
+v2.constants.submissionStatus,Label for table header of column Submission status,Submission status,Statut de soumission
+v2.constants.submitted,A label for submitted,submitted,soumis
+v2.constants.systemrole,System Role label,System Role,Rôle système
+v2.constants.timeFramesTitle,Header for tabel performance timeframs,"{event, select, birth{Birth} death{Death} other{Birth}} registered by time period, from date of occurrence","{event, select, birth{Birth} death{Death} other{Birth}} registered by time period, from date of occurrence"
+v2.constants.timeInProgress,Label for column Time in progress,Time in progress,Temps en cours
+v2.constants.timePeriod,A label for Time period,Time period,Période
+v2.constants.timeReadyForReview,Label for column Time in ready for review,Time in ready for review,Temps en attente de revue
+v2.constants.timeReadyToPrint,Label for column Time in ready to print,Time in ready to print,Temps en attente d'impression
+v2.constants.timeRequireUpdates,Label for column Time in require updates,Time in require updates,Temps en attente de mises à jour
+v2.constants.timeWaitingExternalValidation,Label for column Time in external validation BRIS,Time in external validation,Temps en attente de validation externe
+v2.constants.timeWatingApproval,Label for column Time in waiting for approval,Time in waiting for approval,Temps en attente d'approbation
+v2.constants.to,Used in sentence,to,à
+v2.constants.toCapitalized,Label for To,To,À
+v2.constants.total,Label for total,Total,Total
+v2.constants.totalFileSizeExceed,Accumulated File size exceed message,Total size of documents exceeds {fileSize}. Please reduce file size of your uploads,La taille totale des documents dépasse {fileSize}. Veuillez réduire la taille des fichiers de vos téléchargements
+v2.constants.totalRegistered,A label for Total registered,Total registered,Total enregistré
+v2.constants.totalRegisteredInTargetDays,A label for total registered in {registrationTargetDays} days,Total registered in {registrationTargetDays} days,Total enregistré dans les {registrationTargetDays} jours
+v2.constants.trackingId,Search menu tracking id type,Tracking ID,ID de suivi
+v2.constants.type,Label for type of event in work queue list item,Type,Type
+v2.constants.update,The title of reject button in list item actions,Update,Mettre à jour
+v2.constants.user,The name of the user form,User,Utilisateur
+v2.constants.username,Username,Username,Nom d'utilisateur
+v2.constants.validated,A label for validated,validated,validé
+v2.constants.viewAll,Label for view all link,View all,Voir tout
+v2.constants.waitingToSend,Label for declaration status Ready to Submit,Waiting to send,En attente d'envoi
+v2.constants.waitingValidated,A label for waitingValidated,Waiting for validation,En attente de validation
+v2.constants.week,Label for week,Week,Semaine
+v2.constants.within1YearTo5Years,Label for registrations within 1 year to 5 years,1 year - 5 years,1 an - 5 ans
+v2.constants.withinTargetDays,Label for registrations within {registrationTargetDays} days,Within {registrationTargetDays} days,Dans les {registrationTargetDays} jours
+v2.constants.withinTargetDaysTo1Year,Label for registrations within {registrationTargetDays} days to 1 year,{registrationTargetDays} days - 1 year,{registrationTargetDays} jours - 1 an
+v2.correction.corrector.anotherAgent,Label for another registration or field agent option in certificate correction form,Another registration agent or field agent,Another registration agent or field agent
+v2.correction.corrector.identity.instruction,The title for the corrector form,Please verify the identity of the person making this request,Please verify the identity of the person making this request
+v2.correction.corrector.identity.verified,Label for verified option in corrector identity check page,I have verified their identity,I have verified their identity
+v2.correction.corrector.identity.verified.label,The title for the corrector form,@todo,@todo
+v2.correction.corrector.informant,Label for informant option in certificate correction form,Informant,Informant
+v2.correction.corrector.me,Label for registrar option in certificate correction form,Me (Registrar),Me (Registrar)
+v2.correction.corrector.others,Label for someone else option in certificate correction form,Someone else,Someone else
+v2.correction.corrector.paragraph.title,The title for the corrector form,"For all record corrections at a minimum an affidavit must be provided. For material errors and omissions eg. in paternity cases, a court order must also be provided.","For all record corrections at a minimum an affidavit must be provided. For material errors and omissions eg. in paternity cases, a court order must also be provided."
+v2.correction.corrector.title,The title for the corrector form,Who is requesting a change to this record?,Who is requesting a change to this record?
+v2.correction.reason.title,The title for the corrector form,Reason for correction?,Reason for correction?
+v2.correction.requester.relationshop.intro.label,The title for the corrector form,Note: In the case that the child is now of legal age (18) then only they should be able to request a change to their birth record.,Note: In the case that the child is now of legal age (18) then only they should be able to request a change to their birth record.
+v2.error.required,This is the error message for required fields,Required for registration,Required for registration
+v2.error.search,The error message shown when a search query fails,An error occurred while searching,An error occurred while searching
+v2.event.action.declare.form.section.person.field.address.country.label,This is the label for the field,Country,Country
+v2.event.action.declare.form.section.person.field.address.number.label,This is the label for the field,Number,Number
+v2.event.action.declare.form.section.person.field.address.other.addressLine1.label,This is the label for the field,Address Line 1,Address Line 1
+v2.event.action.declare.form.section.person.field.address.other.addressLine2.label,This is the label for the field,Address Line 2,Address Line 2
+v2.event.action.declare.form.section.person.field.address.other.addressLine3.label,This is the label for the field,Address Line 3,Address Line 3
+v2.event.action.declare.form.section.person.field.address.other.district.label,This is the label for the field,District,District
+v2.event.action.declare.form.section.person.field.address.other.state.label,This is the label for the field,State,State
+v2.event.action.declare.form.section.person.field.address.other.town.label,This is the label for the field,City / Town,City / Town
+v2.event.action.declare.form.section.person.field.address.other.zipCode.label,This is the label for the field,Postcode / Zip,Postcode / Zip
+v2.event.action.declare.form.section.person.field.address.residentialArea.label,This is the label for the field,Residential Area,Residential Area
+v2.event.action.declare.form.section.person.field.address.street.label,This is the label for the field,Street,Street
+v2.event.action.declare.form.section.person.field.address.town.label,This is the label for the field,Town,Town
+v2.event.action.declare.form.section.person.field.address.zipCode.label,This is the label for the field,Postcode / Zip,Postcode / Zip
+v2.event.birth.action.declare.form.label,This is what this form is referred as in the system,Birth decalration form,Birth decalration form
+v2.event.birth.action.declare.form.review.title,Title of the form to show in review page,Birth declaration for {firstname} {surname},Birth declaration for {firstname} {surname}
+v2.event.birth.action.declare.form.section.child.field.attendantAtBirth.label,This is the label for the field,Attendant at birth,Attendant at birth
+v2.event.birth.action.declare.form.section.child.field.birthLocation.label,This is the label for the field,Health Institution,Health Institution
+v2.event.birth.action.declare.form.section.child.field.birthType.label,This is the label for the field,Type of birth,Type of birth
+v2.event.birth.action.declare.form.section.child.field.dob.error,This is the error message for invalid date,Please enter a valid date,Please enter a valid date
+v2.event.birth.action.declare.form.section.child.field.dob.label,This is the label for the field,Date of birth,Date of birth
+v2.event.birth.action.declare.form.section.child.field.firstname.label,This is the label for the field,First name(s),First name(s)
+v2.event.birth.action.declare.form.section.child.field.gender.label,This is the label for the field,Sex,Sex
+v2.event.birth.action.declare.form.section.child.field.placeOfBirth.label,This is the label for the field,Place of delivery,Place of delivery
+v2.event.birth.action.declare.form.section.child.field.surname.label,This is the label for the field,Last name,Last name
+v2.event.birth.action.declare.form.section.child.field.weightAtBirth.label,This is the label for the field,Weight at birth,Weight at birth
+v2.event.birth.action.declare.form.section.child.field.weightAtBirth.postfix,This is the postfix for the weight field,Kilograms (kg),Kilograms (kg)
+v2.event.birth.action.declare.form.section.documents.field.helper.label,This is the label for the field,The following documents are required,The following documents are required
+v2.event.birth.action.declare.form.section.documents.field.proofOfBirth.label,This is the label for the field,Proof of birth,Proof of birth
+v2.event.birth.action.declare.form.section.documents.field.proofOfFather.label,This is the label for the field,Proof of father's ID,Proof of father's ID
+v2.event.birth.action.declare.form.section.documents.field.proofOfMother.label,This is the label for the field,Proof of mother's ID,Proof of mother's ID
+v2.event.birth.action.declare.form.section.documents.field.proofOther.label,This is the label for the field,Other,Other
+v2.event.birth.action.declare.form.section.father.field.address.addressSameAs.label,This is the label for the field,Same as mother's usual place of residence?,Same as mother's usual place of residence?
+v2.event.birth.action.declare.form.section.father.field.detailsNotAvailable.label,This is the label for the field,Father's details are not available,Father's details are not available
+v2.event.birth.action.declare.form.section.father.field.reason.label,This is the label for the field,Reason,Reason
+v2.event.birth.action.declare.form.section.informant.field.email.label,This is the label for the field,Email,Email
+v2.event.birth.action.declare.form.section.informant.field.other.relation.label,This is the label for the field,Relationship to child,Relationship to child
+v2.event.birth.action.declare.form.section.informant.field.phoneNo.label,This is the label for the field,Phone number,Phone number
+v2.event.birth.action.declare.form.section.informant.field.relation.label,This is the label for the field,Relationship to child,Relationship to child
+v2.event.birth.action.declare.form.section.mother.field.detailsNotAvailable.label,This is the label for the field,Mother's details are not available,Mother's details are not available
+v2.event.birth.action.declare.form.section.mother.field.previousBirths.label,This is the label for the field,No. of previous births,No. of previous births
+v2.event.birth.action.declare.form.section.mother.field.reason.label,This is the label for the field,Reason,Reason
+v2.event.birth.action.declare.form.section.person.field.address.district.label,This is the label for the field,District,District
+v2.event.birth.action.declare.form.section.person.field.address.province.label,This is the label for the field,Province,Province
+v2.event.birth.action.declare.form.section.person.field.address.urbanOrRural.label,This is the label for the field,Urban or Rural,Urban or Rural
+v2.event.birth.action.declare.form.section.person.field.address.village.label,This is the label for the field,Village,Village
+v2.event.birth.action.declare.form.section.person.field.addressHelper.label,This is the label for the field,Usual place of residence,Usual place of residence
+v2.event.birth.action.declare.form.section.person.field.age.checkbox.label,This is the label for the field,Exact date of birth unknown,Exact date of birth unknown
+v2.event.birth.action.declare.form.section.person.field.age.postfix,This is the postfix for age field,years,years
+v2.event.birth.action.declare.form.section.person.field.age.text.label,This is the label for the field,Age of person,Age of person
+v2.event.birth.action.declare.form.section.person.field.brn.label,This is the label for the field,ID Number,ID Number
+v2.event.birth.action.declare.form.section.person.field.dob.error,This is the error message for invalid date,Please enter a valid date,Please enter a valid date
+v2.event.birth.action.declare.form.section.person.field.dob.label,This is the label for the field,Date of birth,Date of birth
+v2.event.birth.action.declare.form.section.person.field.educationalAttainment.label,This is the label for the field,Level of education,Level of education
+v2.event.birth.action.declare.form.section.person.field.firstname.label,This is the label for the field,First name(s),First name(s)
+v2.event.birth.action.declare.form.section.person.field.idType.label,This is the label for the field,Type of ID,Type of ID
+v2.event.birth.action.declare.form.section.person.field.maritalStatus.label,This is the label for the field,Marital Status,Marital Status
+v2.event.birth.action.declare.form.section.person.field.nationality.label,This is the label for the field,Nationality,Nationality
+v2.event.birth.action.declare.form.section.person.field.nid.label,This is the label for the field,ID Number,ID Number
+v2.event.birth.action.declare.form.section.person.field.occupation.label,This is the label for the field,Occupation,Occupation
+v2.event.birth.action.declare.form.section.person.field.passport.label,This is the label for the field,ID Number,ID Number
+v2.event.birth.action.declare.form.section.person.field.surname.label,This is the label for the field,Last name,Last name
+v2.event.birth.action.declare.form.version.1,This is the first version of the form,Version 1,Version 1
+v2.event.birth.action.declare.label,This is shown as the action name anywhere the user can trigger the action from,Declare,Declare
+v2.event.birth.label,This is what this event is referred as in the system,Birth declaration,Birth declaration
+v2.event.birth.summary.title,This is the title of the summary,{child.firstname} {child.surname},{child.firstname} {child.surname}
+v2.event.birth.workqueue.all.name.label,Label for name in all workqueue,{child.surname} {child.firstname},{child.surname} {child.firstname}
+v2.event.default.action.certificate.form.section.who.field.surname.label,This is the label for the field,Select Certificate Template,Select Certificate Template
+v2.event.history.timeFormat,Time format for timestamps in event history,"MMMM dd, yyyy · hh.mm a","MMMM dd, yyyy · hh.mm a"
+v2.event.tennis-club-membership.action.certificate.form.label,This is what this form is referred as in the system,Tennis club membership certificate collector,Tennis club membership certificate collector
+v2.event.tennis-club-membership.action.certificate.form.section.requester.informant.label,This is the label for the field,Print and issue Informant,Print and issue Informant
+v2.event.tennis-club-membership.action.certificate.form.section.requester.label,This is the label for the field,Requester,Requester
+v2.event.tennis-club-membership.action.certificate.form.section.requester.other.label,This is the label for the field,Print and issue someone else,Print and issue someone else
+v2.event.tennis-club-membership.action.certificate.form.section.requester.printInAdvance.label,This is the label for the field,Print in advance,Print in advance
+v2.event.tennis-club-membership.action.certificate.form.section.who.title,This is the title of the section,Print certified copy,Print certified copy
+v2.event.tennis-club-membership.action.certificate.form.version.1,This is the first version of the form,Version 1,Version 1
+v2.event.tennis-club-membership.action.collect-certificate.label,This is shown as the action name anywhere the user can trigger the action from,Print certificate,Print certificate
+v2.event.tennis-club-membership.action.declare.form.label,This is what this form is referred as in the system,Tennis club membership application,Tennis club membership application
+v2.event.tennis-club-membership.action.declare.form.section.recommender.field.firstname.label,This is the label for the field,Recommender's first name,Recommender's first name
+v2.event.tennis-club-membership.action.declare.form.section.recommender.field.id.label,This is the label for the field,Recommender's membership ID,Recommender's membership ID
+v2.event.tennis-club-membership.action.declare.form.section.recommender.field.none.label,This is the label for the field,No recommender,No recommender
+v2.event.tennis-club-membership.action.declare.form.section.recommender.field.surname.label,This is the label for the field,Recommender's surname,Recommender's surname
+v2.event.tennis-club-membership.action.declare.form.section.recommender.title,This is the title of the section,Who is recommending the applicant?,Who is recommending the applicant?
+v2.event.tennis-club-membership.action.declare.form.section.who.field.dob.error,This is the error message for invalid date,Please enter a valid date,Please enter a valid date
+v2.event.tennis-club-membership.action.declare.form.section.who.field.dob.label,This is the label for the field,Applicant's date of birth,Applicant's date of birth
+v2.event.tennis-club-membership.action.declare.form.section.who.field.firstname.label,This is the label for the field,Applicant's first name,Applicant's first name
+v2.event.tennis-club-membership.action.declare.form.section.who.field.image.label,This is the label for the field,Applicant's profile picture,Applicant's profile picture
+v2.event.tennis-club-membership.action.declare.form.section.who.field.surname.label,This is the label for the field,Applicant's surname,Applicant's surname
+v2.event.tennis-club-membership.action.declare.form.section.who.title,This is the title of the section,Who is applying for the membership?,Who is applying for the membership?
+v2.event.tennis-club-membership.action.declare.form.version.1,This is the first version of the form,Version 1,Version 1
+v2.event.tennis-club-membership.action.declare.label,This is shown as the action name anywhere the user can trigger the action from,Send an application,Send an application
+v2.event.tennis-club-membership.action.delete.label,This is shown as the action name anywhere the user can trigger the action from,Delete draft,Delete draft
+v2.event.tennis-club-membership.action.form.section.alienNumberDetails.label,Field for entering Alien Number details,Alien Number Details,Alien Number Details
+v2.event.tennis-club-membership.action.form.section.drivingLicenseDetails.label,Field for entering Driving License details,Driving License Details,Driving License Details
+v2.event.tennis-club-membership.action.form.section.firstName.label,This is the label for the first name field,First Name,First Name
+v2.event.tennis-club-membership.action.form.section.idType.alienNumber.label,Option for selecting Alien Number as the ID type,Alien Number,Alien Number
+v2.event.tennis-club-membership.action.form.section.idType.drivingLicense.label,Option for selecting Driving License as the ID type,Driving License,Driving License
+v2.event.tennis-club-membership.action.form.section.idType.label,This is the label for selecting the type of ID,Select Type of ID,Select Type of ID
+v2.event.tennis-club-membership.action.form.section.idType.noId.label,Option for selecting No ID as the ID type,No ID,No ID
+v2.event.tennis-club-membership.action.form.section.idType.other.label,Option for selecting Other as the ID type,Other,Other
+v2.event.tennis-club-membership.action.form.section.idType.passport.label,Option for selecting Passport as the ID type,Passport,Passport
+v2.event.tennis-club-membership.action.form.section.idType.refugeeNumber.label,Option for selecting Refugee Number as the ID type,Refugee Number,Refugee Number
+v2.event.tennis-club-membership.action.form.section.idTypeOther.label,Field for entering ID type if Other is selected,Other ID Type (if applicable),Other ID Type (if applicable)
+v2.event.tennis-club-membership.action.form.section.lastName.label,This is the label for the last name field,Last Name,Last Name
+v2.event.tennis-club-membership.action.form.section.passportDetails.label,Field for entering Passport details,Passport Details,Passport Details
+v2.event.tennis-club-membership.action.form.section.refugeeNumberDetails.label,Field for entering Refugee Number details,Refugee Number Details,Refugee Number Details
+v2.event.tennis-club-membership.action.form.section.relationshipToMember.label,This is the label for the relationship to member field,Relationship to Member,Relationship to Member
+v2.event.tennis-club-membership.action.form.section.signedAffidavit.label,This is the label for uploading a signed affidavit,Signed Affidavit (Optional),Signed Affidavit (Optional)
+v2.event.tennis-club-membership.action.register.label,This is shown as the action name anywhere the user can trigger the action from,Register,Register
+v2.event.tennis-club-membership.action.requestCorrection.form.section.corrector,This is the title of the section,Correction requester,Correction requester
+v2.event.tennis-club-membership.action.requestCorrection.form.section.verify,This is the title of the section,Verify their identity,Verify their identity
+v2.event.tennis-club-membership.action.requestCorrection.label,This is shown as the action name anywhere the user can trigger the action from,Request correction,Request correction
+v2.event.tennis-club-membership.action.sdf.label,This is shown as the action name anywhere the user can trigger the action from,My custom action,My custom action
+v2.event.tennis-club-membership.action.validate.label,This is shown as the action name anywhere the user can trigger the action from,Validate,Validate
+v2.event.tennis-club-membership.label,This is what this event is referred as in the system,Tennis club membership application,Tennis club membership application
+v2.event.tennis-club-membership.summary.field.applicant.firstname.empty,Shown when the applicant's first name is missing in summary,Applicant's first name missing,Applicant's first name missing
+v2.event.tennis-club-membership.summary.field.applicant.firstname.label,Label for the applicant's first name field,Applicant's First Name,Applicant's First Name
+v2.event.tennis-club-membership.summary.field.applicant.firstname.value,Value for the applicant's first name field,First Name,First Name
+v2.event.tennis-club-membership.summary.field.applicant.surname.empty,Shown when the surname is missing in summary,Applicant's surname missing,Applicant's surname missing
+v2.event.tennis-club-membership.summary.field.applicant.surname.label,Label for the applicant's surname field,Applicant's Surname,Applicant's Surname
+v2.event.tennis-club-membership.summary.field.applicant.surname.value,Value for the applicant's surname field,Surname,Surname
+v2.event.tennis-club-membership.summary.field.firstname.label,Label for the given field on form.,First name,First name
+v2.event.tennis-club-membership.summary.field.recommender.firstname.empty,Shown when the recommender first name is missing in summary,Recommender's first name missing,Recommender's first name missing
+v2.event.tennis-club-membership.summary.field.recommender.firstname.label,Label for the recommender's first name field,Recommender's First Name,Recommender's First Name
+v2.event.tennis-club-membership.summary.field.recommender.firstname.value,Value for the recommender's first name field,First Name,First Name
+v2.event.tennis-club-membership.summary.field.recommender.id.empty,Shown when the recommender id is missing in summary,Recommender's id missing,Recommender's id missing
+v2.event.tennis-club-membership.summary.field.recommender.id.label,Label for the recommender's ID field,Recommender's ID,Recommender's ID
+v2.event.tennis-club-membership.summary.field.recommender.id.value,Value for the recommender's ID field,ID,ID
+v2.event.tennis-club-membership.summary.field.recommender.surname.empty,Shown when the recommender surname is missing in summary,Recommender's surname missing,Recommender's surname missing
+v2.event.tennis-club-membership.summary.field.recommender.surname.label,Label for the recommender's surname field,Recommender's Surname,Recommender's Surname
+v2.event.tennis-club-membership.summary.field.recommender.surname.value,Value for the recommender's surname field,Surname,Surname
+v2.events.history.status,Events status history,"{status, select, CREATE {Draft} VALIDATE {Validated} DRAFT {Draft} DECLARE {Declared} REGISTER {Registered} PRINT_CERTIFICATE {Print certificate} other {Unknown}}","{status, select, CREATE {Draft} VALIDATE {Validated} DRAFT {Draft} DECLARE {Declared} REGISTER {Registered} PRINT_CERTIFICATE {Print certificate} other {Unknown}}"
+v2.exitModal.cancel, Modal cancel button,Cancel,Cancel
+v2.exitModal.exitWithoutSaving,exitmodal without saving label,Exit without saving changes?,Exit without saving changes?
+v2.exitModal.exitWithoutSavingDescription, exitmodal without saving description,You have unsaved changes on your declaration form. Are you sure you want to exit without saving?,You have unsaved changes on your declaration form. Are you sure you want to exit without saving?
+v2.form.birth.child.title,Form section title for Child,Child's details,Child's details
+v2.form.field.label.No,Label for form field radio option No,No,No
+v2.form.field.label.Yes,Label for form field radio option Yes,Yes,Yes
+v2.form.field.label.attendantAtBirthLayperson,Label for layperson attendant,Layperson,Layperson
+v2.form.field.label.attendantAtBirthMidwife,Label for midwife attendant,Midwife,Midwife
+v2.form.field.label.attendantAtBirthNone,Label for no attendant,None,None
+v2.form.field.label.attendantAtBirthNurse,Label for nurse attendant,Nurse,Nurse
+v2.form.field.label.attendantAtBirthOtherParamedicalPersonnel,Label for other paramedical personnel,Other paramedical personnel,Other paramedical personnel
+v2.form.field.label.attendantAtBirthPhysician,Label for physician attendant,Physician,Physician
+v2.form.field.label.attendantAtBirthTraditionalBirthAttendant,Label for traditional birth attendant,Traditional birth attendant,Traditional birth attendant
+v2.form.field.label.birthTypeHigherMultipleDelivery,Label for higher multiple delivery birth,Higher multiple delivery,Higher multiple delivery
+v2.form.field.label.birthTypeQuadruplet,Label for quadruplet birth,Quadruplet,Quadruplet
+v2.form.field.label.birthTypeSingle,Label for single birth,Single,Single
+v2.form.field.label.birthTypeTriplet,Label for triplet birth,Triplet,Triplet
+v2.form.field.label.birthTypeTwin,Label for twin birth,Twin,Twin
+v2.form.field.label.educationAttainmentISCED1,Option for form field: ISCED1 education,Primary,Primary
+v2.form.field.label.educationAttainmentISCED4,Option for form field: ISCED4 education,Secondary,Secondary
+v2.form.field.label.educationAttainmentISCED5,Option for form field: ISCED5 education,Tertiary,Tertiary
+v2.form.field.label.educationAttainmentNone,Option for form field: no education,No schooling,No schooling
+v2.form.field.label.healthInstitution,Select item for Health Institution,Health Institution,Health Institution
+v2.form.field.label.iDTypeBRN,Option for form field: Type of ID,Birth Registration Number,Birth Registration Number
+v2.form.field.label.iDTypeNationalID,Option for form field: Type of ID,National ID,National ID
+v2.form.field.label.iDTypeNone,Option for form field: Type of ID,None,None
+v2.form.field.label.iDTypePassport,Option for form field: Type of ID,Passport,Passport
+v2.form.field.label.informantRelation.brother,Label for option brother,Brother,Brother
+v2.form.field.label.informantRelation.father,Label for option father,Father,Father
+v2.form.field.label.informantRelation.grandfather,Label for option Grandfather,Grandfather,Grandfather
+v2.form.field.label.informantRelation.grandmother,Label for option Grandmother,Grandmother,Grandmother
+v2.form.field.label.informantRelation.legalGuardian,Label for option Legal Guardian,Legal guardian,Legal guardian
+v2.form.field.label.informantRelation.mother,Label for option mother,Mother,Mother
+v2.form.field.label.informantRelation.others,Label for option someone else,Someone else,Someone else
+v2.form.field.label.informantRelation.sister,Label for option Sister,Sister,Sister
+v2.form.field.label.maritalStatusDivorced,Option for form field: Marital status,Divorced,Divorced
+v2.form.field.label.maritalStatusMarried,Option for form field: Marital status,Married,Married
+v2.form.field.label.maritalStatusNotStated,Option for form field: Marital status,Not stated,Not stated
+v2.form.field.label.maritalStatusSeparated,Option for form field: Marital status,Separated,Separated
+v2.form.field.label.maritalStatusSingle,Option for form field: Marital status,Single,Single
+v2.form.field.label.maritalStatusWidowed,Option for form field: Marital status,Widowed,Widowed
+v2.form.field.label.otherInstitution,Select item for Other location,Other,Other
+v2.form.field.label.privateHome,Select item for Private Home,Residential address,Residential address
+v2.form.field.label.rural,Label for form field checkbox option Rural,Rural,Rural
+v2.form.field.label.sexFemale,Label for option female,Female,Female
+v2.form.field.label.sexMale,Label for option male,Male,Male
+v2.form.field.label.sexUnknown,Label for option unknown,Unknown,Unknown
+v2.form.field.label.urban,Label for form field checkbox option Urban,Urban,Urban
+v2.form.section.documents.title,Form section title for documents,Upload supporting documents,Upload supporting documents
+v2.form.section.father.title,Form section title for fathers details,Father's details,Father's details
+v2.form.section.informant.title,Form section title for informants details,Informant's details,Informant's details
+v2.form.section.information.birth.bullet1,Form information for birth,I am going to help you make a declaration of birth.,I am going to help you make a declaration of birth.
+v2.form.section.information.birth.bullet2,Form information for birth,As the legal Informant it is important that all the information provided by you is accurate.,As the legal Informant it is important that all the information provided by you is accurate.
+v2.form.section.information.birth.bullet3,Form information for birth,Once the declaration is processed you will receive an SMS to tell you when to visit the office to collect the certificate - Take your ID with you.,Once the declaration is processed you will receive an SMS to tell you when to visit the office to collect the certificate - Take your ID with you.
+v2.form.section.information.birth.bullet4,Form information for birth,"Make sure you collect the certificate. A birth certificate is critical for this child, especially to make their life easy later on. It will help to access health services, school examinations and government benefits.","Make sure you collect the certificate. A birth certificate is critical for this child, especially to make their life easy later on. It will help to access health services, school examinations and government benefits."
+v2.form.section.information.birth.bulletList.label,Label for the birth information bullet list,Birth Information,Birth Information
+v2.form.section.mother.title,Form section title for mothers details,Mother's details,Mother's details
+v2.messages.emptyString,Empty string,,
+v2.navigation.CREATED,In progress label in navigation,In progress,In progress
+v2.navigation.DECLARED,Ready for review label in navigation,Ready for review,Ready for review
+v2.navigation.REGISTERED,Ready to print label in navigation,Ready to print,Ready to print
+v2.print.certificate.button.confirmPrint,The text for print button,"Yes, print certificate","Yes, print certificate"
+v2.print.certificate.button.makeCorrection,The label for correction button of print action,"No, make correction","No, make correction"
+v2.print.certificate.review.modal.body.print,Print certificate modal body text,A Pdf of the certificate will open in a new tab for printing. The record will move to the ready-to-issue queue.,A Pdf of the certificate will open in a new tab for printing. The record will move to the ready-to-issue queue.
+v2.print.certificate.review.modal.body.printAndIssue,Print certificate modal body text,A Pdf of the certificate will open in a new tab for printing and issuing.,A Pdf of the certificate will open in a new tab for printing and issuing.
+v2.print.certificate.review.printAndIssueModalTitle,Print and issue certificate modal title text,Print and issue certificate?,Print and issue certificate?
+v2.print.certificate.review.printModalTitle,Print certificate modal title text,Print certificate?,Print certificate?
+v2.printAction.description,The description for print action,Please confirm that the informant has reviewed that the information on the certificate is correct and that it is ready to print.,Please confirm that the informant has reviewed that the information on the certificate is correct and that it is ready to print.
+v2.printAction.title,The title for print action,Print certificate,Print certificate
+v2.regHome.issued,Label for workqueue tooltip,Empty message,Empty message
+v2.register.eventInfo.birth.title,Event information title for the birth,Introduce the birth registration process to the informant,Introduce the birth registration process to the informant
+v2.register.form.modal.desc.deleteDeclarationConfirm,Description for delete declaration confirmation modal,"Are you certain you want to delete this draft declaration form? Please note, this action can't be undone.","Are you certain you want to delete this draft declaration form? Please note, this action can't be undone."
+v2.register.form.modal.title.deleteDeclarationConfirm,Title for delete declaration confirmation modal,Delete draft?,Delete draft?
+v2.register.selectInformant.newBirthRegistration,The title that appears for new birth registrations,New birth declaration,New birth declaration
+v2.register.selectInformant.newDeathRegistration,The title that appears for new death registrations,New death declaration,New death declaration
+v2.register.selectInformant.newMarriageRegistration,The title that appears for new marriage registrations,New marriage declaration,New marriage declaration
+v2.register.selectVitalEvent.errorMessage,Error Message to show when no event is being selected,Please select the type of event,Please select the type of event
+v2.register.selectVitalEvent.registerNewEventHeading,The section heading on the page,What type of event do you want to declare?,What type of event do you want to declare?
+v2.register.selectVitalEvent.registerNewEventTitle,The title that appears on the select vital event page,New declaration,New declaration
+v2.registerAction.Declare,The label for declare button of register action,Register,Register
+v2.registerAction.description,The description for register action,"By clicking register, you confirm that the information entered is correct and the member can be registered.","By clicking register, you confirm that the information entered is correct and the member can be registered."
+v2.registerAction.title,The title for register action,Register member,Register member
+v2.rejectModal.archive,The label for archive button of reject modal,Archive,Archive
+v2.rejectModal.cancel,The label for cancel button of reject modal,Cancel,Cancel
+v2.rejectModal.description,The description for reject modal,Please describe the updates required to this record for follow up action.,Please describe the updates required to this record for follow up action.
+v2.rejectModal.markAsDuplicate,The label for mark as duplicate checkbox of reject modal,Mark as a duplicate,Mark as a duplicate
+v2.rejectModal.sendForUpdate,The label for send For Update button of reject modal,Send For Update,Send For Update
+v2.rejectModal.title,The title for reject modal,Reason for rejection?,Reason for rejection?
+v2.reviewAction.Declare,The label for declare button of review action,Declare,Declare
+v2.reviewAction.description,The description for review action,"By clicking declare, you confirm that the information entered is correct and the member can be declared.","By clicking declare, you confirm that the information entered is correct and the member can be declared."
+v2.reviewAction.reject,The label for reject button of review action,Reject,Reject
+v2.reviewAction.title,The title for review action,Declare member,Declare member
+v2.wq.noRecords.CREATED,No records messages for empty draft tab,No records in progress,No records in progress
+v2.wq.noRecords.DECLARED,No records messages for ready for review tab,No records ready for review,No records ready for review
+v2.wq.noRecords.REGISTERED,No records messages for ready to print tab,No records ready to print,No records ready to print
validate.complete.declaration.action.description,,The informant will receive an with a registration number that they can use to collect the certificate.,"En envoyant pour approbation, vous confirmez que la déclaration est prête à être approuvée."
validate.complete.declaration.action.title,,Declaration complete,Envoyer pour approbation ou rejeter ?
validate.declaration.action.modal.description,,This declaration will be sent for approval prior to registration.,Cette déclaration sera envoyée pour approbation avant l'enregistrement.
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 000000000..863ef7fa4
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,16 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * OpenCRVS is also distributed under the terms of the Civil Registration
+ * & Healthcare Disclaimer located at http://opencrvs.org/license.
+ *
+ * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS.
+ */
+import { defineConfig } from 'vite'
+import tsconfigPaths from 'vite-tsconfig-paths'
+
+export default defineConfig({
+ plugins: [tsconfigPaths()]
+})
diff --git a/yarn.lock b/yarn.lock
index 74d588d7e..0e0a0920e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9,6 +9,11 @@
dependencies:
"@jridgewell/trace-mapping" "0.3.9"
+"@cush/relative@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@cush/relative/-/relative-1.0.0.tgz#8cd1769bf9bde3bb27dac356b1bc94af40f6cc16"
+ integrity sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==
+
"@esbuild/aix-ppc64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
@@ -670,17 +675,48 @@
resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.1.5.tgz#b8c171f755859c8159b10e41e1e3a88f0ca99d7f"
integrity sha512-wmwHvHozpPo4IZkkNtbYenem/0wnfI6hvOcGKmPEa0DwuaH5XUQzFqy6OpEpjEegZMhYIk8HDYITI16BPLtrRA==
+"@isaacs/cliui@^8.0.2":
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
+ integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
+ dependencies:
+ string-width "^5.1.2"
+ string-width-cjs "npm:string-width@^4.2.0"
+ strip-ansi "^7.0.1"
+ strip-ansi-cjs "npm:strip-ansi@^6.0.1"
+ wrap-ansi "^8.1.0"
+ wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
+
+"@jridgewell/gen-mapping@^0.3.2":
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
+ integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
+ dependencies:
+ "@jridgewell/set-array" "^1.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
"@jridgewell/resolve-uri@^3.0.3":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
+ integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
+
+"@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
+ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
+
"@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.14"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
-"@jridgewell/sourcemap-codec@^1.5.0":
+"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
version "1.5.0"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
@@ -693,6 +729,14 @@
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
+"@jridgewell/trace-mapping@^0.3.24":
+ version "0.3.25"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
+ integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
"@ljharb/through@^2.3.11":
version "2.3.11"
resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.11.tgz#783600ff12c06f21a76cc26e33abd0b1595092f9"
@@ -790,6 +834,7 @@
dependencies:
"@octokit/openapi-types" "^18.0.0"
+<<<<<<< HEAD
"@opencrvs/mosip@^1.7.0-alpha.17":
version "1.7.0-alpha.17"
resolved "https://registry.yarnpkg.com/@opencrvs/mosip/-/mosip-1.7.0-alpha.17.tgz#e72a9f074afa6d85a18743837ca2f71077c7ec17"
@@ -799,6 +844,12 @@
version "0.0.33"
resolved "https://registry.yarnpkg.com/@opencrvs/toolkit/-/toolkit-0.0.33.tgz#81627c96ea757c1392102ddbbffed8d03ef82d4b"
integrity sha512-1hTRM+C6VvYLjvHUaQnfMaDPDOWQAFuK5+7GjmpHHTHlG1vurnprfiSIWjS2/MqCnk2fpgUMPFa7qVHwvko4GA==
+=======
+"@opencrvs/toolkit@0.0.34-rr":
+ version "0.0.34-rr"
+ resolved "https://registry.yarnpkg.com/@opencrvs/toolkit/-/toolkit-0.0.34-rr.tgz#4d111eb21e7460034bd813b9c01f177937f16893"
+ integrity sha512-7m8C8Q9RyJBnVCr3UW3ACzb2GsTFtc6cy/Z0u4EaoKwr5VJ3JN5s/KoSwtw6BUdjJdKwfVl4Bvb1+fCTf1/LuQ==
+>>>>>>> f571b03226093de53d6bbd01f7a4fa9752e19997
dependencies:
"@trpc/client" "^11.0.0-rc.648"
"@trpc/server" "^11.0.0-rc.532"
@@ -806,6 +857,11 @@
superjson "1.9.0-0"
uuid "^9.0.0"
+"@pkgjs/parseargs@^0.11.0":
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
+ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
+
"@pkgr/core@^0.1.0":
version "0.1.1"
resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31"
@@ -1467,6 +1523,11 @@ ansi-regex@^5.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+ansi-regex@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654"
+ integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
+
ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
@@ -1486,11 +1547,21 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
dependencies:
color-convert "^2.0.1"
+ansi-styles@^6.1.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
+ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
any-observable@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
+any-promise@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+ integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
+
anymatch@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
@@ -1635,6 +1706,13 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
braces@^2.3.1:
version "2.3.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
@@ -1922,6 +2000,11 @@ commander@^2.14.1, commander@^2.9.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
+ integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+
component-emitter@^1.2.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
@@ -2202,6 +2285,11 @@ duplexify@^4.1.2:
readable-stream "^3.1.1"
stream-shift "^1.0.2"
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
ecdsa-sig-formatter@1.0.11:
version "1.0.11"
resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
@@ -2219,6 +2307,11 @@ emoji-regex@^8.0.0:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
@@ -2687,6 +2780,14 @@ for-in@^1.0.2:
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==
+foreground-child@^3.1.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
+ integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==
+ dependencies:
+ cross-spawn "^7.0.0"
+ signal-exit "^4.0.1"
+
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
@@ -2782,6 +2883,23 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
+glob-regex@^0.3.0:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/glob-regex/-/glob-regex-0.3.2.tgz#27348f2f60648ec32a4a53137090b9fb934f3425"
+ integrity sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw==
+
+glob@^10.3.10:
+ version "10.4.5"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
+ integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
+ dependencies:
+ foreground-child "^3.1.0"
+ jackspeak "^3.1.2"
+ minimatch "^9.0.4"
+ minipass "^7.1.2"
+ package-json-from-dist "^1.0.0"
+ path-scurry "^1.11.1"
+
glob@^7.1.3:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
@@ -2813,6 +2931,11 @@ globby@^11.1.0:
merge2 "^1.4.1"
slash "^3.0.0"
+globrex@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
+ integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==
+
gopd@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
@@ -3326,6 +3449,15 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
+jackspeak@^3.1.2:
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
+ integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
+ dependencies:
+ "@isaacs/cliui" "^8.0.2"
+ optionalDependencies:
+ "@pkgjs/parseargs" "^0.11.0"
+
jest-get-type@^22.1.0:
version "22.4.3"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4"
@@ -3399,6 +3531,11 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
+json5@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
jsonwebtoken@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d"
@@ -3490,6 +3627,11 @@ libsodium@^0.7.13:
resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.13.tgz#230712ec0b7447c57b39489c48a4af01985fb393"
integrity sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
lint-staged@^7.1.0:
version "7.3.0"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.3.0.tgz#90ff33e5ca61ed3dbac35b6f6502dbefdc0db58d"
@@ -3630,6 +3772,11 @@ loupe@^3.1.0, loupe@^3.1.1:
dependencies:
get-func-name "^2.0.1"
+lru-cache@^10.2.0:
+ version "10.4.3"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
+ integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
+
lru-cache@^4.0.1:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
@@ -3742,6 +3889,13 @@ minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
dependencies:
brace-expansion "^1.1.7"
+minimatch@^9.0.4:
+ version "9.0.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+ integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+ dependencies:
+ brace-expansion "^2.0.1"
+
minimist@^1.2.0, minimist@^1.2.2, minimist@^1.2.5, minimist@^1.2.6:
version "1.2.7"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
@@ -3752,6 +3906,11 @@ minimist@^1.2.8:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
+ integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
+
mixin-deep@^1.2.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
@@ -3780,6 +3939,15 @@ mute-stream@1.0.0, mute-stream@^1.0.0:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e"
integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==
+mz@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
+ integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+ dependencies:
+ any-promise "^1.0.0"
+ object-assign "^4.0.1"
+ thenify-all "^1.0.0"
+
nan@^2.18.0, nan@^2.19.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0"
@@ -3912,7 +4080,7 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==
-object-assign@^4.1.0:
+object-assign@^4.0.1, object-assign@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
@@ -4071,6 +4239,11 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+package-json-from-dist@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
+ integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
+
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
@@ -4126,6 +4299,14 @@ path-parse@^1.0.7:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+path-scurry@^1.11.1:
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
+ integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
+ dependencies:
+ lru-cache "^10.2.0"
+ minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
+
path-type@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
@@ -4214,6 +4395,11 @@ pino@^7.0.0, pino@^7.8.1:
sonic-boom "^2.2.1"
thread-stream "^0.15.1"
+pirates@^4.0.1:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
+ integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
+
pkg-dir@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
@@ -4404,6 +4590,17 @@ real-require@^0.1.0:
resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381"
integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==
+recrawl-sync@^2.0.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/recrawl-sync/-/recrawl-sync-2.2.3.tgz#757adcdaae4799466dde5b8ee52122ff9636dfb1"
+ integrity sha512-vSaTR9t+cpxlskkdUFrsEpnf67kSmPk66yAGT1fZPrDudxQjoMzPgQhSMImQ0pAw5k0NPirefQfhopSjhdUtpQ==
+ dependencies:
+ "@cush/relative" "^1.0.0"
+ glob-regex "^0.3.0"
+ slash "^3.0.0"
+ sucrase "^3.20.3"
+ tslib "^1.9.3"
+
regex-not@^1.0.0, regex-not@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
@@ -4671,7 +4868,7 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
-signal-exit@^4.1.0:
+signal-exit@^4.0.1, signal-exit@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
@@ -4870,6 +5067,15 @@ string-argv@^0.0.2:
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736"
integrity sha512-p6/Mqq0utTQWUeGMi/m0uBtlLZEwXSY3+mXzeRRqw7fz5ezUb28Wr0R99NlfbWaMmL/jCyT9be4jpn7Yz8IO8w==
+"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
string-width@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -4887,14 +5093,14 @@ string-width@^2.1.1:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
-string-width@^4.1.0, string-width@^4.2.3:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+string-width@^5.0.1, string-width@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
+ integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
+ eastasianwidth "^0.2.0"
+ emoji-regex "^9.2.2"
+ strip-ansi "^7.0.1"
string_decoder@^1.1.1:
version "1.3.0"
@@ -4912,6 +5118,13 @@ stringify-object@^3.2.2:
is-obj "^1.0.1"
is-regexp "^1.0.0"
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@@ -4926,12 +5139,12 @@ strip-ansi@^4.0.0:
dependencies:
ansi-regex "^3.0.0"
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+strip-ansi@^7.0.1:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
+ integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
dependencies:
- ansi-regex "^5.0.1"
+ ansi-regex "^6.0.1"
strip-bom-buf@^2.0.0:
version "2.0.0"
@@ -4963,6 +5176,19 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+sucrase@^3.20.3:
+ version "3.35.0"
+ resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263"
+ integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.2"
+ commander "^4.0.0"
+ glob "^10.3.10"
+ lines-and-columns "^1.1.6"
+ mz "^2.7.0"
+ pirates "^4.0.1"
+ ts-interface-checker "^0.1.9"
+
superjson@1.9.0-0:
version "1.9.0-0"
resolved "https://registry.yarnpkg.com/superjson/-/superjson-1.9.0-0.tgz#4de316ddf80a4693ec7e112882221452cde5ff3f"
@@ -5013,6 +5239,20 @@ text-table@^0.2.0:
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+thenify-all@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
+ integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
+ dependencies:
+ thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
+ integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
+ dependencies:
+ any-promise "^1.0.0"
+
thread-stream@^0.15.1:
version "0.15.2"
resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.2.tgz#fb95ad87d2f1e28f07116eb23d85aba3bc0425f4"
@@ -5104,6 +5344,11 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+ts-interface-checker@^0.1.9:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
+ integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
+
ts-node@^10.9.1:
version "10.9.1"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
@@ -5133,6 +5378,15 @@ tsconfig-paths@^3.8.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
+tsconfig-paths@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c"
+ integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==
+ dependencies:
+ json5 "^2.2.2"
+ minimist "^1.2.6"
+ strip-bom "^3.0.0"
+
tslib@2, tslib@^2.6.2:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
@@ -5285,6 +5539,16 @@ vite-node@2.1.2:
pathe "^1.1.2"
vite "^5.0.0"
+vite-tsconfig-paths@^3.5.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-3.6.0.tgz#9e6363051b2caaf7c7cec6f9f85ad71feee77920"
+ integrity sha512-UfsPYonxLqPD633X8cWcPFVuYzx/CMNHAjZTasYwX69sXpa4gNmQkR0XCjj82h7zhLGdTWagMjC1qfb9S+zv0A==
+ dependencies:
+ debug "^4.1.1"
+ globrex "^0.1.2"
+ recrawl-sync "^2.0.3"
+ tsconfig-paths "^4.0.0"
+
vite@^5.0.0:
version "5.4.8"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.8.tgz#af548ce1c211b2785478d3ba3e8da51e39a287e8"
@@ -5373,6 +5637,15 @@ wordwrap@^1.0.0:
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
@@ -5390,6 +5663,15 @@ wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
+wrap-ansi@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
+ integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
+ dependencies:
+ ansi-styles "^6.1.0"
+ string-width "^5.0.1"
+ strip-ansi "^7.0.1"
+
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"