@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.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import * as Schemas from './schemas';
2
+ export * from './enums';
3
+
4
+ export interface LoadedSchemas {
5
+ schemas: {
6
+ [name: string]: any;
7
+ };
8
+ commands: {
9
+ [name: string]: any;
10
+ };
11
+ }
12
+
13
+ export const schemasPath: string;
14
+ export const commandsPath: string;
15
+ export function loadAllSchemas(): Promise<LoadedSchemas>;
16
+ export function loadAllSchemasSync(): LoadedSchemas;
17
+
18
+ export { Schemas };
package/src/index.js ADDED
@@ -0,0 +1,34 @@
1
+ import path from 'path';
2
+ import url from 'url';
3
+ import { loadSchemas, loadSchemasSync } from './lib/load.js';
4
+
5
+ const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
6
+
7
+ export * from './enums.js';
8
+
9
+ export const schemasPath = path.join(__dirname, '..', 'schemas');
10
+ export const commandsPath = path.join(schemasPath, 'commands');
11
+
12
+ /**
13
+ * Load all schemas from schemas and commands folders
14
+ *
15
+ * @returns {Promise<import('./index.js').LoadedSchemas>}
16
+ */
17
+ export async function loadAllSchemas() {
18
+ return {
19
+ schemas: await loadSchemas(schemasPath),
20
+ commands: await loadSchemas(commandsPath)
21
+ };
22
+ }
23
+
24
+ /**
25
+ * Load all schemas from schemas and commands folders
26
+ *
27
+ * @returns {import('./index.js').LoadedSchemas}
28
+ */
29
+ export function loadAllSchemasSync() {
30
+ return {
31
+ schemas: loadSchemasSync(schemasPath),
32
+ commands: loadSchemasSync(commandsPath)
33
+ };
34
+ }
@@ -0,0 +1,78 @@
1
+ import { readFile, readdir } from 'fs/promises';
2
+ import { readFileSync, readdirSync } from 'fs';
3
+ import { parse } from 'jsonc-parser';
4
+ import path from 'path';
5
+
6
+ /**
7
+ * Load all schemas from a directory and return a map of schema name to parsed schema object.
8
+ *
9
+ * @param {string} dirPath
10
+ * @returns {Promise<Object<string,any>>}
11
+ */
12
+ export async function loadSchemas(dirPath) {
13
+ const entries = await readdir(dirPath);
14
+ const schemaFiles = entries.filter(isSchemaFile);
15
+
16
+ /** @type {Object<string,any>} */
17
+ const schemaMap = {};
18
+ await Promise.all(
19
+ schemaFiles.map(async (filePath) => {
20
+ schemaMap[path.basename(filePath)] = await loadSchema(path.join(dirPath, filePath));
21
+ })
22
+ );
23
+ return schemaMap;
24
+ }
25
+
26
+ /**
27
+ * Load the schema file and parse it.
28
+ *
29
+ * @param {string} filePath
30
+ * @returns {Promise<any>}
31
+ */
32
+ async function loadSchema(filePath) {
33
+ const content = await readFile(filePath);
34
+ return parse(content.toString());
35
+ }
36
+
37
+ /**
38
+ * Does this file path have a schema extension?
39
+ *
40
+ * @param {string} filePath
41
+ * @returns {boolean}
42
+ */
43
+ function isSchemaFile(filePath) {
44
+ const fileName = path.basename(filePath);
45
+ return fileName.endsWith('schema.jsonc') || fileName.endsWith('schema.json');
46
+ }
47
+
48
+ /**
49
+ * Load all schemas from a directory and return a map of schema name to parsed schema object.
50
+ *
51
+ * @param {string} dirPath
52
+ * @returns {Object<string,any>}
53
+ */
54
+ export function loadSchemasSync(dirPath) {
55
+ const entries = readdirSync(dirPath);
56
+ const schemaFiles = entries.filter(isSchemaFile);
57
+
58
+ /** @type {Object<string,any>} */
59
+ const initialSchemaMap = {};
60
+
61
+ return schemaFiles.reduce((acc, filePath) => {
62
+ return {
63
+ ...acc,
64
+ [path.basename(filePath)]: loadSchemaSync(path.join(dirPath, filePath))
65
+ };
66
+ }, initialSchemaMap);
67
+ }
68
+
69
+ /**
70
+ * Load the schema file and parse it.
71
+ *
72
+ * @param {string} filePath
73
+ * @returns {any}
74
+ */
75
+ function loadSchemaSync(filePath) {
76
+ const content = readFileSync(filePath);
77
+ return parse(content.toString());
78
+ }