@pdtf/schemas 3.6.0-dev.3 → 3.6.0-dev.32
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/docs/ta6-certificate-permit-contract.md +51 -0
- package/docs/v4-mapping-and-recomposition.md +476 -0
- package/index.js +212 -0
- package/package.json +10 -1
- package/src/schemas/v3/combined.json +2267 -658
- package/src/schemas/v3/compactSkeleton.txt +120 -51
- package/src/schemas/v3/overlays/baspi4.json +54 -74
- package/src/schemas/v3/overlays/baspi5.json +54 -74
- package/src/schemas/v3/overlays/extensions/ac.json +2 -1
- package/src/schemas/v3/overlays/extensions/dk.json +3 -2
- package/src/schemas/v3/overlays/extensions/fd.json +2 -1
- package/src/schemas/v3/overlays/extensions/ic.json +44 -9
- package/src/schemas/v3/overlays/extensions/lc.json +3 -2
- package/src/schemas/v3/overlays/extensions/mi.json +2 -1
- package/src/schemas/v3/overlays/extensions/nd.json +3 -2
- package/src/schemas/v3/overlays/extensions/pc.json +3 -2
- package/src/schemas/v3/overlays/extensions/ph.json +2 -1
- package/src/schemas/v3/overlays/extensions/rw.json +4 -3
- package/src/schemas/v3/overlays/extensions/sc.json +8 -4
- package/src/schemas/v3/overlays/extensions/sd.json +3 -2
- package/src/schemas/v3/overlays/extensions/tr.json +3 -2
- package/src/schemas/v3/overlays/extensions/wg.json +2 -1
- package/src/schemas/v3/overlays/llc1.json +1 -2
- package/src/schemas/v3/overlays/lpe1.json +3 -2
- package/src/schemas/v3/overlays/nts.json +7 -3
- package/src/schemas/v3/overlays/nts2.json +9 -4
- package/src/schemas/v3/overlays/ntsl.json +5 -2
- package/src/schemas/v3/overlays/ntsl2.json +7 -3
- package/src/schemas/v3/overlays/piq.json +34 -25
- package/src/schemas/v3/overlays/rds.json +24 -50
- package/src/schemas/v3/overlays/sef25.json +16 -2
- package/src/schemas/v3/overlays/ta10.json +0 -9
- package/src/schemas/v3/overlays/ta6.json +39 -70
- package/src/schemas/v3/overlays/ta6ed6.json +331 -307
- package/{pensive-tesla-d0d355/src/schemas/v3/overlays/ta6.json → src/schemas/v3/overlays/ta6ed6v2.json} +1574 -1464
- package/src/schemas/v3/overlays/ta7.json +2 -1
- package/src/schemas/v3/overlays/ta7ed5.json +77 -21
- package/src/schemas/v3/pdtf-transaction.json +1030 -492
- package/src/schemas/v3/skeleton.json +163 -57
- package/src/schemas/v4/Gift.json +88 -0
- package/src/schemas/v4/Offer.json +425 -0
- package/src/schemas/v4/Organisation.json +167 -0
- package/src/schemas/v4/Person.json +321 -0
- package/src/schemas/v4/Property.json +27813 -0
- package/src/schemas/v4/PropertyTitleLink.json +183 -0
- package/src/schemas/v4/Representation.json +67 -0
- package/src/schemas/v4/SellerCapacity.json +193 -0
- package/src/schemas/v4/Title.json +14675 -0
- package/src/schemas/v4/Transaction.json +1612 -0
- package/src/schemas/v4/TransactionRole.json +59 -0
- package/src/schemas/v4/mapping.json +1188 -0
- package/src/utils/checkTa6OmissionCompatibility.js +146 -0
- package/src/utils/extractExtensionOverlays.js +11 -2
- package/src/utils/extractOverlay.js +21 -0
- package/src/utils/generateV4Schemas.js +1561 -0
- package/src/utils/syncTa6ed6v2Markers.js +92 -0
- package/src/utils/v4.js +956 -0
- package/CLAUDE.md +0 -101
- package/pensive-tesla-d0d355/CLAUDE.md +0 -101
- package/pensive-tesla-d0d355/LICENSE +0 -21
- package/pensive-tesla-d0d355/README.md +0 -435
- package/pensive-tesla-d0d355/docs/branch-release-workflow.md +0 -138
- package/pensive-tesla-d0d355/docs/sef25-extensions-ui-spec.md +0 -355
- package/pensive-tesla-d0d355/index.js +0 -654
- package/pensive-tesla-d0d355/package-lock.json +0 -7297
- package/pensive-tesla-d0d355/package.json +0 -44
- package/pensive-tesla-d0d355/src/examples/v1/exampleAddParticipantVouch.json +0 -32
- package/pensive-tesla-d0d355/src/examples/v1/exampleDocumentedVouch.json +0 -40
- package/pensive-tesla-d0d355/src/examples/v1/exampleElectronicRecord.json +0 -30
- package/pensive-tesla-d0d355/src/examples/v1/exampleTransaction.json +0 -878
- package/pensive-tesla-d0d355/src/examples/v1/exampleVouch.json +0 -25
- package/pensive-tesla-d0d355/src/examples/v2/exampleTransaction.json +0 -901
- package/pensive-tesla-d0d355/src/examples/v3/exampleAddParticipantVouch.json +0 -38
- package/pensive-tesla-d0d355/src/examples/v3/exampleCustomOverlay.json +0 -55
- package/pensive-tesla-d0d355/src/examples/v3/exampleCustomOverlay2.json +0 -93
- package/pensive-tesla-d0d355/src/examples/v3/exampleDocumentedVouch.json +0 -47
- package/pensive-tesla-d0d355/src/examples/v3/exampleElectronicRecord.json +0 -36
- package/pensive-tesla-d0d355/src/examples/v3/exampleTransaction.json +0 -1038
- package/pensive-tesla-d0d355/src/examples/v3/exampleVouch.json +0 -32
- package/pensive-tesla-d0d355/src/mappings/SendPropertyDetailsRequestSchema.json +0 -1588
- package/pensive-tesla-d0d355/src/mappings/adf.js +0 -198
- package/pensive-tesla-d0d355/src/schemas/v1/GeoJSON.json +0 -1279
- package/pensive-tesla-d0d355/src/schemas/v1/baspiNotes.html +0 -102
- package/pensive-tesla-d0d355/src/schemas/v1/energy-performance-certificate.json +0 -124
- package/pensive-tesla-d0d355/src/schemas/v1/freehold-information.json +0 -2051
- package/pensive-tesla-d0d355/src/schemas/v1/leasehold-information.json +0 -2064
- package/pensive-tesla-d0d355/src/schemas/v1/legal-information.json +0 -1045
- package/pensive-tesla-d0d355/src/schemas/v1/material-facts.json +0 -2109
- package/pensive-tesla-d0d355/src/schemas/v1/pdtf-transaction-search-results.json +0 -40
- package/pensive-tesla-d0d355/src/schemas/v1/pdtf-transaction.json +0 -191
- package/pensive-tesla-d0d355/src/schemas/v1/searches/drainage-and-water.json +0 -261
- package/pensive-tesla-d0d355/src/schemas/v1/searches/local-land-charges.json +0 -69
- package/pensive-tesla-d0d355/src/schemas/v1/searches/local-searches-required.json +0 -857
- package/pensive-tesla-d0d355/src/schemas/v1/searches.json +0 -237
- package/pensive-tesla-d0d355/src/schemas/v1/title-deed.json +0 -841
- package/pensive-tesla-d0d355/src/schemas/v2/baspiNotes.html +0 -102
- package/pensive-tesla-d0d355/src/schemas/v2/combined.json +0 -37731
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/baspi.json +0 -8132
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/con29DW.json +0 -705
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/con29R.json +0 -2956
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/fme1.json +0 -1259
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/llc1.json +0 -25
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/lpe1.json +0 -2171
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/nts.json +0 -326
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/oc1.json +0 -2799
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/piq.json +0 -3419
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/rds.json +0 -3736
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/ta10.json +0 -5306
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/ta6.json +0 -4533
- package/pensive-tesla-d0d355/src/schemas/v2/overlays/ta7.json +0 -1045
- package/pensive-tesla-d0d355/src/schemas/v2/pdtf-transaction.json +0 -34351
- package/pensive-tesla-d0d355/src/schemas/v2/skeleton.json +0 -3973
- package/pensive-tesla-d0d355/src/schemas/v3/combined.json +0 -48469
- package/pensive-tesla-d0d355/src/schemas/v3/compactSkeleton.txt +0 -4519
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/README.md +0 -299
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/baspi4.json +0 -8025
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/baspi5.json +0 -8175
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/con29DW.json +0 -716
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/con29R.json +0 -2981
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/ac.json +0 -333
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/as.json +0 -74
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/dk.json +0 -32
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/dr.json +0 -73
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/er.json +0 -85
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/fd.json +0 -75
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/hi.json +0 -51
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/hs.json +0 -73
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/ic.json +0 -59
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/jk.json +0 -96
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/la.json +0 -85
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/lc.json +0 -75
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/ma.json +0 -90
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/mc.json +0 -38
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/mi.json +0 -69
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/nd.json +0 -43
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/oa.json +0 -24
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/oc.json +0 -57
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/pc.json +0 -37
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/ph.json +0 -194
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/rw.json +0 -68
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/sb.json +0 -73
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/sc.json +0 -129
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/sd.json +0 -63
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/sf.json +0 -74
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/sl.json +0 -68
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/ta.json +0 -252
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/tf.json +0 -103
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/tr.json +0 -73
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/extensions/wg.json +0 -350
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/fme1.json +0 -1266
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/llc1.json +0 -25
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/lpe1.json +0 -2199
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/nts.json +0 -2157
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/nts2.json +0 -2742
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/ntsl.json +0 -1813
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/ntsl2.json +0 -2217
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/oc1.json +0 -2817
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/piq.json +0 -3322
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/rds.json +0 -3665
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/sef25.json +0 -1639
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/sr24.json +0 -38
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/ta10.json +0 -4654
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/ta6ed6.json +0 -6534
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/ta7.json +0 -1537
- package/pensive-tesla-d0d355/src/schemas/v3/overlays/ta7ed5.json +0 -1551
- package/pensive-tesla-d0d355/src/schemas/v3/pdtf-transaction.json +0 -41573
- package/pensive-tesla-d0d355/src/schemas/v3/skeleton.json +0 -5767
- package/pensive-tesla-d0d355/src/schemas/verifiedClaims/README.md +0 -21
- package/pensive-tesla-d0d355/src/schemas/verifiedClaims/pdtf-verified-claims.json +0 -447
- package/pensive-tesla-d0d355/src/utils/compactSkeleton.js +0 -84
- package/pensive-tesla-d0d355/src/utils/countTokens.js +0 -67
- package/pensive-tesla-d0d355/src/utils/extractExtensionOverlays.js +0 -624
- package/pensive-tesla-d0d355/src/utils/extractOverlay.js +0 -381
- package/pensive-tesla-d0d355/src/utils/extractProperties.js +0 -44
- package/pensive-tesla-d0d355/src/utils/listPathTitles.js +0 -36
- package/pensive-tesla-d0d355/src/utils/minimalSkeleton.js +0 -85
- package/pensive-tesla-d0d355/src/utils/pathList.csv +0 -903
- package/pensive-tesla-d0d355/src/utils/pathSkeleton.js +0 -181
- package/src/examples/v1/exampleAddParticipantVouch.json +0 -32
- package/src/examples/v1/exampleDocumentedVouch.json +0 -40
- package/src/examples/v1/exampleElectronicRecord.json +0 -30
- package/src/examples/v1/exampleTransaction.json +0 -878
- package/src/examples/v1/exampleVouch.json +0 -25
- package/src/examples/v2/exampleTransaction.json +0 -901
- package/src/examples/v3/exampleAddParticipantVouch.json +0 -38
- package/src/examples/v3/exampleCustomOverlay.json +0 -55
- package/src/examples/v3/exampleCustomOverlay2.json +0 -93
- package/src/examples/v3/exampleDocumentedVouch.json +0 -47
- package/src/examples/v3/exampleElectronicRecord.json +0 -36
- package/src/examples/v3/exampleTransaction.json +0 -1038
- package/src/examples/v3/exampleVouch.json +0 -32
- package/src/mappings/SendPropertyDetailsRequestSchema.json +0 -1588
- package/src/mappings/adf.js +0 -198
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Sync ta6ed6v2 markers from ta6ed6 across combined.json.
|
|
4
|
+
*
|
|
5
|
+
* ta6ed6v2 is a "full marker set" twin of ta6ed6: every shared field carries its
|
|
6
|
+
* own `ta6ed6v2*` markers so that inclusion is presence and suppression is the
|
|
7
|
+
* ABSENCE of a v2 ref (see src/tests/v3/ta6ed6v2.test.js — the drift-lint).
|
|
8
|
+
*
|
|
9
|
+
* Two subtrees intentionally diverge (their v2 shape is hand-authored) and are
|
|
10
|
+
* excluded from sync: propertyPack.heating and propertyPack.alterationsAndChanges.
|
|
11
|
+
*
|
|
12
|
+
* For every OTHER node, this tool guarantees each `ta6ed6<Suffix>` marker has a
|
|
13
|
+
* matching `ta6ed6v2<Suffix>` marker of equal value — adding missing twins and
|
|
14
|
+
* repairing drifted values. Edits are minimal text splices that preserve the
|
|
15
|
+
* file's existing formatting.
|
|
16
|
+
*
|
|
17
|
+
* node src/utils/syncTa6ed6v2Markers.js # apply (write)
|
|
18
|
+
* node src/utils/syncTa6ed6v2Markers.js --check # exit 1 if out of sync (CI)
|
|
19
|
+
*
|
|
20
|
+
* After running, regenerate overlays: node src/utils/extractOverlay.js
|
|
21
|
+
*/
|
|
22
|
+
const fs = require("fs");
|
|
23
|
+
const path = require("path");
|
|
24
|
+
|
|
25
|
+
const FILE = process.env.COMBINED_PATH || path.resolve(__dirname, "../schemas/v3/combined.json");
|
|
26
|
+
const CHECK = process.argv.includes("--check");
|
|
27
|
+
|
|
28
|
+
const MARKER_RE = /^ta6ed6(Ref|Required|Title|Description|Enum|EnumNames)$/;
|
|
29
|
+
const v2Of = (k) => k.replace(/^ta6ed6/, "ta6ed6v2");
|
|
30
|
+
// NOTE: array indices are numbers in the tokenizer path (strict-equal), so use 2 not "2".
|
|
31
|
+
const COMPANY = ["properties", "participants", "items", "oneOf", 2, "properties", "sellersCapacity", "oneOf", 2, "properties"];
|
|
32
|
+
const EXCLUDED_PREFIXES = [
|
|
33
|
+
["properties", "propertyPack", "properties", "heating"],
|
|
34
|
+
["properties", "propertyPack", "properties", "alterationsAndChanges"],
|
|
35
|
+
// §1.6 company seller fields: v2 realigns refs to the form (companyNumber→1.6.1,
|
|
36
|
+
// directorOrAuthorisedPerson→1.6.2) while ed6 keeps its existing refs — hand-authored.
|
|
37
|
+
[...COMPANY, "companyName"],
|
|
38
|
+
[...COMPANY, "companyNumber"],
|
|
39
|
+
[...COMPANY, "directorOrAuthorisedPerson"],
|
|
40
|
+
];
|
|
41
|
+
const isExcluded = (p) => EXCLUDED_PREFIXES.some((pre) => pre.every((seg, i) => p[i] === seg));
|
|
42
|
+
|
|
43
|
+
// minimal position-tracking JSON tokenizer
|
|
44
|
+
function tokenize(text) {
|
|
45
|
+
let i = 0; const n = text.length; const members = [];
|
|
46
|
+
const ws = () => { while (i < n && /\s/.test(text[i])) i++; };
|
|
47
|
+
const str = () => { i++; while (i < n) { const c = text[i]; if (c === "\\") { i += 2; continue; } if (c === '"') { i++; break; } i++; } };
|
|
48
|
+
const val = (p) => { ws(); const c = text[i]; if (c === "{") obj(p); else if (c === "[") arr(p); else if (c === '"') str(); else { while (i < n && !/[,}\]\s]/.test(text[i])) i++; } };
|
|
49
|
+
function obj(p) { i++; ws(); if (text[i] === "}") { i++; return; } while (i < n) { ws(); const ks = i; str(); const key = JSON.parse(text.slice(ks, i)); ws(); i++; ws(); const vs = i; val(p.concat(key)); members.push({ path: p.concat(key), key, keyStart: ks, valueStart: vs, valueEnd: i }); ws(); if (text[i] === ",") { i++; continue; } if (text[i] === "}") { i++; break; } break; } }
|
|
50
|
+
function arr(p) { i++; ws(); if (text[i] === "]") { i++; return; } let k = 0; while (i < n) { ws(); val(p.concat(k)); k++; ws(); if (text[i] === ",") { i++; continue; } if (text[i] === "]") { i++; break; } break; } }
|
|
51
|
+
ws(); val([]); return members;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
let text = fs.readFileSync(FILE, "utf8");
|
|
55
|
+
const members = tokenize(text);
|
|
56
|
+
const owner = (m) => m.path.slice(0, -1).join("/");
|
|
57
|
+
const keysByOwner = new Map();
|
|
58
|
+
for (const m of members) { const o = owner(m); if (!keysByOwner.has(o)) keysByOwner.set(o, new Map()); keysByOwner.get(o).set(m.key, m); }
|
|
59
|
+
const indentAt = (off) => text.slice(text.lastIndexOf("\n", off - 1) + 1, off);
|
|
60
|
+
|
|
61
|
+
const edits = []; // {at, end, text} (end omitted => pure insert)
|
|
62
|
+
const adds = [], fixes = [];
|
|
63
|
+
for (const m of members) {
|
|
64
|
+
if (!MARKER_RE.test(m.key)) continue;
|
|
65
|
+
if (isExcluded(m.path)) continue;
|
|
66
|
+
const v2 = v2Of(m.key);
|
|
67
|
+
const siblings = keysByOwner.get(owner(m));
|
|
68
|
+
const ed6Val = text.slice(m.valueStart, m.valueEnd);
|
|
69
|
+
if (!siblings.has(v2)) {
|
|
70
|
+
const indent = indentAt(m.keyStart);
|
|
71
|
+
edits.push({ at: m.valueEnd, text: `,\n${indent}"${v2}": ${ed6Val}` });
|
|
72
|
+
adds.push("/" + m.path.join("/"));
|
|
73
|
+
} else {
|
|
74
|
+
const tw = siblings.get(v2);
|
|
75
|
+
const v2Val = text.slice(tw.valueStart, tw.valueEnd);
|
|
76
|
+
if (JSON.stringify(JSON.parse(v2Val)) !== JSON.stringify(JSON.parse(ed6Val))) {
|
|
77
|
+
edits.push({ at: tw.valueStart, end: tw.valueEnd, text: ed6Val });
|
|
78
|
+
fixes.push("/" + tw.path.join("/"));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (!edits.length) { console.log("ta6ed6v2 markers in sync — nothing to do."); process.exit(0); }
|
|
84
|
+
console.log(`Out of sync: ${adds.length} missing twin(s), ${fixes.length} drifted value(s).`);
|
|
85
|
+
[...adds, ...fixes].slice(0, 20).forEach((p) => console.log(" " + p));
|
|
86
|
+
if (CHECK) process.exit(1);
|
|
87
|
+
|
|
88
|
+
edits.sort((a, b) => b.at - a.at);
|
|
89
|
+
for (const e of edits) text = text.slice(0, e.at) + e.text + text.slice(e.end ?? e.at);
|
|
90
|
+
JSON.parse(text); // guard
|
|
91
|
+
fs.writeFileSync(FILE, text);
|
|
92
|
+
console.log(`Applied ${edits.length} edit(s) to ${FILE}. Now run: node src/utils/extractOverlay.js`);
|