@inventarch/language 2.0.0 → 3.1.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/README.md +1 -1
- package/SPEC.md +4 -0
- package/dist/editor/edit-source.d.ts +58 -0
- package/dist/editor/edit-source.d.ts.map +1 -0
- package/dist/editor/edit-source.js +230 -0
- package/dist/editor/edit-source.js.map +1 -0
- package/dist/editor/index.d.ts +12 -6
- package/dist/editor/index.d.ts.map +1 -1
- package/dist/editor/index.js +10 -3
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/values.d.ts +58 -0
- package/dist/editor/values.d.ts.map +1 -0
- package/dist/editor/values.js +145 -0
- package/dist/editor/values.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/taxonomy.d.ts +6 -0
- package/dist/taxonomy.d.ts.map +1 -1
- package/dist/taxonomy.js +17 -0
- package/dist/taxonomy.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -31,4 +31,4 @@ Conformance fixtures live under `packages/compliance/fixtures/language`. Compile
|
|
|
31
31
|
Run `pnpm test`, `pnpm typecheck` and `pnpm build` in this package. The runtime has no dependencies and performs no filesystem discovery. Built-entry and emitted-declaration consumers are verified at plan closure; compiler success does not establish downstream execution.
|
|
32
32
|
# Editor source helpers
|
|
33
33
|
|
|
34
|
-
`references(ast)` inventories typed field/list/relationship references without treating prose as a graph edge. `@inventarch/language/editor` provides UTF-16 source projection/ranges, incomplete-input cursor context, schema-form source serialization and preservation-checked formatting. `draftSource` writes only declared fields and leaves admission to downstream owners. It preserves IA quote/backslash semantics and
|
|
34
|
+
`references(ast)` inventories typed field/list/relationship references without treating prose as a graph edge. `@inventarch/language/editor` provides UTF-16 source projection/ranges, incomplete-input cursor context, schema-form source serialization and preservation-checked formatting. `draftSource` writes only declared fields and leaves admission to downstream owners. It preserves IA quote/backslash semantics and writes each value as 2.0.0 did (text quoted, other types as given), refusing a multiline value with a plain Error and, since milestone generation-binding, a value that would add a `when` condition or a comment, or that opens a string, prose or list it does not close, with SourceEditError; use the source editor for structured/multiline content. `encodeValue` is the strict typed spelling. `appendRecord`, `addRelationship`, `setField` and `annotateRecord` return a whole file again with one top-level record changed, spliced into the file as it is: other lines keep their bytes and line endings, a byte-order mark stays, and only the edited record is formatted; `relationshipConsent` judges one relationship row's two-sided consent; a refused edit throws `SourceEditError`. See the colocated editor clauses and tests.
|
package/SPEC.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Language package specification
|
|
2
2
|
|
|
3
|
+
`tests/edit-source.test.ts` pins E04's sibling-byte preservation for set-field, relationship, append and annotation edits on mixed LF/CRLF files. The cases exercise either initial ending, a BOM, noncanonical spacing and a final record with or without a terminating newline; byte comparisons do not normalize the untouched text.
|
|
4
|
+
|
|
3
5
|
**Owner:** `@inventarch/language`. **Current status:** Plans 1–4 are implemented: syntax, registration, structured and semantic compilation, native kernel generation and loss-checked formatting. Sections 1–9 retain the Plans 1–2 baseline at `69c75b7`; their statements of missing behavior are historical. Sections 10–12 supersede those limits and define the delivered semantic/format/kernel contracts. Downstream graph, compliance, database, runtime and local executable consumers have also shipped; current readiness and the audit map their evidence. Editor and development harness implementations have their own contracts and qualification; their existence does not change language ownership.
|
|
4
6
|
|
|
5
7
|
The shared language design defines the language and its numbered implementation refinements. The systems design defines package dependencies and consumer responsibilities. This file distinguishes delivered package behavior from those future obligations; it does not turn an implementation gap into permission to ignore a language rule.
|
|
@@ -223,3 +225,5 @@ E01. Public `references(ast)` enumerates typed values, including head/list uses
|
|
|
223
225
|
E02. Public `/editor` projects the existing scanner and AST to zero-based UTF-16 positions, retaining BOM, CRLF and continuation indentation. Reference ranges distinguish multiple uses on one physical line. Cursor recovery is presentation-only and never changes parse/admission results. Unsupported versions yield no semantic suggestions. Comments, strings and prose suppress structural completion.
|
|
224
226
|
|
|
225
227
|
E03. Editor formatting uses `format` and its preservation guard. Schema-guided new drafts serialize only supported typed values; unmodeled structures remain source-editable. No second lexer or parser is introduced in a host.
|
|
228
|
+
|
|
229
|
+
E04. Schema-aware source edits (2026-10-11, milestone generation-binding plan amendment C18): `/editor` publishes `appendRecord(text, draft)`, `addRelationship(text, identity, spelling, target)` and `setField(text, identity, path, value, schema, append?)`, each returning the whole file again with exactly one top-level record (`@word name`) changed, and `annotateRecord(text, identity, comment)`, which puts one comment line above a record. The edit is spliced into the file as it is: every other line keeps its bytes, its line ending, comments and spacing included, a byte-order mark stays, and only the edited record is formatted (`format`), in the file's line ending, so only that record's digest can move. The file must parse; it need not be formatted. `encodeValue(field, text, item?)` spells one form value for a schema field: text is always quoted, and every other type must parse as exactly one value of it, by the predicates compliance applies (id and its `in` set, ref and its `to` word, qname, number, flag, list of one, and the iso-date form), with nothing after it; line breaks, C0 and C1 controls but the tab, DEL, the Unicode line and paragraph separators and the bidirectional controls are refused. That strict spelling is an opt-in (`setField` and the CLI's authoring verbs use it). `draftSource` keeps 2.0.0's spelling through `draftValue(field, text)`: text quoted, every other type written as given, refusing only a value that would add structure: a line break (a plain `Error`, as 2.0.0 threw), and, with `SourceEditError`, a `when` condition, a comment, or a string, prose or list the value opens and does not close, which 2.0.0 wrote into the draft (a bug fix). `draftValue` called alone refuses a line break with `SourceEditError` too. A refused edit throws `SourceEditError` with a closed `reason` (parse, identity, nested, field, value, repeated, duplicate, spelling, target, structure) and changes nothing: an undeclared field, a value of another type, a field, section or record stated twice, a relationship row the section already holds word for word (a row that differs only in spelling is left to admission), a duplicate list item or record, a conditional or structured field, a comment inside a multi-line value being replaced, a nested record, and an unknown verb or a target that is neither a canonical identity nor `@word name` (either with an optional fragment). A trailing comment on a one-line field being replaced is kept. `relationshipConsent(registry, word, spelling, target, fragment?)` judges one relationship row as admission's two-sided consent rule does and names the refusing side and the system registering that side's word. No diagnostic code is added: the caller compiles the result and reports the refusal.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { FrozenRegistry } from '../registry/types.js';
|
|
2
|
+
import type { Predicate } from '../taxonomy.js';
|
|
3
|
+
import type { DraftSchema } from './values.js';
|
|
4
|
+
/**
|
|
5
|
+
* Append one record to a file: `draft` is a complete standalone draft (`draftSource`'s), whose pragma is dropped. It
|
|
6
|
+
* follows the file's last line after one blank line, in the file's line ending; an empty file becomes a new file with the
|
|
7
|
+
* draft's pragma. A record the file already declares, nested or not, is refused.
|
|
8
|
+
*/
|
|
9
|
+
export declare function appendRecord(text: string, draft: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Add one relationship row `<spelling> <target>` to the record `identity` (`@word name`): the last row of its
|
|
12
|
+
* `relationships` section, or a new section at the record's end. The spelling must be a kernel verb, active, inverse or
|
|
13
|
+
* present; the target a canonical identity or `@word name`, either with an optional fragment, and nothing else, so no
|
|
14
|
+
* condition or comment rides along. A row the section already holds, word for word, is refused; a row that differs only
|
|
15
|
+
* in spelling (a canonical identity for a reference, say) is left to admission. Consent is the caller's to judge
|
|
16
|
+
* (`relationshipConsent`), as is whether the target is admitted.
|
|
17
|
+
*/
|
|
18
|
+
export declare function addRelationship(text: string, identity: string, spelling: string, target: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Set the schema field `path` (`<section>.<key>`) of the record `identity` (`@word name`) to `value`, a form value
|
|
21
|
+
* `encodeValue` spells for the field's type; with `append`, add `value` as one item to a list field, creating the field
|
|
22
|
+
* when absent. An undeclared field, a value of another type or carrying syntax, a field stated twice, a conditional or
|
|
23
|
+
* structured field, and a multi-line value with a comment inside are refused. A trailing comment on a one-line field is
|
|
24
|
+
* kept.
|
|
25
|
+
*/
|
|
26
|
+
export declare function setField(text: string, identity: string, path: string, value: string, schema: DraftSchema, append?: boolean): string;
|
|
27
|
+
/**
|
|
28
|
+
* Put the one-line comment `comment` (`# <text>`) directly above the top-level record `identity` (`@word name`), in
|
|
29
|
+
* place of a comment there that starts with the same first word (`# authored-by`, say), so an attribution is replaced,
|
|
30
|
+
* not stacked. A comment is trivia, so no record's digest moves; every other line keeps its bytes. A comment that is not
|
|
31
|
+
* one `#` line of plain text is refused.
|
|
32
|
+
*/
|
|
33
|
+
export declare function annotateRecord(text: string, identity: string, comment: string): string;
|
|
34
|
+
/** What `relationshipConsent` finds for one relationship row. */
|
|
35
|
+
export interface RelationshipConsent {
|
|
36
|
+
readonly predicate: Predicate;
|
|
37
|
+
/** `in` for an inverse spelling: the row's target is then the edge's source. */
|
|
38
|
+
readonly direction: 'out' | 'in';
|
|
39
|
+
/** The words at the edge's two ends, in the predicate's active direction. */
|
|
40
|
+
readonly from: string;
|
|
41
|
+
readonly to: string;
|
|
42
|
+
/**
|
|
43
|
+
* Present when the two-sided consent rule (spec 6.4) refuses the edge: the side whose system refuses, and that
|
|
44
|
+
* system, the one registering the word at that side.
|
|
45
|
+
*/
|
|
46
|
+
readonly refused?: {
|
|
47
|
+
readonly side: 'source' | 'target';
|
|
48
|
+
readonly system: string;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The consent `registry` gives one relationship row of a `@<word>` record: `<spelling>` towards a `@<target>` record,
|
|
53
|
+
* judged as admission judges it (`consentFor`), so a row it refuses would be IA-LANG-EDGE-UNCONSENTED. An unknown
|
|
54
|
+
* spelling is a SourceEditError; a word the registry does not register is no refusal here, as admission refuses its
|
|
55
|
+
* record on its own.
|
|
56
|
+
*/
|
|
57
|
+
export declare function relationshipConsent(registry: FrozenRegistry, word: string, spelling: string, target: string, fragment?: string): RelationshipConsent;
|
|
58
|
+
//# sourceMappingURL=edit-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-source.d.ts","sourceRoot":"","sources":["../../src/editor/edit-source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAuH/C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAkChE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBxG;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EACnB,MAAM,UAAQ,GACb,MAAM,CA0CR;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAiBtF;AAED,iEAAiE;AACjE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACpF;AACD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,mBAAmB,CAarB"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { format } from '../formatter.js';
|
|
2
|
+
import { parse } from '../parser/index.js';
|
|
3
|
+
import { consentFor } from '../registry/consent.js';
|
|
4
|
+
import { verbOf } from '../semantic/vocabulary.js';
|
|
5
|
+
import { encodeItem, encodeValue, refuse } from './values.js';
|
|
6
|
+
/**
|
|
7
|
+
* Schema-aware source edits (milestone generation-binding plan amendment C18). Each takes one whole `.ia` file's text and
|
|
8
|
+
* returns the whole new text with exactly one top-level record changed: a record appended, one relationship row added,
|
|
9
|
+
* one field set, or one comment put above it. The edit is spliced into the file as it is: every other line keeps its
|
|
10
|
+
* bytes, line endings, comments and spacing included, and a byte-order mark stays. Only the edited record is formatted
|
|
11
|
+
* (`format()`), and its lines take the file's line ending, so only its digest can change. The file must parse; it need
|
|
12
|
+
* not be formatted. Admission is not judged here: the caller compiles the result (db's draft overlay) and reads its
|
|
13
|
+
* findings. A refused edit throws SourceEditError and returns no text.
|
|
14
|
+
*/
|
|
15
|
+
const PATH = 'edit.ia';
|
|
16
|
+
const BOM = '\uFEFF';
|
|
17
|
+
const REFERENCE = /^@([a-z][a-z0-9-]*) ([A-Za-z][A-Za-z0-9-]*)$/;
|
|
18
|
+
const FRAGMENT = '(?:#[A-Za-z0-9][A-Za-z0-9-]*(?:/[A-Za-z0-9][A-Za-z0-9-]*)*)?';
|
|
19
|
+
const TARGETS = [
|
|
20
|
+
new RegExp(`^@[a-z][a-z0-9-]* [A-Za-z][A-Za-z0-9-]*${FRAGMENT}$`),
|
|
21
|
+
new RegExp(`^[a-z][a-z0-9-]*/[a-z][a-z0-9-]*/[a-z][a-z0-9-]*/[A-Za-z][A-Za-z0-9-]*${FRAGMENT}$`),
|
|
22
|
+
];
|
|
23
|
+
function read(text) {
|
|
24
|
+
const bom = text.startsWith(BOM), body = bom ? text.slice(1) : text;
|
|
25
|
+
const pieces = body.match(/[^\n]*\n|[^\n]+$/g) ?? [];
|
|
26
|
+
const texts = pieces.map((piece) => piece.replace(/\r?\n$/, '')), endings = pieces.map((piece, index) => piece.slice(texts[index].length));
|
|
27
|
+
const parsed = parse(texts.join('\n'), PATH);
|
|
28
|
+
if (parsed.diagnostics.length > 0)
|
|
29
|
+
refuse('parse', `The file must parse before it is edited: ${parsed.diagnostics.map((diagnostic) => diagnostic.message).join('; ')}`);
|
|
30
|
+
return { bom, texts, endings, eol: endings.find((ending) => ending !== '') ?? '\n', ast: parsed.ast };
|
|
31
|
+
}
|
|
32
|
+
/** The file with lines `start`..`end` (0-based, inclusive) replaced by `lines`, each other line's bytes kept. */
|
|
33
|
+
function assemble(raw, start, end, lines) {
|
|
34
|
+
// The last new line takes the replaced range's own ending (none at a file's unterminated end); the others the file's.
|
|
35
|
+
const last = raw.endings[end];
|
|
36
|
+
const middle = lines.map((line, index) => line + (index === lines.length - 1 ? last : raw.eol));
|
|
37
|
+
const before = raw.texts.slice(0, start).map((line, index) => line + raw.endings[index]), after = raw.texts.slice(end + 1).map((line, index) => line + raw.endings[end + 1 + index]);
|
|
38
|
+
return (raw.bom ? BOM : '') + [...before, ...middle, ...after].join('');
|
|
39
|
+
}
|
|
40
|
+
/** Format `lines` (a record, with the file's pragma first) on their own; a splice that does not parse is refused. */
|
|
41
|
+
function formatted(lines, what) {
|
|
42
|
+
const result = format(`${lines.join('\n')}\n`, PATH);
|
|
43
|
+
if (result.text === null)
|
|
44
|
+
refuse('parse', `${what}: ${result.diagnostics.map((diagnostic) => diagnostic.message).join('; ')}`);
|
|
45
|
+
return result.text.replace(/\n$/, '').split('\n');
|
|
46
|
+
}
|
|
47
|
+
function blockOf(raw, record) {
|
|
48
|
+
const pragma = `#! ia ${raw.ast.version}`;
|
|
49
|
+
const lines = formatted([pragma, ...raw.texts.slice(record.span.line - 1, record.span.endLine)], 'The record');
|
|
50
|
+
const ast = parse(`${lines.join('\n')}\n`, PATH).ast;
|
|
51
|
+
return { lines, ast, record: ast.records[0] };
|
|
52
|
+
}
|
|
53
|
+
/** The file with the record replaced by `lines`, its block formatted again (pragma first, dropped from the result). */
|
|
54
|
+
function replaced(raw, record, lines) {
|
|
55
|
+
const result = formatted(lines, 'The edit does not parse');
|
|
56
|
+
return assemble(raw, record.span.line - 1, record.span.endLine - 1, result.slice(1));
|
|
57
|
+
}
|
|
58
|
+
const nestedIn = (record) => record.nested.flatMap((child) => [child, ...nestedIn(child)]);
|
|
59
|
+
/** The one top-level record `@word name` names, case-insensitively by name as identity is. */
|
|
60
|
+
function recordAt(ast, identity) {
|
|
61
|
+
const reference = REFERENCE.exec(identity);
|
|
62
|
+
if (reference === null)
|
|
63
|
+
return refuse('identity', `Expected a record as @<word> <name>; got ${JSON.stringify(identity)}`);
|
|
64
|
+
const [, word, name] = reference;
|
|
65
|
+
const matches = (record) => record.discriminator === word && record.name.toLowerCase() === name.toLowerCase();
|
|
66
|
+
const top = ast.records.filter(matches);
|
|
67
|
+
if (top.length > 1)
|
|
68
|
+
refuse('repeated', `${identity} is declared ${top.length} times in this file`);
|
|
69
|
+
if (top.length === 0)
|
|
70
|
+
return ast.records.flatMap(nestedIn).some(matches)
|
|
71
|
+
? refuse('nested', `${identity} is nested in another record; edit it in its source`)
|
|
72
|
+
: refuse('identity', `No top-level record ${identity} in this file`);
|
|
73
|
+
return top[0];
|
|
74
|
+
}
|
|
75
|
+
const sectionsNamed = (record, name) => {
|
|
76
|
+
const found = record.sections.filter((section) => section.name === name);
|
|
77
|
+
if (found.length > 1)
|
|
78
|
+
refuse('repeated', `@${record.discriminator} ${record.name} states ${name} ${found.length} times`);
|
|
79
|
+
return found;
|
|
80
|
+
};
|
|
81
|
+
/** The block's lines with `row` the last child of the record's `section`, the section opened at its end if absent. */
|
|
82
|
+
function inserted(block, section, row) {
|
|
83
|
+
const lines = [...block.lines], { record } = block;
|
|
84
|
+
if (section === 'head') {
|
|
85
|
+
const last = record.head.at(-1);
|
|
86
|
+
lines.splice(last === undefined ? record.span.line : last.span.endLine, 0, ` ${row}`);
|
|
87
|
+
return lines;
|
|
88
|
+
}
|
|
89
|
+
const found = sectionsNamed(record, section)[0];
|
|
90
|
+
if (found !== undefined)
|
|
91
|
+
lines.splice(found.span.endLine, 0, ` ${row}`);
|
|
92
|
+
else
|
|
93
|
+
lines.splice(record.span.endLine, 0, ` ${section}`, ` ${row}`);
|
|
94
|
+
return lines;
|
|
95
|
+
}
|
|
96
|
+
const rowText = (line) => line.trim().replace(/\s+/g, ' ');
|
|
97
|
+
/**
|
|
98
|
+
* Append one record to a file: `draft` is a complete standalone draft (`draftSource`'s), whose pragma is dropped. It
|
|
99
|
+
* follows the file's last line after one blank line, in the file's line ending; an empty file becomes a new file with the
|
|
100
|
+
* draft's pragma. A record the file already declares, nested or not, is refused.
|
|
101
|
+
*/
|
|
102
|
+
export function appendRecord(text, draft) {
|
|
103
|
+
const parsed = parse(draft, PATH);
|
|
104
|
+
const record = parsed.ast.records[0];
|
|
105
|
+
if (parsed.diagnostics.length > 0 || parsed.ast.records.length !== 1 || record === undefined)
|
|
106
|
+
refuse('parse', 'Expected one standalone record draft');
|
|
107
|
+
const pragma = /^\uFEFF?(#! ia [^\r\n]+)\r?\n/.exec(draft);
|
|
108
|
+
const body = formatted([
|
|
109
|
+
pragma?.[1] ?? '#! ia 1.0',
|
|
110
|
+
...draft
|
|
111
|
+
.slice(pragma?.[0].length ?? 0)
|
|
112
|
+
.trim()
|
|
113
|
+
.replace(/\r\n/g, '\n')
|
|
114
|
+
.split('\n'),
|
|
115
|
+
], 'The draft').slice(1);
|
|
116
|
+
if (text.replace(BOM, '').trim() === '') {
|
|
117
|
+
const eol = /\r\n/.test(text) ? '\r\n' : '\n';
|
|
118
|
+
return `${text.startsWith(BOM) ? BOM : ''}${[pragma?.[1] ?? '#! ia 1.0', '', ...body].join(eol)}${eol}`;
|
|
119
|
+
}
|
|
120
|
+
const raw = read(text);
|
|
121
|
+
if ([...raw.ast.records, ...raw.ast.records.flatMap(nestedIn)].some((existing) => existing.discriminator === record.discriminator && existing.name.toLowerCase() === record.name.toLowerCase()))
|
|
122
|
+
refuse('duplicate', `This file already declares @${record.discriminator} ${record.name}`);
|
|
123
|
+
const end = raw.texts.length - 1;
|
|
124
|
+
// The file keeps its bytes, the last line its own ending (review C-RC3), gaining the file's only if it had none; one
|
|
125
|
+
// blank line separates the record, and only the new lines take the file's ending.
|
|
126
|
+
const blank = raw.texts[end].trim() === '' ? [] : [''];
|
|
127
|
+
return `${text}${raw.endings[end] === '' ? raw.eol : ''}${[...blank, ...body].map((line) => `${line}${raw.eol}`).join('')}`;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Add one relationship row `<spelling> <target>` to the record `identity` (`@word name`): the last row of its
|
|
131
|
+
* `relationships` section, or a new section at the record's end. The spelling must be a kernel verb, active, inverse or
|
|
132
|
+
* present; the target a canonical identity or `@word name`, either with an optional fragment, and nothing else, so no
|
|
133
|
+
* condition or comment rides along. A row the section already holds, word for word, is refused; a row that differs only
|
|
134
|
+
* in spelling (a canonical identity for a reference, say) is left to admission. Consent is the caller's to judge
|
|
135
|
+
* (`relationshipConsent`), as is whether the target is admitted.
|
|
136
|
+
*/
|
|
137
|
+
export function addRelationship(text, identity, spelling, target) {
|
|
138
|
+
if (typeof spelling !== 'string' || verbOf(spelling) === undefined)
|
|
139
|
+
refuse('spelling', `${JSON.stringify(spelling)} is not a relationship verb`);
|
|
140
|
+
if (typeof target !== 'string' || !TARGETS.some((pattern) => pattern.test(target)))
|
|
141
|
+
refuse('target', `Expected a canonical identity or @<word> <name> target; got ${JSON.stringify(target)}`);
|
|
142
|
+
const raw = read(text), record = recordAt(raw.ast, identity), block = blockOf(raw, record), row = `${spelling} ${target}`;
|
|
143
|
+
const found = sectionsNamed(block.record, 'relationships')[0];
|
|
144
|
+
if (found !== undefined &&
|
|
145
|
+
block.lines.slice(found.span.line, found.span.endLine).some((line) => rowText(line) === row))
|
|
146
|
+
refuse('duplicate', `${identity} already states ${row}`);
|
|
147
|
+
return replaced(raw, record, inserted(block, 'relationships', row));
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Set the schema field `path` (`<section>.<key>`) of the record `identity` (`@word name`) to `value`, a form value
|
|
151
|
+
* `encodeValue` spells for the field's type; with `append`, add `value` as one item to a list field, creating the field
|
|
152
|
+
* when absent. An undeclared field, a value of another type or carrying syntax, a field stated twice, a conditional or
|
|
153
|
+
* structured field, and a multi-line value with a comment inside are refused. A trailing comment on a one-line field is
|
|
154
|
+
* kept.
|
|
155
|
+
*/
|
|
156
|
+
export function setField(text, identity, path, value, schema, append = false) {
|
|
157
|
+
const field = schema.fields.find((candidate) => `${candidate.section}.${candidate.key}` === path);
|
|
158
|
+
if (field === undefined)
|
|
159
|
+
return refuse('field', `The schema declares no field ${path}`);
|
|
160
|
+
if (append && !field.type.startsWith('list of '))
|
|
161
|
+
refuse('value', `${path} is ${field.type}, not a list; set it with =`);
|
|
162
|
+
let encoded = encodeValue(field, value, append);
|
|
163
|
+
const raw = read(text), record = recordAt(raw.ast, identity), block = blockOf(raw, record), target = block.record;
|
|
164
|
+
const children = field.section === 'head' ? target.head : (sectionsNamed(target, field.section)[0]?.children ?? []);
|
|
165
|
+
const fields = children.filter((child) => child.kind === 'field' && child.key === field.key);
|
|
166
|
+
if (fields.length > 1)
|
|
167
|
+
refuse('repeated', `${identity} states ${path} ${fields.length} times`);
|
|
168
|
+
const previous = fields[0];
|
|
169
|
+
if (previous !== undefined && (previous.when !== undefined || previous.children.length > 0))
|
|
170
|
+
refuse('structure', `${identity} states ${path} conditionally or as a block; edit it in its source`);
|
|
171
|
+
if (append) {
|
|
172
|
+
if (previous !== undefined && previous.value.kind !== 'list')
|
|
173
|
+
refuse('structure', `${identity} states ${path} as something other than an inline list`);
|
|
174
|
+
const items = previous?.value.kind === 'list' ? previous.value.items.map((item) => encodeItem(field, item)) : [];
|
|
175
|
+
if (items.includes(encoded))
|
|
176
|
+
refuse('duplicate', `${identity} already lists ${encoded} in ${path}`);
|
|
177
|
+
encoded = `[${[...items, encoded].join(', ')}]`;
|
|
178
|
+
}
|
|
179
|
+
const row = `${field.key} ${encoded}`;
|
|
180
|
+
if (previous === undefined)
|
|
181
|
+
return replaced(raw, record, inserted(block, field.section, row));
|
|
182
|
+
const comments = block.ast.trivia.filter((trivia) => trivia.kind === 'comment' && trivia.line >= previous.span.line && trivia.line <= previous.span.endLine);
|
|
183
|
+
const kept = previous.span.line === previous.span.endLine && comments.length === 1 && comments[0].trailing
|
|
184
|
+
? comments[0].text
|
|
185
|
+
: undefined;
|
|
186
|
+
if (comments.length > 0 && kept === undefined)
|
|
187
|
+
refuse('structure', `${identity} carries a comment inside ${path}; edit it in its source`);
|
|
188
|
+
const lines = [...block.lines], indent = /^ */.exec(lines[previous.span.line - 1])[0];
|
|
189
|
+
lines.splice(previous.span.line - 1, previous.span.endLine - previous.span.line + 1, `${indent}${row}${kept === undefined ? '' : ` ${kept}`}`);
|
|
190
|
+
return replaced(raw, record, lines);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Put the one-line comment `comment` (`# <text>`) directly above the top-level record `identity` (`@word name`), in
|
|
194
|
+
* place of a comment there that starts with the same first word (`# authored-by`, say), so an attribution is replaced,
|
|
195
|
+
* not stacked. A comment is trivia, so no record's digest moves; every other line keeps its bytes. A comment that is not
|
|
196
|
+
* one `#` line of plain text is refused.
|
|
197
|
+
*/
|
|
198
|
+
export function annotateRecord(text, identity, comment) {
|
|
199
|
+
if (typeof comment !== 'string' ||
|
|
200
|
+
!/^# \S[^\r\n\u2028\u2029]*$/.test(comment) ||
|
|
201
|
+
/[\u0000-\u0008\u000b-\u001f\u007f-\u009f--]/.test(comment))
|
|
202
|
+
refuse('value', `Expected one comment line # <text>; got ${JSON.stringify(comment)}`);
|
|
203
|
+
const raw = read(text), record = recordAt(raw.ast, identity), header = record.span.line - 1, first = comment.split(' ')[1];
|
|
204
|
+
const above = raw.ast.trivia.find((trivia) => trivia.kind === 'comment' && trivia.line === record.span.line - 1 && !trivia.trailing);
|
|
205
|
+
if (above !== undefined && above.text.split(' ')[1] === first)
|
|
206
|
+
return assemble(raw, header - 1, header - 1, [comment]);
|
|
207
|
+
return assemble(raw, header, header, [comment, raw.texts[header]]);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* The consent `registry` gives one relationship row of a `@<word>` record: `<spelling>` towards a `@<target>` record,
|
|
211
|
+
* judged as admission judges it (`consentFor`), so a row it refuses would be IA-LANG-EDGE-UNCONSENTED. An unknown
|
|
212
|
+
* spelling is a SourceEditError; a word the registry does not register is no refusal here, as admission refuses its
|
|
213
|
+
* record on its own.
|
|
214
|
+
*/
|
|
215
|
+
export function relationshipConsent(registry, word, spelling, target, fragment) {
|
|
216
|
+
const verb = verbOf(spelling);
|
|
217
|
+
if (verb === undefined)
|
|
218
|
+
return refuse('spelling', `${JSON.stringify(spelling)} is not a relationship verb`);
|
|
219
|
+
const [from, to] = verb.direction === 'out' ? [word, target] : [target, word];
|
|
220
|
+
const side = consentFor(registry, verb.predicate, from, to, verb.direction === 'out' ? fragment : undefined);
|
|
221
|
+
const system = side === undefined ? undefined : registry.registrations.get(side === 'source' ? from : to)?.system;
|
|
222
|
+
return Object.freeze({
|
|
223
|
+
predicate: verb.predicate,
|
|
224
|
+
direction: verb.direction,
|
|
225
|
+
from,
|
|
226
|
+
to,
|
|
227
|
+
...(side === undefined || system === undefined ? {} : { refused: Object.freeze({ side, system }) }),
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=edit-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-source.js","sourceRoot":"","sources":["../../src/editor/edit-source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG9D;;;;;;;;GAQG;AAEH,MAAM,IAAI,GAAG,SAAS,CAAC;AACvB,MAAM,GAAG,GAAG,QAAQ,CAAC;AACrB,MAAM,SAAS,GAAG,8CAA8C,CAAC;AACjE,MAAM,QAAQ,GAAG,8DAA8D,CAAC;AAChF,MAAM,OAAO,GAAG;IACd,IAAI,MAAM,CAAC,0CAA0C,QAAQ,GAAG,CAAC;IACjE,IAAI,MAAM,CAAC,yEAAyE,QAAQ,GAAG,CAAC;CACjG,CAAC;AAWF,SAAS,IAAI,CAAC,IAAY;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAC9B,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAC9D,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAC/B,MAAM,CACJ,OAAO,EACP,4CAA4C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpH,CAAC;IACJ,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACxG,CAAC;AACD,iHAAiH;AACjH,SAAS,QAAQ,CAAC,GAAQ,EAAE,KAAa,EAAE,GAAW,EAAE,KAAwB;IAC9E,sHAAsH;IACtH,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC,EACvF,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAE,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAQD,qHAAqH;AACrH,SAAS,SAAS,CAAC,KAAwB,EAAE,IAAY;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;QACtB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,KAAK,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvG,OAAO,MAAM,CAAC,IAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AACD,SAAS,OAAO,CAAC,GAAQ,EAAE,MAAkB;IAC3C,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/G,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;IACrD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,CAAC;AACjD,CAAC;AACD,uHAAuH;AACvH,SAAS,QAAQ,CAAC,GAAQ,EAAE,MAAkB,EAAE,KAAwB;IACtE,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAC3D,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,MAAkB,EAAyB,EAAE,CAC7D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChE,8FAA8F;AAC9F,SAAS,QAAQ,CAAC,GAAa,EAAE,QAAgB;IAC/C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,IAAI;QACpB,OAAO,MAAM,CAAC,UAAU,EAAE,4CAA4C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpG,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;IACjC,MAAM,OAAO,GAAG,CAAC,MAAkB,EAAE,EAAE,CACrC,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAK,CAAC,WAAW,EAAE,CAAC;IACrF,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,UAAU,EAAE,GAAG,QAAQ,gBAAgB,GAAG,CAAC,MAAM,qBAAqB,CAAC,CAAC;IACnG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAClB,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAChD,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,QAAQ,qDAAqD,CAAC;YACpF,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,uBAAuB,QAAQ,eAAe,CAAC,CAAC;IACzE,OAAO,GAAG,CAAC,CAAC,CAAE,CAAC;AACjB,CAAC;AACD,MAAM,aAAa,GAAG,CAAC,MAAkB,EAAE,IAAY,EAA0B,EAAE;IACjF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAClB,MAAM,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,WAAW,IAAI,IAAI,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;IACrG,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF,sHAAsH;AACtH,SAAS,QAAQ,CAAC,KAAY,EAAE,OAAe,EAAE,GAAW;IAC1D,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,EAC5B,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACrB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;QACvF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;;QACtE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,OAAO,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,SAAS;QAC1F,MAAM,CAAC,OAAO,EAAE,sCAAsC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,SAAS,CACpB;QACE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW;QAC1B,GAAG,KAAK;aACL,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;aAC9B,IAAI,EAAE;aACN,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;aACtB,KAAK,CAAC,IAAI,CAAC;KACf,EACD,WAAW,CACZ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACX,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;IAC1G,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,IACE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC7D,CAAC,QAAQ,EAAE,EAAE,CACX,QAAQ,CAAC,aAAa,KAAK,MAAO,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CACjH;QAED,MAAM,CAAC,WAAW,EAAE,+BAA+B,MAAO,CAAC,aAAa,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9F,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,qHAAqH;IACrH,kFAAkF;IAClF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9H,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAgB,EAAE,MAAc;IAC9F,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS;QAChE,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IAC/E,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChF,MAAM,CAAC,QAAQ,EAAE,+DAA+D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5G,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EACpB,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,EACpC,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAC5B,GAAG,GAAG,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,IACE,KAAK,KAAK,SAAS;QACnB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;QAE5F,MAAM,CAAC,WAAW,EAAE,GAAG,QAAQ,mBAAmB,GAAG,EAAE,CAAC,CAAC;IAC3D,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAY,EACZ,QAAgB,EAChB,IAAY,EACZ,KAAa,EACb,MAAmB,EACnB,MAAM,GAAG,KAAK;IAEd,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC;IAClG,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,EAAE,gCAAgC,IAAI,EAAE,CAAC,CAAC;IACxF,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC9C,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,KAAK,CAAC,IAAI,6BAA6B,CAAC,CAAC;IACzE,IAAI,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EACpB,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,EACpC,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAC5B,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACpH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAsB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC;IACjH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,UAAU,EAAE,GAAG,QAAQ,WAAW,IAAI,IAAI,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;IAC/F,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzF,MAAM,CAAC,WAAW,EAAE,GAAG,QAAQ,WAAW,IAAI,qDAAqD,CAAC,CAAC;IACvG,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YAC1D,MAAM,CAAC,WAAW,EAAE,GAAG,QAAQ,WAAW,IAAI,yCAAyC,CAAC,CAAC;QAC3F,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjH,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,WAAW,EAAE,GAAG,QAAQ,kBAAkB,OAAO,OAAO,IAAI,EAAE,CAAC,CAAC;QACpG,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAClD,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;IACtC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9F,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CACtC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CACnH,CAAC;IACF,MAAM,IAAI,GACR,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAE,CAAC,QAAQ;QAC5F,CAAC,CAAE,QAAQ,CAAC,CAAC,CAA+B,CAAC,IAAI;QACjD,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,SAAS;QAC3C,MAAM,CAAC,WAAW,EAAE,GAAG,QAAQ,6BAA6B,IAAI,yBAAyB,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,EAC5B,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,CAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,MAAM,CACV,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EACtB,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAC9C,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CACzD,CAAC;IACF,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAgB,EAAE,OAAe;IAC5E,IACE,OAAO,OAAO,KAAK,QAAQ;QAC3B,CAAC,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;QAC3C,iDAAiD,CAAC,IAAI,CAAC,OAAO,CAAC;QAE/D,MAAM,CAAC,OAAO,EAAE,2CAA2C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EACpB,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,EACpC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAC7B,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAC/B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClG,CAAC;IACF,IAAI,KAAK,KAAK,SAAS,IAAK,KAAmC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK;QAC1F,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAwB,EACxB,IAAY,EACZ,QAAgB,EAChB,MAAc,EACd,QAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IAC5G,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7G,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAClH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI;QACJ,EAAE;QACF,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KACpG,CAAC,CAAC;AACL,CAAC"}
|
package/dist/editor/index.d.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import type { FileNode, RecordNode, Span } from '../ast.js';
|
|
2
2
|
import type { TypedReference } from '../references.js';
|
|
3
3
|
import type { Token } from '../scanner/tokens.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { DraftSchema } from './values.js';
|
|
5
5
|
export { format, checkFormatPreservation } from '../formatter.js';
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
export { annotateRecord, appendRecord, addRelationship, relationshipConsent, setField } from './edit-source.js';
|
|
7
|
+
export type { RelationshipConsent } from './edit-source.js';
|
|
8
|
+
export { draftValue, encodeValue, SourceEditError } from './values.js';
|
|
9
|
+
export type { DraftField, DraftSchema, SourceEditReason } from './values.js';
|
|
10
|
+
/**
|
|
11
|
+
* Minimal source serialization for a schema-backed form; admission remains a separate operation. Each value is spelled
|
|
12
|
+
* as 2.0.0 spelled it (`draftValue`: text quoted, other types as given). A line break throws a plain Error, as it did in
|
|
13
|
+
* 2.0.0; a value that would add a `when` condition or a comment, or that opens a string, prose or list it does not close,
|
|
14
|
+
* throws SourceEditError. The strict typed spelling is `encodeValue`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function draftSource(discriminator: string, name: string, schema: DraftSchema, values: Readonly<Record<string, string>>): string;
|
|
11
17
|
export interface Position {
|
|
12
18
|
readonly line: number;
|
|
13
19
|
readonly character: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAI5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"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"}
|
package/dist/editor/index.js
CHANGED
|
@@ -4,8 +4,16 @@ import { references } from '../references.js';
|
|
|
4
4
|
import { scan } from '../scanner/index.js';
|
|
5
5
|
import { logicalLines, walk } from '../scanner/lines.js';
|
|
6
6
|
import { tokenizeLine } from '../scanner/tokenize.js';
|
|
7
|
+
import { draftValue } from './values.js';
|
|
7
8
|
export { format, checkFormatPreservation } from '../formatter.js';
|
|
8
|
-
|
|
9
|
+
export { annotateRecord, appendRecord, addRelationship, relationshipConsent, setField } from './edit-source.js';
|
|
10
|
+
export { draftValue, encodeValue, SourceEditError } from './values.js';
|
|
11
|
+
/**
|
|
12
|
+
* Minimal source serialization for a schema-backed form; admission remains a separate operation. Each value is spelled
|
|
13
|
+
* as 2.0.0 spelled it (`draftValue`: text quoted, other types as given). A line break throws a plain Error, as it did in
|
|
14
|
+
* 2.0.0; a value that would add a `when` condition or a comment, or that opens a string, prose or list it does not close,
|
|
15
|
+
* throws SourceEditError. The strict typed spelling is `encodeValue`.
|
|
16
|
+
*/
|
|
9
17
|
export function draftSource(discriminator, name, schema, values) {
|
|
10
18
|
if (!/^[a-z][a-z0-9-]*$/.test(discriminator) || !/^[A-Za-z][A-Za-z0-9-]*$/.test(name))
|
|
11
19
|
throw new Error('Invalid IA discriminator or record name');
|
|
@@ -21,8 +29,7 @@ export function draftSource(discriminator, name, schema, values) {
|
|
|
21
29
|
continue;
|
|
22
30
|
if (typeof value !== 'string' || /[\r\n]/.test(value))
|
|
23
31
|
throw new Error('Form fields must be single-line; use the source draft for multiline prose or structure');
|
|
24
|
-
|
|
25
|
-
const encoded = field.type === 'text' ? `"${value.replaceAll('\\', '\\\\').replaceAll('"', '\\"')}"` : value;
|
|
32
|
+
const encoded = draftValue(field, value);
|
|
26
33
|
const rows = sections.get(field.section) ?? [];
|
|
27
34
|
rows.push(`${field.key} ${encoded}`);
|
|
28
35
|
sections.set(field.section, rows);
|
package/dist/editor/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { ListItem } from '../ast.js';
|
|
2
|
+
import type { SchemaField, SchemaSection } from '../registry/types.js';
|
|
3
|
+
/** The schema facts a source edit reads: a registry `SchemaDeclaration` is one. */
|
|
4
|
+
export interface DraftSchema {
|
|
5
|
+
readonly sections: readonly Pick<SchemaSection, 'name' | 'must'>[];
|
|
6
|
+
readonly fields: readonly Pick<SchemaField, 'section' | 'key' | 'type' | 'must' | 'values' | 'target' | 'form'>[];
|
|
7
|
+
}
|
|
8
|
+
export type DraftField = DraftSchema['fields'][number];
|
|
9
|
+
/** Why a source edit was refused. Each is a defect in the requested edit, never in the file being edited. */
|
|
10
|
+
export type SourceEditReason =
|
|
11
|
+
/** The file does not parse, so no edit can be placed in it. */
|
|
12
|
+
'parse'
|
|
13
|
+
/** No top-level record of the file answers the identity, or the identity is not `@word name`. */
|
|
14
|
+
| 'identity'
|
|
15
|
+
/** The record is nested in another record; nested records are edited in their source. */
|
|
16
|
+
| 'nested'
|
|
17
|
+
/** The schema declares no such field. */
|
|
18
|
+
| 'field'
|
|
19
|
+
/** The value is not one canonical value of the field's type, or would carry syntax beyond it. */
|
|
20
|
+
| 'value'
|
|
21
|
+
/** The record states the section, field or record more than once, so no single place can be edited. */
|
|
22
|
+
| 'repeated'
|
|
23
|
+
/** The row, list item or record is already there. */
|
|
24
|
+
| 'duplicate'
|
|
25
|
+
/** The relationship spelling is no verb of the kernel. */
|
|
26
|
+
| 'spelling'
|
|
27
|
+
/** The relationship target is not a canonical identity or an `@word name` reference. */
|
|
28
|
+
| 'target'
|
|
29
|
+
/** The field is conditional, structured or commented inside its value, so a one-line edit would lose source. */
|
|
30
|
+
| 'structure';
|
|
31
|
+
/** A refused source edit. The language registers no diagnostic code for it: the caller reports the refusal. */
|
|
32
|
+
export declare class SourceEditError extends Error {
|
|
33
|
+
readonly reason: SourceEditReason;
|
|
34
|
+
constructor(reason: SourceEditReason, message: string);
|
|
35
|
+
}
|
|
36
|
+
export declare const refuse: (reason: SourceEditReason, message: string) => never;
|
|
37
|
+
/** IA strings escape only quotes and backslashes. JSON escapes would change tabs and newlines into literal text. */
|
|
38
|
+
export declare const quotedText: (value: string) => string;
|
|
39
|
+
/**
|
|
40
|
+
* The strict spelling of one form value for `field`, or a SourceEditError: the opt-in `setField` and the CLI's
|
|
41
|
+
* `ia preview` and `ia author` use. A form value is data: text is always quoted, so quotes and backslashes cannot end it,
|
|
42
|
+
* and every other type must parse as exactly one value of its type, by the predicates compliance applies, with nothing
|
|
43
|
+
* after it, so no comment, condition, section, record or second field can ride along. A list type takes a bracketed
|
|
44
|
+
* list, or with `item` one list item. Line breaks, C0 and C1 controls but the tab, DEL, the Unicode line and paragraph
|
|
45
|
+
* separators and the bidirectional controls are refused outright.
|
|
46
|
+
*/
|
|
47
|
+
export declare function encodeValue(field: DraftField, text: string, item?: boolean): string;
|
|
48
|
+
/**
|
|
49
|
+
* A form value as 2.0.0's `draftSource` spelled it: text quoted, every other type written as given, so a value the
|
|
50
|
+
* strict encoder refuses but the parser admits is still written and left to admission. Only what would add structure is
|
|
51
|
+
* refused, with SourceEditError: a line break the scanner splits on (CR or LF), a `when` condition, a comment, or a
|
|
52
|
+
* string, prose or list it opens and does not close, which would join the rows after it into this one. Short of those, a
|
|
53
|
+
* value cannot add a field, section or record.
|
|
54
|
+
*/
|
|
55
|
+
export declare function draftValue(field: DraftField, text: string): string;
|
|
56
|
+
/** An authored list item, re-spelled canonically for the field's item type; one the type refuses is refused here too. */
|
|
57
|
+
export declare function encodeItem(field: DraftField, item: ListItem): string;
|
|
58
|
+
//# sourceMappingURL=values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/editor/values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAS,MAAM,WAAW,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGvE,mFAAmF;AACnF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;CACnH;AACD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,6GAA6G;AAC7G,MAAM,MAAM,gBAAgB;AAC1B,+DAA+D;AAC7D,OAAO;AACT,iGAAiG;GAC/F,UAAU;AACZ,yFAAyF;GACvF,QAAQ;AACV,yCAAyC;GACvC,OAAO;AACT,iGAAiG;GAC/F,OAAO;AACT,uGAAuG;GACrG,UAAU;AACZ,qDAAqD;GACnD,WAAW;AACb,0DAA0D;GACxD,UAAU;AACZ,wFAAwF;GACtF,QAAQ;AACV,gHAAgH;GAC9G,WAAW,CAAC;AAEhB,+GAA+G;AAC/G,qBAAa,eAAgB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,MAAM,EAAE,gBAAgB;gBAAxB,MAAM,EAAE,gBAAgB,EACjC,OAAO,EAAE,MAAM;CAKlB;AACD,eAAO,MAAM,MAAM,GAAI,QAAQ,gBAAgB,EAAE,SAAS,MAAM,KAAG,KAElE,CAAC;AAEF,oHAAoH;AACpH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAAsE,CAAC;AAwElH;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,MAAM,CAajF;AAOD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAalE;AACD,yHAAyH;AACzH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEpE"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { parse } from '../parser/index.js';
|
|
2
|
+
import { isId, isIsoDate, isNumberText, isQualifiedName } from '../taxonomy.js';
|
|
3
|
+
/** A refused source edit. The language registers no diagnostic code for it: the caller reports the refusal. */
|
|
4
|
+
export class SourceEditError extends Error {
|
|
5
|
+
reason;
|
|
6
|
+
constructor(reason, message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.reason = reason;
|
|
9
|
+
this.name = 'SourceEditError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export const refuse = (reason, message) => {
|
|
13
|
+
throw new SourceEditError(reason, message);
|
|
14
|
+
};
|
|
15
|
+
/** IA strings escape only quotes and backslashes. JSON escapes would change tabs and newlines into literal text. */
|
|
16
|
+
export const quotedText = (value) => `"${value.replaceAll('\\', '\\\\').replaceAll('"', '\\"')}"`;
|
|
17
|
+
/**
|
|
18
|
+
* Line breaks, and the controls a terminal or a line scanner could read as structure: C0 but the tab, DEL, C1, the
|
|
19
|
+
* Unicode line and paragraph separators, and the bidirectional embedding, override and isolate controls.
|
|
20
|
+
*/
|
|
21
|
+
const UNSAFE = /[\u0000-\u0008\n-\u001f\u007f-\u009f\u2028\u2029\u202a-\u202e\u2066-\u2069]/;
|
|
22
|
+
const PROBE = (text) => `#! ia 1.0\n@schema probe\n value ${text}\n`;
|
|
23
|
+
function inlineValue(text) {
|
|
24
|
+
const parsed = parse(PROBE(text), 'value.ia');
|
|
25
|
+
const record = parsed.ast.records[0];
|
|
26
|
+
const field = record?.head[0];
|
|
27
|
+
if (parsed.diagnostics.length > 0 ||
|
|
28
|
+
parsed.ast.records.length !== 1 ||
|
|
29
|
+
record === undefined ||
|
|
30
|
+
field === undefined ||
|
|
31
|
+
record.head.length !== 1 ||
|
|
32
|
+
record.sections.length > 0 ||
|
|
33
|
+
field.when !== undefined ||
|
|
34
|
+
field.assertive === true ||
|
|
35
|
+
field.children.length > 0 ||
|
|
36
|
+
// The key, then the scalar's one word; a string, list or reference leaves the key as the only word.
|
|
37
|
+
field.words.length !== (field.value.kind === 'scalar' ? 2 : 1))
|
|
38
|
+
refuse('value', `Expected one unconditional value; got ${JSON.stringify(text)}`);
|
|
39
|
+
if (parsed.ast.trivia.some((trivia) => trivia.kind === 'comment'))
|
|
40
|
+
refuse('value', `Expected a value without a comment; got ${JSON.stringify(text)}`);
|
|
41
|
+
return field.value;
|
|
42
|
+
}
|
|
43
|
+
const path = (field) => `${field.section}.${field.key}`;
|
|
44
|
+
/**
|
|
45
|
+
* One canonical scalar spelling of `value` for the field's item type, by the predicates compliance applies to it: an id,
|
|
46
|
+
* qname or number may be quoted, as compliance admits, and is spelled bare.
|
|
47
|
+
*/
|
|
48
|
+
function scalar(field, value) {
|
|
49
|
+
const type = field.type.replace(/^list of /, '');
|
|
50
|
+
const expected = (what) => refuse('value', `${path(field)} expects ${what}`);
|
|
51
|
+
const text = value.kind === 'scalar' || value.kind === 'string' ? value.text : undefined;
|
|
52
|
+
switch (type) {
|
|
53
|
+
case 'text':
|
|
54
|
+
if (text === undefined)
|
|
55
|
+
return expected('text');
|
|
56
|
+
if (field.form === 'iso-date' && !isIsoDate(text))
|
|
57
|
+
return expected('an ISO date (YYYY-MM-DD)');
|
|
58
|
+
return quotedText(text);
|
|
59
|
+
case 'ref':
|
|
60
|
+
if (value.kind !== 'ref')
|
|
61
|
+
return expected(`a reference @<word> <name>${field.target ? ` to @${field.target}` : ''}`);
|
|
62
|
+
if (field.target !== undefined && value.discriminator !== field.target)
|
|
63
|
+
return expected(`a reference to @${field.target}, not @${value.discriminator}`);
|
|
64
|
+
return value.raw;
|
|
65
|
+
case 'id':
|
|
66
|
+
if (text === undefined || !isId(text))
|
|
67
|
+
return expected('an id');
|
|
68
|
+
if (field.values !== undefined && !field.values.includes(text))
|
|
69
|
+
return expected(`one of ${field.values.join(', ')}`);
|
|
70
|
+
return text;
|
|
71
|
+
case 'qname': {
|
|
72
|
+
if (text === undefined || !isQualifiedName(text))
|
|
73
|
+
return expected('a qualified name system/kind/facet/name');
|
|
74
|
+
return text;
|
|
75
|
+
}
|
|
76
|
+
case 'number':
|
|
77
|
+
if (text === undefined || !isNumberText(text))
|
|
78
|
+
return expected('a number');
|
|
79
|
+
return text;
|
|
80
|
+
case 'flag':
|
|
81
|
+
if (value.kind !== 'scalar' || !['true', 'false'].includes(value.text))
|
|
82
|
+
return expected('true or false');
|
|
83
|
+
return value.text;
|
|
84
|
+
default:
|
|
85
|
+
return expected(`a ${type} value`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The strict spelling of one form value for `field`, or a SourceEditError: the opt-in `setField` and the CLI's
|
|
90
|
+
* `ia preview` and `ia author` use. A form value is data: text is always quoted, so quotes and backslashes cannot end it,
|
|
91
|
+
* and every other type must parse as exactly one value of its type, by the predicates compliance applies, with nothing
|
|
92
|
+
* after it, so no comment, condition, section, record or second field can ride along. A list type takes a bracketed
|
|
93
|
+
* list, or with `item` one list item. Line breaks, C0 and C1 controls but the tab, DEL, the Unicode line and paragraph
|
|
94
|
+
* separators and the bidirectional controls are refused outright.
|
|
95
|
+
*/
|
|
96
|
+
export function encodeValue(field, text, item = false) {
|
|
97
|
+
if (typeof text !== 'string' || UNSAFE.test(text))
|
|
98
|
+
refuse('value', 'Form fields must be single-line plain text');
|
|
99
|
+
if (field.type === 'text' || (item && field.type === 'list of text'))
|
|
100
|
+
return scalar(field, { kind: 'string', text, raw: quotedText(text) });
|
|
101
|
+
const value = inlineValue(text.trim());
|
|
102
|
+
const list = field.type.startsWith('list of ');
|
|
103
|
+
if (list && !item) {
|
|
104
|
+
if (value.kind !== 'list')
|
|
105
|
+
refuse('value', `${path(field)} expects a bracketed list`);
|
|
106
|
+
const items = value.items.map((entry) => scalar(field, entry));
|
|
107
|
+
if (new Set(items).size !== items.length)
|
|
108
|
+
refuse('duplicate', `${path(field)} lists a value twice`);
|
|
109
|
+
return `[${items.join(', ')}]`;
|
|
110
|
+
}
|
|
111
|
+
return scalar(field, value);
|
|
112
|
+
}
|
|
113
|
+
/** The scanner's findings for a string, prose or list a value opens and does not close. */
|
|
114
|
+
const OPEN = [
|
|
115
|
+
'IA-LANG-STRING-UNTERMINATED',
|
|
116
|
+
'IA-LANG-PROSE-UNTERMINATED',
|
|
117
|
+
'IA-LANG-LIST-UNTERMINATED',
|
|
118
|
+
];
|
|
119
|
+
/**
|
|
120
|
+
* A form value as 2.0.0's `draftSource` spelled it: text quoted, every other type written as given, so a value the
|
|
121
|
+
* strict encoder refuses but the parser admits is still written and left to admission. Only what would add structure is
|
|
122
|
+
* refused, with SourceEditError: a line break the scanner splits on (CR or LF), a `when` condition, a comment, or a
|
|
123
|
+
* string, prose or list it opens and does not close, which would join the rows after it into this one. Short of those, a
|
|
124
|
+
* value cannot add a field, section or record.
|
|
125
|
+
*/
|
|
126
|
+
export function draftValue(field, text) {
|
|
127
|
+
if (typeof text !== 'string' || /[\r\n]/.test(text))
|
|
128
|
+
refuse('value', 'Form fields must be single-line; use the source draft for multiline prose or structure');
|
|
129
|
+
if (field.type === 'text')
|
|
130
|
+
return quotedText(text);
|
|
131
|
+
const parsed = parse(PROBE(text), 'value.ia');
|
|
132
|
+
// Review C-RC2: an opener left open would join the rows after it (another value's closer, a comment) into this one.
|
|
133
|
+
if (parsed.diagnostics.some((diagnostic) => OPEN.includes(diagnostic.code)))
|
|
134
|
+
refuse('value', `${path(field)} would open a string, prose or list it does not close: ${JSON.stringify(text)}`);
|
|
135
|
+
if (parsed.ast.records[0]?.head.some((row) => row.when !== undefined))
|
|
136
|
+
refuse('value', `${path(field)} would gain a condition: ${JSON.stringify(text)}`);
|
|
137
|
+
if (parsed.ast.trivia.some((trivia) => trivia.kind === 'comment'))
|
|
138
|
+
refuse('value', `${path(field)} would carry a comment: ${JSON.stringify(text)}`);
|
|
139
|
+
return text;
|
|
140
|
+
}
|
|
141
|
+
/** An authored list item, re-spelled canonically for the field's item type; one the type refuses is refused here too. */
|
|
142
|
+
export function encodeItem(field, item) {
|
|
143
|
+
return scalar(field, item);
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/editor/values.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export { diag, isError, LANG_CODES } from './diagnostics.js';
|
|
|
6
6
|
export type { Diagnostic, LangCode, Severity } from './diagnostics.js';
|
|
7
7
|
export { foldProse } from './fold.js';
|
|
8
8
|
export type { ChildNode, FieldNode, FileNode, ItemNode, ItemValue, ListItem, RecordNode, SectionNode, Span, TriviaNode, Value, } from './ast.js';
|
|
9
|
-
export { AXES, BAND_OF, BANDS, CARDINALITIES, CATEGORIES, INVERSE_OF, KINDS, MOVES, PHASES, PLACEMENT_KINDS, PREDICATE_PAIRS, PREDICATES, PRIMITIVES, PROVENANCES, SEVERITIES, TEXT_FORMS, VALUE_TYPES, fieldTypeOf, isArtifactSet, isAxis, isBand, isCardinality, isCategory, isKind, isMove, isPhase, isPlacementKind, isId, isPredicate, isPrimitive, isProvenance, isSeverity, isTextForm, isValueType, } from './taxonomy.js';
|
|
9
|
+
export { AXES, BAND_OF, BANDS, CARDINALITIES, CATEGORIES, INVERSE_OF, KINDS, MOVES, PHASES, PLACEMENT_KINDS, PREDICATE_PAIRS, PREDICATES, PRIMITIVES, PROVENANCES, SEVERITIES, TEXT_FORMS, VALUE_TYPES, fieldTypeOf, isArtifactSet, isAxis, isBand, isCardinality, isCategory, isKind, isMove, isPhase, isPlacementKind, isId, isIsoDate, isNumberText, isQualifiedName, isPredicate, isPrimitive, isProvenance, isSeverity, isTextForm, isValueType, } from './taxonomy.js';
|
|
10
10
|
export type { Axis, Band, Cardinality, Category, FieldType, Kind, Move, Phase, PlacementKind, Predicate, Primitive, Provenance, TextForm, ValueType, } from './taxonomy.js';
|
|
11
11
|
export type { Severity as KernelSeverity } from './taxonomy.js';
|
|
12
12
|
export { canonicalPath } from './paths.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ export { LANGUAGE_VERSION, parse, SUPPORTED_VERSIONS } from './parser/index.js';
|
|
|
5
5
|
export { scan } from './scanner/index.js';
|
|
6
6
|
export { diag, isError, LANG_CODES } from './diagnostics.js';
|
|
7
7
|
export { foldProse } from './fold.js';
|
|
8
|
-
export { AXES, BAND_OF, BANDS, CARDINALITIES, CATEGORIES, INVERSE_OF, KINDS, MOVES, PHASES, PLACEMENT_KINDS, PREDICATE_PAIRS, PREDICATES, PRIMITIVES, PROVENANCES, SEVERITIES, TEXT_FORMS, VALUE_TYPES, fieldTypeOf, isArtifactSet, isAxis, isBand, isCardinality, isCategory, isKind, isMove, isPhase, isPlacementKind, isId, isPredicate, isPrimitive, isProvenance, isSeverity, isTextForm, isValueType, } from './taxonomy.js';
|
|
8
|
+
export { AXES, BAND_OF, BANDS, CARDINALITIES, CATEGORIES, INVERSE_OF, KINDS, MOVES, PHASES, PLACEMENT_KINDS, PREDICATE_PAIRS, PREDICATES, PRIMITIVES, PROVENANCES, SEVERITIES, TEXT_FORMS, VALUE_TYPES, fieldTypeOf, isArtifactSet, isAxis, isBand, isCardinality, isCategory, isKind, isMove, isPhase, isPlacementKind, isId, isIsoDate, isNumberText, isQualifiedName, isPredicate, isPrimitive, isProvenance, isSeverity, isTextForm, isValueType, } from './taxonomy.js';
|
|
9
9
|
export { canonicalPath } from './paths.js';
|
|
10
10
|
export { collisions, identityOf, renderIdentity } from './identity.js';
|
|
11
11
|
export { admits, buildRegistry, consentFor, fieldTypeText, sortDiagnostics, BUILTIN_SYSTEMS, FLOOR_REGISTRATIONS, FLOOR_SYSTEM, RESERVED_KEYWORDS, TAXONOMY_SYSTEM, } from './registry/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,uGAAuG;AACvG,oGAAoG;AACpG,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AActC,OAAO,EACL,IAAI,EACJ,OAAO,EACP,KAAK,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,KAAK,EACL,KAAK,EACL,MAAM,EACN,eAAe,EACf,eAAe,EACf,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,MAAM,EACN,MAAM,EACN,aAAa,EACb,UAAU,EACV,MAAM,EACN,MAAM,EACN,OAAO,EACP,eAAe,EACf,IAAI,EACJ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAC;AAkBvB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAkB7B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAuB7C,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG3G,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,uGAAuG;AACvG,oGAAoG;AACpG,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AActC,OAAO,EACL,IAAI,EACJ,OAAO,EACP,KAAK,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,KAAK,EACL,KAAK,EACL,MAAM,EACN,eAAe,EACf,eAAe,EACf,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,MAAM,EACN,MAAM,EACN,aAAa,EACb,UAAU,EACV,MAAM,EACN,MAAM,EACN,OAAO,EACP,eAAe,EACf,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAC;AAkBvB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAkB7B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAuB7C,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG3G,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/taxonomy.d.ts
CHANGED
|
@@ -46,6 +46,12 @@ export declare const isCardinality: (x: string) => x is Cardinality;
|
|
|
46
46
|
export declare const isTextForm: (x: string) => x is TextForm;
|
|
47
47
|
/** The `id` value rule (compliance C05): an ASCII letter, then letters, digits or hyphens. */
|
|
48
48
|
export declare const isId: (x: string) => boolean;
|
|
49
|
+
/** The `number` value rule (compliance C05): a decimal with an optional sign, fraction and exponent, and finite. */
|
|
50
|
+
export declare const isNumberText: (x: string) => boolean;
|
|
51
|
+
/** The `qname` value rule (compliance C05): `system/kind/facet/name`, each a lowercase word, the kind a kernel kind. */
|
|
52
|
+
export declare function isQualifiedName(x: string): boolean;
|
|
53
|
+
/** The `iso-date` text form (W0-L5): `YYYY-MM-DD` and a real calendar date. */
|
|
54
|
+
export declare function isIsoDate(text: string): boolean;
|
|
49
55
|
export declare function isBand(x: number): x is Band;
|
|
50
56
|
/** The field type spelled by a run of words: `text`, or `list of text`. */
|
|
51
57
|
export declare function fieldTypeOf(words: readonly string[]): FieldType | undefined;
|
package/dist/taxonomy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taxonomy.d.ts","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taxonomy.d.ts","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,UAAU,EACV,eAAe,EACf,MAAM,EACN,UAAU,EACV,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,WAAW,EACX,KAAK,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,EACL,UAAU,EACV,eAAe,EACf,MAAM,EACN,UAAU,EACV,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,WAAW,EACX,KAAK,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACb,OAAO,EACP,eAAe,EACf,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1C,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,gHAAgH;AAChH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAA2C,CAAC;AACvF,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAErD,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACpD,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,yEAAyE;AACzE,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AACzC,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,yEAAyE;AACzE,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,wFAAwF;AACxF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACzD,2DAA2D;AAC3D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,SAAS,EAAE,CAAC;AAC3D;;;GAGG;AACH,eAAO,MAAM,UAAU,uBAAwB,CAAC;AAChD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAKnD,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,IAAoB,CAAC;AAC9D,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,QAA6B,CAAC;AAC3E,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,SAA8B,CAAC;AAC7E,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,KAAsB,CAAC;AACjE,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,SAA8B,CAAC;AAC7E,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,IAAoB,CAAC;AAC9D,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,WAAmC,CAAC;AACpF,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,IAAmB,CAAC;AAC7D,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,QAA6B,CAAC;AAC3E,eAAO,MAAM,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,UAAgC,CAAC;AAChF,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,aAAuC,CAAC;AAC1F,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,SAA+B,CAAC;AAC9E,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,WAAmC,CAAC;AACpF,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,QAA6B,CAAC;AAC3E,8FAA8F;AAC9F,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,KAAG,OAA4C,CAAC;AAC9E,oHAAoH;AACpH,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,KAAG,OACgD,CAAC;AAC1F,wHAAwH;AACxH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAGlD;AACD,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAS/C;AACD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,IAAI,CAE3C;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS,CAO3E"}
|
package/dist/taxonomy.js
CHANGED
|
@@ -27,6 +27,23 @@ export const isCardinality = member(CARDINALITIES);
|
|
|
27
27
|
export const isTextForm = member(TEXT_FORMS);
|
|
28
28
|
/** The `id` value rule (compliance C05): an ASCII letter, then letters, digits or hyphens. */
|
|
29
29
|
export const isId = (x) => /^[A-Za-z][A-Za-z0-9-]*$/.test(x);
|
|
30
|
+
/** The `number` value rule (compliance C05): a decimal with an optional sign, fraction and exponent, and finite. */
|
|
31
|
+
export const isNumberText = (x) => /^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(x) && Number.isFinite(Number(x));
|
|
32
|
+
/** The `qname` value rule (compliance C05): `system/kind/facet/name`, each a lowercase word, the kind a kernel kind. */
|
|
33
|
+
export function isQualifiedName(x) {
|
|
34
|
+
const slots = x.split('/');
|
|
35
|
+
return slots.length === 4 && slots.every((slot) => /^[a-z][a-z0-9-]*$/.test(slot)) && isKind(slots[1]);
|
|
36
|
+
}
|
|
37
|
+
/** The `iso-date` text form (W0-L5): `YYYY-MM-DD` and a real calendar date. */
|
|
38
|
+
export function isIsoDate(text) {
|
|
39
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(text);
|
|
40
|
+
if (match === null)
|
|
41
|
+
return false;
|
|
42
|
+
const year = Number(match[1]), month = Number(match[2]), day = Number(match[3]);
|
|
43
|
+
const leap = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
44
|
+
const days = [31, leap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1];
|
|
45
|
+
return days !== undefined && day >= 1 && day <= days;
|
|
46
|
+
}
|
|
30
47
|
export function isBand(x) {
|
|
31
48
|
return BANDS.includes(x);
|
|
32
49
|
}
|
package/dist/taxonomy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":"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"}
|