@defra/forms-model 3.0.173 → 3.0.175
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 +0 -31
- 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.map +1 -1
- package/dist/types/form/form-definition/types.d.ts +0 -32
- 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 +1 -49
- package/src/form/form-definition/types.ts +0 -41
- package/dist/module/data-model/enums.js +0 -7
- package/dist/module/data-model/enums.js.map +0 -1
- package/dist/types/data-model/enums.d.ts +0 -6
- package/dist/types/data-model/enums.d.ts.map +0 -1
- package/src/data-model/enums.ts +0 -5
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["InputWrapper","ConditionsWrapper"
|
1
|
+
{"version":3,"file":"index.js","names":["InputWrapper","ConditionsWrapper"],"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'\n"],"mappings":"AAAA,SAASA,YAAY;AACrB,SAASC,iBAAiB","ignoreList":[]}
|
@@ -112,36 +112,6 @@ const listSchema = Joi.object().keys({
|
|
112
112
|
type: Joi.string().required().valid('string', 'number'),
|
113
113
|
items: Joi.array().items(listItemSchema)
|
114
114
|
});
|
115
|
-
const multiApiKeySchema = Joi.object({
|
116
|
-
test: Joi.string().optional(),
|
117
|
-
production: Joi.string().optional()
|
118
|
-
});
|
119
|
-
const replyToConfigurationSchema = Joi.object({
|
120
|
-
emailReplyToId: Joi.string(),
|
121
|
-
condition: Joi.string().allow('').optional()
|
122
|
-
});
|
123
|
-
const notifySchema = Joi.object().keys({
|
124
|
-
apiKey: [Joi.string().allow('').optional(), multiApiKeySchema],
|
125
|
-
templateId: Joi.string(),
|
126
|
-
emailField: Joi.string(),
|
127
|
-
personalisation: Joi.array().items(Joi.string()),
|
128
|
-
personalisationFieldCustomisation: Joi.object().pattern(/./, Joi.array().items(Joi.string())).optional(),
|
129
|
-
addReferencesToPersonalisation: Joi.boolean().optional(),
|
130
|
-
emailReplyToIdConfiguration: Joi.array().items(replyToConfigurationSchema)
|
131
|
-
});
|
132
|
-
const emailSchema = Joi.object().keys({
|
133
|
-
emailAddress: Joi.string().required()
|
134
|
-
});
|
135
|
-
const webhookSchema = Joi.object().keys({
|
136
|
-
url: Joi.string(),
|
137
|
-
allowRetry: Joi.boolean().optional().default(true)
|
138
|
-
});
|
139
|
-
const outputSchema = Joi.object().keys({
|
140
|
-
name: Joi.string(),
|
141
|
-
title: Joi.string().optional(),
|
142
|
-
type: Joi.string().allow('notify', 'email', 'webhook', 'sheets'),
|
143
|
-
outputConfiguration: Joi.alternatives().try(notifySchema, emailSchema, webhookSchema)
|
144
|
-
});
|
145
115
|
const feedbackSchema = Joi.object().keys({
|
146
116
|
feedbackForm: Joi.boolean().default(false),
|
147
117
|
url: Joi.when('feedbackForm', {
|
@@ -174,7 +144,6 @@ export const formDefinitionSchema = Joi.object().required().keys({
|
|
174
144
|
a: Joi.any()
|
175
145
|
}).unknown().optional(),
|
176
146
|
declaration: Joi.string().allow('').optional(),
|
177
|
-
outputs: Joi.array().items(outputSchema),
|
178
147
|
skipSummary: Joi.boolean().optional().default(false),
|
179
148
|
phaseBanner: phaseBannerSchema,
|
180
149
|
specialPages: specialPagesSchema.optional(),
|
@@ -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","subType","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","phaseBanner","specialPages","outputEmail","trim","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport {\n type ComponentSubType,\n type ComponentType\n} from '~/src/components/enums.js'\nimport { type ComponentDef } from '~/src/components/types.js'\nimport {\n type ConditionRawData,\n type ConditionWrapperValue,\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.alternatives<ConditionWrapperValue>().try(\n Joi.string(),\n 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)\n\nconst conditionsSchema = Joi.object<ConditionRawData>().keys({\n name: Joi.string().required(),\n displayName: Joi.string(),\n value: 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 subType: Joi.string<ComponentSubType>().optional(),\n type: Joi.string<ComponentType>().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 phaseBanner: phaseBannerSchema,\n specialPages: specialPagesSchema.optional(),\n outputEmail: Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .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
|
+
{"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","subType","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","feedbackSchema","feedbackForm","url","when","is","then","emailAddress","email","tlds","phaseBannerSchema","phase","formDefinitionSchema","feedback","startPage","pages","sections","lists","metadata","declaration","skipSummary","phaseBanner","specialPages","outputEmail","trim","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport {\n type ComponentSubType,\n type ComponentType\n} from '~/src/components/enums.js'\nimport { type ComponentDef } from '~/src/components/types.js'\nimport {\n type ConditionRawData,\n type ConditionWrapperValue,\n type ConfirmationPage,\n type FormDefinition,\n type Item,\n type List,\n type Next,\n type Page,\n type PhaseBanner,\n type RepeatingFieldPage,\n type Section,\n type SpecialPages\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.alternatives<ConditionWrapperValue>().try(\n Joi.string(),\n 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)\n\nconst conditionsSchema = Joi.object<ConditionRawData>().keys({\n name: Joi.string().required(),\n displayName: Joi.string(),\n value: 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 subType: Joi.string<ComponentSubType>().optional(),\n type: Joi.string<ComponentType>().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 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 skipSummary: Joi.boolean().optional().default(false),\n phaseBanner: phaseBannerSchema,\n specialPages: specialPagesSchema.optional(),\n outputEmail: Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .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 {
|
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 { 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 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 declaration?: string\n metadata?: Record<string, unknown>\n specialPages?: SpecialPages\n outputEmail?: string\n}\n"],"mappings":"","ignoreList":[]}
|
@@ -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
|
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"}
|
@@ -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;AAMrB,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;AAMrB,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAIL,KAAK,cAAc,EASpB,MAAM,qCAAqC,CAAA;AAE5C;;;GAGG;AACH,eAAO,MAAM,eAAe,IAAI,CAAA;AA4EhC,eAAO,MAAM,eAAe,gCAaZ,CAAA;AAkFhB;;;GAGG;AACH,eAAO,MAAM,oBAAoB,kCA2B7B,CAAA;AAIJ,eAAO,MAAM,MAAM,kCAAuB,CAAA"}
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { type ComponentDef } from '../../components/types.js';
|
2
2
|
import { type Condition } from '../../conditions/condition.js';
|
3
|
-
import { type OutputType } from '../../data-model/enums.js';
|
4
3
|
type Toggleable<T> = boolean | T;
|
5
4
|
export interface Next {
|
6
5
|
path: string;
|
@@ -60,36 +59,6 @@ export interface PhaseBanner {
|
|
60
59
|
phase?: 'alpha' | 'beta';
|
61
60
|
feedbackUrl?: string;
|
62
61
|
}
|
63
|
-
export interface MultipleApiKeys {
|
64
|
-
test?: string;
|
65
|
-
production?: string;
|
66
|
-
}
|
67
|
-
export interface EmailOutputConfiguration {
|
68
|
-
emailAddress: string;
|
69
|
-
}
|
70
|
-
export interface NotifyOutputConfiguration {
|
71
|
-
apiKey: string;
|
72
|
-
templateId: string;
|
73
|
-
emailField: string;
|
74
|
-
personalisation: string[];
|
75
|
-
personalisationFieldCustomisation?: Record<string, string[]>;
|
76
|
-
addReferencesToPersonalisation?: boolean;
|
77
|
-
emailReplyToIdConfiguration?: {
|
78
|
-
emailReplyToId: string;
|
79
|
-
condition?: string;
|
80
|
-
}[];
|
81
|
-
}
|
82
|
-
export interface WebhookOutputConfiguration {
|
83
|
-
url: string;
|
84
|
-
allowRetry?: boolean;
|
85
|
-
}
|
86
|
-
export type OutputConfiguration = EmailOutputConfiguration | NotifyOutputConfiguration | WebhookOutputConfiguration;
|
87
|
-
export interface Output {
|
88
|
-
name: string;
|
89
|
-
title: string;
|
90
|
-
type: OutputType;
|
91
|
-
outputConfiguration: OutputConfiguration;
|
92
|
-
}
|
93
62
|
export interface ConfirmationPage {
|
94
63
|
customText: {
|
95
64
|
title: string;
|
@@ -123,7 +92,6 @@ export interface FormDefinition {
|
|
123
92
|
feedback?: Feedback;
|
124
93
|
phaseBanner?: PhaseBanner;
|
125
94
|
skipSummary?: boolean;
|
126
|
-
outputs: Output[];
|
127
95
|
declaration?: string;
|
128
96
|
metadata?: Record<string, unknown>;
|
129
97
|
specialPages?: SpecialPages;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,+BAA+B,CAAA;
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAG9D,KAAK,UAAU,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAA;AAEhC,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,IAAI,GAAG,IAAI,CAAA;AAEvB,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,IAAI,EAAE,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI;IAC9C,UAAU,EAAE,8BAA8B,CAAA;IAC1C,OAAO,EAAE;QACP,kBAAkB,CAAC,EAAE;YACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;YAClB,YAAY,CAAC,EAAE,OAAO,CAAA;YACtB,aAAa,CAAC,EAAE,OAAO,CAAA;SACxB,CAAA;QACD,UAAU,CAAC,EAAE;YACX,iBAAiB,CAAC,EAAE,MAAM,CAAA;SAC3B,CAAA;KACF,CAAA;CACF;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE;QAAE,UAAU,EAAE,YAAY,EAAE,CAAA;KAAE,GAAG,IAAI,CAAA;IACnD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IACrC,KAAK,EAAE,IAAI,EAAE,CAAA;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;KAC9B,CAAA;IACD,UAAU,EAAE,YAAY,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACpC;AAED,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,SAAS,EAAE,CAAA;CACxB,CAAA;AAEL,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,qBAAqB,CAAA;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,CAAC,IAAI,GAAG,kBAAkB,CAAC,EAAE,CAAA;IACpC,UAAU,EAAE,gBAAgB,EAAE,CAAA;IAC9B,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
|
package/package.json
CHANGED
package/src/data-model/index.ts
CHANGED
@@ -9,20 +9,15 @@ import {
|
|
9
9
|
type ConditionRawData,
|
10
10
|
type ConditionWrapperValue,
|
11
11
|
type ConfirmationPage,
|
12
|
-
type EmailOutputConfiguration,
|
13
12
|
type FormDefinition,
|
14
13
|
type Item,
|
15
14
|
type List,
|
16
|
-
type MultipleApiKeys,
|
17
15
|
type Next,
|
18
|
-
type NotifyOutputConfiguration,
|
19
|
-
type Output,
|
20
16
|
type Page,
|
21
17
|
type PhaseBanner,
|
22
18
|
type RepeatingFieldPage,
|
23
19
|
type Section,
|
24
|
-
type SpecialPages
|
25
|
-
type WebhookOutputConfiguration
|
20
|
+
type SpecialPages
|
26
21
|
} from '~/src/form/form-definition/types.js'
|
27
22
|
|
28
23
|
/**
|
@@ -181,48 +176,6 @@ const listSchema = Joi.object<List>().keys({
|
|
181
176
|
items: Joi.array<Item>().items(listItemSchema)
|
182
177
|
})
|
183
178
|
|
184
|
-
const multiApiKeySchema = Joi.object<MultipleApiKeys>({
|
185
|
-
test: Joi.string().optional(),
|
186
|
-
production: Joi.string().optional()
|
187
|
-
})
|
188
|
-
|
189
|
-
const replyToConfigurationSchema = Joi.object({
|
190
|
-
emailReplyToId: Joi.string(),
|
191
|
-
condition: Joi.string().allow('').optional()
|
192
|
-
})
|
193
|
-
|
194
|
-
const notifySchema = Joi.object<NotifyOutputConfiguration>().keys({
|
195
|
-
apiKey: [Joi.string().allow('').optional(), multiApiKeySchema],
|
196
|
-
templateId: Joi.string(),
|
197
|
-
emailField: Joi.string(),
|
198
|
-
personalisation: Joi.array<string>().items(Joi.string()),
|
199
|
-
personalisationFieldCustomisation: Joi.object()
|
200
|
-
.pattern(/./, Joi.array<string>().items(Joi.string()))
|
201
|
-
.optional(),
|
202
|
-
addReferencesToPersonalisation: Joi.boolean().optional(),
|
203
|
-
emailReplyToIdConfiguration: Joi.array().items(replyToConfigurationSchema)
|
204
|
-
})
|
205
|
-
|
206
|
-
const emailSchema = Joi.object<EmailOutputConfiguration>().keys({
|
207
|
-
emailAddress: Joi.string().required()
|
208
|
-
})
|
209
|
-
|
210
|
-
const webhookSchema = Joi.object<WebhookOutputConfiguration>().keys({
|
211
|
-
url: Joi.string(),
|
212
|
-
allowRetry: Joi.boolean().optional().default(true)
|
213
|
-
})
|
214
|
-
|
215
|
-
const outputSchema = Joi.object<Output>().keys({
|
216
|
-
name: Joi.string(),
|
217
|
-
title: Joi.string().optional(),
|
218
|
-
type: Joi.string().allow('notify', 'email', 'webhook', 'sheets'),
|
219
|
-
outputConfiguration: Joi.alternatives().try(
|
220
|
-
notifySchema,
|
221
|
-
emailSchema,
|
222
|
-
webhookSchema
|
223
|
-
)
|
224
|
-
})
|
225
|
-
|
226
179
|
const feedbackSchema = Joi.object<FormDefinition['feedback']>().keys({
|
227
180
|
feedbackForm: Joi.boolean().default(false),
|
228
181
|
url: Joi.when('feedbackForm', {
|
@@ -266,7 +219,6 @@ export const formDefinitionSchema = Joi.object<FormDefinition>()
|
|
266
219
|
lists: Joi.array<List>().items(listSchema).unique('name'),
|
267
220
|
metadata: Joi.object({ a: Joi.any() }).unknown().optional(),
|
268
221
|
declaration: Joi.string().allow('').optional(),
|
269
|
-
outputs: Joi.array<Output>().items(outputSchema),
|
270
222
|
skipSummary: Joi.boolean().optional().default(false),
|
271
223
|
phaseBanner: phaseBannerSchema,
|
272
224
|
specialPages: specialPagesSchema.optional(),
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { type ComponentDef } from '~/src/components/types.js'
|
2
2
|
import { type Condition } from '~/src/conditions/condition.js'
|
3
|
-
import { type OutputType } from '~/src/data-model/enums.js'
|
4
3
|
import { formDefinitionSchema } from '~/src/form/form-definition/index.js'
|
5
4
|
|
6
5
|
type Toggleable<T> = boolean | T
|
@@ -70,45 +69,6 @@ export interface PhaseBanner {
|
|
70
69
|
feedbackUrl?: string
|
71
70
|
}
|
72
71
|
|
73
|
-
export interface MultipleApiKeys {
|
74
|
-
test?: string
|
75
|
-
production?: string
|
76
|
-
}
|
77
|
-
|
78
|
-
export interface EmailOutputConfiguration {
|
79
|
-
emailAddress: string
|
80
|
-
}
|
81
|
-
|
82
|
-
export interface NotifyOutputConfiguration {
|
83
|
-
apiKey: string
|
84
|
-
templateId: string
|
85
|
-
emailField: string
|
86
|
-
personalisation: string[]
|
87
|
-
personalisationFieldCustomisation?: Record<string, string[]>
|
88
|
-
addReferencesToPersonalisation?: boolean
|
89
|
-
emailReplyToIdConfiguration?: {
|
90
|
-
emailReplyToId: string
|
91
|
-
condition?: string
|
92
|
-
}[]
|
93
|
-
}
|
94
|
-
|
95
|
-
export interface WebhookOutputConfiguration {
|
96
|
-
url: string
|
97
|
-
allowRetry?: boolean
|
98
|
-
}
|
99
|
-
|
100
|
-
export type OutputConfiguration =
|
101
|
-
| EmailOutputConfiguration
|
102
|
-
| NotifyOutputConfiguration
|
103
|
-
| WebhookOutputConfiguration
|
104
|
-
|
105
|
-
export interface Output {
|
106
|
-
name: string
|
107
|
-
title: string
|
108
|
-
type: OutputType
|
109
|
-
outputConfiguration: OutputConfiguration
|
110
|
-
}
|
111
|
-
|
112
72
|
export interface ConfirmationPage {
|
113
73
|
customText: {
|
114
74
|
title: string
|
@@ -148,7 +108,6 @@ export interface FormDefinition {
|
|
148
108
|
feedback?: Feedback
|
149
109
|
phaseBanner?: PhaseBanner
|
150
110
|
skipSummary?: boolean
|
151
|
-
outputs: Output[]
|
152
111
|
declaration?: string
|
153
112
|
metadata?: Record<string, unknown>
|
154
113
|
specialPages?: SpecialPages
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"enums.js","names":["OutputType"],"sources":["../../../src/data-model/enums.ts"],"sourcesContent":["export enum OutputType {\n Email = 'email',\n Notify = 'notify',\n Webhook = 'webhook'\n}\n"],"mappings":"AAAA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/data-model/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACpB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB"}
|