Global

Members

(constant) datasetStatusEnum

The values of this enum should match values of the 'status' column in the query in fetchLpaOverview middleware

Source:

(constant) datasets :Map.<string, Dataset>

Map of dataset identifiers to their configuration objects

Type:
Source:

(constant) fetchLocalAuthorities

Fetches a list of local authority names from a specified dataset.

This function queries a dataset for local authorities, extracting a distinct list of names. It performs an HTTP GET request to retrieve the data, then processes the response to return only the names of the local authorities.

Source:

(constant) fetchPaginated

Source:

(constant) fieldToColumnMapping

Source:
Source:

(constant) getDeadlineHistory

Calculates the deadline date and its historical dates (last year's deadline, two years ago's deadline) based on the provided deadline string.

Source:
Example
const deadline = 'XXXX-03-15T14:30:00Z';
const deadlines = getDeadlineHistory(deadline);
console.log(deadlines);
// Output:
// {
//   deadlineDate: <Date>,
//   lastYearDeadline: <Date>,
//   twoYearsAgoDeadline: <Date>
// }

(constant) getIssueDetails

Middleware. Renders the issue details page with the list of issues, entry data, and organisation and dataset details.

Source:

(constant) getIssueField

Returns a data in a format used by the govukSummaryList component.

Source:

(constant) invalidSchemaPaths

Extract invalid schema paths from a validation error

Source:

(constant) isFeatureEnabled

Source:

(constant) makeDatasetSlugToReadableNameFilter

Creates a filter function that takes a dataset slug as input and returns its corresponding readable name. The filter function uses a provided dataset name mapping to look up the readable name.

Source:

(constant) prepareDatasetEndpointIssueTemplateParams

Source:

(constant) prepareGetOrganisationsTemplateParams

Middleware. Updates req with templateParams.

Source:

(constant) prepareTask

Middleware. Updates req.locals with task, field and issueType

Source:

(constant) proto

We wanto to override nunjucks.render() with a function that validates the params against a schema.

Source:

(constant) render

Render a template with validation in non-production environments

If validation error is raised, it's logged and re-thrown.

Motivation: we want to ensure in development/test environments, that the data passed to our templates is valid. This will help us ensure that we're testing the right thing.

Note: Relies on config.environment

Source:

(constant) requiredDatasets :Array.<RequiredDataset>

Type:
Source:

(constant) show404ifNoIssues

Source:

(constant) splitByLeading

Makes sure the 'reference' and 'name' columns come first.

Source:

(constant) statusToTagClassMapping

maps dataset status (as returned by fetchLpaOverview middleware to a CSS class used by the govuk-tag component

Source:

(constant) taskStatus :Object

Type:
  • Object
Source:

(constant) templateSchema

This acts as a registry of template -> schema for convenience.

Source:

(constant) types

Types of logging events.

Use as a value for 'type' entry of info objects

Source:

Methods

aggregateIssues(req, res, next)

Aggregate issues by issue_type into tasks

Updates req with aggregatedTasks: Map<string, task> (keys are composites of issue type and field), and tasks array.

Parameters:
Name Type Description
req *

request

res *

response

next *

next function

Source:

attachFileToIssue(issueKey, file) → {Promise}

Attaches a file to an existing JIRA issue.

Parameters:
Name Type Description
issueKey string

The key of the issue to which the file will be attached.

file File

The file to be attached to the issue.

Source:
Throws:
  • Throws an error if JIRA_URL, JIRA_BASIC_AUTH, or JIRA_SERVICE_DESK_ID are not set.
Type
Error
Returns:
  • A promise that resolves to the response of the JIRA API.
Type
Promise

availableDatasets(dataSubjects) → {Array.<Dataset>}

Gets the list of available datasets sorted by display text

Parameters:
Name Type Description
dataSubjects Object

Data subjects configuration object

Source:
Returns:

Array of available datasets sorted by text property

Type
Array.<Dataset>

Returns the deep link to the check tool for a given dataset and organisation

Parameters:
Name Type Description
organisation Object
dataset Object
Source:
Returns:
Type
string

createCustomerRequest(summary, description, requestTypeId) → {Promise}

Creates a customer request in JIRA Service Desk.

Parameters:
Name Type Description
summary string

The summary of the customer request.

description string

The description of the customer request.

requestTypeId string

The ID of the request type.

Source:
Throws:
  • Throws an error if JIRA_URL, JIRA_BASIC_AUTH, or JIRA_SERVICE_DESK_ID are not set.
Type
Error
Returns:
  • A promise that resolves to the response of the JIRA API.
Type
Promise

Returns the deep link to the endpoint submission form for a given dataset and organisation

Parameters:
Name Type Description
organisation Object
dataset Object
Source:
Returns:
Type
string

(async) fetchBatched(options) → {Promise.<Array.<Array.<Object>>>}

Given a task factor function, executes a number of async tasks in parallel, but only at most options.concurrency tasks are in flight.

Note: the tasks should be IO bound.

If any of the tasks fail, the whole operation fails (in other words: no partial results).

Parameters:
Name Type Description
options Object
Source:
Returns:
Type
Promise.<Array.<Array.<Object>>>

(async) fetchDatasetTypology(req, res, next)

Middleware to fetch typology of dataset.

Parameters:
Name Type Description
req *

request object

res *

response object

next *

next middleware function

Source:

fetchResponseDetails(req, res, next) → {Promise.<void>}

Parameters:
Name Type Description
req RequestWithDetails

Request object

res Object

Response object

next function

Next middleware function

Source:
Returns:
Type
Promise.<void>

(async) fetchResponseDetails(pageOffsetopt, limitopt, optsopt) → {Promise.<ResponseDetails>}

Fetches check results details, optionally filtered by issue (type and field), or severity (but not both).

Parameters:
Name Type Attributes Default Description
pageOffset number <optional>
0

Zero based page offset

limit number <optional>
50

Results per page limit

opts Object <optional>

Filter options

Properties
Name Type Attributes Description
severity string <optional>

Filter by severity

issue Object <optional>

Filter by issue

Properties
Name Type Attributes Description
issueType string <optional>

Issue type to filter by

field string <optional>

Field to filter by

Source:
Returns:

Response details

Type
Promise.<ResponseDetails>

formatData(columns, rows) → {Array.<object>}

Formats an array of rows into an easier to access format, where each row is an object with column names as keys.

Parameters:
Name Type Description
columns Array.<string>

An array of column names

rows Array.<Array.<any>>

A 2D array of row data, where each inner array represents a row

Source:
Returns:
  • An array of objects, where each object represents a row with column names as keys
Type
Array.<object>

getBlockingTasks(req, res, next)

Middleware. Updates req.locals with tasksBlocking and potentially updates req.aggregatedTasks map with entries for missing columns.

Parameters:
Name Type Description
req Object

Express request object

Properties
Name Type Description
aggregatedTasks Map.<string, Object>

Map of tasks

res Object

Response object

next function

Next middleware function

Source:

getColumnFieldLog() → {Array.<any>}

Source:
Returns:
Type
Array.<any>

getColumnFieldLog() → {Array.<Object>}

Source:
Returns:
Type
Array.<Object>

getFields() → {Array.<string>}

Returns a collection of field names, where each name is either a column name from input data or field name from the column field log. The resulting collection includes fields that the submitted data might be missing.

Note: fields are converted_row.column | columnFieldLog.field

Source:
Returns:
Type
Array.<string>

getFileNameOrUrlAndCheckedTime(req, res, next)

Middleware to extract file name, URL, and checked time from the request data. Updates req.locals.uploadInfo with the extracted information.

Parameters:
Name Type Description
req module:express~Request

The request object.

res module:express~Response

The response object.

next module:express~NextFunction

The next middleware function.

Source:

getGeometries() → {Array.<any>|undefined}

Returns array of geometries when available, undefined otherwise.

Source:
Returns:
Type
Array.<any> | undefined

getLastPage(req) → (nullable) {string}

Attempts to infer how we ended up on this page.

Parameters:
Name Type Description
req
Source:
Returns:
Type
string

Returns navigation links based on the provided page names and current URL.

Parameters:
Name Type Description
currentUrl string

The current URL.

links Array.<string>

An array of page names for the links.

Source:
Returns:

An array of navigation link objects.

Type
Array.<object>

getPagination(pageNumber, optsopt) → {PaginationResult}

Get pagination details for the current response

Parameters:
Name Type Attributes Description
pageNumber number
opts PaginationOptions <optional>

Pagination options

Source:
Returns:

Pagination result object

Type
PaginationResult

getRowsWithVerboseColumns(filterNonErrorsopt) → {Array.<object>}

Returns an array of rows with verbose columns, optionally filtering out rows without errors.

Parameters:
Name Type Attributes Default Description
filterNonErrors boolean <optional>
false

If true, only return rows that have at least one error.

Source:
Returns:

An array of rows with verbose columns, each containing:

  • entryNumber: the entry number of the row
  • hasErrors: a boolean indicating whether the row has any errors
  • columns: an array of verbose column details, each containing:
    • key: the column key
    • value: the column value
    • column: the column name
    • field: the field name
    • error: an error message if data was missing
Type
Array.<object>

getTasksByLevel(req, level, status)

Parameters:
Name Type Description
req *

request

level number

criteria level

status Status

status meta data

Source:

getVerboseColumns(row, columnFieldLog) → {Array.<Object>}

Returns an array of verbose column objects from a given row and column field log.

If either the column field log or issue logs are missing, returns a fallback array with warnings logged for missing data.

Parameters:
Name Type Description
row Object

The row object containing converted row data and issue logs.

columnFieldLog Object

The column field log object.

Source:
Returns:

An array of verbose column objects, each containing:

  • key: the column key
  • value: the column value
  • column: the column name
  • field: the field name
  • error: an error message if data was missing
Type
Array.<Object>

initialiseMessages()

Reads messages from CSV files and populates messages map.

Source:

initiateJsHiddenChecks()

Initiates checks for elements with the class 'js-hidden' and updates their display and visibility styles accordingly.

When an element gains the 'js-hidden' class, its display and visibility styles are set to 'none' and 'hidden', respectively. When an element loses the 'js-hidden' class, its display and visibility styles are reset to their default values.

This function also hides any elements that already have the 'js-hidden' class when it is called.

Source:

lpaOverviewQuery(lpa, params) → {string}

Generates a query for LPA overview data

Parameters:
Name Type Description
lpa string

The LPA identifier

params Object

Query parameters

Properties
Name Type Description
datasetsFilter Array.<string>

List of dataset names to filter by

entityCounts Array.<Object>

Array of entity count objects

Properties
Name Type Attributes Description
dataset string

Dataset name

resource string

Resource identifier

entityCount number <optional>

Optional entity count

Source:
Returns:

The generated SQL query

Type
string

makeTaskParam(req, options) → {Object}

Parameters:
Name Type Description
req Object

Express request object

options Object

Task options

Properties
Name Type Attributes Description
taskMessage string

Task message text

status Status

Status object

issueType string <optional>

Issue type

field string <optional>

Field name

Source:
Returns:

Task parameter object

Type
Object

maybeSetReferrer(req, sessionData)

Potentially updates sessionData with 'referrer'

Parameters:
Name Type Description
req
sessionData
Source:

maybeSetReferrer(req, sessionData)

Potentially updates sessionData with 'referrer'

Parameters:
Name Type Description
req
sessionData
Source:

(generator) offsets(limit, offset, maxOffset)

Returns a generator of offset values.

Parameters:
Name Type Description
limit number
offset number
maxOffset number
Source:

(async) postRequest(formData) → {Promise.<string>}

POSTs a requeset to the 'publish' API.

Parameters:
Name Type Description
formData *
Source:
Returns:

uuid - unique id of the uploaded file

Type
Promise.<string>

prepareEntity(req, res, next)

Updates req with entry object.

  • takes an issueEntity (based on current pageNumber)
  • selects issues for that entity
  • creates a map of field names to objects (in shape required by govuk component)
  • decorates (with some HTML markup) data in those objects if the field has issues
  • potentially extracts geometry from the entity
Parameters:
Name Type Description
req Object

request object

res Object

response object

next function

next function

Source:

referencePopup(options) → {string}

Contents of a popup element shows when user clicks on a geometry (point or polygon).

Parameters:
Name Type Description
options Object
Properties
Name Type Attributes Description
dataset string <optional>

dataset

reference string <optional>

reference, can be a HTML string

name string <optional>

name

Source:
Returns:
Type
string

requiresGeometryTypeToBeSelected(req) → {boolean}

Parameters:
Name Type Description
req Object
Source:
Returns:
Type
boolean
Parameters:
Name Type Description
req Object

The HTTP request object.

Source:
Returns:
Type
boolean

schemaIssues(error) → {Array.<Object>|Array.<string>|string}

Takes an Error and if it's a ValiError, returns an array of issue summaries (with paths). Empty array otherwise.

Useful to show the schema issues in a consise way.

Parameters:
Name Type Description
error Error

The error to check for schema issues

Source:
Returns:
  • Array of issue objects with path and message properties

    Type
    Array.<Object>
  • returns[].path - The path to the issue

    Type
    Array.<string>
  • returns[].message - The error message

    Type
    string

setPagination()

Source:

setupNunjucks(config) → {Object}

Setup Nunjucks template engine with custom configuration

Parameters:
Name Type Description
config Object

Configuration object

Properties
Name Type Attributes Description
app Object <optional>

Express application instance

datasetNameMapping Object

Dataset name mapping object

Source:
Returns:

Configured Nunjucks instance

Type
Object

setupTableParams(req, res, next) → {void}

Parameters:
Name Type Description
req RequestWithDetails

Request object

res Object

Response object

next function

Next middleware function

Source:
Returns:
Type
void

startRequests(numTasks, gen, taskFactory) → {Array.<Promise>}

Parameters:
Name Type Description
numTasks number

max number of tasks to run

gen Object

offset generator

taskFactory function

(taskIndex, offset) => Promise<>

Source:
Returns:
Type
Array.<Promise>

validationErrorMessage(error, template)

Creates an error message from the given error

Parameters:
Name Type Description
error ValiError

validation error

template string

template name

Source:
Returns:

string

If we arrived at the page via deep from another page, we'll use that page as the back link.

Parameters:
Name Type Description
url string

current page URL

deepLinkInfo Object

deep link info from the session

Properties
Name Type Attributes Description
referrer string <optional>

optional referrer URL

dataset string

dataset name

Source:
Returns:

back link URL

Type
string | undefined

Type Definitions

ConfigSchema

Type:
  • Object
Source:

Dataset

Type:
  • Object
Properties:
Name Type Attributes Description
status string

One of: 'Not submitted', 'Error', 'Needs fixing', 'Warning', 'Live'

endpoint string
issue_count number
error string <nullable>
Source:

Dataset

Type:
  • Object
Properties:
Name Type Attributes Description
value string

Dataset value/identifier

text string

Display text for the dataset

available boolean

Whether the dataset is available

dataSubject string

The data subject this dataset belongs to

requiresGeometryTypeSelection boolean <optional>

Whether geometry type selection is required

Source:

DatasetInfo

Properties:
Name Type Description
name string

Full name of the dataset

dataset string

Short name of the dataset (aka 'slug')

Source:

DetailsOptions

Type:
  • Object
Properties:
Name Type Attributes Description
severity string <optional>

Severity filter

issue Object <optional>

Issue filter

Properties
Name Type Description
issueType string

Issue type

field string

Field name

Source:

Issue

Properties:
Name Type Description
status string
issue_type string
field string
Source:

LeadingTrailingSplit

Type:
  • Object
Properties:
Name Type Description
leading Array.<string>
trailing Array.<string>
Source:

LpaOverview

Type:
  • Object
Properties:
Name Type Description
datasets Object.<string, Dataset>

Map of dataset names to Dataset objects

Source:

MapGeometry

Type:
  • Object
Properties:
Name Type Attributes Description
geo string
reference string <optional>
name string <optional>
Source:

MapOptions

Options for creating a Map instance.

Type:
  • Object
Properties:
Name Type Attributes Description
containerId string

Required - The ID of the HTML container element for the map.

data Array.<string> | Array.<MapGeometry>

Required - An array of URLs or WKT geometries to be added to the map.

boundaryGeoJsonUrl string <optional>

Optional - The URL of the boundary GeoJSON to be added to the map.

interactive boolean <optional>

Optional - Indicates whether the map should be interactive. Default is true.

wktFormat boolean <optional>

Optional - Indicates whether the data is in WKT format. Default is false.

boundingBox Array.<number> <optional>

Optional - The bounding box coordinates [minX, minY, maxX, maxY] to set the initial view of the map.

Source:

OrgInfo

Properties:
Name Type Description
name string

Full name of the organisation

organisation string
Source:

PaginationItem

Type:
  • Object
Properties:
Name Type Attributes Description
href string

Link URL

ellipsis boolean <optional>

Whether this is an ellipsis item

Source:

PaginationOptions

Type:
  • Object
Properties:
Name Type Attributes Description
hash string <optional>

Hash option (should include the '#' character)

href function <optional>

Function to generate href (item: number) => string

Source:

PaginationResult

Type:
  • Object
Properties:
Name Type Description
totalResults number

Total number of results

offset number

Current offset

limit number

Results per page limit

currentPage number

Current page number

nextPage number | null

Next page number or null

previousPage number | null

Previous page number or null

totalPages number

Total number of pages

items Array.<{href: string}>

Pagination items with hrefs

Source:

RequestWithDetails

Type:
  • Object
Properties:
Name Type Description
parsedParams Object
locals Object

Request locals

Properties
Name Type Attributes Description
requestData Object
responseDetails Object
template string
detailsOptions DetailsOptions <optional>

Details options

Source:

RequiredDataset

Type:
  • Object
Properties:
Name Type Description
dataset string

The dataset identifier

deadline string

The deadline pattern in ISO format with YYYY placeholder

noticePeriod number

Number of months before deadline to show notice

Source:

Source

Properties:
Name Type Description
endpoint string
endpoint_url string
status number | null
exception string
latest_log_entry_date string
resource_start_date string
documentation_url string
Source:

Status

Type:
  • Object
Properties:
Name Type Description
text string

Status text

link boolean

Whether status has a link

colour string

Status color

Source:

SummaryItem

Type:
  • Object
Properties:
Name Type Description
key Object
Properties
Name Type Description
text string
value Object
Properties
Name Type Description
html string
originalValue string | undefined
classes string
Source:

TaskMessageOptions

Type:
  • Object
Properties:
Name Type Attributes Description
issue_type string

Type of issue

num_issues number

Number of issues

rowCount number

Total row count

field string

Field name

format 'html' | 'text' <optional>

Output format

dataset string <optional>

Dataset name for dataset-specific messages

Source: