@intlayer/types 9.1.0 → 9.1.2
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DeclaredLocales, LocalesValues, Schema, SchemaKeys } from "./module_augmentation.js";
|
|
1
|
+
import { DeclaredLocales, DeclaredVariants, LocalesValues, Schema, SchemaKeys } from "./module_augmentation.js";
|
|
2
2
|
import { FilePathPattern } from "./filePathPattern.js";
|
|
3
3
|
import { NodeType } from "./nodeType.js";
|
|
4
4
|
//#region src/dictionary.d.ts
|
|
@@ -96,6 +96,37 @@ type DictionaryQualifierType = "variant" | "item";
|
|
|
96
96
|
* values — an array registers the same content under every listed variant id.
|
|
97
97
|
*/
|
|
98
98
|
type DictionaryVariantValue = string | Record<string, string | number>;
|
|
99
|
+
/**
|
|
100
|
+
* A variant coordinate as pinned by a **selector** (or by a provider default):
|
|
101
|
+
* one value, or an **ordered preference chain**.
|
|
102
|
+
*
|
|
103
|
+
* A chain is tried left to right against the entries the key declares, and the
|
|
104
|
+
* first declared one wins; when none is declared the implicit `default` entry
|
|
105
|
+
* is used, exactly as for a single value. So `['black-friday', 'promo']` reads
|
|
106
|
+
* as "black-friday if this key has one, else promo, else default".
|
|
107
|
+
*
|
|
108
|
+
* Note this is the mirror image of the array accepted by the `variant` field of
|
|
109
|
+
* a {@link Dictionary}: there an array **declares** one entry per element
|
|
110
|
+
* (fan-out), here it **consumes** them in priority order.
|
|
111
|
+
*/
|
|
112
|
+
type DictionaryVariantChain = DictionaryVariantValue | readonly DictionaryVariantValue[];
|
|
113
|
+
/**
|
|
114
|
+
* Variant default carried by a framework provider (`<IntlayerProvider variant>`)
|
|
115
|
+
* and applied to every dictionary read below it, the way `locale` already is.
|
|
116
|
+
*
|
|
117
|
+
* Three forms:
|
|
118
|
+
* - `'school1'` — one named variant for every key
|
|
119
|
+
* - `['school1', 'default']` — an ordered {@link DictionaryVariantChain}
|
|
120
|
+
* - `{ key1: 'school1', default: 'base' }` — per dictionary key, with the
|
|
121
|
+
* reserved `default` entry covering every key not listed
|
|
122
|
+
*
|
|
123
|
+
* On a provider a plain object is **always** read as the per-key map, never as
|
|
124
|
+
* a structured variant value — the two are structurally identical. To pin a
|
|
125
|
+
* structured variant globally, nest it under an entry:
|
|
126
|
+
* `variant={{ default: { id: 'prod_abc' } }}`.
|
|
127
|
+
*/
|
|
128
|
+
type ProviderVariantMap<Key extends string = DictionaryKey> = Partial<Record<Key | "default", DictionaryVariantChain>>;
|
|
129
|
+
type ProviderVariant<Key extends string = DictionaryKey> = string | readonly DictionaryVariantValue[] | ProviderVariantMap<Key>;
|
|
99
130
|
/**
|
|
100
131
|
* Output of the merge step for a key whose dictionaries declare one or more
|
|
101
132
|
* qualifier dimensions (`variant`, `item`).
|
|
@@ -143,14 +174,20 @@ type QualifiedDictionaryGroup = {
|
|
|
143
174
|
*
|
|
144
175
|
* - `{ item: 2 }` selects a collection item (1-based index)
|
|
145
176
|
* - `{ variant: 'black-friday' }` selects a named variant
|
|
177
|
+
* - `{ variant: ['black-friday', 'promo'] }` selects the first of an ordered
|
|
178
|
+
* preference chain that the key actually declares
|
|
146
179
|
* - `{ variant: { id: 'prod_abc', userId: '123' } }` selects a structured
|
|
147
180
|
* variant; the object must equal the variant declared on the dictionary
|
|
148
181
|
* - `locale` composes with any of the above and overrides the context locale
|
|
149
182
|
*/
|
|
150
183
|
type DictionarySelector = {
|
|
151
|
-
|
|
184
|
+
/**
|
|
185
|
+
* Restricted to the declared locales (no `string` escape hatch), so a typo is
|
|
186
|
+
* a compile error and the declared locales are offered as suggestions.
|
|
187
|
+
*/
|
|
188
|
+
locale?: DeclaredLocales;
|
|
152
189
|
item?: number;
|
|
153
|
-
variant?:
|
|
190
|
+
variant?: DictionaryVariantChain;
|
|
154
191
|
};
|
|
155
192
|
type QualifiedEntryContent<Entry> = Entry extends {
|
|
156
193
|
content: infer Content;
|
|
@@ -161,8 +198,14 @@ type SplitCompositeId<Id extends string> = Id extends `${infer Head}/${infer Tai
|
|
|
161
198
|
* Zips the declared qualifier dimensions with the segments decoded from a
|
|
162
199
|
* composite id into a coordinate record (e.g. `['variant', 'item']` +
|
|
163
200
|
* `['promo', '2']` → `{ variant: 'promo'; item: '2' }`).
|
|
201
|
+
*
|
|
202
|
+
* Both tuples are consumed head-first in lockstep. A mapped type over
|
|
203
|
+
* `keyof QualifierTypes` cannot be used here: remapping the keys of a tuple
|
|
204
|
+
* collapses the index into the union of all positions, so every dimension would
|
|
205
|
+
* receive the union of all segments (`{ variant: 'promo' | '2'; item: 'promo' |
|
|
206
|
+
* '2' }`) and no entry would ever compare equal to a selector coordinate.
|
|
164
207
|
*/
|
|
165
|
-
type ZipQualifierCoordinates<QualifierTypes extends readonly DictionaryQualifierType[], Segments extends readonly string[]> =
|
|
208
|
+
type ZipQualifierCoordinates<QualifierTypes extends readonly DictionaryQualifierType[], Segments extends readonly string[]> = QualifierTypes extends readonly [infer Dimension extends DictionaryQualifierType, ...infer RestDimensions extends readonly DictionaryQualifierType[]] ? Segments extends readonly [infer Segment extends string, ...infer RestSegments extends readonly string[]] ? { [Key in Dimension]: Segment; } & ZipQualifierCoordinates<RestDimensions, RestSegments> : unknown : unknown;
|
|
166
209
|
/**
|
|
167
210
|
* Rebuilds the per-entry shape (`{ variant; item; content }`) from the
|
|
168
211
|
* `content` map keyed by composite id, so the coordinate-comparison helpers can
|
|
@@ -188,25 +231,41 @@ type CoordinateEquals<Left, Right> = [StringifyCoordinate<Left>] extends [String
|
|
|
188
231
|
* precisely; an object variant broadens to `string` (it matches any declared
|
|
189
232
|
* variant entry, since the object identity is not reconstructable at the type
|
|
190
233
|
* level). An absent selector defaults to the `'default'` variant.
|
|
234
|
+
*
|
|
235
|
+
* A {@link DictionaryVariantChain} broadens to the **union** of its entries:
|
|
236
|
+
* which one wins depends on what the key declares, which is a runtime fact, so
|
|
237
|
+
* the content type is the union of every outcome the chain can produce.
|
|
191
238
|
*/
|
|
192
|
-
type SelectorVariant<Selector> = Selector extends
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
239
|
+
type SelectorVariant<Selector> = "variant" extends keyof Selector ? Selector["variant" & keyof Selector] extends (infer Variant) ? Variant extends readonly (infer ChainEntry)[] ? ChainEntry extends string ? ChainEntry : string : Variant extends string ? Variant : string : never : "default";
|
|
240
|
+
/** The item a selector pins, or `undefined` when it leaves the axis open. */
|
|
241
|
+
type SelectorItem<Selector> = "item" extends keyof Selector ? Selector["item" & keyof Selector] : undefined;
|
|
242
|
+
/**
|
|
243
|
+
* The variant ids a group declares — the first segment of every composite id
|
|
244
|
+
* (`variant` is always the outermost dimension in canonical order).
|
|
245
|
+
*/
|
|
246
|
+
type DeclaredVariantIds<ContentMap> = SplitCompositeId<keyof ContentMap & string>[0];
|
|
247
|
+
/**
|
|
248
|
+
* The variant id a selector actually resolves to, mirroring the runtime
|
|
249
|
+
* sparse-override fallback: the requested id when the group declares it,
|
|
250
|
+
* otherwise the `'default'` entry when the group declares one.
|
|
251
|
+
*
|
|
252
|
+
* A broad (non-literal) variant — what an object variant widens to — is left
|
|
253
|
+
* untouched, since it is meant to match any declared entry.
|
|
254
|
+
*/
|
|
255
|
+
type EffectiveSelectorVariant<Selector, DeclaredIds extends string> = SelectorVariant<Selector> extends (infer Requested extends string) ? string extends Requested ? Requested : Requested extends DeclaredIds ? Requested : "default" extends DeclaredIds ? "default" : Requested : never;
|
|
198
256
|
/**
|
|
199
257
|
* Whether a single group entry matches the selector across every declared
|
|
200
258
|
* dimension. The `item` dimension matches any value when the selector leaves it
|
|
201
|
-
* open (collection axis)
|
|
259
|
+
* open (collection axis); the `variant` dimension is compared against the
|
|
260
|
+
* already-resolved effective id, so the `default` fallback applies here too.
|
|
202
261
|
*/
|
|
203
|
-
type EntryMatchesSelector<Entry, QualifierTypes extends readonly DictionaryQualifierType[], Selector> = ("variant" extends QualifierTypes[number] ? Entry extends {
|
|
262
|
+
type EntryMatchesSelector<Entry, QualifierTypes extends readonly DictionaryQualifierType[], Selector, EffectiveVariant> = ("variant" extends QualifierTypes[number] ? Entry extends {
|
|
204
263
|
variant: infer Variant;
|
|
205
|
-
} ? CoordinateEquals<Variant,
|
|
264
|
+
} ? CoordinateEquals<Variant, EffectiveVariant> : false : true) extends true ? "item" extends QualifierTypes[number] ? [SelectorItem<Selector>] extends [undefined] ? true : Entry extends {
|
|
206
265
|
item: infer Item;
|
|
207
266
|
} ? CoordinateEquals<Item, SelectorItem<Selector>> : false : true : false;
|
|
208
267
|
/** Entries that match the selector. */
|
|
209
|
-
type MatchingEntries<Entries, QualifierTypes extends readonly DictionaryQualifierType[], Selector> = { [Key in keyof Entries as EntryMatchesSelector<Entries[Key], QualifierTypes, Selector> extends true ? Key : never]: Entries[Key]; };
|
|
268
|
+
type MatchingEntries<Entries, QualifierTypes extends readonly DictionaryQualifierType[], Selector, EffectiveVariant> = { [Key in keyof Entries as EntryMatchesSelector<Entries[Key], QualifierTypes, Selector, EffectiveVariant> extends true ? Key : never]: Entries[Key]; };
|
|
210
269
|
/** Whether the collection (`item`) axis is left open (→ array result). */
|
|
211
270
|
type IsItemAxisOpen<QualifierTypes extends readonly DictionaryQualifierType[], Selector> = "item" extends QualifierTypes[number] ? [SelectorItem<Selector>] extends [undefined] ? true : false : false;
|
|
212
271
|
/**
|
|
@@ -219,12 +278,14 @@ type IsItemAxisOpen<QualifierTypes extends readonly DictionaryQualifierType[], S
|
|
|
219
278
|
* entry:
|
|
220
279
|
* - `item` left open → array of the matching entries' content
|
|
221
280
|
* - all dimensions pinned → that single entry's content (or `null` if none match)
|
|
281
|
+
* - a variant the group does not declare → the `default` entry's content, when
|
|
282
|
+
* the group declares one (sparse-override fallback)
|
|
222
283
|
* - plain dictionary → its `content` (selector ignored)
|
|
223
284
|
*/
|
|
224
285
|
type ResolveQualifiedDictionaryContent<T, Selector = undefined> = T extends {
|
|
225
286
|
qualifierTypes: infer QualifierTypes extends readonly DictionaryQualifierType[];
|
|
226
287
|
content: infer ContentMap extends Record<string, any>;
|
|
227
|
-
} ? ReconstructedEntries<ContentMap, QualifierTypes
|
|
288
|
+
} ? MatchingEntries<ReconstructedEntries<ContentMap, QualifierTypes>, QualifierTypes, Selector, EffectiveSelectorVariant<Selector, DeclaredVariantIds<ContentMap>>> extends (infer Matched) ? IsItemAxisOpen<QualifierTypes, Selector> extends true ? QualifiedEntryContent<Matched[keyof Matched]>[] : [keyof Matched] extends [never] ? null : QualifiedEntryContent<Matched[keyof Matched]> : never : T extends {
|
|
228
289
|
content: infer Content;
|
|
229
290
|
} ? Content : never;
|
|
230
291
|
/** Distributes over the union of a group's entries. */
|
|
@@ -238,17 +299,87 @@ type EntryVariant<Entry> = Entry extends {
|
|
|
238
299
|
type EntryItem<Entry> = Entry extends {
|
|
239
300
|
item: infer Item;
|
|
240
301
|
} ? Item : never;
|
|
302
|
+
/**
|
|
303
|
+
* Every variant id a qualified group declares — the variant segment of each
|
|
304
|
+
* composite id, in its stored (serialized) form. Distributes over a union of
|
|
305
|
+
* groups so it can be applied to the whole dictionary registry at once.
|
|
306
|
+
*/
|
|
307
|
+
type VariantIdsOfGroup<T> = T extends {
|
|
308
|
+
qualifierTypes: infer QualifierTypes extends readonly DictionaryQualifierType[];
|
|
309
|
+
content: infer ContentMap;
|
|
310
|
+
} ? "variant" extends QualifierTypes[number] ? DeclaredVariantIds<ContentMap> : never : never;
|
|
311
|
+
/**
|
|
312
|
+
* Splits the serialized ids of a group into their two declaration forms. An
|
|
313
|
+
* object variant serializes to `field=value` pairs joined by `&`, so the
|
|
314
|
+
* presence of `=` discriminates it from a named (string) variant.
|
|
315
|
+
*/
|
|
316
|
+
type NamedVariantIds<Ids> = Ids extends `${string}=${string}` ? never : Ids;
|
|
317
|
+
type ObjectVariantIds<Ids> = Ids extends `${string}=${string}` ? Ids : never;
|
|
318
|
+
/** Rebuilds one `field=value` pair into `{ field: value }`. */
|
|
319
|
+
type ParseVariantPair<Pair extends string> = Pair extends `${infer Field}=${infer Value}` ? { [Key in Field]: Value; } : never;
|
|
320
|
+
/**
|
|
321
|
+
* Rebuilds a serialized object-variant id into the object literal that declared
|
|
322
|
+
* it (`'category=audio&id=abc'` → `{ category: 'audio'; id: 'abc' }`), so the
|
|
323
|
+
* selector is typed by the declaration rather than by its storage encoding.
|
|
324
|
+
*
|
|
325
|
+
* Values come back as string literals: the serialization stringifies numbers,
|
|
326
|
+
* and percent-encoded characters (see `serializeVariant`) are not decoded, so a
|
|
327
|
+
* variant whose field values contain path-hostile characters is matched on its
|
|
328
|
+
* encoded form.
|
|
329
|
+
*/
|
|
330
|
+
type ParseObjectVariantId<Id extends string> = Id extends `${infer Pair}&${infer Rest}` ? ParseVariantPair<Pair> & ParseObjectVariantId<Rest> : ParseVariantPair<Id>;
|
|
331
|
+
/**
|
|
332
|
+
* The **named** variant ids declared by a group (or by a union of groups).
|
|
333
|
+
* Excludes object variants: their serialized form is an internal storage
|
|
334
|
+
* encoding, never a value the selector should accept as a string.
|
|
335
|
+
*/
|
|
336
|
+
type DictionaryVariantIdsOf<T> = NamedVariantIds<VariantIdsOfGroup<T>>;
|
|
337
|
+
/**
|
|
338
|
+
* The object variants a group declares, rebuilt into their declared shape.
|
|
339
|
+
*
|
|
340
|
+
* Left as the intersection `ParseObjectVariantId` accumulates: wrapping it in a
|
|
341
|
+
* flattening mapped type makes TypeScript print the wrapper's name instead of
|
|
342
|
+
* resolving it, which hides the accepted values from the error message.
|
|
343
|
+
*/
|
|
344
|
+
type DictionaryObjectVariantsOf<T> = ParseObjectVariantId<ObjectVariantIds<VariantIdsOfGroup<T>> & string>;
|
|
345
|
+
/**
|
|
346
|
+
* Whether a group declares a `default` entry — the target every undeclared
|
|
347
|
+
* variant falls back to. A group without one (an object-variant catalogue, say)
|
|
348
|
+
* resolves an undeclared variant to `null`, so it cannot accept the project
|
|
349
|
+
* vocabulary.
|
|
350
|
+
*/
|
|
351
|
+
type HasDefaultVariant<T> = "default" extends VariantIdsOfGroup<T> ? true : false;
|
|
241
352
|
/**
|
|
242
353
|
* The selector accepted for a specific qualified dictionary group `T`: each
|
|
243
354
|
* dimension is constrained to the coordinates that actually exist, so an unknown
|
|
244
|
-
* `item` is a compile-time error.
|
|
245
|
-
*
|
|
246
|
-
*
|
|
355
|
+
* `item` is a compile-time error. Plain dictionaries (no `entries`) fall back to
|
|
356
|
+
* the loose {@link DictionarySelector}.
|
|
357
|
+
*
|
|
358
|
+
* The two variant forms are scoped differently, because they mean different
|
|
359
|
+
* things:
|
|
360
|
+
*
|
|
361
|
+
* - **Named** variants always accept the names this key declares. A key that
|
|
362
|
+
* also declares a `default` entry additionally accepts any name declared
|
|
363
|
+
* **anywhere in the project** (`KnownVariants`), because an undeclared name
|
|
364
|
+
* resolves to that `default` entry at runtime. That is what makes the
|
|
365
|
+
* sparse-override pattern typecheck — one session-wide variant passed to every
|
|
366
|
+
* key, most of which override nothing — while still rejecting a name no
|
|
367
|
+
* dictionary declares (a typo). A key **without** a `default` entry resolves
|
|
368
|
+
* an undeclared name to `null`, so it accepts only its own names.
|
|
369
|
+
* - **Object** variants address one specific record, so they are restricted to
|
|
370
|
+
* the objects **this key** declares, rebuilt from their stored form. They are
|
|
371
|
+
* never accepted in their serialized string form (`'id=abc&userId=123'`) —
|
|
372
|
+
* that is a storage encoding, not part of the API.
|
|
247
373
|
*/
|
|
248
|
-
type
|
|
249
|
-
|
|
374
|
+
type SelectableVariantsOf<T, KnownVariants> = NamedVariantIds<EntryVariant<GroupEntryUnion<T>>> | (HasDefaultVariant<T> extends true ? KnownVariants : never) | DictionaryObjectVariantsOf<T>;
|
|
375
|
+
type DictionarySelectorForGroup<T, KnownVariants = DeclaredVariants> = [GroupEntryUnion<T>] extends [never] ? DictionarySelector : {
|
|
376
|
+
locale?: DeclaredLocales;
|
|
250
377
|
} & ([EntryVariant<GroupEntryUnion<T>>] extends [never] ? unknown : {
|
|
251
|
-
|
|
378
|
+
/**
|
|
379
|
+
* One variant, or an ordered preference chain of them — every value
|
|
380
|
+
* accepted alone is also accepted as a chain entry.
|
|
381
|
+
*/
|
|
382
|
+
variant?: SelectableVariantsOf<T, KnownVariants> | readonly SelectableVariantsOf<T, KnownVariants>[];
|
|
252
383
|
}) & ([EntryItem<GroupEntryUnion<T>>] extends [never] ? unknown : {
|
|
253
384
|
item?: EntryItem<GroupEntryUnion<T>> | number | (string & {});
|
|
254
385
|
});
|
|
@@ -613,5 +744,5 @@ type DictionaryWithoutSchema<ContentType, FetchableNode> = {
|
|
|
613
744
|
type Dictionary<ContentType = undefined, SchemaKey extends SchemaKeys | undefined = undefined, FetchableNode = false> = DictionaryBase & (SchemaKey extends SchemaKeys ? DictionaryWithSchema<ContentType, FetchableNode, SchemaKey> : undefined extends SchemaKey ? DictionaryWithoutSchema<ContentType, FetchableNode> | DictionaryWithSchema<ContentType, FetchableNode> : never);
|
|
614
745
|
type GetSubPath<T, P> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? GetSubPath<T[K], Rest> : never : P extends keyof T ? T[P] : T;
|
|
615
746
|
//#endregion
|
|
616
|
-
export { ContentAutoTransformation, ContentNode, Dictionary, DictionaryFormat, DictionaryId, DictionaryKey, DictionaryLocation, DictionaryQualifierType, DictionarySelector, DictionarySelectorForGroup, DictionaryVariantValue, Fill, GetSubPath, ImportMode, LocalDictionaryId, QualifiedDictionaryGroup, ResolveQualifiedDictionaryContent, TypedNode };
|
|
747
|
+
export { ContentAutoTransformation, ContentNode, Dictionary, DictionaryFormat, DictionaryId, DictionaryKey, DictionaryLocation, DictionaryQualifierType, DictionarySelector, DictionarySelectorForGroup, DictionaryVariantChain, DictionaryVariantIdsOf, DictionaryVariantValue, Fill, GetSubPath, ImportMode, LocalDictionaryId, ProviderVariant, ProviderVariantMap, QualifiedDictionaryGroup, ResolveQualifiedDictionaryContent, TypedNode };
|
|
617
748
|
//# sourceMappingURL=dictionary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary.d.ts","names":[],"sources":["../../src/dictionary.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"dictionary.d.ts","names":[],"sources":["../../src/dictionary.ts"],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { locales_d_exports } from "./locales.js";
|
|
2
2
|
import { ALL_LOCALES, Locale } from "./allLocales.js";
|
|
3
|
-
import { DeclaredLocales, DictionaryKeys, DictionaryRegistry, DictionaryRegistryContent, DictionaryRegistryElement, DictionaryRegistryResult, DictionarySelectorForKey, ExtractSelectorLocale, GetLocaleLang, LocalesValues, LocalizedUrl, PathWithoutLocale, RequiredLocales, ResolvedDefaultLocale, ResolvedEditor, ResolvedRoutingMode, Schema, SchemaKeys, StrictModeLocaleMap } from "./module_augmentation.js";
|
|
3
|
+
import { DeclaredLocales, DeclaredVariants, DictionaryKeys, DictionaryRegistry, DictionaryRegistryContent, DictionaryRegistryElement, DictionaryRegistryResult, DictionarySelectorForKey, ExtractSelectorLocale, GetLocaleLang, LocalesValues, LocalizedUrl, PathWithoutLocale, RequiredLocales, ResolvedDefaultLocale, ResolvedEditor, ResolvedRoutingMode, Schema, SchemaKeys, StrictModeLocaleMap } from "./module_augmentation.js";
|
|
4
4
|
import { FilePathPattern, FilePathPatternContext, FilePathPatternFunction } from "./filePathPattern.js";
|
|
5
5
|
import { ARRAY, BOOLEAN, CONDITION, ENUMERATION, FILE, GENDER, HTML, INSERTION, MARKDOWN, NESTED, NULL, NUMBER, NodeType, OBJECT, PLUGIN_NODE_TYPES, PLURAL, PREACT_NODE, REACT_NODE, SELECT, SOLID_NODE, TEXT, TRANSLATION, TypedNodeModel, UNKNOWN, formatNodeType } from "./nodeType.js";
|
|
6
|
-
import { ContentAutoTransformation, ContentNode, Dictionary, DictionaryFormat, DictionaryId, DictionaryKey, DictionaryLocation, DictionaryQualifierType, DictionarySelector, DictionarySelectorForGroup, DictionaryVariantValue, Fill, GetSubPath, ImportMode, LocalDictionaryId, QualifiedDictionaryGroup, ResolveQualifiedDictionaryContent, TypedNode } from "./dictionary.js";
|
|
6
|
+
import { ContentAutoTransformation, ContentNode, Dictionary, DictionaryFormat, DictionaryId, DictionaryKey, DictionaryLocation, DictionaryQualifierType, DictionarySelector, DictionarySelectorForGroup, DictionaryVariantChain, DictionaryVariantIdsOf, DictionaryVariantValue, Fill, GetSubPath, ImportMode, LocalDictionaryId, ProviderVariant, ProviderVariantMap, QualifiedDictionaryGroup, ResolveQualifiedDictionaryContent, TypedNode } from "./dictionary.js";
|
|
7
7
|
import { MergedDictionaryOutput, MergedDictionaryResult, Plugin, UnmergedDictionaryOutput, UnmergedDictionaryResult } from "./plugin.js";
|
|
8
8
|
import { AiConfig, AiProviderConfigMap, AiProviders, AnalyticsConfig, BuildConfig, CommonAiConfig, CompilerConfig, ConfigSchema, ContentConfig, CookiesAttributes, CustomIntlayerConfig, CustomRoutingConfig, DictionaryConfig, EditorConfig, InternationalizationConfig, IntlayerConfig, LogConfig, LogFunctions, ProcessedCookieAttributes, ProcessedStorageAttributes, RewriteObject, RewriteRule, RewriteRules, RoutingConfig, RoutingStorageInput, StorageAttributes, StrictMode, SystemConfig, URLType } from "./config.js";
|
|
9
9
|
import { ArrayNode, ConditionNode, EnumerationNode, FileNode, GenderNode, HTMLNode, InsertionNode, KeyPath, MarkdownNode, NestedNode, ObjectNode, PluralNode, ReactNode, SelectNode, TranslationNode } from "./keyPath.js";
|
|
10
|
-
export { ALL_LOCALES, ARRAY, AiConfig, AiProviderConfigMap, AiProviders, AnalyticsConfig, ArrayNode, BOOLEAN, BuildConfig, CONDITION, CommonAiConfig, CompilerConfig, ConditionNode, ConfigSchema, ContentAutoTransformation, ContentConfig, ContentNode, CookiesAttributes, CustomIntlayerConfig, CustomRoutingConfig, DeclaredLocales, Dictionary, DictionaryConfig, DictionaryFormat, DictionaryId, DictionaryKey, DictionaryKeys, DictionaryLocation, DictionaryQualifierType, DictionaryRegistry, DictionaryRegistryContent, DictionaryRegistryElement, DictionaryRegistryResult, DictionarySelector, DictionarySelectorForGroup, DictionarySelectorForKey, DictionaryVariantValue, ENUMERATION, EditorConfig, EnumerationNode, ExtractSelectorLocale, FILE, FileNode, FilePathPattern, FilePathPatternContext, FilePathPatternFunction, Fill, GENDER, GenderNode, GetLocaleLang, GetSubPath, HTML, HTMLNode, INSERTION, ImportMode, InsertionNode, InternationalizationConfig, IntlayerConfig, KeyPath, LocalDictionaryId, Locale, locales_d_exports as Locales, LocalesValues, LocalizedUrl, LogConfig, LogFunctions, MARKDOWN, MarkdownNode, MergedDictionaryOutput, MergedDictionaryResult, NESTED, NULL, NUMBER, NestedNode, NodeType, OBJECT, ObjectNode, PLUGIN_NODE_TYPES, PLURAL, PREACT_NODE, PathWithoutLocale, Plugin, PluralNode, ProcessedCookieAttributes, ProcessedStorageAttributes, QualifiedDictionaryGroup, REACT_NODE, ReactNode, RequiredLocales, ResolveQualifiedDictionaryContent, ResolvedDefaultLocale, ResolvedEditor, ResolvedRoutingMode, RewriteObject, RewriteRule, RewriteRules, RoutingConfig, RoutingStorageInput, SELECT, SOLID_NODE, Schema, SchemaKeys, SelectNode, StorageAttributes, StrictMode, StrictModeLocaleMap, SystemConfig, TEXT, TRANSLATION, TranslationNode, TypedNode, TypedNodeModel, UNKNOWN, URLType, UnmergedDictionaryOutput, UnmergedDictionaryResult, formatNodeType };
|
|
10
|
+
export { ALL_LOCALES, ARRAY, AiConfig, AiProviderConfigMap, AiProviders, AnalyticsConfig, ArrayNode, BOOLEAN, BuildConfig, CONDITION, CommonAiConfig, CompilerConfig, ConditionNode, ConfigSchema, ContentAutoTransformation, ContentConfig, ContentNode, CookiesAttributes, CustomIntlayerConfig, CustomRoutingConfig, DeclaredLocales, DeclaredVariants, Dictionary, DictionaryConfig, DictionaryFormat, DictionaryId, DictionaryKey, DictionaryKeys, DictionaryLocation, DictionaryQualifierType, DictionaryRegistry, DictionaryRegistryContent, DictionaryRegistryElement, DictionaryRegistryResult, DictionarySelector, DictionarySelectorForGroup, DictionarySelectorForKey, DictionaryVariantChain, DictionaryVariantIdsOf, DictionaryVariantValue, ENUMERATION, EditorConfig, EnumerationNode, ExtractSelectorLocale, FILE, FileNode, FilePathPattern, FilePathPatternContext, FilePathPatternFunction, Fill, GENDER, GenderNode, GetLocaleLang, GetSubPath, HTML, HTMLNode, INSERTION, ImportMode, InsertionNode, InternationalizationConfig, IntlayerConfig, KeyPath, LocalDictionaryId, Locale, locales_d_exports as Locales, LocalesValues, LocalizedUrl, LogConfig, LogFunctions, MARKDOWN, MarkdownNode, MergedDictionaryOutput, MergedDictionaryResult, NESTED, NULL, NUMBER, NestedNode, NodeType, OBJECT, ObjectNode, PLUGIN_NODE_TYPES, PLURAL, PREACT_NODE, PathWithoutLocale, Plugin, PluralNode, ProcessedCookieAttributes, ProcessedStorageAttributes, ProviderVariantMap, QualifiedDictionaryGroup, REACT_NODE, ReactNode, RequiredLocales, ResolveQualifiedDictionaryContent, ResolvedDefaultLocale, ResolvedEditor, ResolvedRoutingMode, RewriteObject, RewriteRule, RewriteRules, RoutingConfig, RoutingStorageInput, SELECT, SOLID_NODE, Schema, SchemaKeys, SelectNode, StorageAttributes, StrictMode, StrictModeLocaleMap, SystemConfig, TEXT, TRANSLATION, TranslationNode, TypedNode, TypedNodeModel, UNKNOWN, URLType, UnmergedDictionaryOutput, UnmergedDictionaryResult, formatNodeType };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Locale } from "./allLocales.js";
|
|
2
|
-
import { Dictionary, DictionarySelector, DictionarySelectorForGroup, ResolveQualifiedDictionaryContent } from "./dictionary.js";
|
|
2
|
+
import { Dictionary, DictionarySelector, DictionarySelectorForGroup, DictionaryVariantIdsOf, ProviderVariant as ProviderVariant$1, ResolveQualifiedDictionaryContent } from "./dictionary.js";
|
|
3
3
|
import { StrictMode } from "./config.js";
|
|
4
4
|
import { __DeclaredLocalesRegistry, __DictionaryRegistry, __EditorRegistry, __RequiredLocalesRegistry, __RoutingRegistry, __SchemaRegistry, __StrictModeRegistry } from "intlayer";
|
|
5
5
|
//#region src/module_augmentation.d.ts
|
|
@@ -28,12 +28,41 @@ type DictionaryRegistryResult<T extends PropertyKey, Arg = undefined> = [T] exte
|
|
|
28
28
|
type ExtractSelectorLocale<Arg> = Arg extends {
|
|
29
29
|
locale: infer L extends LocalesValues;
|
|
30
30
|
} ? L : Arg extends LocalesValues ? Arg : DeclaredLocales;
|
|
31
|
+
/**
|
|
32
|
+
* Every named variant declared anywhere in the project — the vocabulary of
|
|
33
|
+
* variant names collected across the whole dictionary registry. `never` when the
|
|
34
|
+
* project declares no variant at all.
|
|
35
|
+
*
|
|
36
|
+
* This is the domain a `variant` selector is checked against, rather than the
|
|
37
|
+
* names of the single key being read: a key that declares no entry for the
|
|
38
|
+
* selected variant falls back to its `default` entry at runtime, so one
|
|
39
|
+
* session-wide variant can legitimately be passed to every key. Checking against
|
|
40
|
+
* the project vocabulary keeps that legal while still catching a name that no
|
|
41
|
+
* dictionary declares.
|
|
42
|
+
*
|
|
43
|
+
* Kept as a plain alias (the `never` fallback lives at the use site) so
|
|
44
|
+
* TypeScript prints this name in error messages instead of expanding the
|
|
45
|
+
* registry inline.
|
|
46
|
+
*/
|
|
47
|
+
type DeclaredVariants = DictionaryVariantIdsOf<__DictionaryRegistry[keyof __DictionaryRegistry]>;
|
|
31
48
|
/**
|
|
32
49
|
* The selector accepted for a dictionary **key** `T`: its `variant` / `item` /
|
|
33
50
|
* `id` are constrained to the coordinates that exist for that key, so an unknown
|
|
34
51
|
* value is a compile-time error. Plain keys fall back to {@link DictionarySelector}.
|
|
35
52
|
*/
|
|
36
53
|
type DictionarySelectorForKey<T extends PropertyKey> = [T] extends [keyof __DictionaryRegistry] ? DictionarySelectorForGroup<__DictionaryRegistry[T]> : DictionarySelector;
|
|
54
|
+
/**
|
|
55
|
+
* The `variant` prop of a framework provider (`<IntlayerProvider variant>`),
|
|
56
|
+
* narrowed to this project's declared dictionary keys — so the per-key map form
|
|
57
|
+
* rejects a key no dictionary declares.
|
|
58
|
+
*
|
|
59
|
+
* That narrowing is also what keeps the per-key map safely distinguishable from
|
|
60
|
+
* a structured variant value: on a provider a plain object is always read as
|
|
61
|
+
* the map, and `variant={{ id: 'prod_abc' }}` is a compile error unless `id`
|
|
62
|
+
* happens to be a dictionary key. Pin a structured variant globally by nesting
|
|
63
|
+
* it under an entry instead: `variant={{ default: { id: 'prod_abc' } }}`.
|
|
64
|
+
*/
|
|
65
|
+
type ProviderVariant = ProviderVariant$1<DictionaryKeys & string>;
|
|
37
66
|
type NarrowStringKeys<T> = string extends keyof T ? never : Extract<keyof T, string>;
|
|
38
67
|
type DeclaredLocales = [NarrowStringKeys<__DeclaredLocalesRegistry>] extends [never] ? Locale : NarrowStringKeys<__DeclaredLocalesRegistry>;
|
|
39
68
|
type RequiredLocales = [NarrowStringKeys<__RequiredLocalesRegistry>] extends [never] ? never : NarrowStringKeys<__RequiredLocalesRegistry>;
|
|
@@ -98,5 +127,5 @@ type GetLocaleLang<L extends string> = L extends `${infer Lang}-${string}` ? Lan
|
|
|
98
127
|
*/
|
|
99
128
|
type PathWithoutLocale<Path extends string, Locales extends string> = Path extends `${infer Protocol}://${infer Domain}/${infer Seg}/${infer Rest}` ? Seg extends Locales ? `${Protocol}://${Domain}/${Rest}` : Path : Path extends `${infer Protocol}://${infer Domain}/${infer Seg}` ? Seg extends Locales ? `${Protocol}://${Domain}/` : Path : Path extends `/${infer Seg}/${infer Rest}` ? Seg extends Locales ? `/${Rest}` : Path : Path extends `/${infer Seg}` ? Seg extends Locales ? "/" : Path : Path;
|
|
100
129
|
//#endregion
|
|
101
|
-
export { DeclaredLocales, DictionaryKeys, DictionaryRegistry, DictionaryRegistryContent, DictionaryRegistryElement, DictionaryRegistryResult, type DictionarySelector, type DictionarySelectorForGroup, DictionarySelectorForKey, ExtractSelectorLocale, GetLocaleLang, LocalesValues, LocalizedUrl, PathWithoutLocale, RequiredLocales, ResolvedDefaultLocale, ResolvedEditor, ResolvedRoutingMode, Schema, SchemaKeys, StrictModeLocaleMap };
|
|
130
|
+
export { DeclaredLocales, DeclaredVariants, DictionaryKeys, DictionaryRegistry, DictionaryRegistryContent, DictionaryRegistryElement, DictionaryRegistryResult, type DictionarySelector, type DictionarySelectorForGroup, DictionarySelectorForKey, ExtractSelectorLocale, GetLocaleLang, LocalesValues, LocalizedUrl, PathWithoutLocale, ProviderVariant, RequiredLocales, ResolvedDefaultLocale, ResolvedEditor, ResolvedRoutingMode, Schema, SchemaKeys, StrictModeLocaleMap };
|
|
102
131
|
//# sourceMappingURL=module_augmentation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module_augmentation.d.ts","names":[],"sources":["../../src/module_augmentation.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"module_augmentation.d.ts","names":[],"sources":["../../src/module_augmentation.ts"],"mappings":";;;;;KAoBY,mBAAmB,gDAErB;KAEE,OAAO,UAAU,gCAAgC,WAEzD,gBAAgB,mBACd,iBAAiB;KAGX,uBAAuB,oDAEzB;KAGE,qBACV,2BAA2B,sCACvB,eAAe,cACf;KAEM,0BAA0B,UAAU,oCAErC,KACP,aACA,gBAAgB,uBACd,qBAAqB,WAAW,aAC9B,qBAAqB,KACrB,aACF;KAEM,0BAA0B,UAAU,gBAAgB,kBACxD,wBAEJ,qBAAqB;EAAa,eAAe;IAC/C,IACA,wBACF;;;;;;;;;;KAWQ,yBAAyB,UAAU,aAAa,oBAC1D,kBACe,wBACb,kCAAkC,qBAAqB,IAAI,OAC3D;;;;;KAMQ,sBAAsB,OAAO;EACvC,cAAc,UAAU;IAEtB,IACA,YAAY,gBACV,MACA;;;;;;;;;;;;;;;;;KAkBM,mBAAmB,uBAC7B,2BAA2B;;;;;;KAQjB,yBAAyB,UAAU,gBAAgB,kBACvD,wBAEJ,2BAA2B,qBAAqB,MAChD;;;;;;;;;;;;KAaQ,kBAAkB,kBAAoB;KAM7C,iBAAiB,0BAA0B,YAE5C,cAAc;KAEN,mBACV,iBAAiB,8CAEf,SACA,iBAAiB;KAET,mBACV,iBAAiB,sDAGf,iBAAiB;;KAGT,gBAAgB;KAGvB,qBAAqB;EAA+B,YAAY;IACjE;KAIQ,oBACV,mBACA,aAAa,aAAa,sBACxB,gCACA,QAAQ,OAAO,QAAQ,YACvB,wBACE,SAAS,OAAO,iBAAiB,YAC/B,QAAQ,OAAO,iBAAiB,YAClC,2BACE,SAAS,OAAO,iBAAiB,YAC/B,QAAQ,OAAO,QAAQ,YACzB,QAAQ,OAAO,QAAQ;KAGnB,eAAe,MAAM,UAAU;EACzC;IAEE,SACA;KAIC;;KAOO,sBAAsB;EAChC,YAAY,UAAU;IAEpB;;KAIQ,wBAAwB;EAClC,qBAAqB,UAAU;IAE7B,IACA;;KAKC,oBACH,kBACA,qBACA,0BACE,+BACG,OACH,mCACE,UAAU,kBAEL;;KAIN,iBACH,qBACA,yBACE,oBACA,OACA,uBAAuB,aACjB,SAAS,SACb;;;;;;;;;;;;;;;;KAiBM,aACV,qBACA,UAAU,eACV,sBAAsB,qBACtB,gBAAgB,gBAAgB,uBAChC,yBAAyB,8CACL,iBAElB,2BACE,kBAAkB,MAAM,WACxB,wCAEE,iBACE,kBAAkB,MAAM,UACxB,oBAAoB,GAAG,MAAM;;;;;;;;KAU3B,cAAc,oBACxB,mBAAmB,mBAAmB,OAAO;;;;;;;;;;;;;;KAenC,kBAAkB,qBAAqB,0BAEjD,sBAAsB,oBAAoB,gBAAgB,aAAa,SACnE,YAAY,aACP,cAAc,UAAU,SAC3B,OAEF,sBAAsB,oBAAoB,gBAAgB,QACxD,YAAY,aACP,cAAc,YACjB,OAEF,uBAAuB,aAAa,SAClC,YAAY,cACN,SACJ,OAEF,uBAAuB,QACrB,YAAY,gBAEV,OACF"}
|
package/package.json
CHANGED