@heroiclands/package-build 23.6.1 → 23.7.1

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.
@@ -0,0 +1,313 @@
1
+ /**
2
+ * Whether a note falls in a language's `data.scope`: one of its kinds catches
3
+ * the note, `types` (where stated) admits its type, and `skip` does not name
4
+ * it. A language that states no scope covers every note.
5
+ *
6
+ * @param {Record<string, any>} record - A note's index record.
7
+ * @param {string} address - The note's Address.
8
+ * @param {object|undefined} scope - The language's `data.scope`.
9
+ * @returns {boolean}
10
+ */
11
+ export function inScope(record: Record<string, any>, address: string, scope: object | undefined): boolean;
12
+ /**
13
+ * The `register` rows of a set of index records.
14
+ *
15
+ * @param {Iterable<Record<string, any>>} records - Index records, every
16
+ * Address a string, already narrowed to the audience being published to.
17
+ * @param {Iterable<Record<string, any>>} [all] - Every record of the package;
18
+ * a note carrying a name is cited only where the audience sees it.
19
+ * @returns {object[]} One row per register entry, in record then entry order.
20
+ */
21
+ export function registerRows(records: Iterable<Record<string, any>>, all?: Iterable<Record<string, any>>): object[];
22
+ /**
23
+ * The `retired` rows: one per `data.retired` entry, `instead` a list.
24
+ *
25
+ * @param {Iterable<Record<string, any>>} records - Index records.
26
+ * @returns {object[]}
27
+ */
28
+ export function retiredRows(records: Iterable<Record<string, any>>): object[];
29
+ /**
30
+ * The `tongues` rows: one per `data.tongues` entry.
31
+ *
32
+ * @param {Iterable<Record<string, any>>} records - Index records.
33
+ * @returns {object[]}
34
+ */
35
+ export function tongueRows(records: Iterable<Record<string, any>>): object[];
36
+ /**
37
+ * The `scope` rows: one per value of each kind of `data.scope`, in the order
38
+ * the kinds are declared.
39
+ *
40
+ * @param {Iterable<Record<string, any>>} records - Index records.
41
+ * @returns {object[]}
42
+ */
43
+ export function scopeRows(records: Iterable<Record<string, any>>): object[];
44
+ /**
45
+ * The `letters` rows: one per `data.sounds.letters` entry, `letters` and
46
+ * `tongue` lists.
47
+ *
48
+ * @param {Iterable<Record<string, any>>} records - Index records.
49
+ * @returns {object[]}
50
+ */
51
+ export function letterRows(records: Iterable<Record<string, any>>): object[];
52
+ /**
53
+ * The `edges` rows: one per `data.sounds.edges` entry, `sounds` a list.
54
+ *
55
+ * @param {Iterable<Record<string, any>>} records - Index records.
56
+ * @returns {object[]}
57
+ */
58
+ export function edgeRows(records: Iterable<Record<string, any>>): object[];
59
+ /**
60
+ * The `clusters` rows: one per language stating `data.sounds.clusters`.
61
+ *
62
+ * @param {Iterable<Record<string, any>>} records - Index records.
63
+ * @returns {object[]}
64
+ */
65
+ export function clusterRows(records: Iterable<Record<string, any>>): object[];
66
+ /**
67
+ * The `cluster_groups` rows: one per `data.sounds.clusters.groups` entry,
68
+ * `clusters` a list.
69
+ *
70
+ * @param {Iterable<Record<string, any>>} records - Index records.
71
+ * @returns {object[]}
72
+ */
73
+ export function clusterGroupRows(records: Iterable<Record<string, any>>): object[];
74
+ /**
75
+ * The `mutations` rows: one per `data.sounds.mutations` entry.
76
+ *
77
+ * @param {Iterable<Record<string, any>>} records - Index records.
78
+ * @returns {object[]}
79
+ */
80
+ export function mutationRows(records: Iterable<Record<string, any>>): object[];
81
+ /**
82
+ * The `older` rows: one per `data.older` entry.
83
+ *
84
+ * @param {Iterable<Record<string, any>>} records - Index records.
85
+ * @returns {object[]}
86
+ */
87
+ export function olderRows(records: Iterable<Record<string, any>>): object[];
88
+ /**
89
+ * The `negation` rows: one per language stating `data.negation`.
90
+ *
91
+ * @param {Iterable<Record<string, any>>} records - Index records.
92
+ * @returns {object[]}
93
+ */
94
+ export function negationRows(records: Iterable<Record<string, any>>): object[];
95
+ /**
96
+ * The `name_shapes` rows: one per `data.naming.shapes` entry, each range as
97
+ * its two bounds.
98
+ *
99
+ * @param {Iterable<Record<string, any>>} records - Index records.
100
+ * @returns {object[]}
101
+ */
102
+ export function nameShapeRows(records: Iterable<Record<string, any>>): object[];
103
+ /**
104
+ * The `name_edges` rows: one per `data.naming.edges` entry, `sounds` a list,
105
+ * `vowel` `false` and `of` `name` where unstated.
106
+ *
107
+ * @param {Iterable<Record<string, any>>} records - Index records.
108
+ * @returns {object[]}
109
+ */
110
+ export function nameEdgeRows(records: Iterable<Record<string, any>>): object[];
111
+ /**
112
+ * The `name_draws` rows: one per `data.naming.draws` entry.
113
+ *
114
+ * @param {Iterable<Record<string, any>>} records - Index records.
115
+ * @returns {object[]}
116
+ */
117
+ export function nameDrawRows(records: Iterable<Record<string, any>>): object[];
118
+ /**
119
+ * The `held_from` rows: one per `data.naming.heldFrom` entry.
120
+ *
121
+ * @param {Iterable<Record<string, any>>} records - Index records.
122
+ * @returns {object[]}
123
+ */
124
+ export function heldFromRows(records: Iterable<Record<string, any>>): object[];
125
+ /**
126
+ * The `near_names` rows: one per worked example of `data.naming.nearName`,
127
+ * each with the language's `min_syllables`.
128
+ *
129
+ * @param {Iterable<Record<string, any>>} records - Index records.
130
+ * @returns {object[]}
131
+ */
132
+ export function nearNameRows(records: Iterable<Record<string, any>>): object[];
133
+ /**
134
+ * The `read_past` rows: one per `data.sounds.readPast` entry.
135
+ *
136
+ * @param {Iterable<Record<string, any>>} records - Index records.
137
+ * @returns {object[]}
138
+ */
139
+ export function readPastRows(records: Iterable<Record<string, any>>): object[];
140
+ /**
141
+ * The `sound_changes` rows: one per step of each `data.soundChanges` set, with
142
+ * the set's `position`, `name`, `from_language`, `to_language` and `takes`,
143
+ * and the step's `step_position` within it.
144
+ *
145
+ * @param {Iterable<Record<string, any>>} records - Index records.
146
+ * @returns {object[]}
147
+ */
148
+ export function soundChangeRows(records: Iterable<Record<string, any>>): object[];
149
+ /**
150
+ * The `elements` rows: one per `data.elements` entry, `examples` a list.
151
+ *
152
+ * @param {Iterable<Record<string, any>>} records - Index records.
153
+ * @returns {object[]}
154
+ */
155
+ export function elementRows(records: Iterable<Record<string, any>>): object[];
156
+ /**
157
+ * The `roots` rows: one per `data.roots` entry.
158
+ *
159
+ * @param {Iterable<Record<string, any>>} records - Index records.
160
+ * @returns {object[]}
161
+ */
162
+ export function rootRows(records: Iterable<Record<string, any>>): object[];
163
+ /**
164
+ * The `cognates` rows: one per form of each `data.cognates` set, in the order
165
+ * the set writes them, with the set's `position`, `gloss` and `proto`.
166
+ *
167
+ * @param {Iterable<Record<string, any>>} records - Index records.
168
+ * @returns {object[]}
169
+ */
170
+ export function cognateRows(records: Iterable<Record<string, any>>): object[];
171
+ /**
172
+ * The `stress` rows: one per language stating `data.sounds.stress`.
173
+ *
174
+ * @param {Iterable<Record<string, any>>} records - Index records.
175
+ * @returns {object[]}
176
+ */
177
+ export function stressRows(records: Iterable<Record<string, any>>): object[];
178
+ /**
179
+ * The `finals` rows: one per `data.sounds.finals` entry.
180
+ *
181
+ * @param {Iterable<Record<string, any>>} records - Index records.
182
+ * @returns {object[]}
183
+ */
184
+ export function finalRows(records: Iterable<Record<string, any>>): object[];
185
+ /**
186
+ * The `syllables` rows: one per language stating `data.sounds.syllables`, a
187
+ * list rule always a list (`any` a list of one), the harmony's sets each a
188
+ * column of its own, its partners a list of `{ vowel, partner }` in the order
189
+ * stated.
190
+ *
191
+ * @param {Iterable<Record<string, any>>} records - Index records.
192
+ * @returns {object[]}
193
+ */
194
+ export function syllableRows(records: Iterable<Record<string, any>>): object[];
195
+ /**
196
+ * The `joining` rows: one per `data.sounds.joining` entry.
197
+ *
198
+ * @param {Iterable<Record<string, any>>} records - Index records.
199
+ * @returns {object[]}
200
+ */
201
+ export function joiningRows(records: Iterable<Record<string, any>>): object[];
202
+ /**
203
+ * The `joins` rows: one per `data.sounds.joins` entry.
204
+ *
205
+ * @param {Iterable<Record<string, any>>} records - Index records.
206
+ * @returns {object[]}
207
+ */
208
+ export function joinRows(records: Iterable<Record<string, any>>): object[];
209
+ /**
210
+ * The `marks` rows: one per `data.sounds.marks` entry.
211
+ *
212
+ * @param {Iterable<Record<string, any>>} records - Index records.
213
+ * @returns {object[]}
214
+ */
215
+ export function markRows(records: Iterable<Record<string, any>>): object[];
216
+ /**
217
+ * The `skeleton` rows: one per `data.sounds.skeleton` entry, `second` a list.
218
+ *
219
+ * @param {Iterable<Record<string, any>>} records - Index records.
220
+ * @returns {object[]}
221
+ */
222
+ export function skeletonRows(records: Iterable<Record<string, any>>): object[];
223
+ /**
224
+ * The `frames` rows: one per `data.sounds.frames` entry, `examples` a list of
225
+ * `{ root, form }` in the order the frame states them.
226
+ *
227
+ * @param {Iterable<Record<string, any>>} records - Index records.
228
+ * @returns {object[]}
229
+ */
230
+ export function frameRows(records: Iterable<Record<string, any>>): object[];
231
+ /**
232
+ * The `calling_names` rows: one per `data.callingNames.closings` entry, each
233
+ * with the language's `min_syllables`.
234
+ *
235
+ * @param {Iterable<Record<string, any>>} records - Index records.
236
+ * @returns {object[]}
237
+ */
238
+ export function callingNameRows(records: Iterable<Record<string, any>>): object[];
239
+ /** Every column of the `register` relation, in order. */
240
+ export const REGISTER_COLUMNS: readonly string[];
241
+ /** Every column of the `retired` relation, in order. */
242
+ export const RETIRED_COLUMNS: readonly string[];
243
+ /** Every column of the `tongues` relation, in order. */
244
+ export const TONGUE_COLUMNS: readonly any[];
245
+ /** Every column of the `scope` relation, in order. */
246
+ export const SCOPE_COLUMNS: readonly string[];
247
+ /** Every column of the `letters` relation, in order. */
248
+ export const LETTER_COLUMNS: readonly string[];
249
+ /** Every column of the `edges` relation, in order. */
250
+ export const EDGE_COLUMNS: readonly string[];
251
+ /** Every column of the `clusters` relation, in order. */
252
+ export const CLUSTER_COLUMNS: readonly string[];
253
+ /** Every column of the `cluster_groups` relation, in order. */
254
+ export const CLUSTER_GROUP_COLUMNS: readonly string[];
255
+ /** Every column of the `mutations` relation, in order. */
256
+ export const MUTATION_COLUMNS: readonly string[];
257
+ /** Every column of the `older` relation, in order. */
258
+ export const OLDER_COLUMNS: readonly string[];
259
+ /** Every column of the `name_shapes` relation, in order. */
260
+ export const NAME_SHAPE_COLUMNS: readonly string[];
261
+ /** Every column of the `name_edges` relation, in order. */
262
+ export const NAME_EDGE_COLUMNS: readonly string[];
263
+ /** Every column of the `name_draws` relation, in order. */
264
+ export const NAME_DRAW_COLUMNS: readonly string[];
265
+ /** Every column of the `held_from` relation, in order. */
266
+ export const HELD_FROM_COLUMNS: readonly string[];
267
+ /** Every column of the `near_names` relation, in order. */
268
+ export const NEAR_NAME_COLUMNS: readonly string[];
269
+ /** Every column of the `negation` relation, in order: one row per language. */
270
+ export const NEGATION_COLUMNS: readonly string[];
271
+ /** Every column of the `stress` relation, in order. */
272
+ export const STRESS_COLUMNS: readonly string[];
273
+ /** Every column of the `finals` relation, in order. */
274
+ export const FINAL_COLUMNS: readonly string[];
275
+ /** Every column of the `syllables` relation, in order: one row per language. */
276
+ export const SYLLABLE_COLUMNS: readonly string[];
277
+ /** Every column of the `joining` relation, in order. */
278
+ export const JOINING_COLUMNS: readonly string[];
279
+ /** Every column of the `joins` relation, in order. */
280
+ export const JOIN_COLUMNS: readonly string[];
281
+ /** Every column of the `marks` relation, in order. */
282
+ export const MARK_COLUMNS: readonly string[];
283
+ /** Every column of the `skeleton` relation, in order. */
284
+ export const SKELETON_COLUMNS: readonly string[];
285
+ /** Every column of the `frames` relation, in order. */
286
+ export const FRAME_COLUMNS: readonly string[];
287
+ /** Every column of the `read_past` relation, in order. */
288
+ export const READ_PAST_COLUMNS: readonly string[];
289
+ /** Every column of the `sound_changes` relation, in order: one row per step. */
290
+ export const SOUND_CHANGE_COLUMNS: readonly string[];
291
+ /** Every column of the `elements` relation, in order. */
292
+ export const ELEMENT_COLUMNS: readonly any[];
293
+ /** Every column of the `roots` relation, in order. */
294
+ export const ROOT_COLUMNS: readonly string[];
295
+ /** Every column of the `cognates` relation, in order. */
296
+ export const COGNATE_COLUMNS: readonly string[];
297
+ /** Every column of the `calling_names` relation, in order. */
298
+ export const CALLING_NAME_COLUMNS: readonly string[];
299
+ /**
300
+ * The type of each column that holds no text, by relation, so a relation
301
+ * with no row still has the type a fence's list or number function binds to.
302
+ *
303
+ * @type {Readonly<Record<string, Readonly<Record<string, string>>>>}
304
+ */
305
+ export const LANGUAGE_COLUMN_TYPES: Readonly<Record<string, Readonly<Record<string, string>>>>;
306
+ /**
307
+ * Every relation of a language's register, sounds, history and names: its
308
+ * name, its rows from the records the audience sees and every record of the
309
+ * package, and its columns. {@link LANGUAGE_COLUMN_TYPES} types its columns.
310
+ *
311
+ * @type {ReadonlyArray<[string, (visible: object[], all: object[]) => object[], readonly string[]]>}
312
+ */
313
+ export const LANGUAGE_RELATIONS: ReadonlyArray<[string, (visible: object[], all: object[]) => object[], readonly string[]]>;
@@ -0,0 +1,367 @@
1
+ /**
2
+ * The keys a language note states beside its words: the register of the names
3
+ * the setting gives in the language's reach, the tags the register uses, the
4
+ * forms it does not write, the notes the register covers, the letters and sound
5
+ * rules, the sound changes, the name elements, the roots, the cognates, the
6
+ * forms older than the rules and the negative particle.
7
+ *
8
+ * A leaf module, importing nothing: the note vocabulary reads these
9
+ * declarations as it loads, and `language-data.mjs` checks what the values
10
+ * mean. Every closed list here — the edges, element positions, register
11
+ * kinds, stress rules, joins, marks, onsets, harmony sets, cluster uses and
12
+ * calling-name uses — holds the labels the setting's own tables use, one word
13
+ * for each.
14
+ *
15
+ * @module
16
+ */
17
+ /** The `data` keys a language note states its sounds, names and history in. */
18
+ export const LANGUAGE_DATA_KEYS: readonly string[];
19
+ /**
20
+ * The tongue tag every language accepts without declaring it: a name given in
21
+ * the language of the pages.
22
+ */
23
+ export const RESERVED_TONGUE: "translation";
24
+ /**
25
+ * The placeholder a tongue tag closes on to declare a family of tags, one per
26
+ * tongue named after the colon: `exonym:<tongue>` declares `exonym:vylari`.
27
+ */
28
+ export const TONGUE_PLACEHOLDER: "<tongue>";
29
+ /**
30
+ * The edges of a word a sound rule names: what may open it, close it, stand
31
+ * inside it, and what counts as a syllable.
32
+ */
33
+ export const EDGE_KINDS: readonly string[];
34
+ /** What each edge kind holds, for the reference and for a finding. */
35
+ export const EDGE_MEANINGS: Readonly<{
36
+ openConsonant: "the single consonants that may open a word, where not every one may";
37
+ openCluster: "the clusters that may open a word";
38
+ closeConsonant: "the consonants that may close a word";
39
+ closeCluster: "the clusters that may close a word";
40
+ innerCluster: "the pairs that may stand together inside a word";
41
+ vowelPair: "the vowels that may stand together";
42
+ glide: "the glides that may follow a consonant";
43
+ syllabic: "the consonants that may carry a syllable";
44
+ }>;
45
+ /** The word a sound rule's `sounds` takes in place of a list: every sound. */
46
+ export const ANY_SOUND: "any";
47
+ /**
48
+ * Where in a name an element stands: `opening` opens a name or stands inside
49
+ * it, `closing` closes it, `either` does both, and `link` joins two parts and
50
+ * never begins or ends a name.
51
+ */
52
+ export const ELEMENT_POSITIONS: readonly string[];
53
+ /**
54
+ * What a register name is, where a language sorts its names by kind, and the
55
+ * kind of name an element builds.
56
+ */
57
+ export const REGISTER_KINDS: readonly string[];
58
+ /**
59
+ * The class of name a naming shape or edge holds for: every name, a given or a
60
+ * clan name, or a name by how it is built — `bound` a stem and an ending,
61
+ * `compound` elements alone.
62
+ */
63
+ export const NAME_CLASSES: readonly string[];
64
+ /** The class of name a naming edge holds for where it states none. */
65
+ export const ANY_NAME: "name";
66
+ /**
67
+ * What a place name takes first from what it is held from: a name-stem, a
68
+ * god's name, a founder's given name, or one of the listed elements.
69
+ */
70
+ export const HELD_TAKES: readonly string[];
71
+ /** The `takes` values that are a name a place name shapes. */
72
+ export const HELD_NAMES: readonly string[];
73
+ /** How a name is clipped where a place name takes it. */
74
+ export const HELD_CLIPS: readonly string[];
75
+ /** How often a group of clusters stands inside a word. */
76
+ export const CLUSTER_USES: readonly string[];
77
+ /** Where a language's stress falls. */
78
+ export const STRESS_RULES: readonly string[];
79
+ /** Which sounds meet where two parts of a word join. */
80
+ export const JOIN_MEETINGS: readonly string[];
81
+ /**
82
+ * What happens where they meet: `merge` writes one, `insert` sets the join's
83
+ * letters between, `drop` loses the first, `double` doubles the consonant.
84
+ */
85
+ export const JOIN_RULES: readonly string[];
86
+ /** What a written mark says of its letter. */
87
+ export const MARK_KINDS: readonly string[];
88
+ /** How many of a mark a word may carry: `one` at most, or `any` number. */
89
+ export const MARK_LIMITS: readonly string[];
90
+ /** What a syllable may open on, where the rule is stated. */
91
+ export const ONSET_RULES: readonly string[];
92
+ /** Which harmony a neutral vowel counts as. */
93
+ export const HARMONY_SETS: readonly string[];
94
+ /** Whose name a calling-name closing usually makes. */
95
+ export const CALLING_USES: readonly string[];
96
+ /**
97
+ * The keys of one `data.tongues` entry.
98
+ *
99
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
100
+ */
101
+ export const TONGUE_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
102
+ /**
103
+ * The keys of one `data.register` entry.
104
+ *
105
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
106
+ */
107
+ export const REGISTER_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
108
+ /**
109
+ * The keys of one `data.retired` entry.
110
+ *
111
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
112
+ */
113
+ export const RETIRED_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
114
+ /**
115
+ * The keys of a language's `data.scope`: the notes its register covers. A note
116
+ * is in scope when any one of them catches it and `skip` does not name it.
117
+ *
118
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
119
+ */
120
+ export const SCOPE_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
121
+ /**
122
+ * The keys of one `data.sounds.letters` entry.
123
+ *
124
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
125
+ */
126
+ export const LETTER_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
127
+ /**
128
+ * The keys of one `data.sounds.edges` entry.
129
+ *
130
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
131
+ */
132
+ export const EDGE_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
133
+ /**
134
+ * The keys of one `data.sounds.clusters.groups` entry: clusters of one kind,
135
+ * and how often they stand.
136
+ *
137
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
138
+ */
139
+ export const CLUSTER_GROUP_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
140
+ /**
141
+ * The keys of a language's `data.sounds.clusters`.
142
+ *
143
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
144
+ */
145
+ export const CLUSTER_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
146
+ /**
147
+ * The keys of one `data.sounds.readPast` entry.
148
+ *
149
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
150
+ */
151
+ export const READ_PAST_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
152
+ /**
153
+ * The keys of one `data.sounds.finals` entry: a syllable final, for a
154
+ * language whose syllables are parsed by them.
155
+ *
156
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
157
+ */
158
+ export const FINAL_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
159
+ /**
160
+ * The keys of one `data.sounds.joining` entry: how two parts are written
161
+ * where the first closes and the second opens on the given sounds.
162
+ *
163
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
164
+ */
165
+ export const JOINING_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
166
+ /**
167
+ * The keys of one `data.sounds.joins` entry: what happens where two parts of a
168
+ * word meet.
169
+ *
170
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
171
+ */
172
+ export const JOIN_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
173
+ /**
174
+ * The keys of one `data.sounds.marks` entry: a mark the language writes on a
175
+ * letter.
176
+ *
177
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
178
+ */
179
+ export const MARK_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
180
+ /**
181
+ * The keys of a language's `data.sounds.syllables.harmony`.
182
+ *
183
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
184
+ */
185
+ export const HARMONY_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
186
+ /**
187
+ * The keys of a language's `data.sounds.syllables`: what a syllable may open
188
+ * and close on, and what a word may.
189
+ *
190
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
191
+ */
192
+ export const SYLLABLE_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
193
+ /**
194
+ * The keys of one `data.sounds.skeleton` entry: the vowel set between a
195
+ * root's second and third consonants.
196
+ *
197
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
198
+ */
199
+ export const SKELETON_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
200
+ /**
201
+ * The keys of one `data.sounds.frames` entry: a pattern a root is set in.
202
+ *
203
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
204
+ */
205
+ export const FRAME_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
206
+ /**
207
+ * The keys of one `data.sounds.mutations` entry: a sound and what it becomes
208
+ * where a named mutation holds.
209
+ *
210
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
211
+ */
212
+ export const MUTATION_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
213
+ /**
214
+ * The keys of a language's `data.sounds`.
215
+ *
216
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
217
+ */
218
+ export const SOUND_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
219
+ /**
220
+ * The keys of one `data.soundChanges` entry.
221
+ *
222
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
223
+ */
224
+ export const SOUND_CHANGE_STEP_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
225
+ /**
226
+ * The keys of one `data.soundChanges` set: an ordered run of steps, named, and
227
+ * where they lead from and to.
228
+ *
229
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
230
+ */
231
+ export const SOUND_CHANGE_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
232
+ /**
233
+ * The keys of one `data.elements` entry.
234
+ *
235
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
236
+ */
237
+ export const ELEMENT_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
238
+ /**
239
+ * The keys of one `data.roots` entry.
240
+ *
241
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
242
+ */
243
+ export const ROOT_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
244
+ /**
245
+ * The keys of one `data.cognates` entry.
246
+ *
247
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
248
+ */
249
+ export const COGNATE_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
250
+ /**
251
+ * The keys of one `data.callingNames.closings` entry: an ending, or the first
252
+ * syllable doubled, that a calling name closes on.
253
+ *
254
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
255
+ */
256
+ export const CALLING_CLOSING_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
257
+ /**
258
+ * The keys of a language's `data.callingNames`: the short name a long given
259
+ * name is called by.
260
+ *
261
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
262
+ */
263
+ export const CALLING_NAME_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
264
+ /**
265
+ * The keys of one `data.older` entry.
266
+ *
267
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
268
+ */
269
+ export const OLDER_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
270
+ /**
271
+ * The keys of a language's `data.negation`.
272
+ *
273
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
274
+ */
275
+ export const NEGATION_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
276
+ /**
277
+ * The keys of one `data.naming.shapes` entry: how long a class of name runs.
278
+ *
279
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
280
+ */
281
+ export const NAME_SHAPE_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
282
+ /**
283
+ * The keys of one `data.naming.edges` entry: the sounds a name may open or
284
+ * close on, where a name keeps edges ordinary words do not.
285
+ *
286
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
287
+ */
288
+ export const NAME_EDGE_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
289
+ /**
290
+ * The keys of one `data.naming.draws` entry: the element kinds a kind of name
291
+ * is built from.
292
+ *
293
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
294
+ */
295
+ export const NAME_DRAW_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
296
+ /**
297
+ * The keys of one `data.naming.heldFrom` entry: what a place name takes first
298
+ * from what the place is held from.
299
+ *
300
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
301
+ */
302
+ export const HELD_FROM_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
303
+ /**
304
+ * The keys of one `data.naming.nearName.examples` entry.
305
+ *
306
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
307
+ */
308
+ export const NEAR_NAME_EXAMPLE_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
309
+ /**
310
+ * The keys of a language's `data.naming.nearName`.
311
+ *
312
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
313
+ */
314
+ export const NEAR_NAME_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
315
+ /**
316
+ * The keys of a language's `data.naming`: the parameters its names keep
317
+ * beyond the rules its words keep.
318
+ *
319
+ * @type {readonly import("./data-keys.mjs").InnerKeySpec[]}
320
+ */
321
+ export const NAMING_FIELDS: readonly import("./data-keys.mjs").InnerKeySpec[];
322
+ /**
323
+ * The `data` fields this module declares, in the order the vocabulary lists
324
+ * them. {@link module:engine/language-data.checkLanguageData} checks what the
325
+ * values mean.
326
+ *
327
+ * @type {readonly object[]}
328
+ */
329
+ export const LANGUAGE_DATA_FIELDS: readonly object[];
330
+ /** The keys of {@link TONGUE_FIELDS}, in declared order. */
331
+ export const TONGUE_KEYS: readonly string[];
332
+ /** The keys of {@link REGISTER_FIELDS}, in declared order. */
333
+ export const REGISTER_KEYS: readonly string[];
334
+ /** The keys of {@link RETIRED_FIELDS}, in declared order. */
335
+ export const RETIRED_KEYS: readonly string[];
336
+ /** The keys of {@link LETTER_FIELDS}, in declared order. */
337
+ export const LETTER_KEYS: readonly string[];
338
+ /** The keys of {@link EDGE_FIELDS}, in declared order. */
339
+ export const EDGE_KEYS: readonly string[];
340
+ /** The keys of {@link READ_PAST_FIELDS}, in declared order. */
341
+ export const READ_PAST_KEYS: readonly string[];
342
+ /** The keys of {@link SOUND_CHANGE_STEP_FIELDS}, in declared order. */
343
+ export const SOUND_CHANGE_STEP_KEYS: readonly string[];
344
+ /** The keys of {@link FINAL_FIELDS}, in declared order. */
345
+ export const FINAL_KEYS: readonly string[];
346
+ /** The keys of {@link JOINING_FIELDS}, in declared order. */
347
+ export const JOINING_KEYS: readonly string[];
348
+ /** The keys of {@link JOIN_FIELDS}, in declared order. */
349
+ export const JOIN_KEYS: readonly string[];
350
+ /** The keys of {@link MARK_FIELDS}, in declared order. */
351
+ export const MARK_KEYS: readonly string[];
352
+ /** The keys of {@link SKELETON_FIELDS}, in declared order. */
353
+ export const SKELETON_KEYS: readonly string[];
354
+ /** The keys of {@link CALLING_CLOSING_FIELDS}, in declared order. */
355
+ export const CALLING_CLOSING_KEYS: readonly string[];
356
+ /** The keys of {@link ELEMENT_FIELDS}, in declared order. */
357
+ export const ELEMENT_KEYS: readonly string[];
358
+ /** The keys of {@link ROOT_FIELDS}, in declared order. */
359
+ export const ROOT_KEYS: readonly string[];
360
+ /** The keys of {@link MUTATION_FIELDS}, in declared order. */
361
+ export const MUTATION_KEYS: readonly string[];
362
+ /** The keys of {@link CLUSTER_GROUP_FIELDS}, in declared order. */
363
+ export const CLUSTER_GROUP_KEYS: readonly string[];
364
+ /** The keys of {@link OLDER_FIELDS}, in declared order. */
365
+ export const OLDER_KEYS: readonly string[];
366
+ /** The keys of {@link SCOPE_FIELDS}, in declared order. */
367
+ export const SCOPE_KINDS: readonly string[];