@planning-inspectorate/data-model 1.11.0

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.
Files changed (131) hide show
  1. package/.azure/ci.yml +60 -0
  2. package/.azure/release.yml +57 -0
  3. package/.github/dependabot.yml +11 -0
  4. package/.husky/install.mjs +7 -0
  5. package/.husky/pre-commit +1 -0
  6. package/.prettierignore +11 -0
  7. package/.prettierrc +19 -0
  8. package/LICENSE +21 -0
  9. package/README.md +237 -0
  10. package/commitlint.config.js +8 -0
  11. package/docs/README.md +85 -0
  12. package/docs/appeal-document.md +776 -0
  13. package/docs/appeal-event-estimate.md +108 -0
  14. package/docs/appeal-event.md +404 -0
  15. package/docs/appeal-has.md +1960 -0
  16. package/docs/appeal-representation.md +375 -0
  17. package/docs/appeal-s78.md +3607 -0
  18. package/docs/appeal.md +1879 -0
  19. package/docs/case-schedule.md +8 -0
  20. package/docs/dart-response.md +1413 -0
  21. package/docs/employee.md +70 -0
  22. package/docs/entraid.md +108 -0
  23. package/docs/folder.md +147 -0
  24. package/docs/gettimesheets-response.md +188 -0
  25. package/docs/interested-party.md +284 -0
  26. package/docs/listed-building.md +113 -0
  27. package/docs/listed-buildings.md +113 -0
  28. package/docs/nsip-document.md +966 -0
  29. package/docs/nsip-exam-timetable-defs-event.md +223 -0
  30. package/docs/nsip-exam-timetable-defs-line-item.md +51 -0
  31. package/docs/nsip-exam-timetable-defs.md +3 -0
  32. package/docs/nsip-exam-timetable-submission.md +113 -0
  33. package/docs/nsip-exam-timetable.md +352 -0
  34. package/docs/nsip-project-update.md +163 -0
  35. package/docs/nsip-project.md +2098 -0
  36. package/docs/nsip-representation-defs-attachment.md +133 -0
  37. package/docs/nsip-representation-defs.md +3 -0
  38. package/docs/nsip-representation.md +448 -0
  39. package/docs/nsip-subscription.md +193 -0
  40. package/docs/pins-inspector.md +184 -0
  41. package/docs/pins-lpa.md +260 -0
  42. package/docs/s51-advice.md +460 -0
  43. package/docs/service-user.md +575 -0
  44. package/eslint.config.js +21 -0
  45. package/jsconfig.json +12 -0
  46. package/package.json +55 -0
  47. package/pins_data_model/__init__.py +0 -0
  48. package/pins_data_model/gen_models.py +51 -0
  49. package/pins_data_model/load_schemas.py +51 -0
  50. package/pins_data_model/models/__init__.py +0 -0
  51. package/pins_data_model/models/model_appeal_document.py +294 -0
  52. package/pins_data_model/models/model_appeal_event.py +117 -0
  53. package/pins_data_model/models/model_appeal_event_estimate.py +37 -0
  54. package/pins_data_model/models/model_appeal_has.py +585 -0
  55. package/pins_data_model/models/model_appeal_representation.py +132 -0
  56. package/pins_data_model/models/model_appeal_s78.py +864 -0
  57. package/pins_data_model/models/model_case_schedule.py +11 -0
  58. package/pins_data_model/models/model_dart_response.py +292 -0
  59. package/pins_data_model/models/model_entraid.py +37 -0
  60. package/pins_data_model/models/model_folder.py +56 -0
  61. package/pins_data_model/models/model_gettimesheets_response.py +45 -0
  62. package/pins_data_model/models/model_listed_building.py +33 -0
  63. package/pins_data_model/models/model_listed_buildings.py +33 -0
  64. package/pins_data_model/models/model_nsip_document.py +199 -0
  65. package/pins_data_model/models/model_nsip_exam_timetable.py +90 -0
  66. package/pins_data_model/models/model_nsip_project.py +488 -0
  67. package/pins_data_model/models/model_nsip_project_update.py +60 -0
  68. package/pins_data_model/models/model_nsip_representation.py +83 -0
  69. package/pins_data_model/models/model_nsip_subscription.py +60 -0
  70. package/pins_data_model/models/model_pins_inspector.py +53 -0
  71. package/pins_data_model/models/model_pins_lpa.py +69 -0
  72. package/pins_data_model/models/model_s51_advice.py +109 -0
  73. package/pins_data_model/models/model_service_user.py +121 -0
  74. package/requirements.txt +2 -0
  75. package/schemas/__init__.py +0 -0
  76. package/schemas/appeal-document.schema.json +250 -0
  77. package/schemas/appeal-event-estimate.schema.json +31 -0
  78. package/schemas/appeal-event.schema.json +123 -0
  79. package/schemas/appeal-has.schema.json +576 -0
  80. package/schemas/appeal-representation.schema.json +131 -0
  81. package/schemas/appeal-s78.schema.json +1060 -0
  82. package/schemas/commands/__init__.py +0 -0
  83. package/schemas/commands/appeal-common-submission.schema.json +202 -0
  84. package/schemas/commands/appeal-has-submission.schema.json +82 -0
  85. package/schemas/commands/appeal-representation-submission.schema.json +192 -0
  86. package/schemas/commands/appeal-s78-submission.schema.json +100 -0
  87. package/schemas/commands/appellant-submission.schema.json +164 -0
  88. package/schemas/commands/interested-party.schema.json +80 -0
  89. package/schemas/commands/lpa-questionnaire-common.schema.json +110 -0
  90. package/schemas/commands/lpa-questionnaire-has.schema.json +69 -0
  91. package/schemas/commands/lpa-questionnaire-s78.schema.json +218 -0
  92. package/schemas/commands/lpa-questionnaire.schema.json +125 -0
  93. package/schemas/commands/new-deadline-submission.schema.json +59 -0
  94. package/schemas/commands/nsip-exam-timetable-submission.schema.json +27 -0
  95. package/schemas/commands/register-nsip-subscription.schema.json +32 -0
  96. package/schemas/commands/register-representation.schema.json +51 -0
  97. package/schemas/dart-response.schema.json +350 -0
  98. package/schemas/entraid.schema.json +31 -0
  99. package/schemas/folder.schema.json +49 -0
  100. package/schemas/gettimesheets-response.schema.json +46 -0
  101. package/schemas/listed-building.schema.json +31 -0
  102. package/schemas/listed-buildings.schema.json +31 -0
  103. package/schemas/nsip-document.schema.json +235 -0
  104. package/schemas/nsip-exam-timetable.schema.json +101 -0
  105. package/schemas/nsip-project-update.schema.json +49 -0
  106. package/schemas/nsip-project.schema.json +539 -0
  107. package/schemas/nsip-representation.schema.json +110 -0
  108. package/schemas/nsip-subscription.schema.json +52 -0
  109. package/schemas/pins-inspector.schema.json +47 -0
  110. package/schemas/pins-lpa.schema.json +63 -0
  111. package/schemas/s51-advice.schema.json +113 -0
  112. package/schemas/service-user.schema.json +152 -0
  113. package/setup.py +15 -0
  114. package/src/enums.cjs +632 -0
  115. package/src/enums.d.ts +573 -0
  116. package/src/enums.js +573 -0
  117. package/src/gen-docs.js +34 -0
  118. package/src/gen-enums.js +119 -0
  119. package/src/gen-types.js +70 -0
  120. package/src/index.cjs +746 -0
  121. package/src/index.d.ts +18 -0
  122. package/src/index.js +34 -0
  123. package/src/lib/load.js +78 -0
  124. package/src/schemas.d.ts +4570 -0
  125. package/tests/appeals/appeal-event.test.js +62 -0
  126. package/tests/appeals/commands/appeal-representation-submission.test.js +107 -0
  127. package/tests/appeals/commands/has-questionnaire.test.js +92 -0
  128. package/tests/appeals/commands/has-submission.test.js +113 -0
  129. package/tests/appeals/commands/s78-questionnaire.test.js +96 -0
  130. package/tests/appeals/commands/s78-submission.test.js +119 -0
  131. package/tests/schemas.test.js +97 -0
package/src/index.cjs ADDED
@@ -0,0 +1,746 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+ var url = require('url');
5
+ var promises = require('fs/promises');
6
+ var fs = require('fs');
7
+ var jsoncParser = require('jsonc-parser');
8
+
9
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
10
+ /**
11
+ * Load all schemas from a directory and return a map of schema name to parsed schema object.
12
+ *
13
+ * @param {string} dirPath
14
+ * @returns {Promise<Object<string,any>>}
15
+ */
16
+ async function loadSchemas(dirPath) {
17
+ const entries = await promises.readdir(dirPath);
18
+ const schemaFiles = entries.filter(isSchemaFile);
19
+
20
+ /** @type {Object<string,any>} */
21
+ const schemaMap = {};
22
+ await Promise.all(
23
+ schemaFiles.map(async (filePath) => {
24
+ schemaMap[path.basename(filePath)] = await loadSchema(path.join(dirPath, filePath));
25
+ })
26
+ );
27
+ return schemaMap;
28
+ }
29
+
30
+ /**
31
+ * Load the schema file and parse it.
32
+ *
33
+ * @param {string} filePath
34
+ * @returns {Promise<any>}
35
+ */
36
+ async function loadSchema(filePath) {
37
+ const content = await promises.readFile(filePath);
38
+ return jsoncParser.parse(content.toString());
39
+ }
40
+
41
+ /**
42
+ * Does this file path have a schema extension?
43
+ *
44
+ * @param {string} filePath
45
+ * @returns {boolean}
46
+ */
47
+ function isSchemaFile(filePath) {
48
+ const fileName = path.basename(filePath);
49
+ return fileName.endsWith('schema.jsonc') || fileName.endsWith('schema.json');
50
+ }
51
+
52
+ /**
53
+ * Load all schemas from a directory and return a map of schema name to parsed schema object.
54
+ *
55
+ * @param {string} dirPath
56
+ * @returns {Object<string,any>}
57
+ */
58
+ function loadSchemasSync(dirPath) {
59
+ const entries = fs.readdirSync(dirPath);
60
+ const schemaFiles = entries.filter(isSchemaFile);
61
+
62
+ /** @type {Object<string,any>} */
63
+ const initialSchemaMap = {};
64
+
65
+ return schemaFiles.reduce((acc, filePath) => {
66
+ return {
67
+ ...acc,
68
+ [path.basename(filePath)]: loadSchemaSync(path.join(dirPath, filePath))
69
+ };
70
+ }, initialSchemaMap);
71
+ }
72
+
73
+ /**
74
+ * Load the schema file and parse it.
75
+ *
76
+ * @param {string} filePath
77
+ * @returns {any}
78
+ */
79
+ function loadSchemaSync(filePath) {
80
+ const content = fs.readFileSync(filePath);
81
+ return jsoncParser.parse(content.toString());
82
+ }
83
+
84
+ const APPEAL_ALLOCATION_LEVEL = Object.freeze({
85
+ A: 'A',
86
+ B: 'B',
87
+ C: 'C',
88
+ D: 'D',
89
+ E: 'E',
90
+ F: 'F',
91
+ G: 'G',
92
+ H: 'H',
93
+ });
94
+
95
+ const APPEAL_APPELLANT_PROCEDURE_PREFERENCE = Object.freeze({
96
+ HEARING: 'hearing',
97
+ INQUIRY: 'inquiry',
98
+ WRITTEN: 'written',
99
+ });
100
+
101
+ const APPEAL_APPLICATION_DECISION = Object.freeze({
102
+ GRANTED: 'granted',
103
+ NOT_RECEIVED: 'not_received',
104
+ REFUSED: 'refused',
105
+ });
106
+
107
+ const APPEAL_CASE_DECISION_OUTCOME = Object.freeze({
108
+ ALLOWED: 'allowed',
109
+ DISMISSED: 'dismissed',
110
+ INVALID: 'invalid',
111
+ SPLIT_DECISION: 'split_decision',
112
+ });
113
+
114
+ const APPEAL_CASE_PROCEDURE = Object.freeze({
115
+ HEARING: 'hearing',
116
+ INQUIRY: 'inquiry',
117
+ WRITTEN: 'written',
118
+ });
119
+
120
+ const APPEAL_CASE_STAGE = Object.freeze({
121
+ APPEAL_DECISION: 'appeal-decision',
122
+ APPELLANT_CASE: 'appellant-case',
123
+ COSTS: 'costs',
124
+ EVIDENCE: 'evidence',
125
+ FINAL_COMMENTS: 'final-comments',
126
+ INTERNAL: 'internal',
127
+ LPA_QUESTIONNAIRE: 'lpa-questionnaire',
128
+ STATEMENTS: 'statements',
129
+ THIRD_PARTY_COMMENTS: 'third-party-comments',
130
+ WITNESSES: 'witnesses',
131
+ });
132
+
133
+ const APPEAL_CASE_STATUS = Object.freeze({
134
+ ASSIGN_CASE_OFFICER: 'assign_case_officer',
135
+ AWAITING_EVENT: 'awaiting_event',
136
+ AWAITING_TRANSFER: 'awaiting_transfer',
137
+ CLOSED: 'closed',
138
+ COMPLETE: 'complete',
139
+ EVENT: 'event',
140
+ EVIDENCE: 'evidence',
141
+ FINAL_COMMENTS: 'final_comments',
142
+ INVALID: 'invalid',
143
+ ISSUE_DETERMINATION: 'issue_determination',
144
+ LPA_QUESTIONNAIRE: 'lpa_questionnaire',
145
+ READY_TO_START: 'ready_to_start',
146
+ STATEMENTS: 'statements',
147
+ TRANSFERRED: 'transferred',
148
+ VALIDATION: 'validation',
149
+ WITHDRAWN: 'withdrawn',
150
+ WITNESSES: 'witnesses',
151
+ });
152
+
153
+ const APPEAL_CASE_TYPE = Object.freeze({
154
+ C: 'C',
155
+ D: 'D',
156
+ F: 'F',
157
+ G: 'G',
158
+ H: 'H',
159
+ L: 'L',
160
+ Q: 'Q',
161
+ S: 'S',
162
+ V: 'V',
163
+ W: 'W',
164
+ X: 'X',
165
+ Y: 'Y',
166
+ Z: 'Z',
167
+ ZA: 'ZA',
168
+ ZP: 'ZP',
169
+ });
170
+
171
+ const APPEAL_CASE_VALIDATION_OUTCOME = Object.freeze({
172
+ INCOMPLETE: 'incomplete',
173
+ INVALID: 'invalid',
174
+ VALID: 'valid',
175
+ });
176
+
177
+ const APPEAL_DEVELOPMENT_TYPE = Object.freeze({
178
+ CHANGE_OF_USE: 'change-of-use',
179
+ HOUSEHOLDER: 'householder',
180
+ MAJOR_DWELLINGS: 'major-dwellings',
181
+ MAJOR_INDUSTRY_STORAGE: 'major-industry-storage',
182
+ MAJOR_OFFICES: 'major-offices',
183
+ MAJOR_RETAIL_SERVICES: 'major-retail-services',
184
+ MAJOR_TRAVELLER_CARAVAN: 'major-traveller-caravan',
185
+ MINERAL_WORKINGS: 'mineral-workings',
186
+ MINOR_DWELLINGS: 'minor-dwellings',
187
+ MINOR_INDUSTRY_STORAGE: 'minor-industry-storage',
188
+ MINOR_OFFICES: 'minor-offices',
189
+ MINOR_RETAIL_SERVICES: 'minor-retail-services',
190
+ MINOR_TRAVELLER_CARAVAN: 'minor-traveller-caravan',
191
+ OTHER_MAJOR: 'other-major',
192
+ OTHER_MINOR: 'other-minor',
193
+ });
194
+
195
+ const APPEAL_DOCUMENT_TYPE = Object.freeze({
196
+ APPEAL_NOTIFICATION: 'appealNotification',
197
+ APPELLANT_CASE_CORRESPONDENCE: 'appellantCaseCorrespondence',
198
+ APPELLANT_CASE_WITHDRAWAL_LETTER: 'appellantCaseWithdrawalLetter',
199
+ APPELLANT_COSTS_APPLICATION: 'appellantCostsApplication',
200
+ APPELLANT_COSTS_CORRESPONDENCE: 'appellantCostsCorrespondence',
201
+ APPELLANT_COSTS_DECISION_LETTER: 'appellantCostsDecisionLetter',
202
+ APPELLANT_COSTS_WITHDRAWAL: 'appellantCostsWithdrawal',
203
+ APPELLANT_FINAL_COMMENT: 'appellantFinalComment',
204
+ APPELLANT_PROOF_OF_EVIDENCE: 'appellantProofOfEvidence',
205
+ APPELLANT_STATEMENT: 'appellantStatement',
206
+ APPELLANT_WITNESSES_EVIDENCE: 'appellantWitnessesEvidence',
207
+ APPLICATION_DECISION_LETTER: 'applicationDecisionLetter',
208
+ CASE_DECISION_LETTER: 'caseDecisionLetter',
209
+ CHANGED_DESCRIPTION: 'changedDescription',
210
+ COMMUNITY_INFRASTRUCTURE_LEVY: 'communityInfrastructureLevy',
211
+ CONSERVATION_MAP: 'conservationMap',
212
+ CONSULTATION_RESPONSES: 'consultationResponses',
213
+ CROSS_TEAM_CORRESPONDENCE: 'crossTeamCorrespondence',
214
+ DEFINITIVE_MAP_STATEMENT: 'definitiveMapStatement',
215
+ DESIGN_ACCESS_STATEMENT: 'designAccessStatement',
216
+ DEVELOPMENT_PLAN_POLICIES: 'developmentPlanPolicies',
217
+ EIA_ENVIRONMENTAL_STATEMENT: 'eiaEnvironmentalStatement',
218
+ EIA_SCOPING_OPINION: 'eiaScopingOpinion',
219
+ EIA_SCREENING_DIRECTION: 'eiaScreeningDirection',
220
+ EIA_SCREENING_OPINION: 'eiaScreeningOpinion',
221
+ EMERGING_PLAN: 'emergingPlan',
222
+ ENVIRONMENTAL_ASSESSMENT: 'environmentalAssessment',
223
+ HISTORIC_ENGLAND_CONSULTATION: 'historicEnglandConsultation',
224
+ INSPECTOR_CORRESPONDENCE: 'inspectorCorrespondence',
225
+ INTERESTED_PARTY_COMMENT: 'interestedPartyComment',
226
+ LPA_CASE_CORRESPONDENCE: 'lpaCaseCorrespondence',
227
+ LPA_COSTS_APPLICATION: 'lpaCostsApplication',
228
+ LPA_COSTS_CORRESPONDENCE: 'lpaCostsCorrespondence',
229
+ LPA_COSTS_DECISION_LETTER: 'lpaCostsDecisionLetter',
230
+ LPA_COSTS_WITHDRAWAL: 'lpaCostsWithdrawal',
231
+ LPA_FINAL_COMMENT: 'lpaFinalComment',
232
+ LPA_PROOF_OF_EVIDENCE: 'lpaProofOfEvidence',
233
+ LPA_STATEMENT: 'lpaStatement',
234
+ LPA_WITNESSES_EVIDENCE: 'lpaWitnessesEvidence',
235
+ MAIN_PARTY_CORRESPONDENCE: 'mainPartyCorrespondence',
236
+ NEW_PLANS_DRAWINGS: 'newPlansDrawings',
237
+ ORIGINAL_APPLICATION_FORM: 'originalApplicationForm',
238
+ OTHER_NEW_DOCUMENTS: 'otherNewDocuments',
239
+ OTHER_PARTY_REPRESENTATIONS: 'otherPartyRepresentations',
240
+ OTHER_RELEVANT_POLICIES: 'otherRelevantPolicies',
241
+ OWNERSHIP_CERTIFICATE: 'ownershipCertificate',
242
+ PLANNING_OBLIGATION: 'planningObligation',
243
+ PLANNING_OFFICER_REPORT: 'planningOfficerReport',
244
+ PLANS_DRAWINGS: 'plansDrawings',
245
+ RULE_6_PROOF_OF_EVIDENCE: 'rule6ProofOfEvidence',
246
+ RULE_6_STATEMENT: 'rule6Statement',
247
+ RULE_6_WITNESSES_EVIDENCE: 'rule6WitnessesEvidence',
248
+ STATEMENT_COMMON_GROUND: 'statementCommonGround',
249
+ SUPPLEMENTARY_PLANNING: 'supplementaryPlanning',
250
+ TREE_PRESERVATION_PLAN: 'treePreservationPlan',
251
+ UNCATEGORISED: 'uncategorised',
252
+ WHO_NOTIFIED: 'whoNotified',
253
+ WHO_NOTIFIED_LETTER_TO_NEIGHBOURS: 'whoNotifiedLetterToNeighbours',
254
+ WHO_NOTIFIED_PRESS_ADVERT: 'whoNotifiedPressAdvert',
255
+ WHO_NOTIFIED_SITE_NOTICE: 'whoNotifiedSiteNotice',
256
+ });
257
+
258
+ const APPEAL_EIA_DEVELOPMENT_DESCRIPTION = Object.freeze({
259
+ AGRICULTURE_AQUACULTURE: 'agriculture-aquaculture',
260
+ CHANGE_EXTENSIONS: 'change-extensions',
261
+ CHEMICAL_INDUSTRY: 'chemical-industry',
262
+ ENERGY_INDUSTRY: 'energy-industry',
263
+ EXTRACTIVE_INDUSTRY: 'extractive-industry',
264
+ FOOD_INDUSTRY: 'food-industry',
265
+ INFRASTRUCTURE_PROJECTS: 'infrastructure-projects',
266
+ MINERAL_INDUSTRY: 'mineral-industry',
267
+ OTHER_PROJECTS: 'other-projects',
268
+ PRODUCTION_PROCESSING_OF_METALS: 'production-processing-of-metals',
269
+ RUBBER_INDUSTRY: 'rubber-industry',
270
+ TEXTILE_INDUSTRIES: 'textile-industries',
271
+ TOURISM_LEISURE: 'tourism-leisure',
272
+ });
273
+
274
+ const APPEAL_EIA_ENVIRONMENTAL_IMPACT_SCHEDULE = Object.freeze({
275
+ SCHEDULE_1: 'schedule-1',
276
+ SCHEDULE_2: 'schedule-2',
277
+ });
278
+
279
+ const APPEAL_EVENT_STATUS = Object.freeze({
280
+ CHANGE_OF_PROCEDURE: 'change_of_procedure',
281
+ CONFIRMED: 'confirmed',
282
+ IN_ABEYANCE: 'in_abeyance',
283
+ LINK_TO_ENFORCEMENT: 'link_to_enforcement',
284
+ NEW_RESCHEDULED: 'new_rescheduled',
285
+ OFFERED: 'offered',
286
+ POSTPONED: 'postponed',
287
+ WITHDRAWN: 'withdrawn',
288
+ });
289
+
290
+ const APPEAL_EVENT_TYPE = Object.freeze({
291
+ HEARING: 'hearing',
292
+ HEARING_VIRTUAL: 'hearing_virtual',
293
+ IN_HOUSE: 'in_house',
294
+ INQUIRY: 'inquiry',
295
+ INQUIRY_VIRTUAL: 'inquiry_virtual',
296
+ PRE_INQUIRY: 'pre_inquiry',
297
+ PRE_INQUIRY_VIRTUAL: 'pre_inquiry_virtual',
298
+ SITE_VISIT_ACCESS_REQUIRED: 'site_visit_access_required',
299
+ SITE_VISIT_ACCOMPANIED: 'site_visit_accompanied',
300
+ SITE_VISIT_UNACCOMPANIED: 'site_visit_unaccompanied',
301
+ });
302
+
303
+ const APPEAL_INVALID_OR_INCOMPLETE_DETAILS = Object.freeze({
304
+ CONTAINS_LINKS_TO_WEB_PAGES: 'Contains links to web pages',
305
+ DUPLICATED_OR_REPEATED_COMMENT: 'Duplicated or repeated comment',
306
+ INCLUDES_INFLAMMATORY_CONTENT: 'Includes inflammatory content',
307
+ INCLUDES_PERSONAL_OR_MEDICAL_INFORMATION: 'Includes personal or medical information',
308
+ NO_LIST_OF_SUGGESTED_CONDITIONS: 'No list of suggested conditions',
309
+ NOT_RELEVANT_TO_THIS_APPEAL: 'Not relevant to this appeal',
310
+ RECEIVED_AFTER_DEADLINE: 'Received after deadline',
311
+ OTHER_REASON: 'other_reason',
312
+ });
313
+
314
+ const APPEAL_KNOWS_ALL_OWNERS = Object.freeze({
315
+ NO: 'No',
316
+ SOME: 'Some',
317
+ YES: 'Yes',
318
+ });
319
+
320
+ const APPEAL_KNOWS_OTHER_OWNERS = Object.freeze({
321
+ NO: 'No',
322
+ SOME: 'Some',
323
+ YES: 'Yes',
324
+ });
325
+
326
+ const APPEAL_LINKED_CASE_STATUS = Object.freeze({
327
+ CHILD: 'child',
328
+ LEAD: 'lead',
329
+ });
330
+
331
+ const APPEAL_LPA_PROCEDURE_PREFERENCE = Object.freeze({
332
+ HEARING: 'hearing',
333
+ INQUIRY: 'inquiry',
334
+ WRITTEN: 'written',
335
+ });
336
+
337
+ const APPEAL_LPA_QUESTIONNAIRE_VALIDATION_OUTCOME = Object.freeze({
338
+ COMPLETE: 'complete',
339
+ INCOMPLETE: 'incomplete',
340
+ });
341
+
342
+ const APPEAL_NOTIFICATION_METHOD = Object.freeze({
343
+ ADVERT: 'advert',
344
+ LETTER: 'letter',
345
+ NOTICE: 'notice',
346
+ });
347
+
348
+ const APPEAL_ORIGIN = Object.freeze({
349
+ CITIZEN: 'citizen',
350
+ LPA: 'lpa',
351
+ OGD: 'ogd',
352
+ PINS: 'pins',
353
+ });
354
+
355
+ const APPEAL_REDACTED_STATUS = Object.freeze({
356
+ NO_REDACTION_REQUIRED: 'no_redaction_required',
357
+ NOT_REDACTED: 'not_redacted',
358
+ REDACTED: 'redacted',
359
+ });
360
+
361
+ const APPEAL_REPRESENTATION_STATUS = Object.freeze({
362
+ ARCHIVED: 'archived',
363
+ AWAITING_REVIEW: 'awaiting_review',
364
+ DRAFT: 'draft',
365
+ INVALID: 'invalid',
366
+ INVALID_INCOMPLETE: 'invalid_incomplete',
367
+ PUBLISHED: 'published',
368
+ REFERRED: 'referred',
369
+ VALID: 'valid',
370
+ WITHDRAWN: 'withdrawn',
371
+ });
372
+
373
+ const APPEAL_REPRESENTATION_TYPE = Object.freeze({
374
+ COMMENT: 'comment',
375
+ FINAL_COMMENT: 'final_comment',
376
+ PROOFS_EVIDENCE: 'proofs_evidence',
377
+ STATEMENT: 'statement',
378
+ });
379
+
380
+ const APPEAL_SOURCE = Object.freeze({
381
+ CITIZEN: 'citizen',
382
+ LPA: 'lpa',
383
+ });
384
+
385
+ const APPEAL_SOURCE_SYSTEM = Object.freeze({
386
+ ACP: 'acp',
387
+ BACK_OFFICE_APPEALS: 'back-office-appeals',
388
+ HORIZON: 'horizon',
389
+ SHAREPOINT: 'sharepoint',
390
+ });
391
+
392
+ const APPEAL_TYPE_OF_PLANNING_APPLICATION = Object.freeze({
393
+ FULL_APPEAL: 'full-appeal',
394
+ HOUSEHOLDER_PLANNING: 'householder-planning',
395
+ LISTED_BUILDING: 'listed-building',
396
+ MINOR_COMMERCIAL_DEVELOPMENT: 'minor-commercial-development',
397
+ OUTLINE_PLANNING: 'outline-planning',
398
+ PRIOR_APPROVAL: 'prior-approval',
399
+ REMOVAL_OR_VARIATION_OF_CONDITIONS: 'removal-or-variation-of-conditions',
400
+ RESERVED_MATTERS: 'reserved-matters',
401
+ });
402
+
403
+ const APPEAL_VIRUS_CHECK_STATUS = Object.freeze({
404
+ AFFECTED: 'affected',
405
+ NOT_SCANNED: 'not_scanned',
406
+ SCANNED: 'scanned',
407
+ });
408
+
409
+ const CASE_STAGE = Object.freeze({
410
+ 0: '0',
411
+ ACCEPTANCE: 'acceptance',
412
+ CORRESPONDENCE: 'correspondence',
413
+ DECISION: 'decision',
414
+ DEVELOPERS_APPLICATION: 'developers_application',
415
+ DRAFT: 'draft',
416
+ EXAMINATION: 'examination',
417
+ POST_DECISION: 'post_decision',
418
+ PRE_APPLICATION: 'pre-application',
419
+ PRE_EXAMINATION: 'pre-examination',
420
+ RECOMMENDATION: 'recommendation',
421
+ WITHDRAWN: 'withdrawn',
422
+ });
423
+
424
+ const METHOD = Object.freeze({
425
+ EMAIL: 'email',
426
+ FAX: 'fax',
427
+ MEETING: 'meeting',
428
+ PHONE: 'phone',
429
+ POST: 'post',
430
+ });
431
+
432
+ const NSIP_CASE_TYPE = Object.freeze({
433
+ HAS: 'has',
434
+ NSIP: 'nsip',
435
+ });
436
+
437
+ const NSIP_DECISION = Object.freeze({
438
+ APPROVED: 'approved',
439
+ REFUSED: 'refused',
440
+ SPLIT_DECISION: 'split-decision',
441
+ });
442
+
443
+ const NSIP_DOCUMENT_CASE_STAGE = Object.freeze({
444
+ 0: '0',
445
+ ACCEPTANCE: 'acceptance',
446
+ CORRESPONDENCE: 'correspondence',
447
+ DECISION: 'decision',
448
+ DEVELOPERS_APPLICATION: 'developers_application',
449
+ DRAFT: 'draft',
450
+ EXAMINATION: 'examination',
451
+ POST_DECISION: 'post_decision',
452
+ PRE_APPLICATION: 'pre-application',
453
+ PRE_EXAMINATION: 'pre-examination',
454
+ RECOMMENDATION: 'recommendation',
455
+ WITHDRAWN: 'withdrawn',
456
+ });
457
+
458
+ const NSIP_LANGUAGE = Object.freeze({
459
+ ENGLISH: 'English',
460
+ WELSH: 'Welsh',
461
+ });
462
+
463
+ const NSIP_MAP_ZOOM_LEVEL = Object.freeze({
464
+ BOROUGH: 'borough',
465
+ CITY: 'city',
466
+ COUNTRY: 'country',
467
+ COUNTY: 'county',
468
+ DISTRICT: 'district',
469
+ JUNCTION: 'junction',
470
+ NONE: 'none',
471
+ REGION: 'region',
472
+ TOWN: 'town',
473
+ });
474
+
475
+ const NSIP_ORIGIN = Object.freeze({
476
+ CITIZEN: 'citizen',
477
+ LPA: 'lpa',
478
+ OGD: 'ogd',
479
+ PINS: 'pins',
480
+ });
481
+
482
+ const NSIP_PROJECT_TYPE = Object.freeze({
483
+ BC_01_OFFICE_USE: 'BC01 - Office Use',
484
+ BC_02_RESEARCH_AND_DEVELOPMENT_OF_PRODUCTS_OR_PROCESSES: 'BC02 - Research and Development of Products or Processes',
485
+ BC_03_AN_INDUSTRIAL_PROCESS_OR_PROCESSES: 'BC03 - An Industrial Process or Processes',
486
+ BC_04_STORAGE_OR_DISTRIBUTION_OF_GOODS: 'BC04 - Storage or Distribution of Goods',
487
+ BC_05_CONFERENCES: 'BC05 - Conferences',
488
+ BC_06_EXHIBITIONS: 'BC06 - Exhibitions',
489
+ BC_07_SPORT: 'BC07 - Sport',
490
+ BC_08_LEISURE: 'BC08 - Leisure',
491
+ BC_09_TOURISM: 'BC09 - Tourism',
492
+ EN_01_GENERATING_STATIONS: 'EN01 - Generating Stations',
493
+ EN_02_ELECTRIC_LINES: 'EN02 - Electric Lines',
494
+ EN_03_UNDERGROUND_GAS_STORAGE_FACILITIES: 'EN03 - Underground Gas Storage Facilities',
495
+ EN_04_LNG_FACILITIES: 'EN04 - LNG Facilities',
496
+ EN_05_GAS_RECEPTION_FACILITIES: 'EN05 - Gas Reception Facilities',
497
+ EN_06_GAS_TRANSPORTER_PIPE_LINES: 'EN06 - Gas Transporter Pipe-lines',
498
+ EN_07_OTHER_PIPE_LINES: 'EN07 - Other Pipe-lines',
499
+ TR_01_HIGHWAYS: 'TR01 - Highways',
500
+ TR_02_AIRPORTS: 'TR02 - Airports',
501
+ TR_03_HARBOUR_FACILITIES: 'TR03 - Harbour Facilities',
502
+ TR_04_RAILWAYS: 'TR04 - Railways',
503
+ TR_05_RAIL_FREIGHT_INTERCHANGES: 'TR05 - Rail Freight Interchanges',
504
+ WA_01_DAMS_AND_RESERVOIRS: 'WA01 - Dams and Reservoirs',
505
+ WA_02_TRANSFER_OF_WATER_RESOURCES: 'WA02 - Transfer of Water Resources',
506
+ WS_01_HAZARDOUS_WASTE_FACILITIES: 'WS01 - Hazardous Waste Facilities',
507
+ WW_01_WASTE_WATER_TREATMENT_PLANTS: 'WW01 - Waste Water Treatment Plants',
508
+ });
509
+
510
+ const NSIP_PUBLISH_STATUS = Object.freeze({
511
+ PUBLISHED: 'published',
512
+ UNPUBLISHED: 'unpublished',
513
+ });
514
+
515
+ const NSIP_PUBLISHED_STATUS = Object.freeze({
516
+ ARCHIVED: 'archived',
517
+ AWAITING_UPLOAD: 'awaiting_upload',
518
+ CHECKED: 'checked',
519
+ DO_NOT_PUBLISH: 'do_not_publish',
520
+ NOT_CHECKED: 'not_checked',
521
+ PUBLISHED: 'published',
522
+ PUBLISHING: 'publishing',
523
+ READY_TO_PUBLISH: 'ready_to_publish',
524
+ UNPUBLISHED: 'unpublished',
525
+ UNPUBLISHING: 'unpublishing',
526
+ });
527
+
528
+ const NSIP_REDACTED_STATUS = Object.freeze({
529
+ NOT_REDACTED: 'not_redacted',
530
+ REDACTED: 'redacted',
531
+ });
532
+
533
+ const NSIP_REGIONS = Object.freeze({
534
+ EAST_MIDLANDS: 'east_midlands',
535
+ EASTERN: 'eastern',
536
+ LONDON: 'london',
537
+ NORTH_EAST: 'north_east',
538
+ NORTH_WEST: 'north_west',
539
+ SOUTH_EAST: 'south_east',
540
+ SOUTH_WEST: 'south_west',
541
+ WALES: 'wales',
542
+ WEST_MIDLANDS: 'west_midlands',
543
+ YORKSHIRE_AND_THE_HUMBER: 'yorkshire_and_the_humber',
544
+ });
545
+
546
+ const NSIP_REGISTER_FOR = Object.freeze({
547
+ FAMILY_GROUP: 'FAMILY_GROUP',
548
+ ORGANISATION: 'ORGANISATION',
549
+ PERSON: 'PERSON',
550
+ });
551
+
552
+ const NSIP_REPRESENTATION_FROM = Object.freeze({
553
+ AGENT: 'AGENT',
554
+ ORGANISATION: 'ORGANISATION',
555
+ PERSON: 'PERSON',
556
+ });
557
+
558
+ const NSIP_REPRESENTATION_TYPE = Object.freeze({
559
+ ANOTHER_INDIVIDUAL: 'Another Individual',
560
+ LOCAL_AUTHORITIES: 'Local Authorities',
561
+ MEMBERS_OF_THE_PUBLIC_BUSINESSES: 'Members of the Public/Businesses',
562
+ NON_STATUTORY_ORGANISATIONS: 'Non-Statutory Organisations',
563
+ PARISH_COUNCILS: 'Parish Councils',
564
+ PUBLIC_BUSINESSES: 'Public & Businesses',
565
+ STATUTORY_CONSULTEES: 'Statutory Consultees',
566
+ });
567
+
568
+ const NSIP_SECTOR = Object.freeze({
569
+ BC_BUSINESS_AND_COMMERCIAL: 'BC - Business and Commercial',
570
+ EN_ENERGY: 'EN - Energy',
571
+ TR_TRANSPORT: 'TR - Transport',
572
+ WA_WATER: 'WA - Water',
573
+ WS_WASTE: 'WS - Waste',
574
+ WW_WASTE_WATER: 'WW - Waste Water',
575
+ });
576
+
577
+ const NSIP_SECURITY_CLASSIFICATION = Object.freeze({
578
+ OFFICIAL: 'official',
579
+ PUBLIC: 'public',
580
+ SECRET: 'secret',
581
+ TOP_SECRET: 'top-secret',
582
+ });
583
+
584
+ const NSIP_SOURCE_SYSTEM = Object.freeze({
585
+ BACK_OFFICE_APPLICATIONS: 'back-office-applications',
586
+ HORIZON: 'horizon',
587
+ });
588
+
589
+ const NSIP_STAGE = Object.freeze({
590
+ ACCEPTANCE: 'acceptance',
591
+ DECISION: 'decision',
592
+ DRAFT: 'draft',
593
+ EXAMINATION: 'examination',
594
+ POST_DECISION: 'post_decision',
595
+ PRE_APPLICATION: 'pre_application',
596
+ PRE_EXAMINATION: 'pre_examination',
597
+ RECOMMENDATION: 'recommendation',
598
+ WITHDRAWN: 'withdrawn',
599
+ });
600
+
601
+ const NSIP_STATUS = Object.freeze({
602
+ ARCHIVED: 'archived',
603
+ AWAITING_REVIEW: 'awaiting_review',
604
+ DRAFT: 'draft',
605
+ INVALID: 'invalid',
606
+ PUBLISHED: 'published',
607
+ REFERRED: 'referred',
608
+ VALID: 'valid',
609
+ WITHDRAWN: 'withdrawn',
610
+ });
611
+
612
+ const NSIP_SUBSCRIPTION_TYPE = Object.freeze({
613
+ ALL_UPDATES: 'allUpdates',
614
+ APPLICATION_DECIDED: 'applicationDecided',
615
+ APPLICATION_SUBMITTED: 'applicationSubmitted',
616
+ REGISTRATION_OPEN: 'registrationOpen',
617
+ });
618
+
619
+ const NSIP_UPDATE_STATUS = Object.freeze({
620
+ ARCHIVED: 'archived',
621
+ DRAFT: 'draft',
622
+ PUBLISHED: 'published',
623
+ READY_TO_PUBLISH: 'ready-to-publish',
624
+ READY_TO_UNPUBLISH: 'ready-to-unpublish',
625
+ UNPUBLISHED: 'unpublished',
626
+ });
627
+
628
+ const NSIP_VIRUS_CHECK_STATUS = Object.freeze({
629
+ AFFECTED: 'affected',
630
+ NOT_SCANNED: 'not_scanned',
631
+ SCANNED: 'scanned',
632
+ });
633
+
634
+ const REDACTION_STATUS = Object.freeze({
635
+ REDACTED: 'redacted',
636
+ UNREDACTED: 'unredacted',
637
+ });
638
+
639
+ const SERVICE_USER_TYPE = Object.freeze({
640
+ AGENT: 'Agent',
641
+ APPELLANT: 'Appellant',
642
+ APPLICANT: 'Applicant',
643
+ INTERESTED_PARTY: 'InterestedParty',
644
+ REPRESENTATION_CONTACT: 'RepresentationContact',
645
+ RULE_6_PARTY: 'Rule6Party',
646
+ SUBSCRIBER: 'Subscriber',
647
+ });
648
+
649
+ const STATUS = Object.freeze({
650
+ CHECKED: 'checked',
651
+ DONOTPUBLISH: 'donotpublish',
652
+ PUBLISHED: 'published',
653
+ READYTOPUBLISH: 'readytopublish',
654
+ UNCHECKED: 'unchecked',
655
+ });
656
+
657
+ const __dirname$1 = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))));
658
+
659
+ const schemasPath = path.join(__dirname$1, '..', 'schemas');
660
+ const commandsPath = path.join(schemasPath, 'commands');
661
+
662
+ /**
663
+ * Load all schemas from schemas and commands folders
664
+ *
665
+ * @returns {Promise<import('./index.js').LoadedSchemas>}
666
+ */
667
+ async function loadAllSchemas() {
668
+ return {
669
+ schemas: await loadSchemas(schemasPath),
670
+ commands: await loadSchemas(commandsPath)
671
+ };
672
+ }
673
+
674
+ /**
675
+ * Load all schemas from schemas and commands folders
676
+ *
677
+ * @returns {import('./index.js').LoadedSchemas}
678
+ */
679
+ function loadAllSchemasSync() {
680
+ return {
681
+ schemas: loadSchemasSync(schemasPath),
682
+ commands: loadSchemasSync(commandsPath)
683
+ };
684
+ }
685
+
686
+ exports.APPEAL_ALLOCATION_LEVEL = APPEAL_ALLOCATION_LEVEL;
687
+ exports.APPEAL_APPELLANT_PROCEDURE_PREFERENCE = APPEAL_APPELLANT_PROCEDURE_PREFERENCE;
688
+ exports.APPEAL_APPLICATION_DECISION = APPEAL_APPLICATION_DECISION;
689
+ exports.APPEAL_CASE_DECISION_OUTCOME = APPEAL_CASE_DECISION_OUTCOME;
690
+ exports.APPEAL_CASE_PROCEDURE = APPEAL_CASE_PROCEDURE;
691
+ exports.APPEAL_CASE_STAGE = APPEAL_CASE_STAGE;
692
+ exports.APPEAL_CASE_STATUS = APPEAL_CASE_STATUS;
693
+ exports.APPEAL_CASE_TYPE = APPEAL_CASE_TYPE;
694
+ exports.APPEAL_CASE_VALIDATION_OUTCOME = APPEAL_CASE_VALIDATION_OUTCOME;
695
+ exports.APPEAL_DEVELOPMENT_TYPE = APPEAL_DEVELOPMENT_TYPE;
696
+ exports.APPEAL_DOCUMENT_TYPE = APPEAL_DOCUMENT_TYPE;
697
+ exports.APPEAL_EIA_DEVELOPMENT_DESCRIPTION = APPEAL_EIA_DEVELOPMENT_DESCRIPTION;
698
+ exports.APPEAL_EIA_ENVIRONMENTAL_IMPACT_SCHEDULE = APPEAL_EIA_ENVIRONMENTAL_IMPACT_SCHEDULE;
699
+ exports.APPEAL_EVENT_STATUS = APPEAL_EVENT_STATUS;
700
+ exports.APPEAL_EVENT_TYPE = APPEAL_EVENT_TYPE;
701
+ exports.APPEAL_INVALID_OR_INCOMPLETE_DETAILS = APPEAL_INVALID_OR_INCOMPLETE_DETAILS;
702
+ exports.APPEAL_KNOWS_ALL_OWNERS = APPEAL_KNOWS_ALL_OWNERS;
703
+ exports.APPEAL_KNOWS_OTHER_OWNERS = APPEAL_KNOWS_OTHER_OWNERS;
704
+ exports.APPEAL_LINKED_CASE_STATUS = APPEAL_LINKED_CASE_STATUS;
705
+ exports.APPEAL_LPA_PROCEDURE_PREFERENCE = APPEAL_LPA_PROCEDURE_PREFERENCE;
706
+ exports.APPEAL_LPA_QUESTIONNAIRE_VALIDATION_OUTCOME = APPEAL_LPA_QUESTIONNAIRE_VALIDATION_OUTCOME;
707
+ exports.APPEAL_NOTIFICATION_METHOD = APPEAL_NOTIFICATION_METHOD;
708
+ exports.APPEAL_ORIGIN = APPEAL_ORIGIN;
709
+ exports.APPEAL_REDACTED_STATUS = APPEAL_REDACTED_STATUS;
710
+ exports.APPEAL_REPRESENTATION_STATUS = APPEAL_REPRESENTATION_STATUS;
711
+ exports.APPEAL_REPRESENTATION_TYPE = APPEAL_REPRESENTATION_TYPE;
712
+ exports.APPEAL_SOURCE = APPEAL_SOURCE;
713
+ exports.APPEAL_SOURCE_SYSTEM = APPEAL_SOURCE_SYSTEM;
714
+ exports.APPEAL_TYPE_OF_PLANNING_APPLICATION = APPEAL_TYPE_OF_PLANNING_APPLICATION;
715
+ exports.APPEAL_VIRUS_CHECK_STATUS = APPEAL_VIRUS_CHECK_STATUS;
716
+ exports.CASE_STAGE = CASE_STAGE;
717
+ exports.METHOD = METHOD;
718
+ exports.NSIP_CASE_TYPE = NSIP_CASE_TYPE;
719
+ exports.NSIP_DECISION = NSIP_DECISION;
720
+ exports.NSIP_DOCUMENT_CASE_STAGE = NSIP_DOCUMENT_CASE_STAGE;
721
+ exports.NSIP_LANGUAGE = NSIP_LANGUAGE;
722
+ exports.NSIP_MAP_ZOOM_LEVEL = NSIP_MAP_ZOOM_LEVEL;
723
+ exports.NSIP_ORIGIN = NSIP_ORIGIN;
724
+ exports.NSIP_PROJECT_TYPE = NSIP_PROJECT_TYPE;
725
+ exports.NSIP_PUBLISHED_STATUS = NSIP_PUBLISHED_STATUS;
726
+ exports.NSIP_PUBLISH_STATUS = NSIP_PUBLISH_STATUS;
727
+ exports.NSIP_REDACTED_STATUS = NSIP_REDACTED_STATUS;
728
+ exports.NSIP_REGIONS = NSIP_REGIONS;
729
+ exports.NSIP_REGISTER_FOR = NSIP_REGISTER_FOR;
730
+ exports.NSIP_REPRESENTATION_FROM = NSIP_REPRESENTATION_FROM;
731
+ exports.NSIP_REPRESENTATION_TYPE = NSIP_REPRESENTATION_TYPE;
732
+ exports.NSIP_SECTOR = NSIP_SECTOR;
733
+ exports.NSIP_SECURITY_CLASSIFICATION = NSIP_SECURITY_CLASSIFICATION;
734
+ exports.NSIP_SOURCE_SYSTEM = NSIP_SOURCE_SYSTEM;
735
+ exports.NSIP_STAGE = NSIP_STAGE;
736
+ exports.NSIP_STATUS = NSIP_STATUS;
737
+ exports.NSIP_SUBSCRIPTION_TYPE = NSIP_SUBSCRIPTION_TYPE;
738
+ exports.NSIP_UPDATE_STATUS = NSIP_UPDATE_STATUS;
739
+ exports.NSIP_VIRUS_CHECK_STATUS = NSIP_VIRUS_CHECK_STATUS;
740
+ exports.REDACTION_STATUS = REDACTION_STATUS;
741
+ exports.SERVICE_USER_TYPE = SERVICE_USER_TYPE;
742
+ exports.STATUS = STATUS;
743
+ exports.commandsPath = commandsPath;
744
+ exports.loadAllSchemas = loadAllSchemas;
745
+ exports.loadAllSchemasSync = loadAllSchemasSync;
746
+ exports.schemasPath = schemasPath;