Release Data Tools 0.2.0
Verify / verify (push) Canceled after 0s

This commit is contained in:
2026-09-02 12:50:51 +02:00
parent e773a2ffe8
commit a8eb8e53b3
36 changed files with 2168 additions and 235 deletions
+21 -4
View File
@@ -6,9 +6,13 @@ Data Tools is a relocatable static React application. There is no application se
1. The UI checks the local file size before decoding and passes text, the selected format and the optional filename to a fresh module worker.
2. The worker applies byte/character and structural preflight limits, including a streaming dimension pass before delimited parsing, then parses with format-specific defensive options and converts the result into a serialisable typed node model.
3. The model is measured again for node count and depth before it is returned. A newer request terminates the older worker, and a 30-second deadline terminates a stalled parse. The UI retains the last successful model until a new one is ready.
3. The model is measured again for node count and depth before it is returned.
The shared worker-job protocol filters results by job ID, terminates a
superseded worker and enforces a 30-second hard deadline. The UI retains the
last successful model until a new one is ready.
4. Tree, table, flattened and query projections operate on the model with their own preview/result caps.
5. Serialisers create a new string and a structured list of notices, coercions and losses. Output is capped before it reaches copy or download actions.
6. Schema inference samples the same bounded model. Structural edits clone only the addressed path, remeasure the result, then serialize it through the source adapter for review before source replacement.
The node model has explicit null, boolean, string, number, date, array and ordered-object variants. Number nodes retain a source representation (`exact`, `bigint` or `binary`) and an exact display lexeme. Objects use ordered entry arrays rather than assigning untrusted keys to ordinary JavaScript objects.
@@ -18,6 +22,19 @@ XML deliberately does not pretend to be a JSON object. It is represented as expl
Runtime versions are pinned exactly: `lossless-json` 4.3.1, `yaml` 2.9.0, `smol-toml` 1.8.0, `@xmldom/xmldom` 0.9.12 and `papaparse` 5.7.0. No imported value is rendered as HTML or executed.
Version 0.1 keeps its bounded data-model functions as pure app modules rather
than introducing a runtime helper dependency. They are intentionally shaped
for later replacement by the shared limits and download APIs.
Bounded data-model and parser functions remain pure app modules because exact
scalar spelling and XML namespace metadata are domain decisions. Generic
byte-size display, safe downloads and cancellable worker lifecycle come from
`@add-ideas/toolbox-helpers` 0.2.0.
`src/core/adapters.ts` is the public ordered capability catalogue. `parse.ts`
and `convert.ts` expose concrete registries that must cover every descriptor;
tests make missing import/export implementations fail visibly. `schema.ts`
never turns exact decimal lexemes into binary range constraints. `edit.ts`
implements immutable RFC 6901 traversal and rejects prototype-affecting keys,
non-canonical array indices and any result outside the normal model ceilings.
An edit is not applied immediately: it is first passed through the current
format's export adapter. The UI shows the proposed source and all conversion
events, and requires a separate acknowledgement when any event is classified
as loss.