@defra/forms-model 3.0.140 → 3.0.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/data-model/index.js +0 -1
- package/dist/module/data-model/index.js.map +1 -1
- package/dist/module/form/form-definition/index.js +2 -59
- package/dist/module/form/form-definition/index.js.map +1 -1
- package/dist/module/form/form-definition/types.js.map +1 -1
- package/dist/types/data-model/index.d.ts +0 -1
- package/dist/types/data-model/index.d.ts.map +1 -1
- package/dist/types/form/form-definition/index.d.ts +0 -11
- package/dist/types/form/form-definition/index.d.ts.map +1 -1
- package/dist/types/form/form-definition/types.d.ts +0 -29
- package/dist/types/form/form-definition/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/data-model/index.ts +0 -1
- package/src/form/form-definition/index.ts +2 -63
- package/src/form/form-definition/types.ts +0 -32
- package/dist/module/data-model/helpers.js +0 -5
- package/dist/module/data-model/helpers.js.map +0 -1
- package/dist/types/data-model/helpers.d.ts +0 -3
- package/dist/types/data-model/helpers.d.ts.map +0 -1
- package/src/data-model/helpers.ts +0 -8
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["InputWrapper","ConditionsWrapper","OutputType"
|
1
|
+
{"version":3,"file":"index.js","names":["InputWrapper","ConditionsWrapper","OutputType"],"sources":["../../../src/data-model/index.ts"],"sourcesContent":["export { InputWrapper } from '~/src/data-model/input-wrapper.js'\nexport { ConditionsWrapper } from '~/src/data-model/conditions-wrapper.js'\nexport { OutputType } from '~/src/data-model/enums.js'\n"],"mappings":"AAAA,SAASA,YAAY;AACrB,SAASC,iBAAiB;AAC1B,SAASC,UAAU","ignoreList":[]}
|
@@ -89,21 +89,12 @@ const toggleableString = Joi.alternatives().try(Joi.boolean(), Joi.string());
|
|
89
89
|
const confirmationPageSchema = Joi.object({
|
90
90
|
customText: Joi.object({
|
91
91
|
title: Joi.string().default('Application complete'),
|
92
|
-
paymentSkipped: toggleableString.default('Someone will be in touch to make a payment.'),
|
93
92
|
nextSteps: toggleableString.default('You will receive an email with details with the next steps.')
|
94
93
|
}).default(),
|
95
94
|
components: Joi.array().items(componentSchema)
|
96
95
|
});
|
97
|
-
const paymentSkippedWarningPage = Joi.object({
|
98
|
-
customText: Joi.object({
|
99
|
-
title: Joi.string().default('Pay for your application').optional(),
|
100
|
-
caption: Joi.string().default('Payment').optional(),
|
101
|
-
body: Joi.string().default('').optional()
|
102
|
-
})
|
103
|
-
});
|
104
96
|
const specialPagesSchema = Joi.object().keys({
|
105
|
-
confirmationPage: confirmationPageSchema.optional()
|
106
|
-
paymentSkippedWarningPage: paymentSkippedWarningPage.optional()
|
97
|
+
confirmationPage: confirmationPageSchema.optional()
|
107
98
|
});
|
108
99
|
const listItemSchema = Joi.object().keys({
|
109
100
|
text: localisedString,
|
@@ -120,13 +111,6 @@ const listSchema = Joi.object().keys({
|
|
120
111
|
type: Joi.string().required().valid('string', 'number'),
|
121
112
|
items: Joi.array().items(listItemSchema)
|
122
113
|
});
|
123
|
-
const feeSchema = Joi.object().keys({
|
124
|
-
description: Joi.string().required(),
|
125
|
-
amount: Joi.number().required(),
|
126
|
-
multiplier: Joi.string().optional(),
|
127
|
-
condition: Joi.string().optional(),
|
128
|
-
prefix: Joi.string().optional()
|
129
|
-
});
|
130
114
|
const multiApiKeySchema = Joi.object({
|
131
115
|
test: Joi.string().optional(),
|
132
116
|
production: Joi.string().optional()
|
@@ -172,31 +156,6 @@ const feedbackSchema = Joi.object().keys({
|
|
172
156
|
const phaseBannerSchema = Joi.object().keys({
|
173
157
|
phase: Joi.string().valid('alpha', 'beta')
|
174
158
|
});
|
175
|
-
const feeOptionSchema = Joi.object().keys({
|
176
|
-
payApiKey: [Joi.string().allow('').optional(), multiApiKeySchema],
|
177
|
-
paymentReferenceFormat: [Joi.string().optional()],
|
178
|
-
payReturnUrl: Joi.string().optional(),
|
179
|
-
allowSubmissionWithoutPayment: Joi.boolean().optional().default(true),
|
180
|
-
maxAttempts: Joi.number().optional().default(3),
|
181
|
-
customPayErrorMessage: Joi.string().optional(),
|
182
|
-
showPaymentSkippedWarningPage: Joi.when('allowSubmissionWithoutPayment', {
|
183
|
-
is: true,
|
184
|
-
then: Joi.boolean().valid(true, false).default(false),
|
185
|
-
otherwise: Joi.boolean().valid(false).default(false)
|
186
|
-
})
|
187
|
-
}).default().default(({
|
188
|
-
payApiKey,
|
189
|
-
paymentReferenceFormat
|
190
|
-
}) => {
|
191
|
-
return {
|
192
|
-
...(payApiKey && {
|
193
|
-
payApiKey
|
194
|
-
}),
|
195
|
-
...(paymentReferenceFormat && {
|
196
|
-
paymentReferenceFormat
|
197
|
-
})
|
198
|
-
};
|
199
|
-
});
|
200
159
|
|
201
160
|
/**
|
202
161
|
* Joi schema for `FormDefinition` interface
|
@@ -210,34 +169,18 @@ export const formDefinitionSchema = Joi.object().required().keys({
|
|
210
169
|
sections: Joi.array().items(sectionsSchema).unique('name').required(),
|
211
170
|
conditions: Joi.array().items(conditionsSchema).unique('name'),
|
212
171
|
lists: Joi.array().items(listSchema).unique('name'),
|
213
|
-
fees: Joi.array().items(feeSchema).optional(),
|
214
|
-
paymentReferenceFormat: Joi.string().optional(),
|
215
172
|
metadata: Joi.object({
|
216
173
|
a: Joi.any()
|
217
174
|
}).unknown().optional(),
|
218
175
|
declaration: Joi.string().allow('').optional(),
|
219
176
|
outputs: Joi.array().items(outputSchema),
|
220
|
-
payApiKey: [Joi.string().allow('').optional(), multiApiKeySchema],
|
221
177
|
skipSummary: Joi.boolean().optional().default(false),
|
222
178
|
version: Joi.number().optional().default(CURRENT_VERSION),
|
223
179
|
phaseBanner: phaseBannerSchema,
|
224
|
-
specialPages: specialPagesSchema.optional()
|
225
|
-
feeOptions: feeOptionSchema.optional()
|
180
|
+
specialPages: specialPagesSchema.optional()
|
226
181
|
});
|
227
182
|
|
228
183
|
// Maintain compatibility with legacy named export
|
229
184
|
// E.g. `import { Schema } from '@defra/forms-model'`
|
230
185
|
export const Schema = formDefinitionSchema;
|
231
|
-
|
232
|
-
/**
|
233
|
-
* Schema versions:
|
234
|
-
* Undefined / 0 - initial version as at 28/8/20. Conditions may be in object structure or string form.
|
235
|
-
* 1 - Relevant components (radio, checkbox, select, autocomplete) now contain
|
236
|
-
* options as 'values' rather than referencing a data list
|
237
|
-
* 2 - Reverse v1. Values populating radio, checkboxes, select, autocomplete are defined in Lists only.
|
238
|
-
* TODO:- merge fees and paymentReferenceFormat
|
239
|
-
* 2 - 2023-05-04 `feeOptions` has been introduced. paymentReferenceFormat and payApiKey can be configured in top level or feeOptions. feeOptions will take precedent.
|
240
|
-
* if feeOptions are empty, it will pull values from the top level keys.
|
241
|
-
* WARN: Fee/GOV.UK pay configurations (apart from fees) should no longer be stored in the top level, always within feeOptions.
|
242
|
-
*/
|
243
186
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["Joi","CURRENT_VERSION","sectionsSchema","object","keys","name","string","required","title","hideTitle","boolean","optional","default","conditionFieldSchema","type","display","conditionValueSchema","value","relativeTimeValueSchema","timePeriod","timeUnit","direction","timeOnly","conditionRefSchema","conditionName","conditionDisplayName","coordinator","conditionSchema","field","operator","alternatives","try","conditionGroupSchema","conditions","array","items","any","conditionsModelSchema","conditionsSchema","displayName","localisedString","a","unknown","allow","componentSchema","hint","options","schema","min","number","max","list","nextSchema","path","condition","redirect","pageSchema","disallow","section","controller","components","next","repeatField","backLinkFallback","toggleableString","confirmationPageSchema","customText","paymentSkipped","nextSteps","paymentSkippedWarningPage","caption","body","specialPagesSchema","confirmationPage","listItemSchema","text","description","conditional","unique","listSchema","valid","feeSchema","amount","multiplier","prefix","multiApiKeySchema","test","production","replyToConfigurationSchema","emailReplyToId","notifySchema","apiKey","templateId","emailField","personalisation","personalisationFieldCustomisation","pattern","addReferencesToPersonalisation","emailReplyToIdConfiguration","emailSchema","emailAddress","webhookSchema","url","allowRetry","outputSchema","outputConfiguration","feedbackSchema","feedbackForm","when","is","then","email","tlds","phaseBannerSchema","phase","feeOptionSchema","payApiKey","paymentReferenceFormat","payReturnUrl","allowSubmissionWithoutPayment","maxAttempts","customPayErrorMessage","showPaymentSkippedWarningPage","otherwise","formDefinitionSchema","feedback","startPage","pages","sections","lists","fees","metadata","declaration","outputs","skipSummary","version","phaseBanner","specialPages","feeOptions","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { type ComponentDef } from '~/src/components/types.js'\nimport {\n type ConditionRawData,\n type ConfirmationPage,\n type EmailOutputConfiguration,\n type Fee,\n type FeeOptions,\n type FormDefinition,\n type Item,\n type List,\n type MultipleApiKeys,\n type Next,\n type NotifyOutputConfiguration,\n type Output,\n type Page,\n type PaymentSkippedWarningPage,\n type PhaseBanner,\n type RepeatingFieldPage,\n type Section,\n type SpecialPages,\n type WebhookOutputConfiguration\n} from '~/src/form/form-definition/types.js'\n\n/**\n * If an optional key is added, CURRENT_VERSION does not need to be incremented.\n * Only breaking changes will require an increment, as well as a migration script.\n */\nexport const CURRENT_VERSION = 2\n\nconst sectionsSchema = Joi.object<Section>().keys({\n name: Joi.string().required(),\n title: Joi.string().required(),\n hideTitle: Joi.boolean().optional().default(false)\n})\n\nconst conditionFieldSchema = Joi.object().keys({\n name: Joi.string().required(),\n type: Joi.string().required(),\n display: Joi.string().required()\n})\n\nconst conditionValueSchema = Joi.object().keys({\n type: Joi.string().required(),\n value: Joi.string().required(),\n display: Joi.string().required()\n})\n\nconst relativeTimeValueSchema = Joi.object().keys({\n type: Joi.string().required(),\n timePeriod: Joi.string().required(),\n timeUnit: Joi.string().required(),\n direction: Joi.string().required(),\n timeOnly: Joi.boolean().required()\n})\n\nconst conditionRefSchema = Joi.object().keys({\n conditionName: Joi.string().required(),\n conditionDisplayName: Joi.string().required(),\n coordinator: Joi.string().optional()\n})\n\nconst conditionSchema = Joi.object().keys({\n field: conditionFieldSchema,\n operator: Joi.string().required(),\n value: Joi.alternatives().try(conditionValueSchema, relativeTimeValueSchema),\n coordinator: Joi.string().optional()\n})\n\nconst conditionGroupSchema = Joi.object().keys({\n conditions: Joi.array().items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n Joi.any() /** Should be a joi.link('#conditionGroupSchema') */\n )\n )\n})\n\nconst conditionsModelSchema = Joi.object().keys({\n name: Joi.string().required(),\n conditions: Joi.array().items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n conditionGroupSchema\n )\n )\n})\n\nconst conditionsSchema = Joi.object<ConditionRawData>().keys({\n name: Joi.string().required(),\n displayName: Joi.string(),\n value: Joi.alternatives().try(Joi.string(), conditionsModelSchema).required()\n})\n\nconst localisedString = Joi.alternatives().try(\n Joi.object({ a: Joi.any() }).unknown(),\n Joi.string().allow('')\n)\n\nexport const componentSchema = Joi.object<ComponentDef>()\n .keys({\n type: Joi.string().required(),\n name: Joi.string(),\n title: localisedString,\n hint: localisedString.optional(),\n options: Joi.object().default({}),\n schema: Joi.object({ min: Joi.number(), max: Joi.number() })\n .unknown(true)\n .default({}),\n list: Joi.string().optional()\n })\n .unknown(true)\n\nconst nextSchema = Joi.object<Next>().keys({\n path: Joi.string().required(),\n condition: Joi.string().allow('').optional(),\n redirect: Joi.string().optional()\n})\n\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nconst pageSchema = Joi.object<Page | RepeatingFieldPage>().keys({\n path: Joi.string().required().disallow('/status'),\n title: localisedString,\n section: Joi.string(),\n controller: Joi.string().optional(),\n components: Joi.array<ComponentDef>().items(componentSchema),\n next: Joi.array<Next>().items(nextSchema),\n repeatField: Joi.string().optional(),\n options: Joi.object().optional(),\n backLinkFallback: Joi.string().optional()\n})\n\nconst toggleableString = Joi.alternatives().try(Joi.boolean(), Joi.string())\n\nconst confirmationPageSchema = Joi.object<ConfirmationPage>({\n customText: Joi.object<ConfirmationPage['customText']>({\n title: Joi.string().default('Application complete'),\n paymentSkipped: toggleableString.default(\n 'Someone will be in touch to make a payment.'\n ),\n nextSteps: toggleableString.default(\n 'You will receive an email with details with the next steps.'\n )\n }).default(),\n components: Joi.array<ComponentDef>().items(componentSchema)\n})\n\nconst paymentSkippedWarningPage = Joi.object<PaymentSkippedWarningPage>({\n customText: Joi.object({\n title: Joi.string().default('Pay for your application').optional(),\n caption: Joi.string().default('Payment').optional(),\n body: Joi.string().default('').optional()\n })\n})\n\nconst specialPagesSchema = Joi.object<SpecialPages>().keys({\n confirmationPage: confirmationPageSchema.optional(),\n paymentSkippedWarningPage: paymentSkippedWarningPage.optional()\n})\n\nconst listItemSchema = Joi.object<Item>().keys({\n text: localisedString,\n value: Joi.alternatives().try(Joi.number(), Joi.string()),\n description: localisedString.optional(),\n conditional: Joi.object<Item['conditional']>()\n .keys({\n components: Joi.array<ComponentDef>()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n })\n .allow(null)\n .optional(),\n condition: Joi.string().allow(null, '').optional()\n})\n\nconst listSchema = Joi.object<List>().keys({\n name: Joi.string().required(),\n title: localisedString,\n type: Joi.string().required().valid('string', 'number'),\n items: Joi.array<Item>().items(listItemSchema)\n})\n\nconst feeSchema = Joi.object<Fee>().keys({\n description: Joi.string().required(),\n amount: Joi.number().required(),\n multiplier: Joi.string().optional(),\n condition: Joi.string().optional(),\n prefix: Joi.string().optional()\n})\n\nconst multiApiKeySchema = Joi.object<MultipleApiKeys>({\n test: Joi.string().optional(),\n production: Joi.string().optional()\n})\n\nconst replyToConfigurationSchema = Joi.object({\n emailReplyToId: Joi.string(),\n condition: Joi.string().allow('').optional()\n})\n\nconst notifySchema = Joi.object<NotifyOutputConfiguration>().keys({\n apiKey: [Joi.string().allow('').optional(), multiApiKeySchema],\n templateId: Joi.string(),\n emailField: Joi.string(),\n personalisation: Joi.array<string>().items(Joi.string()),\n personalisationFieldCustomisation: Joi.object()\n .pattern(/./, Joi.array<string>().items(Joi.string()))\n .optional(),\n addReferencesToPersonalisation: Joi.boolean().optional(),\n emailReplyToIdConfiguration: Joi.array().items(replyToConfigurationSchema)\n})\n\nconst emailSchema = Joi.object<EmailOutputConfiguration>().keys({\n emailAddress: Joi.string().required()\n})\n\nconst webhookSchema = Joi.object<WebhookOutputConfiguration>().keys({\n url: Joi.string(),\n allowRetry: Joi.boolean().optional().default(true)\n})\n\nconst outputSchema = Joi.object<Output>().keys({\n name: Joi.string(),\n title: Joi.string().optional(),\n type: Joi.string().allow('notify', 'email', 'webhook', 'sheets'),\n outputConfiguration: Joi.alternatives().try(\n notifySchema,\n emailSchema,\n webhookSchema\n )\n})\n\nconst feedbackSchema = Joi.object<FormDefinition['feedback']>().keys({\n feedbackForm: Joi.boolean().default(false),\n url: Joi.when('feedbackForm', {\n is: Joi.boolean().valid(false),\n then: Joi.string().optional().allow('')\n }),\n emailAddress: Joi.string()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n})\n\nconst phaseBannerSchema = Joi.object<PhaseBanner>().keys({\n phase: Joi.string().valid('alpha', 'beta')\n})\n\nconst feeOptionSchema = Joi.object<FeeOptions>()\n .keys({\n payApiKey: [Joi.string().allow('').optional(), multiApiKeySchema],\n paymentReferenceFormat: [Joi.string().optional()],\n payReturnUrl: Joi.string().optional(),\n allowSubmissionWithoutPayment: Joi.boolean().optional().default(true),\n maxAttempts: Joi.number().optional().default(3),\n customPayErrorMessage: Joi.string().optional(),\n showPaymentSkippedWarningPage: Joi.when('allowSubmissionWithoutPayment', {\n is: true,\n then: Joi.boolean().valid(true, false).default(false),\n otherwise: Joi.boolean().valid(false).default(false)\n })\n })\n .default()\n .default(({ payApiKey, paymentReferenceFormat }: FeeOptions) => {\n return {\n ...(payApiKey && { payApiKey }),\n ...(paymentReferenceFormat && { paymentReferenceFormat })\n }\n })\n\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .required()\n .keys({\n name: localisedString.optional(),\n feedback: feedbackSchema.optional(),\n startPage: Joi.string().required(),\n pages: Joi.array<Page | RepeatingFieldPage>()\n .required()\n .items(pageSchema)\n .unique('path'),\n sections: Joi.array<Section>()\n .items(sectionsSchema)\n .unique('name')\n .required(),\n conditions: Joi.array<ConditionRawData>()\n .items(conditionsSchema)\n .unique('name'),\n lists: Joi.array<List>().items(listSchema).unique('name'),\n fees: Joi.array<Fee>().items(feeSchema).optional(),\n paymentReferenceFormat: Joi.string().optional(),\n metadata: Joi.object({ a: Joi.any() }).unknown().optional(),\n declaration: Joi.string().allow('').optional(),\n outputs: Joi.array<Output>().items(outputSchema),\n payApiKey: [Joi.string().allow('').optional(), multiApiKeySchema],\n skipSummary: Joi.boolean().optional().default(false),\n version: Joi.number().optional().default(CURRENT_VERSION),\n phaseBanner: phaseBannerSchema,\n specialPages: specialPagesSchema.optional(),\n feeOptions: feeOptionSchema.optional()\n })\n\n// Maintain compatibility with legacy named export\n// E.g. `import { Schema } from '@defra/forms-model'`\nexport const Schema = formDefinitionSchema\n\n/**\n * Schema versions:\n * Undefined / 0 - initial version as at 28/8/20. Conditions may be in object structure or string form.\n * 1 - Relevant components (radio, checkbox, select, autocomplete) now contain\n * options as 'values' rather than referencing a data list\n * 2 - Reverse v1. Values populating radio, checkboxes, select, autocomplete are defined in Lists only.\n * TODO:- merge fees and paymentReferenceFormat\n * 2 - 2023-05-04 `feeOptions` has been introduced. paymentReferenceFormat and payApiKey can be configured in top level or feeOptions. feeOptions will take precedent.\n * if feeOptions are empty, it will pull values from the top level keys.\n * WARN: Fee/GOV.UK pay configurations (apart from fees) should no longer be stored in the top level, always within feeOptions.\n */\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"index.js","names":["Joi","CURRENT_VERSION","sectionsSchema","object","keys","name","string","required","title","hideTitle","boolean","optional","default","conditionFieldSchema","type","display","conditionValueSchema","value","relativeTimeValueSchema","timePeriod","timeUnit","direction","timeOnly","conditionRefSchema","conditionName","conditionDisplayName","coordinator","conditionSchema","field","operator","alternatives","try","conditionGroupSchema","conditions","array","items","any","conditionsModelSchema","conditionsSchema","displayName","localisedString","a","unknown","allow","componentSchema","hint","options","schema","min","number","max","list","nextSchema","path","condition","redirect","pageSchema","disallow","section","controller","components","next","repeatField","backLinkFallback","toggleableString","confirmationPageSchema","customText","nextSteps","specialPagesSchema","confirmationPage","listItemSchema","text","description","conditional","unique","listSchema","valid","multiApiKeySchema","test","production","replyToConfigurationSchema","emailReplyToId","notifySchema","apiKey","templateId","emailField","personalisation","personalisationFieldCustomisation","pattern","addReferencesToPersonalisation","emailReplyToIdConfiguration","emailSchema","emailAddress","webhookSchema","url","allowRetry","outputSchema","outputConfiguration","feedbackSchema","feedbackForm","when","is","then","email","tlds","phaseBannerSchema","phase","formDefinitionSchema","feedback","startPage","pages","sections","lists","metadata","declaration","outputs","skipSummary","version","phaseBanner","specialPages","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { type ComponentDef } from '~/src/components/types.js'\nimport {\n type ConditionRawData,\n type ConfirmationPage,\n type EmailOutputConfiguration,\n type FormDefinition,\n type Item,\n type List,\n type MultipleApiKeys,\n type Next,\n type NotifyOutputConfiguration,\n type Output,\n type Page,\n type PhaseBanner,\n type RepeatingFieldPage,\n type Section,\n type SpecialPages,\n type WebhookOutputConfiguration\n} from '~/src/form/form-definition/types.js'\n\n/**\n * If an optional key is added, CURRENT_VERSION does not need to be incremented.\n * Only breaking changes will require an increment, as well as a migration script.\n */\nexport const CURRENT_VERSION = 2\n\nconst sectionsSchema = Joi.object<Section>().keys({\n name: Joi.string().required(),\n title: Joi.string().required(),\n hideTitle: Joi.boolean().optional().default(false)\n})\n\nconst conditionFieldSchema = Joi.object().keys({\n name: Joi.string().required(),\n type: Joi.string().required(),\n display: Joi.string().required()\n})\n\nconst conditionValueSchema = Joi.object().keys({\n type: Joi.string().required(),\n value: Joi.string().required(),\n display: Joi.string().required()\n})\n\nconst relativeTimeValueSchema = Joi.object().keys({\n type: Joi.string().required(),\n timePeriod: Joi.string().required(),\n timeUnit: Joi.string().required(),\n direction: Joi.string().required(),\n timeOnly: Joi.boolean().required()\n})\n\nconst conditionRefSchema = Joi.object().keys({\n conditionName: Joi.string().required(),\n conditionDisplayName: Joi.string().required(),\n coordinator: Joi.string().optional()\n})\n\nconst conditionSchema = Joi.object().keys({\n field: conditionFieldSchema,\n operator: Joi.string().required(),\n value: Joi.alternatives().try(conditionValueSchema, relativeTimeValueSchema),\n coordinator: Joi.string().optional()\n})\n\nconst conditionGroupSchema = Joi.object().keys({\n conditions: Joi.array().items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n Joi.any() /** Should be a joi.link('#conditionGroupSchema') */\n )\n )\n})\n\nconst conditionsModelSchema = Joi.object().keys({\n name: Joi.string().required(),\n conditions: Joi.array().items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n conditionGroupSchema\n )\n )\n})\n\nconst conditionsSchema = Joi.object<ConditionRawData>().keys({\n name: Joi.string().required(),\n displayName: Joi.string(),\n value: Joi.alternatives().try(Joi.string(), conditionsModelSchema).required()\n})\n\nconst localisedString = Joi.alternatives().try(\n Joi.object({ a: Joi.any() }).unknown(),\n Joi.string().allow('')\n)\n\nexport const componentSchema = Joi.object<ComponentDef>()\n .keys({\n type: Joi.string().required(),\n name: Joi.string(),\n title: localisedString,\n hint: localisedString.optional(),\n options: Joi.object().default({}),\n schema: Joi.object({ min: Joi.number(), max: Joi.number() })\n .unknown(true)\n .default({}),\n list: Joi.string().optional()\n })\n .unknown(true)\n\nconst nextSchema = Joi.object<Next>().keys({\n path: Joi.string().required(),\n condition: Joi.string().allow('').optional(),\n redirect: Joi.string().optional()\n})\n\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nconst pageSchema = Joi.object<Page | RepeatingFieldPage>().keys({\n path: Joi.string().required().disallow('/status'),\n title: localisedString,\n section: Joi.string(),\n controller: Joi.string().optional(),\n components: Joi.array<ComponentDef>().items(componentSchema),\n next: Joi.array<Next>().items(nextSchema),\n repeatField: Joi.string().optional(),\n options: Joi.object().optional(),\n backLinkFallback: Joi.string().optional()\n})\n\nconst toggleableString = Joi.alternatives().try(Joi.boolean(), Joi.string())\n\nconst confirmationPageSchema = Joi.object<ConfirmationPage>({\n customText: Joi.object<ConfirmationPage['customText']>({\n title: Joi.string().default('Application complete'),\n nextSteps: toggleableString.default(\n 'You will receive an email with details with the next steps.'\n )\n }).default(),\n components: Joi.array<ComponentDef>().items(componentSchema)\n})\n\nconst specialPagesSchema = Joi.object<SpecialPages>().keys({\n confirmationPage: confirmationPageSchema.optional()\n})\n\nconst listItemSchema = Joi.object<Item>().keys({\n text: localisedString,\n value: Joi.alternatives().try(Joi.number(), Joi.string()),\n description: localisedString.optional(),\n conditional: Joi.object<Item['conditional']>()\n .keys({\n components: Joi.array<ComponentDef>()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n })\n .allow(null)\n .optional(),\n condition: Joi.string().allow(null, '').optional()\n})\n\nconst listSchema = Joi.object<List>().keys({\n name: Joi.string().required(),\n title: localisedString,\n type: Joi.string().required().valid('string', 'number'),\n items: Joi.array<Item>().items(listItemSchema)\n})\n\nconst multiApiKeySchema = Joi.object<MultipleApiKeys>({\n test: Joi.string().optional(),\n production: Joi.string().optional()\n})\n\nconst replyToConfigurationSchema = Joi.object({\n emailReplyToId: Joi.string(),\n condition: Joi.string().allow('').optional()\n})\n\nconst notifySchema = Joi.object<NotifyOutputConfiguration>().keys({\n apiKey: [Joi.string().allow('').optional(), multiApiKeySchema],\n templateId: Joi.string(),\n emailField: Joi.string(),\n personalisation: Joi.array<string>().items(Joi.string()),\n personalisationFieldCustomisation: Joi.object()\n .pattern(/./, Joi.array<string>().items(Joi.string()))\n .optional(),\n addReferencesToPersonalisation: Joi.boolean().optional(),\n emailReplyToIdConfiguration: Joi.array().items(replyToConfigurationSchema)\n})\n\nconst emailSchema = Joi.object<EmailOutputConfiguration>().keys({\n emailAddress: Joi.string().required()\n})\n\nconst webhookSchema = Joi.object<WebhookOutputConfiguration>().keys({\n url: Joi.string(),\n allowRetry: Joi.boolean().optional().default(true)\n})\n\nconst outputSchema = Joi.object<Output>().keys({\n name: Joi.string(),\n title: Joi.string().optional(),\n type: Joi.string().allow('notify', 'email', 'webhook', 'sheets'),\n outputConfiguration: Joi.alternatives().try(\n notifySchema,\n emailSchema,\n webhookSchema\n )\n})\n\nconst feedbackSchema = Joi.object<FormDefinition['feedback']>().keys({\n feedbackForm: Joi.boolean().default(false),\n url: Joi.when('feedbackForm', {\n is: Joi.boolean().valid(false),\n then: Joi.string().optional().allow('')\n }),\n emailAddress: Joi.string()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n})\n\nconst phaseBannerSchema = Joi.object<PhaseBanner>().keys({\n phase: Joi.string().valid('alpha', 'beta')\n})\n\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .required()\n .keys({\n name: localisedString.optional(),\n feedback: feedbackSchema.optional(),\n startPage: Joi.string().required(),\n pages: Joi.array<Page | RepeatingFieldPage>()\n .required()\n .items(pageSchema)\n .unique('path'),\n sections: Joi.array<Section>()\n .items(sectionsSchema)\n .unique('name')\n .required(),\n conditions: Joi.array<ConditionRawData>()\n .items(conditionsSchema)\n .unique('name'),\n lists: Joi.array<List>().items(listSchema).unique('name'),\n metadata: Joi.object({ a: Joi.any() }).unknown().optional(),\n declaration: Joi.string().allow('').optional(),\n outputs: Joi.array<Output>().items(outputSchema),\n skipSummary: Joi.boolean().optional().default(false),\n version: Joi.number().optional().default(CURRENT_VERSION),\n phaseBanner: phaseBannerSchema,\n specialPages: specialPagesSchema.optional()\n })\n\n// Maintain compatibility with legacy named export\n// E.g. `import { Schema } from '@defra/forms-model'`\nexport const Schema = formDefinitionSchema\n"],"mappings":"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","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-definition/types.ts"],"sourcesContent":["import { type ComponentDef } from '~/src/components/types.js'\nimport { type Condition } from '~/src/conditions/condition.js'\nimport { type OutputType } from '~/src/data-model/enums.js'\nimport { formDefinitionSchema } from '~/src/form/form-definition/index.js'\n\ntype Toggleable<T> = boolean | T\n\nexport interface Next {\n path: string\n condition?: string\n redirect?: string\n}\n\nexport type Link = Next\n\nexport interface Page {\n title: string\n path: string\n controller?: string\n components?: ComponentDef[]\n section?: string // the section ID\n next?: Next[]\n repeatField?: string\n backLinkFallback?: string\n}\n\nexport interface RepeatingFieldPage extends Page {\n controller: 'RepeatingFieldPageController'\n options: {\n summaryDisplayMode?: {\n samePage?: boolean\n separatePage?: boolean\n hideRowTitles?: boolean\n }\n customText?: {\n separatePageTitle?: string\n }\n }\n}\n\nexport interface Section {\n name: string\n title: string\n hideTitle?: boolean\n}\n\nexport interface Item {\n text: string\n value: string | number | boolean\n description?: string\n conditional?: { components: ComponentDef[] } | null\n condition?: string | null\n}\n\nexport interface List {\n name: string\n title: string\n type: 'string' | 'number' | 'boolean'\n items: Item[]\n}\n\nexport interface Feedback {\n feedbackForm?: boolean\n url?: string\n emailAddress?: string\n}\n\nexport interface PhaseBanner {\n phase?: 'alpha' | 'beta'\n feedbackUrl?: string\n}\n\nexport interface MultipleApiKeys {\n test?: string\n production?: string\n}\n\nexport interface EmailOutputConfiguration {\n emailAddress: string\n}\n\nexport interface NotifyOutputConfiguration {\n apiKey: string\n templateId: string\n emailField: string\n personalisation: string[]\n personalisationFieldCustomisation?: Record<string, string[]>\n addReferencesToPersonalisation?: boolean\n emailReplyToIdConfiguration?: {\n emailReplyToId: string\n condition?: string\n }[]\n}\n\nexport interface WebhookOutputConfiguration {\n url: string\n allowRetry?: boolean\n}\n\nexport type OutputConfiguration =\n | EmailOutputConfiguration\n | NotifyOutputConfiguration\n | WebhookOutputConfiguration\n\nexport interface Output {\n name: string\n title: string\n type: OutputType\n outputConfiguration: OutputConfiguration\n}\n\nexport interface ConfirmationPage {\n customText: {\n title: string\n
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-definition/types.ts"],"sourcesContent":["import { type ComponentDef } from '~/src/components/types.js'\nimport { type Condition } from '~/src/conditions/condition.js'\nimport { type OutputType } from '~/src/data-model/enums.js'\nimport { formDefinitionSchema } from '~/src/form/form-definition/index.js'\n\ntype Toggleable<T> = boolean | T\n\nexport interface Next {\n path: string\n condition?: string\n redirect?: string\n}\n\nexport type Link = Next\n\nexport interface Page {\n title: string\n path: string\n controller?: string\n components?: ComponentDef[]\n section?: string // the section ID\n next?: Next[]\n repeatField?: string\n backLinkFallback?: string\n}\n\nexport interface RepeatingFieldPage extends Page {\n controller: 'RepeatingFieldPageController'\n options: {\n summaryDisplayMode?: {\n samePage?: boolean\n separatePage?: boolean\n hideRowTitles?: boolean\n }\n customText?: {\n separatePageTitle?: string\n }\n }\n}\n\nexport interface Section {\n name: string\n title: string\n hideTitle?: boolean\n}\n\nexport interface Item {\n text: string\n value: string | number | boolean\n description?: string\n conditional?: { components: ComponentDef[] } | null\n condition?: string | null\n}\n\nexport interface List {\n name: string\n title: string\n type: 'string' | 'number' | 'boolean'\n items: Item[]\n}\n\nexport interface Feedback {\n feedbackForm?: boolean\n url?: string\n emailAddress?: string\n}\n\nexport interface PhaseBanner {\n phase?: 'alpha' | 'beta'\n feedbackUrl?: string\n}\n\nexport interface MultipleApiKeys {\n test?: string\n production?: string\n}\n\nexport interface EmailOutputConfiguration {\n emailAddress: string\n}\n\nexport interface NotifyOutputConfiguration {\n apiKey: string\n templateId: string\n emailField: string\n personalisation: string[]\n personalisationFieldCustomisation?: Record<string, string[]>\n addReferencesToPersonalisation?: boolean\n emailReplyToIdConfiguration?: {\n emailReplyToId: string\n condition?: string\n }[]\n}\n\nexport interface WebhookOutputConfiguration {\n url: string\n allowRetry?: boolean\n}\n\nexport type OutputConfiguration =\n | EmailOutputConfiguration\n | NotifyOutputConfiguration\n | WebhookOutputConfiguration\n\nexport interface Output {\n name: string\n title: string\n type: OutputType\n outputConfiguration: OutputConfiguration\n}\n\nexport interface ConfirmationPage {\n customText: {\n title: string\n nextSteps: Toggleable<string>\n }\n components: ComponentDef[]\n}\n\nexport interface SpecialPages {\n confirmationPage?: ConfirmationPage\n}\n\nexport type ConditionWrapperValue =\n | string\n | {\n name: string\n conditions: Condition[]\n }\n\nexport interface ConditionRawData {\n name: string\n displayName: string\n value: ConditionWrapperValue\n}\n\n/**\n * Interface for `formDefinitionSchema` Joi schema\n * @see {@link formDefinitionSchema}\n */\nexport interface FormDefinition {\n pages: (Page | RepeatingFieldPage)[]\n conditions: ConditionRawData[]\n lists: List[]\n sections: Section[]\n startPage?: Page['path']\n name?: string\n feedback?: Feedback\n phaseBanner?: PhaseBanner\n skipSummary?: boolean\n outputs: Output[]\n declaration?: string\n metadata?: Record<string, unknown>\n specialPages?: SpecialPages\n version?: number\n}\n"],"mappings":"","ignoreList":[]}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
export { InputWrapper } from '../data-model/input-wrapper.js';
|
2
2
|
export { ConditionsWrapper } from '../data-model/conditions-wrapper.js';
|
3
3
|
export { OutputType } from '../data-model/enums.js';
|
4
|
-
export { isMultipleApiKey } from '../data-model/helpers.js';
|
5
4
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-model/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-model/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA"}
|
@@ -13,15 +13,4 @@ export declare const componentSchema: Joi.ObjectSchema<ComponentDef>;
|
|
13
13
|
*/
|
14
14
|
export declare const formDefinitionSchema: Joi.ObjectSchema<FormDefinition>;
|
15
15
|
export declare const Schema: Joi.ObjectSchema<FormDefinition>;
|
16
|
-
/**
|
17
|
-
* Schema versions:
|
18
|
-
* Undefined / 0 - initial version as at 28/8/20. Conditions may be in object structure or string form.
|
19
|
-
* 1 - Relevant components (radio, checkbox, select, autocomplete) now contain
|
20
|
-
* options as 'values' rather than referencing a data list
|
21
|
-
* 2 - Reverse v1. Values populating radio, checkboxes, select, autocomplete are defined in Lists only.
|
22
|
-
* TODO:- merge fees and paymentReferenceFormat
|
23
|
-
* 2 - 2023-05-04 `feeOptions` has been introduced. paymentReferenceFormat and payApiKey can be configured in top level or feeOptions. feeOptions will take precedent.
|
24
|
-
* if feeOptions are empty, it will pull values from the top level keys.
|
25
|
-
* WARN: Fee/GOV.UK pay configurations (apart from fees) should no longer be stored in the top level, always within feeOptions.
|
26
|
-
*/
|
27
16
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAIL,KAAK,cAAc,EAapB,MAAM,qCAAqC,CAAA;AAE5C;;;GAGG;AACH,eAAO,MAAM,eAAe,IAAI,CAAA;AAyEhC,eAAO,MAAM,eAAe,gCAYZ,CAAA;AA4HhB;;;GAGG;AACH,eAAO,MAAM,oBAAoB,kCAyB7B,CAAA;AAIJ,eAAO,MAAM,MAAM,kCAAuB,CAAA"}
|
@@ -93,37 +93,12 @@ export interface Output {
|
|
93
93
|
export interface ConfirmationPage {
|
94
94
|
customText: {
|
95
95
|
title: string;
|
96
|
-
paymentSkipped: Toggleable<string>;
|
97
96
|
nextSteps: Toggleable<string>;
|
98
97
|
};
|
99
98
|
components: ComponentDef[];
|
100
99
|
}
|
101
|
-
export interface PaymentSkippedWarningPage {
|
102
|
-
customText: {
|
103
|
-
title: string;
|
104
|
-
caption: string;
|
105
|
-
body: string;
|
106
|
-
};
|
107
|
-
}
|
108
100
|
export interface SpecialPages {
|
109
101
|
confirmationPage?: ConfirmationPage;
|
110
|
-
paymentSkippedWarningPage?: PaymentSkippedWarningPage;
|
111
|
-
}
|
112
|
-
export interface Fee {
|
113
|
-
description: string;
|
114
|
-
amount: number;
|
115
|
-
multiplier?: string;
|
116
|
-
condition?: string;
|
117
|
-
prefix?: string;
|
118
|
-
}
|
119
|
-
export interface FeeOptions {
|
120
|
-
payApiKey?: string | MultipleApiKeys;
|
121
|
-
paymentReferenceFormat?: string;
|
122
|
-
payReturnUrl?: string;
|
123
|
-
allowSubmissionWithoutPayment: boolean;
|
124
|
-
maxAttempts: number;
|
125
|
-
customPayErrorMessage?: string;
|
126
|
-
showPaymentSkippedWarningPage: boolean;
|
127
102
|
}
|
128
103
|
export type ConditionWrapperValue = string | {
|
129
104
|
name: string;
|
@@ -147,15 +122,11 @@ export interface FormDefinition {
|
|
147
122
|
name?: string;
|
148
123
|
feedback?: Feedback;
|
149
124
|
phaseBanner?: PhaseBanner;
|
150
|
-
fees: Fee[];
|
151
125
|
skipSummary?: boolean;
|
152
126
|
outputs: Output[];
|
153
127
|
declaration?: string;
|
154
128
|
metadata?: Record<string, unknown>;
|
155
|
-
payApiKey?: string | MultipleApiKeys;
|
156
129
|
specialPages?: SpecialPages;
|
157
|
-
paymentReferenceFormat?: string;
|
158
|
-
feeOptions?: FeeOptions;
|
159
130
|
version?: number;
|
160
131
|
}
|
161
132
|
export {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/types.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/data-model/index.ts
CHANGED
@@ -5,8 +5,6 @@ import {
|
|
5
5
|
type ConditionRawData,
|
6
6
|
type ConfirmationPage,
|
7
7
|
type EmailOutputConfiguration,
|
8
|
-
type Fee,
|
9
|
-
type FeeOptions,
|
10
8
|
type FormDefinition,
|
11
9
|
type Item,
|
12
10
|
type List,
|
@@ -15,7 +13,6 @@ import {
|
|
15
13
|
type NotifyOutputConfiguration,
|
16
14
|
type Output,
|
17
15
|
type Page,
|
18
|
-
type PaymentSkippedWarningPage,
|
19
16
|
type PhaseBanner,
|
20
17
|
type RepeatingFieldPage,
|
21
18
|
type Section,
|
@@ -141,9 +138,6 @@ const toggleableString = Joi.alternatives().try(Joi.boolean(), Joi.string())
|
|
141
138
|
const confirmationPageSchema = Joi.object<ConfirmationPage>({
|
142
139
|
customText: Joi.object<ConfirmationPage['customText']>({
|
143
140
|
title: Joi.string().default('Application complete'),
|
144
|
-
paymentSkipped: toggleableString.default(
|
145
|
-
'Someone will be in touch to make a payment.'
|
146
|
-
),
|
147
141
|
nextSteps: toggleableString.default(
|
148
142
|
'You will receive an email with details with the next steps.'
|
149
143
|
)
|
@@ -151,17 +145,8 @@ const confirmationPageSchema = Joi.object<ConfirmationPage>({
|
|
151
145
|
components: Joi.array<ComponentDef>().items(componentSchema)
|
152
146
|
})
|
153
147
|
|
154
|
-
const paymentSkippedWarningPage = Joi.object<PaymentSkippedWarningPage>({
|
155
|
-
customText: Joi.object({
|
156
|
-
title: Joi.string().default('Pay for your application').optional(),
|
157
|
-
caption: Joi.string().default('Payment').optional(),
|
158
|
-
body: Joi.string().default('').optional()
|
159
|
-
})
|
160
|
-
})
|
161
|
-
|
162
148
|
const specialPagesSchema = Joi.object<SpecialPages>().keys({
|
163
|
-
confirmationPage: confirmationPageSchema.optional()
|
164
|
-
paymentSkippedWarningPage: paymentSkippedWarningPage.optional()
|
149
|
+
confirmationPage: confirmationPageSchema.optional()
|
165
150
|
})
|
166
151
|
|
167
152
|
const listItemSchema = Joi.object<Item>().keys({
|
@@ -187,14 +172,6 @@ const listSchema = Joi.object<List>().keys({
|
|
187
172
|
items: Joi.array<Item>().items(listItemSchema)
|
188
173
|
})
|
189
174
|
|
190
|
-
const feeSchema = Joi.object<Fee>().keys({
|
191
|
-
description: Joi.string().required(),
|
192
|
-
amount: Joi.number().required(),
|
193
|
-
multiplier: Joi.string().optional(),
|
194
|
-
condition: Joi.string().optional(),
|
195
|
-
prefix: Joi.string().optional()
|
196
|
-
})
|
197
|
-
|
198
175
|
const multiApiKeySchema = Joi.object<MultipleApiKeys>({
|
199
176
|
test: Joi.string().optional(),
|
200
177
|
production: Joi.string().optional()
|
@@ -256,28 +233,6 @@ const phaseBannerSchema = Joi.object<PhaseBanner>().keys({
|
|
256
233
|
phase: Joi.string().valid('alpha', 'beta')
|
257
234
|
})
|
258
235
|
|
259
|
-
const feeOptionSchema = Joi.object<FeeOptions>()
|
260
|
-
.keys({
|
261
|
-
payApiKey: [Joi.string().allow('').optional(), multiApiKeySchema],
|
262
|
-
paymentReferenceFormat: [Joi.string().optional()],
|
263
|
-
payReturnUrl: Joi.string().optional(),
|
264
|
-
allowSubmissionWithoutPayment: Joi.boolean().optional().default(true),
|
265
|
-
maxAttempts: Joi.number().optional().default(3),
|
266
|
-
customPayErrorMessage: Joi.string().optional(),
|
267
|
-
showPaymentSkippedWarningPage: Joi.when('allowSubmissionWithoutPayment', {
|
268
|
-
is: true,
|
269
|
-
then: Joi.boolean().valid(true, false).default(false),
|
270
|
-
otherwise: Joi.boolean().valid(false).default(false)
|
271
|
-
})
|
272
|
-
})
|
273
|
-
.default()
|
274
|
-
.default(({ payApiKey, paymentReferenceFormat }: FeeOptions) => {
|
275
|
-
return {
|
276
|
-
...(payApiKey && { payApiKey }),
|
277
|
-
...(paymentReferenceFormat && { paymentReferenceFormat })
|
278
|
-
}
|
279
|
-
})
|
280
|
-
|
281
236
|
/**
|
282
237
|
* Joi schema for `FormDefinition` interface
|
283
238
|
* @see {@link FormDefinition}
|
@@ -300,31 +255,15 @@ export const formDefinitionSchema = Joi.object<FormDefinition>()
|
|
300
255
|
.items(conditionsSchema)
|
301
256
|
.unique('name'),
|
302
257
|
lists: Joi.array<List>().items(listSchema).unique('name'),
|
303
|
-
fees: Joi.array<Fee>().items(feeSchema).optional(),
|
304
|
-
paymentReferenceFormat: Joi.string().optional(),
|
305
258
|
metadata: Joi.object({ a: Joi.any() }).unknown().optional(),
|
306
259
|
declaration: Joi.string().allow('').optional(),
|
307
260
|
outputs: Joi.array<Output>().items(outputSchema),
|
308
|
-
payApiKey: [Joi.string().allow('').optional(), multiApiKeySchema],
|
309
261
|
skipSummary: Joi.boolean().optional().default(false),
|
310
262
|
version: Joi.number().optional().default(CURRENT_VERSION),
|
311
263
|
phaseBanner: phaseBannerSchema,
|
312
|
-
specialPages: specialPagesSchema.optional()
|
313
|
-
feeOptions: feeOptionSchema.optional()
|
264
|
+
specialPages: specialPagesSchema.optional()
|
314
265
|
})
|
315
266
|
|
316
267
|
// Maintain compatibility with legacy named export
|
317
268
|
// E.g. `import { Schema } from '@defra/forms-model'`
|
318
269
|
export const Schema = formDefinitionSchema
|
319
|
-
|
320
|
-
/**
|
321
|
-
* Schema versions:
|
322
|
-
* Undefined / 0 - initial version as at 28/8/20. Conditions may be in object structure or string form.
|
323
|
-
* 1 - Relevant components (radio, checkbox, select, autocomplete) now contain
|
324
|
-
* options as 'values' rather than referencing a data list
|
325
|
-
* 2 - Reverse v1. Values populating radio, checkboxes, select, autocomplete are defined in Lists only.
|
326
|
-
* TODO:- merge fees and paymentReferenceFormat
|
327
|
-
* 2 - 2023-05-04 `feeOptions` has been introduced. paymentReferenceFormat and payApiKey can be configured in top level or feeOptions. feeOptions will take precedent.
|
328
|
-
* if feeOptions are empty, it will pull values from the top level keys.
|
329
|
-
* WARN: Fee/GOV.UK pay configurations (apart from fees) should no longer be stored in the top level, always within feeOptions.
|
330
|
-
*/
|
@@ -112,41 +112,13 @@ export interface Output {
|
|
112
112
|
export interface ConfirmationPage {
|
113
113
|
customText: {
|
114
114
|
title: string
|
115
|
-
paymentSkipped: Toggleable<string>
|
116
115
|
nextSteps: Toggleable<string>
|
117
116
|
}
|
118
117
|
components: ComponentDef[]
|
119
118
|
}
|
120
119
|
|
121
|
-
export interface PaymentSkippedWarningPage {
|
122
|
-
customText: {
|
123
|
-
title: string
|
124
|
-
caption: string
|
125
|
-
body: string
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
120
|
export interface SpecialPages {
|
130
121
|
confirmationPage?: ConfirmationPage
|
131
|
-
paymentSkippedWarningPage?: PaymentSkippedWarningPage
|
132
|
-
}
|
133
|
-
|
134
|
-
export interface Fee {
|
135
|
-
description: string
|
136
|
-
amount: number
|
137
|
-
multiplier?: string
|
138
|
-
condition?: string
|
139
|
-
prefix?: string
|
140
|
-
}
|
141
|
-
|
142
|
-
export interface FeeOptions {
|
143
|
-
payApiKey?: string | MultipleApiKeys
|
144
|
-
paymentReferenceFormat?: string
|
145
|
-
payReturnUrl?: string
|
146
|
-
allowSubmissionWithoutPayment: boolean
|
147
|
-
maxAttempts: number
|
148
|
-
customPayErrorMessage?: string
|
149
|
-
showPaymentSkippedWarningPage: boolean
|
150
122
|
}
|
151
123
|
|
152
124
|
export type ConditionWrapperValue =
|
@@ -175,14 +147,10 @@ export interface FormDefinition {
|
|
175
147
|
name?: string
|
176
148
|
feedback?: Feedback
|
177
149
|
phaseBanner?: PhaseBanner
|
178
|
-
fees: Fee[]
|
179
150
|
skipSummary?: boolean
|
180
151
|
outputs: Output[]
|
181
152
|
declaration?: string
|
182
153
|
metadata?: Record<string, unknown>
|
183
|
-
payApiKey?: string | MultipleApiKeys
|
184
154
|
specialPages?: SpecialPages
|
185
|
-
paymentReferenceFormat?: string
|
186
|
-
feeOptions?: FeeOptions
|
187
155
|
version?: number
|
188
156
|
}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["isMultipleApiKey","payApiKey","obj","test","undefined","production"],"sources":["../../../src/data-model/helpers.ts"],"sourcesContent":["import { type MultipleApiKeys } from '~/src/form/types.js'\n\nexport function isMultipleApiKey(\n payApiKey: string | MultipleApiKeys | undefined\n): payApiKey is MultipleApiKeys {\n const obj = payApiKey as MultipleApiKeys\n return obj.test !== undefined || obj.production !== undefined\n}\n"],"mappings":"AAEA,OAAO,SAASA,gBAAgBA,CAC9BC,SAA+C,EACjB;EAC9B,MAAMC,GAAG,GAAGD,SAA4B;EACxC,OAAOC,GAAG,CAACC,IAAI,KAAKC,SAAS,IAAIF,GAAG,CAACG,UAAU,KAAKD,SAAS;AAC/D","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/data-model/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,GAC9C,SAAS,IAAI,eAAe,CAG9B"}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import { type MultipleApiKeys } from '~/src/form/types.js'
|
2
|
-
|
3
|
-
export function isMultipleApiKey(
|
4
|
-
payApiKey: string | MultipleApiKeys | undefined
|
5
|
-
): payApiKey is MultipleApiKeys {
|
6
|
-
const obj = payApiKey as MultipleApiKeys
|
7
|
-
return obj.test !== undefined || obj.production !== undefined
|
8
|
-
}
|