@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.
- package/.azure/ci.yml +60 -0
- package/.azure/release.yml +57 -0
- package/.github/dependabot.yml +11 -0
- package/.husky/install.mjs +7 -0
- package/.husky/pre-commit +1 -0
- package/.prettierignore +11 -0
- package/.prettierrc +19 -0
- package/LICENSE +21 -0
- package/README.md +237 -0
- package/commitlint.config.js +8 -0
- package/docs/README.md +85 -0
- package/docs/appeal-document.md +776 -0
- package/docs/appeal-event-estimate.md +108 -0
- package/docs/appeal-event.md +404 -0
- package/docs/appeal-has.md +1960 -0
- package/docs/appeal-representation.md +375 -0
- package/docs/appeal-s78.md +3607 -0
- package/docs/appeal.md +1879 -0
- package/docs/case-schedule.md +8 -0
- package/docs/dart-response.md +1413 -0
- package/docs/employee.md +70 -0
- package/docs/entraid.md +108 -0
- package/docs/folder.md +147 -0
- package/docs/gettimesheets-response.md +188 -0
- package/docs/interested-party.md +284 -0
- package/docs/listed-building.md +113 -0
- package/docs/listed-buildings.md +113 -0
- package/docs/nsip-document.md +966 -0
- package/docs/nsip-exam-timetable-defs-event.md +223 -0
- package/docs/nsip-exam-timetable-defs-line-item.md +51 -0
- package/docs/nsip-exam-timetable-defs.md +3 -0
- package/docs/nsip-exam-timetable-submission.md +113 -0
- package/docs/nsip-exam-timetable.md +352 -0
- package/docs/nsip-project-update.md +163 -0
- package/docs/nsip-project.md +2098 -0
- package/docs/nsip-representation-defs-attachment.md +133 -0
- package/docs/nsip-representation-defs.md +3 -0
- package/docs/nsip-representation.md +448 -0
- package/docs/nsip-subscription.md +193 -0
- package/docs/pins-inspector.md +184 -0
- package/docs/pins-lpa.md +260 -0
- package/docs/s51-advice.md +460 -0
- package/docs/service-user.md +575 -0
- package/eslint.config.js +21 -0
- package/jsconfig.json +12 -0
- package/package.json +55 -0
- package/pins_data_model/__init__.py +0 -0
- package/pins_data_model/gen_models.py +51 -0
- package/pins_data_model/load_schemas.py +51 -0
- package/pins_data_model/models/__init__.py +0 -0
- package/pins_data_model/models/model_appeal_document.py +294 -0
- package/pins_data_model/models/model_appeal_event.py +117 -0
- package/pins_data_model/models/model_appeal_event_estimate.py +37 -0
- package/pins_data_model/models/model_appeal_has.py +585 -0
- package/pins_data_model/models/model_appeal_representation.py +132 -0
- package/pins_data_model/models/model_appeal_s78.py +864 -0
- package/pins_data_model/models/model_case_schedule.py +11 -0
- package/pins_data_model/models/model_dart_response.py +292 -0
- package/pins_data_model/models/model_entraid.py +37 -0
- package/pins_data_model/models/model_folder.py +56 -0
- package/pins_data_model/models/model_gettimesheets_response.py +45 -0
- package/pins_data_model/models/model_listed_building.py +33 -0
- package/pins_data_model/models/model_listed_buildings.py +33 -0
- package/pins_data_model/models/model_nsip_document.py +199 -0
- package/pins_data_model/models/model_nsip_exam_timetable.py +90 -0
- package/pins_data_model/models/model_nsip_project.py +488 -0
- package/pins_data_model/models/model_nsip_project_update.py +60 -0
- package/pins_data_model/models/model_nsip_representation.py +83 -0
- package/pins_data_model/models/model_nsip_subscription.py +60 -0
- package/pins_data_model/models/model_pins_inspector.py +53 -0
- package/pins_data_model/models/model_pins_lpa.py +69 -0
- package/pins_data_model/models/model_s51_advice.py +109 -0
- package/pins_data_model/models/model_service_user.py +121 -0
- package/requirements.txt +2 -0
- package/schemas/__init__.py +0 -0
- package/schemas/appeal-document.schema.json +250 -0
- package/schemas/appeal-event-estimate.schema.json +31 -0
- package/schemas/appeal-event.schema.json +123 -0
- package/schemas/appeal-has.schema.json +576 -0
- package/schemas/appeal-representation.schema.json +131 -0
- package/schemas/appeal-s78.schema.json +1060 -0
- package/schemas/commands/__init__.py +0 -0
- package/schemas/commands/appeal-common-submission.schema.json +202 -0
- package/schemas/commands/appeal-has-submission.schema.json +82 -0
- package/schemas/commands/appeal-representation-submission.schema.json +192 -0
- package/schemas/commands/appeal-s78-submission.schema.json +100 -0
- package/schemas/commands/appellant-submission.schema.json +164 -0
- package/schemas/commands/interested-party.schema.json +80 -0
- package/schemas/commands/lpa-questionnaire-common.schema.json +110 -0
- package/schemas/commands/lpa-questionnaire-has.schema.json +69 -0
- package/schemas/commands/lpa-questionnaire-s78.schema.json +218 -0
- package/schemas/commands/lpa-questionnaire.schema.json +125 -0
- package/schemas/commands/new-deadline-submission.schema.json +59 -0
- package/schemas/commands/nsip-exam-timetable-submission.schema.json +27 -0
- package/schemas/commands/register-nsip-subscription.schema.json +32 -0
- package/schemas/commands/register-representation.schema.json +51 -0
- package/schemas/dart-response.schema.json +350 -0
- package/schemas/entraid.schema.json +31 -0
- package/schemas/folder.schema.json +49 -0
- package/schemas/gettimesheets-response.schema.json +46 -0
- package/schemas/listed-building.schema.json +31 -0
- package/schemas/listed-buildings.schema.json +31 -0
- package/schemas/nsip-document.schema.json +235 -0
- package/schemas/nsip-exam-timetable.schema.json +101 -0
- package/schemas/nsip-project-update.schema.json +49 -0
- package/schemas/nsip-project.schema.json +539 -0
- package/schemas/nsip-representation.schema.json +110 -0
- package/schemas/nsip-subscription.schema.json +52 -0
- package/schemas/pins-inspector.schema.json +47 -0
- package/schemas/pins-lpa.schema.json +63 -0
- package/schemas/s51-advice.schema.json +113 -0
- package/schemas/service-user.schema.json +152 -0
- package/setup.py +15 -0
- package/src/enums.cjs +632 -0
- package/src/enums.d.ts +573 -0
- package/src/enums.js +573 -0
- package/src/gen-docs.js +34 -0
- package/src/gen-enums.js +119 -0
- package/src/gen-types.js +70 -0
- package/src/index.cjs +746 -0
- package/src/index.d.ts +18 -0
- package/src/index.js +34 -0
- package/src/lib/load.js +78 -0
- package/src/schemas.d.ts +4570 -0
- package/tests/appeals/appeal-event.test.js +62 -0
- package/tests/appeals/commands/appeal-representation-submission.test.js +107 -0
- package/tests/appeals/commands/has-questionnaire.test.js +92 -0
- package/tests/appeals/commands/has-submission.test.js +113 -0
- package/tests/appeals/commands/s78-questionnaire.test.js +96 -0
- package/tests/appeals/commands/s78-submission.test.js +119 -0
- 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
|
+
}
|
package/src/lib/load.js
ADDED
|
@@ -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
|
+
}
|