Skip to content

Commit

Permalink
Add build files for @next
Browse files Browse the repository at this point in the history
  • Loading branch information
jessicamcinchak committed Dec 3, 2024
1 parent c61cec2 commit 9b271c5
Show file tree
Hide file tree
Showing 9 changed files with 386 additions and 0 deletions.
102 changes: 102 additions & 0 deletions @next/types/shared/Addresses.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
/**
* @description Address information available for any site, whether existing or proposed
*/
export interface SiteAddress {
/**
* @description Single line address description
*/
title: string;
/**
* @description Easting coordinate in British National Grid (OSGB36)
*/
x: number;
/**
* @description Northing coordinate in British National Grid (OSGB36)
*/
y: number;
/**
* @description Latitude coordinate in EPSG:4326 (WGS84)
*/
latitude: number;
/**
* @description Longitude coordinate in EPSG:4326 (WGS84)
*/
longitude: number;
}

/**
* @title #ProposedAddress
* @description Address information for sites without a known Unique Property Reference Number (UPRN)
*/
export interface ProposedAddress extends SiteAddress {
source: 'Proposed by applicant';
}

/**
* @title #OSAddress
* @description Address information for sites with a known address sourced from Ordnance Survey AddressBase Premium LPI source
*/
export interface OSAddress extends SiteAddress {
/**
* @title Unique Property Reference Number
* @maxLength 12
*/
uprn: string;
/**
* @title Unique Street Reference Number
* @maxLength 8
*/
usrn: string;
/**
* @title Primary Addressable Object (PAO) start range and/or building description
* @description Combined `PAO_START_NUMBER`, `PAO_START_SUFFIX`, `PAO_TEXT` OS LPI properties
*/
pao: string;
/**
* @title Primary Addressable Object (PAO) end range
* @description Combined `PAO_END_NUMBER`, `PAO_END_SUFFIX` OS LPI properties
*/
paoEnd?: string;
/**
* @title Secondary Addressable Object (SAO) start range and/or building description
* @description Combined `SAO_START_NUMBER`, `SAO_START_SUFFIX`, `SAO_TEXT` OS LPI properties
*/
sao?: string;
/**
* @title Secondary Addressable Object (SAO) end range
* @description Combined `SAO_END_NUMBER`, `SAO_END_SUFFIX` OS LPI properties
*/
saoEnd?: string;
street: string;
town: string;
postcode: string;
organisation?: string;
singleLine: string;
source: 'Ordnance Survey';
}

/**
* @description Address information for a person associated with this application not at the property address
*/
export interface Address {
line1: string;
line2?: string;
town: string;
county?: string;
postcode: string;
country?: string;
}

/**
* @title #UserAddress
* @description Address information for the applicant
*/
export type UserAddress = {sameAsSiteAddress: true} | UserAddressNotSameSite;

/**
* @title #UserAddressNotSameSite
* @description Address information for an applicant with contact information that differs from the property address
*/
export interface UserAddressNotSameSite extends Address {
sameAsSiteAddress: false;
}
7 changes: 7 additions & 0 deletions @next/types/shared/Boundaries.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import {GeoJSON} from 'geojson';
import {Area} from './utils';

export type GeoBoundary = {
site: GeoJSON;
area: Area;
};
44 changes: 44 additions & 0 deletions @next/types/shared/Constraints.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import {URL} from './utils';

type PlanningDataSource = {
text: 'Planning Data';
url: URL;
};

type OSRoadsSource = {
text: 'Ordnance Survey MasterMap Highways';
};

export type Entity = {
name: string;
description?: string;
source: PlanningDataSource | OSRoadsSource;
};

type BasePlanningConstraint = {
value: string;
description: string;
};

/**
* @description A planning constraint that does not intersect with the proposed site, per the DE-9IM spatial relationship definition of intersects
*/
type NonIntersectingPlanningConstraint = {
intersects: false;
} & BasePlanningConstraint;

/**
* @description A planning constraint that does intersect with the proposed site, per the DE-9IM spatial relationship definition of intersects
*/
type IntersectingPlanningConstraint = {
intersects: true;
entities: Entity[];
} & BasePlanningConstraint;

/**
* @title #PlanningConstraint
* @description Planning constraints that intersect with the proposed site
*/
export type PlanningConstraint =
| NonIntersectingPlanningConstraint
| IntersectingPlanningConstraint;
20 changes: 20 additions & 0 deletions @next/types/shared/Contacts.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import {Email} from './utils';

/**
* @title #ContactDetails
* @description Contact details for a person associated with this application
*/
export type ContactDetails = {
name: {
title?: string;
first: string;
last: string;
};
email: Email;
phone: {
primary: string;
};
company?: {
name: string;
};
};
16 changes: 16 additions & 0 deletions @next/types/shared/Declarations.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/**
* @title #Declaration
* @description Declarations about the accuracy of this application and any personal connections to the receiving authority
*/
export interface Declaration {
accurate: boolean;
connection: {
value:
| 'employee'
| 'relation.employee'
| 'electedMember'
| 'relation.electedMember'
| 'none';
description?: string;
};
}
106 changes: 106 additions & 0 deletions @next/types/shared/Fees.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
/**
* @title #FeeNotApplicable
* @description An indicator that an application fee does not apply to this application type or journey
*/
export interface FeeNotApplicable {
notApplicable: true;
}

/**
* @title #Fee
* @description The costs associated with this application
*/
export interface Fee {
/**
* @description Total calculated fee in GBP
*/
calculated: number;
/**
* @description Total payable fee after any exemptions or reductions in GBP
*/
payable: number;
/**
* @description Breakdown of calculated fee in GBP by category of development, based on the scales defined in The Town and Country Planning Regulations https://www.legislation.gov.uk/uksi/2012/2920/schedule/1/part/2
*/
category?: {
/**
* @description Category 1 - New homes
*/
one?: number;
/**
* @description Category 2 - Other new buildings
*/
two?: number;
/**
* @description Category 3 - Agricultural buildings
*/
three?: number;
/**
* @description Category 4 - Glasshouses on agricultural land
*/
four?: number;
/**
* @description Category 5 - Plant equipment or machinery
*/
five?: number;
/**
* @description Category 6 and 7 - Home or curtilage of home
*/
sixAndSeven?: number;
/**
* @description Category 8 - Car parks or access roads
*/
eight?: number;
/**
* @description Category 9 - Exploratory drilling
*/
nine?: number;
/**
* @description Category 10 - Winning and working of oil or natural gas
*/
ten?: number;
eleven?: {
/**
* @description Category 11(1) - Mining operations
*/
one?: number;
/**
* @description Category 11(2) - Other operations
*/
two?: number;
};
twelve?: {
/**
* @description Category 12(1) - Change of use from single home to homes
*/
one?: number;
/**
* @description Category 12(2) - Change of use to home
*/
two?: number;
};
/**
* @description Category 13 - Waste disposal
*/
thirteen?: number;
/**
* @description Category 14 - Other change of use
*/
fourteen?: number;
};
exemption: {
disability: boolean; // @todo add application.fee.exemption.disability.reason
resubmission: boolean; // @todo add application.resubmission.original.applicationReference & application.resubmission.originalReference.appeal
};
reduction: {
alternative: boolean;
parishCouncil: boolean;
sports: boolean;
};
reference?: {
/**
* @description GOV.UK Pay payment reference number
*/
govPay: string; // @todo require when payable > 0
};
}
10 changes: 10 additions & 0 deletions @next/types/shared/Materials.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export type Materials = {
boundary?: string;
door?: string;
lighting?: string;
roof?: string;
surface?: string;
wall?: string;
window?: string;
other?: string;
};
67 changes: 67 additions & 0 deletions @next/types/shared/Ownership.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import {Address} from './Addresses';
import {Date} from './utils';

export type OwnersInterest = 'owner' | 'lessee' | 'occupier' | 'other';

/**
* @title #Ownership
* @description Information about the ownership certificate and property owners, if different than the applicant
*/
export interface Ownership {
interest?: OwnersInterest | 'owner.sole' | 'owner.co';
certificate?: 'a' | 'b' | 'c' | 'd';
/**
* @description Does the land have any agricultural tenants?
*/
agriculturalTenants?: boolean;
/**
* @description Has requisite notice been given to all the known owners and agricultural tenants?
*/
noticeGiven?: boolean;
/**
* @description Has a notice of the application been published in a newspaper circulating in the area where the land is situated?
*/
noticePublished?: {
status: boolean;
date?: Date;
newspaperName?: string;
};
/**
* @description Do you know the names and addresses of all owners and agricultural tenants?
*/
ownersKnown?: 'all' | 'some' | 'none';
owners?: Owners[];
/**
* @description Declaration of the accuracy of the ownership certificate, including reasonable steps taken to find all owners and publish notice
*/
declaration?: {
accurate: true;
};
}

/**
* @title #Owners
* @description Names and addresses of all known owners and agricultural tenants who are not the applicant, including confirmation or date of notice, or reason requisite notice has not been given if applicable
*/
export type Owners = OwnersNoticeGiven | OwnersNoNoticeGiven | OwnersNoticeDate;

export interface BaseOwners {
name: string;
address: Address | string;
interest?: OwnersInterest;
}

// LDC requires `noticeGiven`, and `noNoticeReason` if false
export interface OwnersNoticeGiven extends BaseOwners {
noticeGiven: true;
}

export interface OwnersNoNoticeGiven extends BaseOwners {
noticeGiven: false;
noNoticeReason: string;
}

// PP & LBC require `noticeDate`
export interface OwnersNoticeDate extends BaseOwners {
noticeDate: Date;
}
14 changes: 14 additions & 0 deletions @next/types/shared/Regions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
* @title #Region
* @description The region in England that contains this address sourced from planning.data.gov.uk/dataset/region, where London is a proxy for the Greater London Authority (GLA) area
*/
export type Region =
| 'North East'
| 'North West'
| 'Yorkshire and The Humber'
| 'East Midlands'
| 'West Midlands'
| 'East of England'
| 'London'
| 'South East'
| 'South West';

0 comments on commit 9b271c5

Please sign in to comment.