@defra/forms-model 3.0.550 → 3.0.552
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/form/form-metadata/index.js +11 -1
- package/dist/module/form/form-metadata/index.js.map +1 -1
- package/dist/module/form/form-metadata/types.js.map +1 -1
- package/dist/types/form/form-metadata/index.d.ts +6 -1
- package/dist/types/form/form-metadata/index.d.ts.map +1 -1
- package/dist/types/form/form-metadata/types.d.ts +17 -0
- package/dist/types/form/form-metadata/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/schemas/form-metadata-schema.json +29 -0
- package/src/form/form-metadata/index.ts +24 -2
- package/src/form/form-metadata/types.ts +20 -0
@@ -77,6 +77,15 @@ export const formMetadataStateSchema = Joi.object().keys({
|
|
77
77
|
updatedBy: formMetadataAuthorSchema.description('Who last updated this version')
|
78
78
|
}).description('Metadata about a specific version state (draft or live)');
|
79
79
|
|
80
|
+
/**
|
81
|
+
* Joi schema for `FormVersionMetadata` interface
|
82
|
+
* @see {@link FormVersionMetadata}
|
83
|
+
*/
|
84
|
+
export const formVersionMetadataSchema = Joi.object().keys({
|
85
|
+
versionNumber: Joi.number().integer().min(1).required().description('The version number'),
|
86
|
+
createdAt: authoredAtSchema.description('When this version was created')
|
87
|
+
}).description('Metadata for a specific version of the form');
|
88
|
+
|
80
89
|
/**
|
81
90
|
* Joi schema for `FormMetadata` interface
|
82
91
|
* @see {@link FormMetadata}
|
@@ -89,6 +98,7 @@ export const formMetadataSchema = formMetadataInputSchema.append({
|
|
89
98
|
createdAt: authoredAtSchema.description('When the form was first created'),
|
90
99
|
createdBy: formMetadataAuthorSchema.description('Who created the form'),
|
91
100
|
updatedAt: authoredAtSchema.description('When the form was last updated'),
|
92
|
-
updatedBy: formMetadataAuthorSchema.description('Who last updated the form')
|
101
|
+
updatedBy: formMetadataAuthorSchema.description('Who last updated the form'),
|
102
|
+
versions: Joi.array().items(formVersionMetadataSchema).optional().description('Version history for the form')
|
93
103
|
}).description('Complete metadata for a form, including version information and authoring details');
|
94
104
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["Joi","organisations","idSchema","string","hex","length","required","description","titleSchema","max","trim","slugSchema","pattern","name","organisationSchema","valid","teamNameSchema","teamEmailSchema","email","tlds","allow","phoneSchema","emailAddressSchema","emailResponseTimeSchema","emailSchema","object","keys","address","responseTime","onlineUrlSchema","uri","scheme","onlineTextSchema","onlineSchema","url","text","contactSchema","phone","online","submissionGuidanceSchema","privacyNoticeUrlSchema","notificationEmailAddressSchema","authoredAtSchema","date","iso","authorIdSchema","authorDisplayNameSchema","formMetadataInputKeys","title","organisation","teamName","teamEmail","contact","submissionGuidance","privacyNoticeUrl","notificationEmail","formMetadataInputSchema","formMetadataAuthorSchema","id","displayName","formMetadataStateSchema","createdAt","createdBy","updatedAt","updatedBy","formMetadataSchema","append","slug","draft","live"],"sources":["../../../../src/form/form-metadata/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport {\n type FormMetadata,\n type FormMetadataAuthor,\n type FormMetadataContact,\n type FormMetadataContactEmail,\n type FormMetadataContactOnline,\n type FormMetadataInput,\n type FormMetadataState\n} from '~/src/form/form-metadata/types.js'\n\nexport const organisations = [\n 'Animal and Plant Health Agency – APHA',\n 'Centre for Environment, Fisheries and Aquaculture Science – Cefas',\n 'Defra',\n 'Environment Agency',\n 'Forestry Commission',\n 'Marine Management Organisation – MMO',\n 'Natural England',\n 'Rural Payments Agency – RPA',\n 'Veterinary Medicines Directorate – VMD'\n]\n\nexport const idSchema = Joi.string()\n .hex()\n .length(24)\n .required()\n .description(\n 'Unique identifier for the form, 24-character hexadecimal string'\n )\n\nexport const titleSchema = Joi.string()\n .max(250)\n .trim()\n .required()\n .description('Title of the form, displayed to users')\n\nexport const slugSchema = Joi.string()\n .pattern(/^[a-z0-9-]+$/, { name: 'letters, numbers and hyphens only' })\n .required()\n .description('URL-friendly identifier used in form paths')\n\nexport const organisationSchema = Joi.string()\n .valid(...organisations)\n .required()\n .description('Defra organisation responsible for the form')\n\nexport const teamNameSchema = Joi.string()\n .max(100)\n .trim()\n .required()\n .description('Name of the team responsible for the form')\n\nexport const teamEmailSchema = Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .required()\n .description('Contact email for the team responsible for the form')\n\nexport const phoneSchema = Joi.string()\n .trim()\n .description('Phone number for form-related inquiries')\n\nexport const emailAddressSchema = Joi.string()\n .email()\n .trim()\n .required()\n .description('Email address for form-related inquiries')\n\nexport const emailResponseTimeSchema = Joi.string()\n .trim()\n .required()\n .description('Expected response time for email inquiries')\n\nexport const emailSchema = Joi.object<FormMetadataContactEmail>()\n .keys({\n address: emailAddressSchema,\n responseTime: emailResponseTimeSchema\n })\n .description('Email contact details including response expectations')\n\nexport const onlineUrlSchema = Joi.string()\n .uri({\n scheme: ['http', 'https']\n })\n .trim()\n .required()\n .description('URL for online contact method')\n\nexport const onlineTextSchema = Joi.string()\n .trim()\n .required()\n .description('Descriptive text for the online contact link')\n\nexport const onlineSchema = Joi.object<FormMetadataContactOnline>()\n .keys({\n url: onlineUrlSchema,\n text: onlineTextSchema\n })\n .description('Online contact details with URL and descriptive text')\n\nexport const contactSchema = Joi.object<FormMetadataContact>()\n .keys({\n phone: phoneSchema,\n email: emailSchema,\n online: onlineSchema\n })\n .description('Complete contact information for form-related inquiries')\n\nexport const submissionGuidanceSchema = Joi.string()\n .trim()\n .description('Guidance text shown to users when submitting the form')\n\nexport const privacyNoticeUrlSchema = Joi.string()\n .uri({\n scheme: ['http', 'https']\n })\n .trim()\n .description('URL to the privacy notice for this form')\n\nexport const notificationEmailAddressSchema = Joi.string()\n .email()\n .trim()\n .description('Email address to receive form submission notifications')\n\nexport const authoredAtSchema = Joi.date()\n .iso()\n .required()\n .description('ISO format timestamp of when an action occurred')\n\nexport const authorIdSchema = Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the author')\n\nexport const authorDisplayNameSchema = Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the author')\n\nexport const formMetadataInputKeys = {\n title: titleSchema,\n organisation: organisationSchema,\n teamName: teamNameSchema,\n teamEmail: teamEmailSchema,\n contact: contactSchema,\n submissionGuidance: submissionGuidanceSchema,\n privacyNoticeUrl: privacyNoticeUrlSchema,\n notificationEmail: notificationEmailAddressSchema\n}\n\n/**\n * Joi schema for `FormMetadataInput` interface\n * @see {@link FormMetadataInput}\n */\nexport const formMetadataInputSchema = Joi.object<FormMetadataInput>()\n .keys(formMetadataInputKeys)\n .required()\n .description('Input data for creating or updating form metadata')\n\n/**\n * Joi schema for `FormMetadataAuthor` interface\n * @see {@link FormMetadataAuthor}\n */\nexport const formMetadataAuthorSchema = Joi.object<FormMetadataAuthor>()\n .keys({\n id: authorIdSchema,\n displayName: authorDisplayNameSchema\n })\n .required()\n .description('Information about the author of a form or form change')\n\n/**\n * Joi schema for `FormMetadataState` interface\n * @see {@link FormMetadataState}\n */\nexport const formMetadataStateSchema = Joi.object<FormMetadataState>()\n .keys({\n createdAt: authoredAtSchema.description(\n 'When this version was first created'\n ),\n createdBy: formMetadataAuthorSchema.description('Who created this version'),\n updatedAt: authoredAtSchema.description(\n 'When this version was last updated'\n ),\n updatedBy: formMetadataAuthorSchema.description(\n 'Who last updated this version'\n )\n })\n .description('Metadata about a specific version state (draft or live)')\n\n/**\n * Joi schema for `FormMetadata` interface\n * @see {@link FormMetadata}\n */\nexport const formMetadataSchema = formMetadataInputSchema\n .append<FormMetadata>({\n id: idSchema,\n slug: slugSchema,\n draft: formMetadataStateSchema.description(\n 'Metadata for the draft version'\n ),\n live: formMetadataStateSchema.description(\n 'Metadata for the published version'\n ),\n createdAt: authoredAtSchema.description('When the form was first created'),\n createdBy: formMetadataAuthorSchema.description('Who created the form'),\n updatedAt: authoredAtSchema.description('When the form was last updated'),\n updatedBy: formMetadataAuthorSchema.description('Who last updated the form')\n })\n .description(\n 'Complete metadata for a form, including version information and authoring details'\n )\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"index.js","names":["Joi","organisations","idSchema","string","hex","length","required","description","titleSchema","max","trim","slugSchema","pattern","name","organisationSchema","valid","teamNameSchema","teamEmailSchema","email","tlds","allow","phoneSchema","emailAddressSchema","emailResponseTimeSchema","emailSchema","object","keys","address","responseTime","onlineUrlSchema","uri","scheme","onlineTextSchema","onlineSchema","url","text","contactSchema","phone","online","submissionGuidanceSchema","privacyNoticeUrlSchema","notificationEmailAddressSchema","authoredAtSchema","date","iso","authorIdSchema","authorDisplayNameSchema","formMetadataInputKeys","title","organisation","teamName","teamEmail","contact","submissionGuidance","privacyNoticeUrl","notificationEmail","formMetadataInputSchema","formMetadataAuthorSchema","id","displayName","formMetadataStateSchema","createdAt","createdBy","updatedAt","updatedBy","formVersionMetadataSchema","versionNumber","number","integer","min","formMetadataSchema","append","slug","draft","live","versions","array","items","optional"],"sources":["../../../../src/form/form-metadata/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport {\n type FormMetadata,\n type FormMetadataAuthor,\n type FormMetadataContact,\n type FormMetadataContactEmail,\n type FormMetadataContactOnline,\n type FormMetadataInput,\n type FormMetadataState,\n type FormVersionMetadata\n} from '~/src/form/form-metadata/types.js'\n\nexport const organisations = [\n 'Animal and Plant Health Agency – APHA',\n 'Centre for Environment, Fisheries and Aquaculture Science – Cefas',\n 'Defra',\n 'Environment Agency',\n 'Forestry Commission',\n 'Marine Management Organisation – MMO',\n 'Natural England',\n 'Rural Payments Agency – RPA',\n 'Veterinary Medicines Directorate – VMD'\n]\n\nexport const idSchema = Joi.string()\n .hex()\n .length(24)\n .required()\n .description(\n 'Unique identifier for the form, 24-character hexadecimal string'\n )\n\nexport const titleSchema = Joi.string()\n .max(250)\n .trim()\n .required()\n .description('Title of the form, displayed to users')\n\nexport const slugSchema = Joi.string()\n .pattern(/^[a-z0-9-]+$/, { name: 'letters, numbers and hyphens only' })\n .required()\n .description('URL-friendly identifier used in form paths')\n\nexport const organisationSchema = Joi.string()\n .valid(...organisations)\n .required()\n .description('Defra organisation responsible for the form')\n\nexport const teamNameSchema = Joi.string()\n .max(100)\n .trim()\n .required()\n .description('Name of the team responsible for the form')\n\nexport const teamEmailSchema = Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .required()\n .description('Contact email for the team responsible for the form')\n\nexport const phoneSchema = Joi.string()\n .trim()\n .description('Phone number for form-related inquiries')\n\nexport const emailAddressSchema = Joi.string()\n .email()\n .trim()\n .required()\n .description('Email address for form-related inquiries')\n\nexport const emailResponseTimeSchema = Joi.string()\n .trim()\n .required()\n .description('Expected response time for email inquiries')\n\nexport const emailSchema = Joi.object<FormMetadataContactEmail>()\n .keys({\n address: emailAddressSchema,\n responseTime: emailResponseTimeSchema\n })\n .description('Email contact details including response expectations')\n\nexport const onlineUrlSchema = Joi.string()\n .uri({\n scheme: ['http', 'https']\n })\n .trim()\n .required()\n .description('URL for online contact method')\n\nexport const onlineTextSchema = Joi.string()\n .trim()\n .required()\n .description('Descriptive text for the online contact link')\n\nexport const onlineSchema = Joi.object<FormMetadataContactOnline>()\n .keys({\n url: onlineUrlSchema,\n text: onlineTextSchema\n })\n .description('Online contact details with URL and descriptive text')\n\nexport const contactSchema = Joi.object<FormMetadataContact>()\n .keys({\n phone: phoneSchema,\n email: emailSchema,\n online: onlineSchema\n })\n .description('Complete contact information for form-related inquiries')\n\nexport const submissionGuidanceSchema = Joi.string()\n .trim()\n .description('Guidance text shown to users when submitting the form')\n\nexport const privacyNoticeUrlSchema = Joi.string()\n .uri({\n scheme: ['http', 'https']\n })\n .trim()\n .description('URL to the privacy notice for this form')\n\nexport const notificationEmailAddressSchema = Joi.string()\n .email()\n .trim()\n .description('Email address to receive form submission notifications')\n\nexport const authoredAtSchema = Joi.date()\n .iso()\n .required()\n .description('ISO format timestamp of when an action occurred')\n\nexport const authorIdSchema = Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the author')\n\nexport const authorDisplayNameSchema = Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the author')\n\nexport const formMetadataInputKeys = {\n title: titleSchema,\n organisation: organisationSchema,\n teamName: teamNameSchema,\n teamEmail: teamEmailSchema,\n contact: contactSchema,\n submissionGuidance: submissionGuidanceSchema,\n privacyNoticeUrl: privacyNoticeUrlSchema,\n notificationEmail: notificationEmailAddressSchema\n}\n\n/**\n * Joi schema for `FormMetadataInput` interface\n * @see {@link FormMetadataInput}\n */\nexport const formMetadataInputSchema = Joi.object<FormMetadataInput>()\n .keys(formMetadataInputKeys)\n .required()\n .description('Input data for creating or updating form metadata')\n\n/**\n * Joi schema for `FormMetadataAuthor` interface\n * @see {@link FormMetadataAuthor}\n */\nexport const formMetadataAuthorSchema = Joi.object<FormMetadataAuthor>()\n .keys({\n id: authorIdSchema,\n displayName: authorDisplayNameSchema\n })\n .required()\n .description('Information about the author of a form or form change')\n\n/**\n * Joi schema for `FormMetadataState` interface\n * @see {@link FormMetadataState}\n */\nexport const formMetadataStateSchema = Joi.object<FormMetadataState>()\n .keys({\n createdAt: authoredAtSchema.description(\n 'When this version was first created'\n ),\n createdBy: formMetadataAuthorSchema.description('Who created this version'),\n updatedAt: authoredAtSchema.description(\n 'When this version was last updated'\n ),\n updatedBy: formMetadataAuthorSchema.description(\n 'Who last updated this version'\n )\n })\n .description('Metadata about a specific version state (draft or live)')\n\n/**\n * Joi schema for `FormVersionMetadata` interface\n * @see {@link FormVersionMetadata}\n */\nexport const formVersionMetadataSchema = Joi.object<FormVersionMetadata>()\n .keys({\n versionNumber: Joi.number()\n .integer()\n .min(1)\n .required()\n .description('The version number'),\n createdAt: authoredAtSchema.description('When this version was created')\n })\n .description('Metadata for a specific version of the form')\n\n/**\n * Joi schema for `FormMetadata` interface\n * @see {@link FormMetadata}\n */\nexport const formMetadataSchema = formMetadataInputSchema\n .append<FormMetadata>({\n id: idSchema,\n slug: slugSchema,\n draft: formMetadataStateSchema.description(\n 'Metadata for the draft version'\n ),\n live: formMetadataStateSchema.description(\n 'Metadata for the published version'\n ),\n createdAt: authoredAtSchema.description('When the form was first created'),\n createdBy: formMetadataAuthorSchema.description('Who created the form'),\n updatedAt: authoredAtSchema.description('When the form was last updated'),\n updatedBy: formMetadataAuthorSchema.description(\n 'Who last updated the form'\n ),\n versions: Joi.array()\n .items(formVersionMetadataSchema)\n .optional()\n .description('Version history for the form')\n })\n .description(\n 'Complete metadata for a form, including version information and authoring details'\n )\n"],"mappings":"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","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-metadata/types.ts"],"sourcesContent":["import { formMetadataSchema } from '~/src/form/form-metadata/index.js'\n\n/**\n * Interface for author (createdBy and updatedBy)\n */\nexport interface FormMetadataAuthor {\n /**\n * The ID of the user\n */\n id: string\n\n /**\n * The display name of the user\n */\n displayName: string\n}\n\n/**\n * Interface for metadata state (draft & live)\n */\nexport interface FormMetadataState {\n /**\n * The date the form state was created\n */\n createdAt: Date\n\n /**\n * The author who created the state\n */\n createdBy: FormMetadataAuthor\n\n /**\n * The date the form state was last updated\n */\n updatedAt: Date\n\n /**\n * The author who last updated the state\n */\n updatedBy: FormMetadataAuthor\n}\n\n/**\n * Interface for email contact details\n */\nexport interface FormMetadataContactEmail {\n /**\n * The email address details for support\n */\n address: string\n\n /**\n * How long it takes to receive a support response\n */\n responseTime: string\n}\n\n/**\n * Interface for online contact details\n */\nexport interface FormMetadataContactOnline {\n /**\n * The url of the online contact link\n */\n url: string\n\n /**\n * The text of the online contact link\n */\n text: string\n}\n\n/**\n * Interface for contact details (phone, email and online)\n */\nexport interface FormMetadataContact {\n /**\n * The phone details for support\n */\n phone?: string\n\n /**\n * The email details for support\n */\n email?: FormMetadataContactEmail\n\n /**\n * The online details for support\n */\n online?: FormMetadataContactOnline\n}\n\n/**\n * Interface for `formMetadataSchema` Joi schema\n * @see {@link formMetadataSchema}\n */\nexport interface FormMetadata {\n /**\n * The id of the form\n */\n id: string\n\n /**\n * The human-readable slug id of the form\n */\n slug: string\n\n /**\n * The human-readable title of the form\n */\n title: string\n\n /**\n * The organisation this form belongs to\n */\n organisation: string\n\n /**\n * The name of the team who own this form\n */\n teamName: string\n\n /**\n * The email of the team who own this form\n */\n teamEmail: string\n /**\n * The contact details of the form\n */\n contact?: FormMetadataContact\n\n /**\n * The guidance text displayed on the form submitted page\n */\n submissionGuidance?: string\n\n /**\n * The url of the privacy notice\n */\n privacyNoticeUrl?: string\n\n /**\n * Email address where form responses are sent\n */\n notificationEmail?: string\n\n /**\n * The draft state of the form\n */\n draft?: FormMetadataState\n\n /**\n * The live state of the form\n */\n live?: FormMetadataState\n\n /**\n * The author who created the form\n */\n createdBy: FormMetadataState['createdBy']\n\n /**\n * The date the form was created\n */\n createdAt: FormMetadataState['createdAt']\n\n /**\n * The author who last updated the form\n */\n updatedBy: FormMetadataState['updatedBy']\n\n /**\n * The date the form was last updated\n */\n updatedAt: FormMetadataState['updatedAt']\n}\n\nexport type FormByIdInput = Pick<FormMetadata, 'id'>\nexport type FormByIDAndPageByIdInput = Pick<FormMetadata, 'id'> & {\n pageId: string\n}\nexport type FormByIDAndPageByIdAndComponentByIdInput = Pick<\n FormMetadata,\n 'id'\n> & {\n pageId: string\n componentId: string\n}\nexport type FormBySlugInput = Pick<FormMetadata, 'slug'>\nexport type FormMetadataDocument = Omit<FormMetadata, 'id'>\nexport type FormMetadataInput = Pick<\n FormMetadata,\n | 'title'\n | 'organisation'\n | 'teamName'\n | 'teamEmail'\n | 'contact'\n | 'submissionGuidance'\n | 'privacyNoticeUrl'\n | 'notificationEmail'\n>\n\nexport interface FormResponse {\n id: FormMetadata['id']\n slug: FormMetadata['slug']\n status: string\n}\n"],"mappings":"","ignoreList":[]}
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-metadata/types.ts"],"sourcesContent":["import { formMetadataSchema } from '~/src/form/form-metadata/index.js'\n\n/**\n * Interface for author (createdBy and updatedBy)\n */\nexport interface FormMetadataAuthor {\n /**\n * The ID of the user\n */\n id: string\n\n /**\n * The display name of the user\n */\n displayName: string\n}\n\n/**\n * Interface for metadata state (draft & live)\n */\nexport interface FormMetadataState {\n /**\n * The date the form state was created\n */\n createdAt: Date\n\n /**\n * The author who created the state\n */\n createdBy: FormMetadataAuthor\n\n /**\n * The date the form state was last updated\n */\n updatedAt: Date\n\n /**\n * The author who last updated the state\n */\n updatedBy: FormMetadataAuthor\n}\n\n/**\n * Interface for email contact details\n */\nexport interface FormMetadataContactEmail {\n /**\n * The email address details for support\n */\n address: string\n\n /**\n * How long it takes to receive a support response\n */\n responseTime: string\n}\n\n/**\n * Interface for online contact details\n */\nexport interface FormMetadataContactOnline {\n /**\n * The url of the online contact link\n */\n url: string\n\n /**\n * The text of the online contact link\n */\n text: string\n}\n\n/**\n * Interface for version metadata stored in form metadata\n */\nexport interface FormVersionMetadata {\n /**\n * The version number\n */\n versionNumber: number\n\n /**\n * When this version was created\n */\n createdAt: Date\n}\n\n/**\n * Interface for contact details (phone, email and online)\n */\nexport interface FormMetadataContact {\n /**\n * The phone details for support\n */\n phone?: string\n\n /**\n * The email details for support\n */\n email?: FormMetadataContactEmail\n\n /**\n * The online details for support\n */\n online?: FormMetadataContactOnline\n}\n\n/**\n * Interface for `formMetadataSchema` Joi schema\n * @see {@link formMetadataSchema}\n */\nexport interface FormMetadata {\n /**\n * The id of the form\n */\n id: string\n\n /**\n * The human-readable slug id of the form\n */\n slug: string\n\n /**\n * The human-readable title of the form\n */\n title: string\n\n /**\n * The organisation this form belongs to\n */\n organisation: string\n\n /**\n * The name of the team who own this form\n */\n teamName: string\n\n /**\n * The email of the team who own this form\n */\n teamEmail: string\n /**\n * The contact details of the form\n */\n contact?: FormMetadataContact\n\n /**\n * The guidance text displayed on the form submitted page\n */\n submissionGuidance?: string\n\n /**\n * The url of the privacy notice\n */\n privacyNoticeUrl?: string\n\n /**\n * Email address where form responses are sent\n */\n notificationEmail?: string\n\n /**\n * The draft state of the form\n */\n draft?: FormMetadataState\n\n /**\n * The live state of the form\n */\n live?: FormMetadataState\n\n /**\n * The author who created the form\n */\n createdBy: FormMetadataState['createdBy']\n\n /**\n * The date the form was created\n */\n createdAt: FormMetadataState['createdAt']\n\n /**\n * The author who last updated the form\n */\n updatedBy: FormMetadataState['updatedBy']\n\n /**\n * The date the form was last updated\n */\n updatedAt: FormMetadataState['updatedAt']\n\n /**\n * Version history for the form\n */\n versions?: FormVersionMetadata[]\n}\n\nexport type FormByIdInput = Pick<FormMetadata, 'id'>\nexport type FormByIDAndPageByIdInput = Pick<FormMetadata, 'id'> & {\n pageId: string\n}\nexport type FormByIDAndPageByIdAndComponentByIdInput = Pick<\n FormMetadata,\n 'id'\n> & {\n pageId: string\n componentId: string\n}\nexport type FormBySlugInput = Pick<FormMetadata, 'slug'>\nexport type FormMetadataDocument = Omit<FormMetadata, 'id'>\nexport type FormMetadataInput = Pick<\n FormMetadata,\n | 'title'\n | 'organisation'\n | 'teamName'\n | 'teamEmail'\n | 'contact'\n | 'submissionGuidance'\n | 'privacyNoticeUrl'\n | 'notificationEmail'\n>\n\nexport interface FormResponse {\n id: FormMetadata['id']\n slug: FormMetadata['slug']\n status: string\n}\n"],"mappings":"","ignoreList":[]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import Joi from 'joi';
|
2
|
-
import { type FormMetadata, type FormMetadataAuthor, type FormMetadataContact, type FormMetadataContactEmail, type FormMetadataContactOnline, type FormMetadataInput, type FormMetadataState } from '../../form/form-metadata/types.js';
|
2
|
+
import { type FormMetadata, type FormMetadataAuthor, type FormMetadataContact, type FormMetadataContactEmail, type FormMetadataContactOnline, type FormMetadataInput, type FormMetadataState, type FormVersionMetadata } from '../../form/form-metadata/types.js';
|
3
3
|
export declare const organisations: string[];
|
4
4
|
export declare const idSchema: Joi.StringSchema<string>;
|
5
5
|
export declare const titleSchema: Joi.StringSchema<string>;
|
@@ -46,6 +46,11 @@ export declare const formMetadataAuthorSchema: Joi.ObjectSchema<FormMetadataAuth
|
|
46
46
|
* @see {@link FormMetadataState}
|
47
47
|
*/
|
48
48
|
export declare const formMetadataStateSchema: Joi.ObjectSchema<FormMetadataState>;
|
49
|
+
/**
|
50
|
+
* Joi schema for `FormVersionMetadata` interface
|
51
|
+
* @see {@link FormVersionMetadata}
|
52
|
+
*/
|
53
|
+
export declare const formVersionMetadataSchema: Joi.ObjectSchema<FormVersionMetadata>;
|
49
54
|
/**
|
50
55
|
* Joi schema for `FormMetadata` interface
|
51
56
|
* @see {@link FormMetadata}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACzB,MAAM,mCAAmC,CAAA;AAE1C,eAAO,MAAM,aAAa,UAUzB,CAAA;AAED,eAAO,MAAM,QAAQ,0BAMlB,CAAA;AAEH,eAAO,MAAM,WAAW,0BAI+B,CAAA;AAEvD,eAAO,MAAM,UAAU,0BAGqC,CAAA;AAE5D,eAAO,MAAM,kBAAkB,0BAG8B,CAAA;AAE7D,eAAO,MAAM,cAAc,0BAIgC,CAAA;AAE3D,eAAO,MAAM,eAAe,0BAIyC,CAAA;AAErE,eAAO,MAAM,WAAW,0BAEiC,CAAA;AAEzD,eAAO,MAAM,kBAAkB,0BAI2B,CAAA;AAE1D,eAAO,MAAM,uBAAuB,0BAGwB,CAAA;AAE5D,eAAO,MAAM,WAAW,4CAK+C,CAAA;AAEvE,eAAO,MAAM,eAAe,0BAMmB,CAAA;AAE/C,eAAO,MAAM,gBAAgB,0BAGiC,CAAA;AAE9D,eAAO,MAAM,YAAY,6CAK6C,CAAA;AAEtE,eAAO,MAAM,aAAa,uCAM+C,CAAA;AAEzE,eAAO,MAAM,wBAAwB,0BAEkC,CAAA;AAEvE,eAAO,MAAM,sBAAsB,0BAKsB,CAAA;AAEzD,eAAO,MAAM,8BAA8B,0BAG6B,CAAA;AAExE,eAAO,MAAM,gBAAgB,sBAGoC,CAAA;AAEjE,eAAO,MAAM,cAAc,0BAGuB,CAAA;AAElD,eAAO,MAAM,uBAAuB,0BAGe,CAAA;AAEnD,eAAO,MAAM,qBAAqB;;;;;;;;;CASjC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,qCAG+B,CAAA;AAEnE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,sCAMkC,CAAA;AAEvE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,qCAaqC,CAAA;AAEzE;;;GAGG;AACH,eAAO,MAAM,yBAAyB,uCASuB,CAAA;AAE7D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,gCAuB5B,CAAA"}
|
@@ -58,6 +58,19 @@ export interface FormMetadataContactOnline {
|
|
58
58
|
*/
|
59
59
|
text: string;
|
60
60
|
}
|
61
|
+
/**
|
62
|
+
* Interface for version metadata stored in form metadata
|
63
|
+
*/
|
64
|
+
export interface FormVersionMetadata {
|
65
|
+
/**
|
66
|
+
* The version number
|
67
|
+
*/
|
68
|
+
versionNumber: number;
|
69
|
+
/**
|
70
|
+
* When this version was created
|
71
|
+
*/
|
72
|
+
createdAt: Date;
|
73
|
+
}
|
61
74
|
/**
|
62
75
|
* Interface for contact details (phone, email and online)
|
63
76
|
*/
|
@@ -144,6 +157,10 @@ export interface FormMetadata {
|
|
144
157
|
* The date the form was last updated
|
145
158
|
*/
|
146
159
|
updatedAt: FormMetadataState['updatedAt'];
|
160
|
+
/**
|
161
|
+
* Version history for the form
|
162
|
+
*/
|
163
|
+
versions?: FormVersionMetadata[];
|
147
164
|
}
|
148
165
|
export type FormByIdInput = Pick<FormMetadata, 'id'>;
|
149
166
|
export type FormByIDAndPageByIdInput = Pick<FormMetadata, 'id'> & {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-metadata/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IAEV;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,EAAE,IAAI,CAAA;IAEf;;OAEG;IACH,SAAS,EAAE,kBAAkB,CAAA;IAE7B;;OAEG;IACH,SAAS,EAAE,IAAI,CAAA;IAEf;;OAEG;IACH,SAAS,EAAE,kBAAkB,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,wBAAwB,CAAA;IAEhC;;OAEG;IACH,MAAM,CAAC,EAAE,yBAAyB,CAAA;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IAEV;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAE7B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;OAEG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAA;IAEzB;;OAEG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAA;IAExB;;OAEG;IACH,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAEzC;;OAEG;IACH,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAEzC;;OAEG;IACH,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAEzC;;OAEG;IACH,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAA;
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-metadata/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -318,6 +318,35 @@
|
|
318
318
|
],
|
319
319
|
"additionalProperties": false,
|
320
320
|
"title": "Updated By"
|
321
|
+
},
|
322
|
+
"versions": {
|
323
|
+
"type": "array",
|
324
|
+
"description": "Version history for the form",
|
325
|
+
"items": {
|
326
|
+
"type": "object",
|
327
|
+
"description": "Metadata for a specific version of the form",
|
328
|
+
"properties": {
|
329
|
+
"versionNumber": {
|
330
|
+
"type": "integer",
|
331
|
+
"description": "The version number",
|
332
|
+
"minimum": 1,
|
333
|
+
"title": "Version Number"
|
334
|
+
},
|
335
|
+
"createdAt": {
|
336
|
+
"type": "string",
|
337
|
+
"description": "When this version was created",
|
338
|
+
"format": "date-time",
|
339
|
+
"title": "Created At"
|
340
|
+
}
|
341
|
+
},
|
342
|
+
"required": [
|
343
|
+
"versionNumber",
|
344
|
+
"createdAt"
|
345
|
+
],
|
346
|
+
"additionalProperties": false,
|
347
|
+
"title": "Versions Item"
|
348
|
+
},
|
349
|
+
"title": "Versions"
|
321
350
|
}
|
322
351
|
},
|
323
352
|
"required": [
|
@@ -7,7 +7,8 @@ import {
|
|
7
7
|
type FormMetadataContactEmail,
|
8
8
|
type FormMetadataContactOnline,
|
9
9
|
type FormMetadataInput,
|
10
|
-
type FormMetadataState
|
10
|
+
type FormMetadataState,
|
11
|
+
type FormVersionMetadata
|
11
12
|
} from '~/src/form/form-metadata/types.js'
|
12
13
|
|
13
14
|
export const organisations = [
|
@@ -190,6 +191,21 @@ export const formMetadataStateSchema = Joi.object<FormMetadataState>()
|
|
190
191
|
})
|
191
192
|
.description('Metadata about a specific version state (draft or live)')
|
192
193
|
|
194
|
+
/**
|
195
|
+
* Joi schema for `FormVersionMetadata` interface
|
196
|
+
* @see {@link FormVersionMetadata}
|
197
|
+
*/
|
198
|
+
export const formVersionMetadataSchema = Joi.object<FormVersionMetadata>()
|
199
|
+
.keys({
|
200
|
+
versionNumber: Joi.number()
|
201
|
+
.integer()
|
202
|
+
.min(1)
|
203
|
+
.required()
|
204
|
+
.description('The version number'),
|
205
|
+
createdAt: authoredAtSchema.description('When this version was created')
|
206
|
+
})
|
207
|
+
.description('Metadata for a specific version of the form')
|
208
|
+
|
193
209
|
/**
|
194
210
|
* Joi schema for `FormMetadata` interface
|
195
211
|
* @see {@link FormMetadata}
|
@@ -207,7 +223,13 @@ export const formMetadataSchema = formMetadataInputSchema
|
|
207
223
|
createdAt: authoredAtSchema.description('When the form was first created'),
|
208
224
|
createdBy: formMetadataAuthorSchema.description('Who created the form'),
|
209
225
|
updatedAt: authoredAtSchema.description('When the form was last updated'),
|
210
|
-
updatedBy: formMetadataAuthorSchema.description(
|
226
|
+
updatedBy: formMetadataAuthorSchema.description(
|
227
|
+
'Who last updated the form'
|
228
|
+
),
|
229
|
+
versions: Joi.array()
|
230
|
+
.items(formVersionMetadataSchema)
|
231
|
+
.optional()
|
232
|
+
.description('Version history for the form')
|
211
233
|
})
|
212
234
|
.description(
|
213
235
|
'Complete metadata for a form, including version information and authoring details'
|
@@ -70,6 +70,21 @@ export interface FormMetadataContactOnline {
|
|
70
70
|
text: string
|
71
71
|
}
|
72
72
|
|
73
|
+
/**
|
74
|
+
* Interface for version metadata stored in form metadata
|
75
|
+
*/
|
76
|
+
export interface FormVersionMetadata {
|
77
|
+
/**
|
78
|
+
* The version number
|
79
|
+
*/
|
80
|
+
versionNumber: number
|
81
|
+
|
82
|
+
/**
|
83
|
+
* When this version was created
|
84
|
+
*/
|
85
|
+
createdAt: Date
|
86
|
+
}
|
87
|
+
|
73
88
|
/**
|
74
89
|
* Interface for contact details (phone, email and online)
|
75
90
|
*/
|
@@ -173,6 +188,11 @@ export interface FormMetadata {
|
|
173
188
|
* The date the form was last updated
|
174
189
|
*/
|
175
190
|
updatedAt: FormMetadataState['updatedAt']
|
191
|
+
|
192
|
+
/**
|
193
|
+
* Version history for the form
|
194
|
+
*/
|
195
|
+
versions?: FormVersionMetadata[]
|
176
196
|
}
|
177
197
|
|
178
198
|
export type FormByIdInput = Pick<FormMetadata, 'id'>
|