@endge/core 2.0.1 → 2.0.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.
- package/dist/core.cjs +334 -269
- package/dist/core.js +18526 -16777
- package/dist/domain/entities/reflect/RConfiguration.d.ts +11 -0
- package/dist/domain/entities/runtime/hosts/ComponentSFCRuntimeHost.d.ts +3 -0
- package/dist/domain/types/component/sfc/dependencies.types.d.ts +14 -2
- package/dist/domain/types/component/sfc/intrinsic-events.types.d.ts +2 -0
- package/dist/domain/types/component/sfc/ir.types.d.ts +20 -6
- package/dist/domain/types/component/sfc/ports.types.d.ts +3 -1
- package/dist/domain/types/component/sfc/tag-attribute-contract.types.d.ts +11 -0
- package/dist/domain/types/component/sfc/tag-input-contract.types.d.ts +17 -0
- package/dist/domain/types/configuration/configuration.type.d.ts +40 -1
- package/dist/domain/types/document/document.types.d.ts +4 -2
- package/dist/domain/types/document/domain-export.type.d.ts +2 -0
- package/dist/domain/types/document/domain-provider.type.d.ts +1 -1
- package/dist/domain/types/document/workspace.types.d.ts +2 -1
- package/dist/domain/types/program/program.types.d.ts +9 -2
- package/dist/domain/types/runtime/context-persistence.types.d.ts +26 -0
- package/dist/domain/types/source/configuration-source.types.d.ts +47 -0
- package/dist/domain/types/source/query-source.types.d.ts +36 -9
- package/dist/domain/types/source/source-engine.types.d.ts +8 -2
- package/dist/domain/types/ui/tooltip-markdown.types.d.ts +32 -0
- package/dist/main.d.ts +9 -0
- package/dist/model/config/kernel.config.d.ts +5 -0
- package/dist/model/config/tooltip.config.d.ts +3 -0
- package/dist/model/kernel/endge.d.ts +2 -0
- package/dist/model/modules/context/endge-configuration-schema.d.ts +24 -0
- package/dist/model/modules/context/endge-configuration.d.ts +2 -0
- package/dist/model/modules/context/endge-context.d.ts +22 -1
- package/dist/model/modules/context/endge-workspace.d.ts +11 -1
- package/dist/model/modules/domain/endge-domain.d.ts +16 -0
- package/dist/model/modules/program/endge-source.d.ts +1 -1
- package/dist/model/modules/runtime/core/endge-runtime.d.ts +3 -2
- package/dist/model/modules/ui/endge-ui.d.ts +0 -11
- package/dist/model/services/configuration/configuration-value.d.ts +20 -0
- package/dist/model/services/configuration/endge-configuration.d.ts +3 -1
- package/dist/model/services/query/QueryExecutor.d.ts +3 -0
- package/dist/model/services/source-engine/compilers/configuration-source-compile.d.ts +4 -0
- package/dist/model/services/source-engine/configuration-source-patch.d.ts +16 -0
- package/dist/model/services/source-engine/strategies/ConfigurationSourceEngineStrategy.d.ts +7 -0
- package/dist/model/services/source-engine/strategies/ConfigurationSourceLanguageStrategy.d.ts +12 -0
- package/dist/model/services/source-engine/strategies/QuerySourceLanguageStrategy.d.ts +1 -1
- package/dist/model/services/source-engine/templates/configuration.default.source.d.ts +2 -0
- package/dist/model/services/source-engine/templates/query.default.source.d.ts +2 -0
- package/dist/model/services/source-engine/type-source-references.d.ts +3 -0
- package/dist/model/services/source-engine/type-source-serialize.d.ts +2 -1
- package/dist/model/services/tooltip/endge-tooltip-markdown.d.ts +5 -0
- package/dist/test/model/services/compiler/component-sfc/component-sfc-tooltip.test.d.ts +1 -0
- package/dist/test/model/services/source-engine/configuration-source.test.d.ts +1 -0
- package/dist/test/tooltip/endge-tooltip-markdown.test.d.ts +1 -0
- package/dist/tools/component-sfc-edit-trigger.d.ts +9 -1
- package/package.json +4 -4
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DuplicateOptions, REntity } from './REntity';
|
|
2
|
+
/** Workspace-owned source document that declares one settings category. */
|
|
3
|
+
export declare class RConfiguration extends REntity {
|
|
4
|
+
readonly type: "configuration";
|
|
5
|
+
description: string | null;
|
|
6
|
+
source: string;
|
|
7
|
+
sourceVersion: number;
|
|
8
|
+
static fromPlain(json: any, storageMeta?: any): RConfiguration;
|
|
9
|
+
toPlain(): Record<string, unknown>;
|
|
10
|
+
duplicate(options: DuplicateOptions): RConfiguration;
|
|
11
|
+
}
|
|
@@ -125,6 +125,9 @@ export declare class ComponentSFCRuntimeHost extends RuntimeHostBase<'component-
|
|
|
125
125
|
private _createRuntimeBoundaryNodes;
|
|
126
126
|
private _createTableColumnBoundaryNode;
|
|
127
127
|
private _bindRaphInputSource;
|
|
128
|
+
/** Context dependencies are Raph-backed and do not depend on the component props input kind. */
|
|
129
|
+
private _bindRaphContextSources;
|
|
130
|
+
private _observeContextPath;
|
|
128
131
|
private _bindRaphBoundaryInputSource;
|
|
129
132
|
private _isCoveredByPatchableBoundary;
|
|
130
133
|
private _findRuntimeNodeByMeta;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { RComponentSFC_IR_Read } from './ir.types';
|
|
2
2
|
/** Источник runtime-зависимости SFC v1. */
|
|
3
|
-
export type RComponentSFC_RuntimeDependencySource = 'props';
|
|
3
|
+
export type RComponentSFC_RuntimeDependencySource = 'props' | 'context';
|
|
4
4
|
/** Runtime-зависимость SFC template от входного prop. */
|
|
5
5
|
export interface RComponentSFC_RuntimeDependency {
|
|
6
6
|
/** Источник зависимости. В v1 поддерживаем только props. */
|
|
7
|
-
source:
|
|
7
|
+
source: 'props';
|
|
8
8
|
/** Имя входного prop, например `flight`. */
|
|
9
9
|
prop: string;
|
|
10
10
|
/** Путь внутри prop, например `['status']` для `flight.status`. */
|
|
@@ -14,6 +14,14 @@ export interface RComponentSFC_RuntimeDependency {
|
|
|
14
14
|
/** Нормализованный read из IR. */
|
|
15
15
|
read: RComponentSFC_IR_Read;
|
|
16
16
|
}
|
|
17
|
+
/** Runtime-зависимость SFC template от глобального Endge context. */
|
|
18
|
+
export interface RComponentSFC_RuntimeContextDependency {
|
|
19
|
+
source: 'context';
|
|
20
|
+
/** Путь после `$context`, например `['input', 'keyboard', 'modifiers', 'shift']`. */
|
|
21
|
+
path: string[];
|
|
22
|
+
raw: string;
|
|
23
|
+
read: RComponentSFC_IR_Read;
|
|
24
|
+
}
|
|
17
25
|
/** Тип patchable runtime boundary внутри SFC IR. */
|
|
18
26
|
export type RComponentSFC_RuntimeBoundaryKind = 'table';
|
|
19
27
|
/** Runtime-зависимость колонки таблицы от полей текущей строки. */
|
|
@@ -39,6 +47,8 @@ export interface RComponentSFC_RuntimeBoundaryDependency {
|
|
|
39
47
|
sourcePath: string[];
|
|
40
48
|
/** Поле ключа строки из `row-key`. */
|
|
41
49
|
rowKey: string | null;
|
|
50
|
+
/** Context paths used inside this boundary; they invalidate the whole boundary. */
|
|
51
|
+
contextReads: string[][];
|
|
42
52
|
/** Колонки таблицы, которые можно обновлять точечно. */
|
|
43
53
|
columns: RComponentSFC_RuntimeTableColumnDependency[];
|
|
44
54
|
}
|
|
@@ -57,6 +67,8 @@ export interface RComponentSFC_RuntimeVocabDependency {
|
|
|
57
67
|
export interface RComponentSFC_RuntimeDependencies {
|
|
58
68
|
/** Зависимости от props, которые можно связать с внешним input source. */
|
|
59
69
|
props: RComponentSFC_RuntimeDependency[];
|
|
70
|
+
/** Context dependencies outside patchable boundaries. */
|
|
71
|
+
context: RComponentSFC_RuntimeContextDependency[];
|
|
60
72
|
/** Patchable boundaries, для которых runtime строит отдельные Raph-ноды. */
|
|
61
73
|
boundaries: RComponentSFC_RuntimeBoundaryDependency[];
|
|
62
74
|
/** Vocab aliases, которые должен предоставить ближайший Composition scope. */
|
|
@@ -8,6 +8,8 @@ export interface ComponentSFCEventModifiersState {
|
|
|
8
8
|
}
|
|
9
9
|
export interface ComponentSFCInteractionEventPayload {
|
|
10
10
|
type: string;
|
|
11
|
+
/** UTC-время нормализации исходного occurrence, одинаковое для всех его локальных reactions. */
|
|
12
|
+
occurredAt: string;
|
|
11
13
|
modifiers: ComponentSFCEventModifiersState;
|
|
12
14
|
held: {
|
|
13
15
|
key: string[];
|
|
@@ -86,12 +86,15 @@ export interface ComponentSFCInteractionTriggerHeldKeys {
|
|
|
86
86
|
/** Запрещает другие удерживаемые обычные клавиши. */
|
|
87
87
|
exact?: boolean;
|
|
88
88
|
}
|
|
89
|
-
|
|
89
|
+
/** Условие на текущее состояние клавиатуры без привязки к конкретному событию. */
|
|
90
|
+
export interface ComponentSFCInteractionKeyboardCondition {
|
|
91
|
+
modifiers?: ComponentSFCInteractionTriggerModifiers;
|
|
92
|
+
held?: ComponentSFCInteractionTriggerHeldKeys;
|
|
93
|
+
}
|
|
94
|
+
export interface ComponentSFCInteractionTrigger extends ComponentSFCInteractionKeyboardCondition {
|
|
90
95
|
event: string;
|
|
91
96
|
key?: string[];
|
|
92
97
|
code?: string[];
|
|
93
|
-
held?: ComponentSFCInteractionTriggerHeldKeys;
|
|
94
|
-
modifiers?: ComponentSFCInteractionTriggerModifiers;
|
|
95
98
|
repeat?: boolean;
|
|
96
99
|
composing?: boolean;
|
|
97
100
|
button?: number;
|
|
@@ -150,7 +153,7 @@ export interface ComponentSFCEditedEventPayload<T = unknown> {
|
|
|
150
153
|
/** IR узел template после нормализации в Endge primitives. */
|
|
151
154
|
export type RComponentSFC_IR_Node = RComponentSFC_IR_ElementNode | RComponentSFC_IR_TextNode | RComponentSFC_IR_ExpressionNode;
|
|
152
155
|
/** Поддерживаемые v1 primitives нового SFC template. */
|
|
153
|
-
export type RComponentSFC_IR_Tag = 'Text' | 'DateTime' | 'Number' | 'Icon' | 'Badge' | 'Dot' | 'Box' | 'Flex' | 'Grid' | 'Divider' | 'Input' | 'Textarea' | 'Checkbox' | 'Select' | 'Component' | 'Table' | 'Column' | 'Cell' | 'ColumnMenu' | 'RowMenu' | 'MenuItem' | 'MenuSeparator' | 'Editable' | 'Variant';
|
|
156
|
+
export type RComponentSFC_IR_Tag = 'Text' | 'DateTime' | 'Number' | 'Icon' | 'Badge' | 'Dot' | 'Box' | 'Flex' | 'Grid' | 'Divider' | 'Input' | 'Textarea' | 'Checkbox' | 'Select' | 'Tooltip' | 'TooltipTrigger' | 'TooltipContent' | 'Component' | 'Table' | 'Column' | 'Cell' | 'ColumnMenu' | 'RowMenu' | 'MenuItem' | 'MenuSeparator' | 'Editable' | 'Variant';
|
|
154
157
|
/** IR element-узел, который renderer-слои могут читать без знания исходного синтаксиса. */
|
|
155
158
|
export interface RComponentSFC_IR_ElementNode {
|
|
156
159
|
/** Стабильный id узла внутри IR. */
|
|
@@ -241,9 +244,20 @@ export interface RComponentSFC_IR_InteractionRule {
|
|
|
241
244
|
reactions: ComponentSFCEventAction[];
|
|
242
245
|
sourceRange?: RComponentSFC_SourceRange;
|
|
243
246
|
}
|
|
247
|
+
/** One referenced TriggerSet paired with reactions that stay stable across context layers. */
|
|
248
|
+
export interface RComponentSFC_IR_InteractionTriggerSet {
|
|
249
|
+
triggers: RComponentSFC_IR_Value;
|
|
250
|
+
/** Event names supported by the source tag's compiled event surface. */
|
|
251
|
+
events: string[];
|
|
252
|
+
modifiers: RComponentSFC_IR_EventModifier[];
|
|
253
|
+
reactions: ComponentSFCEventAction[];
|
|
254
|
+
sourceRange?: RComponentSFC_SourceRange;
|
|
255
|
+
}
|
|
244
256
|
/** One `:on` annotation. Rules inside the group use first-match-wins semantics. */
|
|
245
257
|
export interface RComponentSFC_IR_InteractionGroup {
|
|
246
258
|
rules: RComponentSFC_IR_InteractionRule[];
|
|
259
|
+
/** Optional context-backed TriggerSet form `{ triggers, reaction }`. */
|
|
260
|
+
triggerSet?: RComponentSFC_IR_InteractionTriggerSet;
|
|
247
261
|
sourceRange?: RComponentSFC_SourceRange;
|
|
248
262
|
}
|
|
249
263
|
/** IR текстовый узел. */
|
|
@@ -301,8 +315,8 @@ export interface RComponentSFC_IR_VocabRead {
|
|
|
301
315
|
}
|
|
302
316
|
/** Реактивное чтение, найденное внутри выражения. */
|
|
303
317
|
export interface RComponentSFC_IR_Read {
|
|
304
|
-
/** Источник чтения: props, Raph/store или локальный binding. */
|
|
305
|
-
source: 'props' | 'raph' | 'local';
|
|
318
|
+
/** Источник чтения: props, Raph/store, context или локальный binding. */
|
|
319
|
+
source: 'props' | 'raph' | 'context' | 'local';
|
|
306
320
|
/** Нормализованный путь чтения. */
|
|
307
321
|
path: string[];
|
|
308
322
|
/** Исходный текст чтения. */
|
|
@@ -112,10 +112,12 @@ export interface ComponentSFCEventSource {
|
|
|
112
112
|
ref: string;
|
|
113
113
|
event: string;
|
|
114
114
|
}
|
|
115
|
-
/** Renderer-neutral
|
|
115
|
+
/** Renderer-neutral safe expression mapped into an Event reaction input. */
|
|
116
116
|
export type ComponentSFCEventInputValue = {
|
|
117
117
|
kind: 'event';
|
|
118
118
|
path: string | null;
|
|
119
|
+
} | {
|
|
120
|
+
kind: 'now';
|
|
119
121
|
} | {
|
|
120
122
|
kind: 'scope';
|
|
121
123
|
path: string;
|
|
@@ -33,6 +33,8 @@ export declare const ENDGE_SFC_GRID_ALIGNMENTS: readonly ["start", "center", "en
|
|
|
33
33
|
export declare const ENDGE_SFC_FLEX_DIRECTIONS: readonly ["row", "column"];
|
|
34
34
|
export declare const ENDGE_SFC_DIVIDER_ORIENTATIONS: readonly ["horizontal", "vertical"];
|
|
35
35
|
export declare const ENDGE_SFC_INPUT_TYPES: readonly ["String", "Number", "Date", "Time", "DateTime"];
|
|
36
|
+
export declare const ENDGE_SFC_TOOLTIP_SIDES: readonly ["top", "right", "bottom", "left"];
|
|
37
|
+
export declare const ENDGE_SFC_TOOLTIP_ALIGNS: readonly ["start", "center", "end"];
|
|
36
38
|
/** Конечные значения встроенных SFC tags. Свободные string/number props сюда не входят. */
|
|
37
39
|
export declare const ENDGE_SFC_TAG_ATTRIBUTE_CONTRACTS: {
|
|
38
40
|
readonly Table: readonly [{
|
|
@@ -127,6 +129,15 @@ export declare const ENDGE_SFC_TAG_ATTRIBUTE_CONTRACTS: {
|
|
|
127
129
|
readonly defaultValue: "String";
|
|
128
130
|
readonly description: "Семантический тип значения Input.";
|
|
129
131
|
}];
|
|
132
|
+
readonly Tooltip: readonly [{
|
|
133
|
+
readonly name: "side";
|
|
134
|
+
readonly values: readonly ["top", "right", "bottom", "left"];
|
|
135
|
+
readonly description: "Предпочтительная сторона; adapter может перевернуть её при collision с viewport.";
|
|
136
|
+
}, {
|
|
137
|
+
readonly name: "align";
|
|
138
|
+
readonly values: readonly ["start", "center", "end"];
|
|
139
|
+
readonly description: "Выравнивание tooltip относительно trigger.";
|
|
140
|
+
}];
|
|
130
141
|
};
|
|
131
142
|
/** Возвращает строгие контракты атрибутов одного встроенного SFC tag. */
|
|
132
143
|
export declare function getComponentSFCTagAttributeContracts(tag: string): readonly ComponentSFCTagAttributeContract[];
|
|
@@ -173,6 +173,23 @@ export declare const ENDGE_SFC_TAG_INPUT_CONTRACTS: {
|
|
|
173
173
|
readonly type: "boolean";
|
|
174
174
|
readonly optional: true;
|
|
175
175
|
}];
|
|
176
|
+
readonly Tooltip: readonly [{
|
|
177
|
+
readonly name: "text";
|
|
178
|
+
readonly type: "string";
|
|
179
|
+
readonly optional: true;
|
|
180
|
+
}, {
|
|
181
|
+
readonly name: "markdown";
|
|
182
|
+
readonly type: "string";
|
|
183
|
+
readonly optional: true;
|
|
184
|
+
}, {
|
|
185
|
+
readonly name: "openDelay";
|
|
186
|
+
readonly type: "number";
|
|
187
|
+
readonly optional: true;
|
|
188
|
+
}, {
|
|
189
|
+
readonly name: "closeDelay";
|
|
190
|
+
readonly type: "number";
|
|
191
|
+
readonly optional: true;
|
|
192
|
+
}];
|
|
176
193
|
};
|
|
177
194
|
/** Возвращает публичные data-входы встроенного SFC tag. */
|
|
178
195
|
export declare function getComponentSFCTagInputContract(tag: RComponentSFC_IR_Tag): readonly ComponentSFCTagInputContract[];
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { ComponentSFCInteractionTrigger } from '../component/sfc/ir.types';
|
|
1
|
+
import { ComponentSFCInteractionKeyboardCondition, ComponentSFCInteractionTrigger } from '../component/sfc/ir.types';
|
|
2
2
|
import { DiagnosticsSeverityNumber, DiagnosticsSignal, EndgeDiagnosticsOutputConfiguration, EndgeDiagnosticsConfiguration, EndgeDiagnosticsRoute } from '../diagnostics/diagnostics.types';
|
|
3
3
|
import { EndgeExecutionContext } from '../runtime/execution-context.types';
|
|
4
|
+
import { EndgeJSONValue } from '../source/configuration-source.types';
|
|
5
|
+
export type EndgeConfigurationValues = Record<string, Record<string, EndgeJSONValue>>;
|
|
6
|
+
export type EndgeConfigurationValuePatch = Record<string, Record<string, EndgeValueOverride<EndgeJSONValue>>>;
|
|
4
7
|
export interface EndgeLocaleDefinition {
|
|
5
8
|
code: string;
|
|
6
9
|
displayName: string;
|
|
@@ -11,6 +14,10 @@ export interface EndgeThemeDefinition {
|
|
|
11
14
|
identity: string;
|
|
12
15
|
displayName: string;
|
|
13
16
|
}
|
|
17
|
+
export interface EndgeTimezoneDefinition {
|
|
18
|
+
identity: string;
|
|
19
|
+
displayName: string;
|
|
20
|
+
}
|
|
14
21
|
export interface EndgeVariableDefinition {
|
|
15
22
|
name: string;
|
|
16
23
|
defaultValue: string;
|
|
@@ -20,6 +27,17 @@ export interface EndgeSFCEditingConfiguration {
|
|
|
20
27
|
cancelOn: ComponentSFCInteractionTrigger[];
|
|
21
28
|
commitOn: ComponentSFCInteractionTrigger[];
|
|
22
29
|
}
|
|
30
|
+
export type EndgeTooltipSide = 'top' | 'right' | 'bottom' | 'left';
|
|
31
|
+
export type EndgeTooltipAlign = 'start' | 'center' | 'end';
|
|
32
|
+
/** Effective behavioral defaults of the single Shell-owned tooltip overlay. */
|
|
33
|
+
export interface EndgeTooltipConfiguration {
|
|
34
|
+
side: EndgeTooltipSide;
|
|
35
|
+
align: EndgeTooltipAlign;
|
|
36
|
+
openDelay: number;
|
|
37
|
+
closeDelay: number;
|
|
38
|
+
/** Optional keyboard state required while the pointer or focus activates a tooltip. */
|
|
39
|
+
keyboard?: ComponentSFCInteractionKeyboardCondition;
|
|
40
|
+
}
|
|
23
41
|
/** Полная конфигурация, с которой компилируется один Endge context. */
|
|
24
42
|
export interface EndgeConfiguration {
|
|
25
43
|
vars: EndgeVariableDefinition[];
|
|
@@ -28,14 +46,22 @@ export interface EndgeConfiguration {
|
|
|
28
46
|
fallbackLocale: string;
|
|
29
47
|
themes: EndgeThemeDefinition[];
|
|
30
48
|
defaultTheme: string;
|
|
49
|
+
timezones: EndgeTimezoneDefinition[];
|
|
50
|
+
defaultTimezone: string;
|
|
31
51
|
defaultAuthProfileIdentity: string | null;
|
|
32
52
|
sfcAdapterIds: string[];
|
|
33
53
|
defaultSfcAdapterId: string;
|
|
34
54
|
/** Effective triggers, которые наследуют editable-узлы без локальных атрибутов. */
|
|
35
55
|
sfcEditing: EndgeSFCEditingConfiguration;
|
|
56
|
+
/** Effective tooltip behavior. Visual styling is owned by CSS and adapter hooks. */
|
|
57
|
+
tooltips: EndgeTooltipConfiguration;
|
|
36
58
|
/** Настройки telemetry, output adapters, routing и snapshots. */
|
|
37
59
|
diagnostics: EndgeDiagnosticsConfiguration;
|
|
60
|
+
/** Persisted/effective values grouped by Configuration document identity. */
|
|
61
|
+
values: EndgeConfigurationValues;
|
|
38
62
|
}
|
|
63
|
+
/** Deep-readonly, SFC-visible effective configuration projection. */
|
|
64
|
+
export type EndgePublicConfigurationSnapshot = Readonly<Omit<EndgeConfiguration, 'vars' | 'diagnostics' | 'values'> & Record<string, unknown>>;
|
|
39
65
|
export type EndgeValueOverride<T> = {
|
|
40
66
|
op: 'set';
|
|
41
67
|
value: T;
|
|
@@ -47,6 +73,14 @@ export interface EndgeSFCEditingConfigurationPatch {
|
|
|
47
73
|
cancelOn?: EndgeValueOverride<ComponentSFCInteractionTrigger[]>;
|
|
48
74
|
commitOn?: EndgeValueOverride<ComponentSFCInteractionTrigger[]>;
|
|
49
75
|
}
|
|
76
|
+
/** Field-level tooltip overrides for one configuration cascade layer. */
|
|
77
|
+
export interface EndgeTooltipConfigurationPatch {
|
|
78
|
+
side?: EndgeValueOverride<EndgeTooltipSide>;
|
|
79
|
+
align?: EndgeValueOverride<EndgeTooltipAlign>;
|
|
80
|
+
openDelay?: EndgeValueOverride<number>;
|
|
81
|
+
closeDelay?: EndgeValueOverride<number>;
|
|
82
|
+
keyboard?: EndgeValueOverride<ComponentSFCInteractionKeyboardCondition>;
|
|
83
|
+
}
|
|
50
84
|
export type EndgeCollectionPatchEntry<T> = {
|
|
51
85
|
key: string;
|
|
52
86
|
op: 'upsert';
|
|
@@ -66,12 +100,17 @@ export interface EndgeConfigurationPatch {
|
|
|
66
100
|
fallbackLocale?: EndgeValueOverride<string>;
|
|
67
101
|
themes?: EndgeCollectionPatch<EndgeThemeDefinition>;
|
|
68
102
|
defaultTheme?: EndgeValueOverride<string>;
|
|
103
|
+
timezones?: EndgeCollectionPatch<EndgeTimezoneDefinition>;
|
|
104
|
+
defaultTimezone?: EndgeValueOverride<string>;
|
|
69
105
|
defaultAuthProfileIdentity?: EndgeValueOverride<string>;
|
|
70
106
|
sfcAdapterIds?: EndgeCollectionPatch<string>;
|
|
71
107
|
defaultSfcAdapterId?: EndgeValueOverride<string>;
|
|
72
108
|
sfcEditing?: EndgeSFCEditingConfigurationPatch;
|
|
109
|
+
tooltips?: EndgeTooltipConfigurationPatch;
|
|
73
110
|
/** Локальный contribution diagnostics для текущего configuration layer. */
|
|
74
111
|
diagnostics?: EndgeDiagnosticsConfigurationPatch;
|
|
112
|
+
/** Field-level overrides of source-backed Configuration values. */
|
|
113
|
+
values?: EndgeConfigurationValuePatch;
|
|
75
114
|
}
|
|
76
115
|
/** Patch локальной collection policy модуля диагностики. */
|
|
77
116
|
export interface EndgeDiagnosticsCollectionPatch {
|
|
@@ -24,6 +24,7 @@ import { RStream } from '../../entities/reflect/RStream';
|
|
|
24
24
|
import { RUpdate } from '../../entities/reflect/RUpdate';
|
|
25
25
|
import { RMock } from '../../entities/reflect/RMock';
|
|
26
26
|
import { RComputation } from '../../entities/reflect/RComputation';
|
|
27
|
+
import { RConfiguration } from '../../entities/reflect/RConfiguration';
|
|
27
28
|
/**
|
|
28
29
|
* Разновидности типов компонентов
|
|
29
30
|
*/
|
|
@@ -75,6 +76,7 @@ export declare enum DomainSectionType {
|
|
|
75
76
|
Tenant = "tenant",
|
|
76
77
|
Policy = "policy",
|
|
77
78
|
Style = "style",
|
|
79
|
+
Configuration = "configuration",
|
|
78
80
|
PageTemplate = "page-template",
|
|
79
81
|
Page = "page",
|
|
80
82
|
Navigation = "navigation",
|
|
@@ -86,7 +88,7 @@ export declare enum DomainSectionType {
|
|
|
86
88
|
/**
|
|
87
89
|
* Все возможные типы документов
|
|
88
90
|
*/
|
|
89
|
-
export type DomainDocumentType = 'primitive' | 'type' | 'action' | 'converter' | 'computation' | 'data-view' | 'composition' | 'store' | 'stream' | 'update' | 'mock' | 'integration' | 'page-template' | 'page' | 'navigation' | 'environment' | 'policy' | 'style' | 'vocabs' | 'i18n-bundles' | 'auth-profile' | 'tenant' | 'project' | 'workspace' | Exclude<ComponentType, ComponentType.Component | ComponentType.Html> | QueryType | ParameterType | FilterType;
|
|
91
|
+
export type DomainDocumentType = 'primitive' | 'type' | 'action' | 'converter' | 'computation' | 'data-view' | 'composition' | 'store' | 'stream' | 'update' | 'mock' | 'integration' | 'page-template' | 'page' | 'navigation' | 'environment' | 'policy' | 'style' | 'configuration' | 'vocabs' | 'i18n-bundles' | 'auth-profile' | 'tenant' | 'project' | 'workspace' | Exclude<ComponentType, ComponentType.Component | ComponentType.Html> | QueryType | ParameterType | FilterType;
|
|
90
92
|
/**
|
|
91
93
|
* Описывает любой документ
|
|
92
94
|
*/
|
|
@@ -98,4 +100,4 @@ export interface Document {
|
|
|
98
100
|
/**
|
|
99
101
|
* Описывает любой документ рефлекцию
|
|
100
102
|
*/
|
|
101
|
-
export type RDocument = RComponent | RComponentSFC | RQuery | RDataView | RComposition | RStore | RStream | RUpdate | RMock | RAction | RConverter | RComputation | RIntegration | RParameter | RFilter | RPolicy | RStyle | RType | RVocabs | RI18nBundle | RAuthProfile | RWorkspace | RTenant | RPageTemplate | RPage | RNavigation;
|
|
103
|
+
export type RDocument = RComponent | RComponentSFC | RQuery | RDataView | RComposition | RStore | RStream | RUpdate | RMock | RAction | RConverter | RComputation | RIntegration | RParameter | RFilter | RPolicy | RStyle | RConfiguration | RType | RVocabs | RI18nBundle | RAuthProfile | RWorkspace | RTenant | RPageTemplate | RPage | RNavigation;
|
|
@@ -26,6 +26,7 @@ export interface EndgeDomainPlain {
|
|
|
26
26
|
tenants: unknown[];
|
|
27
27
|
policies: unknown[];
|
|
28
28
|
styles: unknown[];
|
|
29
|
+
configurations: unknown[];
|
|
29
30
|
vocabs: unknown[];
|
|
30
31
|
authProfiles: unknown[];
|
|
31
32
|
i18nBundles: unknown[];
|
|
@@ -57,6 +58,7 @@ export interface EndgePortableDocuments {
|
|
|
57
58
|
'auth-profiles': unknown[];
|
|
58
59
|
navigations: unknown[];
|
|
59
60
|
styles: unknown[];
|
|
61
|
+
configurations: unknown[];
|
|
60
62
|
}
|
|
61
63
|
export interface EndgeInstalledIntegrationExport {
|
|
62
64
|
identity: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EndgeLiveDomainSnapshot, EndgeLiveDomainDocument, EndgeWorkspaceServerState } from './domain-snapshot.type';
|
|
2
2
|
/** Канонические коллекции persisted-домена нового backend. */
|
|
3
|
-
export type EndgeDomainCollection = 'projects' | 'tenants' | 'environments' | 'folders' | 'types' | 'queries' | 'data-views' | 'compositions' | 'stores' | 'streams' | 'updates' | 'mocks' | 'components' | 'actions' | 'filters' | 'converters' | 'computations' | 'vocabs' | 'i18n-bundles' | 'auth-profiles' | 'navigations' | 'styles';
|
|
3
|
+
export type EndgeDomainCollection = 'projects' | 'tenants' | 'environments' | 'folders' | 'types' | 'queries' | 'data-views' | 'compositions' | 'stores' | 'streams' | 'updates' | 'mocks' | 'components' | 'actions' | 'filters' | 'converters' | 'computations' | 'vocabs' | 'i18n-bundles' | 'auth-profiles' | 'navigations' | 'styles' | 'configurations';
|
|
4
4
|
/** Возможности выбранного источника домена. */
|
|
5
5
|
export interface EndgeDomainProviderCapabilities {
|
|
6
6
|
snapshot: true;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { EndgeConfiguration, EndgeLocaleDefinition, EndgeThemeDefinition, EndgeVariableDefinition } from '../configuration/configuration.type';
|
|
1
|
+
import { EndgeConfiguration, EndgeLocaleDefinition, EndgeThemeDefinition, EndgeTimezoneDefinition, EndgeVariableDefinition } from '../configuration/configuration.type';
|
|
2
2
|
import { EntityManagement } from './entity-management.type';
|
|
3
3
|
export type EndgeWorkspaceLocale = EndgeLocaleDefinition;
|
|
4
4
|
export type EndgeDataMode = 'live' | 'mock';
|
|
5
5
|
export type EndgeWorkspaceLocaleLabelMode = keyof Pick<EndgeWorkspaceLocale, 'displayName' | 'shortLabel'>;
|
|
6
6
|
export type EndgeWorkspaceTheme = EndgeThemeDefinition;
|
|
7
|
+
export type EndgeWorkspaceTimezone = EndgeTimezoneDefinition;
|
|
7
8
|
export type EndgeWorkspaceVar = EndgeVariableDefinition;
|
|
8
9
|
export interface WorkspaceIntegrationReference {
|
|
9
10
|
integrationId: string | number;
|
|
@@ -10,9 +10,10 @@ import { ProgramMetadata } from './program-metadata.types';
|
|
|
10
10
|
import { ComputationProgramPayload } from '../computation/computation-program.types';
|
|
11
11
|
import { EndgeStyleSheetArtifact } from '../style/style.types';
|
|
12
12
|
import { ActionImplementation, ActionTargetSelector } from '../runtime/action.types';
|
|
13
|
+
export type { ConfigurationProgramPayload } from '../source/configuration-source.types';
|
|
13
14
|
export type ProgramArtifactKey = string;
|
|
14
15
|
/** Тип доменной сущности, для которой compiler может построить program artifact. */
|
|
15
|
-
export type ProgramEntityType = 'type' | 'component-sfc' | 'computation' | 'action' | 'query' | 'data-view' | 'store' | 'stream' | 'update' | 'filter' | 'composition' | 'style';
|
|
16
|
+
export type ProgramEntityType = 'type' | 'component-sfc' | 'computation' | 'action' | 'query' | 'data-view' | 'store' | 'stream' | 'update' | 'filter' | 'composition' | 'style' | 'configuration';
|
|
16
17
|
/** Итоговый статус artifact после компиляции и валидации. */
|
|
17
18
|
export type ProgramArtifactStatus = 'valid' | 'warning' | 'error';
|
|
18
19
|
/** Возможность, которую artifact предоставляет runtime/render слоям. */
|
|
@@ -136,7 +137,11 @@ export interface QueryProgramPayload {
|
|
|
136
137
|
endpoint: QueryProgramRequestValue<string>;
|
|
137
138
|
/** Тело запроса, GraphQL document или custom query expression. */
|
|
138
139
|
query: QueryProgramRequestValue<string>;
|
|
139
|
-
/**
|
|
140
|
+
/** GraphQL operation name, если artifact использует query-gql transport. */
|
|
141
|
+
operationName?: string;
|
|
142
|
+
/** Политика GraphQL errors в HTTP 2xx response. */
|
|
143
|
+
errorPolicy?: 'throw' | 'ignore';
|
|
144
|
+
/** HTTP headers Query transport. */
|
|
140
145
|
headers?: QueryProgramRequestValue<Record<string, string>>;
|
|
141
146
|
/** Auth config, подготовленный для runtime query layer. */
|
|
142
147
|
auth?: QueryProgramRequestValue<unknown>;
|
|
@@ -148,6 +153,8 @@ export interface QueryProgramPayload {
|
|
|
148
153
|
props: QueryProgramProp[];
|
|
149
154
|
/** Безопасный request.body IR. При null отправляется пустой object payload. */
|
|
150
155
|
requestBody: SourceExpressionIR | null;
|
|
156
|
+
/** Безопасный GraphQL variables IR. */
|
|
157
|
+
requestVariables?: SourceExpressionIR | null;
|
|
151
158
|
/** Включены ли mock data для query. */
|
|
152
159
|
mockDataEnabled?: boolean;
|
|
153
160
|
/** Mock payload query. */
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EndgePublicConfigurationSnapshot } from '../configuration/configuration.type';
|
|
1
2
|
export type EndgePersistenceDriver = 'local' | 'disabled';
|
|
2
3
|
export interface EndgePersistenceOptions {
|
|
3
4
|
driver?: EndgePersistenceDriver;
|
|
@@ -13,6 +14,31 @@ export interface EndgeContextSnapshot {
|
|
|
13
14
|
user: string | null;
|
|
14
15
|
locale: string | null;
|
|
15
16
|
theme: string | null;
|
|
17
|
+
timezone: string | null;
|
|
18
|
+
}
|
|
19
|
+
/** Volatile keyboard state supplied by the active UI adapter. */
|
|
20
|
+
export interface EndgeKeyboardContextSnapshot {
|
|
21
|
+
platform: 'macos' | 'windows' | 'linux' | 'unknown';
|
|
22
|
+
modifiers: {
|
|
23
|
+
ctrl: boolean;
|
|
24
|
+
shift: boolean;
|
|
25
|
+
alt: boolean;
|
|
26
|
+
meta: boolean;
|
|
27
|
+
mod: boolean;
|
|
28
|
+
altGraph: boolean;
|
|
29
|
+
};
|
|
30
|
+
held: {
|
|
31
|
+
key: string[];
|
|
32
|
+
code: string[];
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** Full read-only SFC context. Volatile input state is deliberately not serializable. */
|
|
36
|
+
export interface EndgeRuntimeContextSnapshot extends EndgeContextSnapshot {
|
|
37
|
+
/** Static effective configuration of the current build; never persisted or Raph-backed. */
|
|
38
|
+
config: EndgePublicConfigurationSnapshot;
|
|
39
|
+
input: {
|
|
40
|
+
keyboard: EndgeKeyboardContextSnapshot;
|
|
41
|
+
};
|
|
16
42
|
}
|
|
17
43
|
export interface EndgePersistenceScope {
|
|
18
44
|
workspaceId: string;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ProgramDiagnostic } from '../program/program.types';
|
|
2
|
+
import { TypeSourceExpression } from './type-source.types';
|
|
3
|
+
/** JSON-serializable persisted configuration value. */
|
|
4
|
+
export type EndgeJSONValue = null | boolean | number | string | EndgeJSONValue[] | {
|
|
5
|
+
[key: string]: EndgeJSONValue;
|
|
6
|
+
};
|
|
7
|
+
/** One source-backed user setting. */
|
|
8
|
+
export interface ConfigurationSourceValueDefinition {
|
|
9
|
+
key: string;
|
|
10
|
+
type: TypeSourceExpression;
|
|
11
|
+
defaultValue: EndgeJSONValue;
|
|
12
|
+
defaultWasInferred: boolean;
|
|
13
|
+
label: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
min?: number;
|
|
16
|
+
max?: number;
|
|
17
|
+
step?: number;
|
|
18
|
+
}
|
|
19
|
+
/** Canonical Configuration Source v1 document. */
|
|
20
|
+
export interface ConfigurationSourceDocument {
|
|
21
|
+
values: ConfigurationSourceValueDefinition[];
|
|
22
|
+
}
|
|
23
|
+
/** Early/compiler-facing Configuration artifact. */
|
|
24
|
+
export interface ConfigurationProgramPayload {
|
|
25
|
+
type: 'configuration';
|
|
26
|
+
identity: string;
|
|
27
|
+
displayName: string;
|
|
28
|
+
sourceVersion: 1;
|
|
29
|
+
values: ConfigurationSourceValueDefinition[];
|
|
30
|
+
}
|
|
31
|
+
export interface ConfigurationSourceCompileResult {
|
|
32
|
+
ast: unknown | null;
|
|
33
|
+
document: ConfigurationSourceDocument | null;
|
|
34
|
+
/** Best-effort AST projection for visual repair when semantic diagnostics block compilation. */
|
|
35
|
+
draftDocument?: ConfigurationSourceDocument | null;
|
|
36
|
+
diagnostics: Omit<ProgramDiagnostic, 'entityRef'>[];
|
|
37
|
+
}
|
|
38
|
+
export interface EndgeConfigurationSchemaEntry {
|
|
39
|
+
id: string | number;
|
|
40
|
+
identity: string;
|
|
41
|
+
displayName: string;
|
|
42
|
+
description?: string | null;
|
|
43
|
+
sourceVersion: number;
|
|
44
|
+
document: ConfigurationSourceDocument | null;
|
|
45
|
+
diagnostics: Omit<ProgramDiagnostic, 'entityRef'>[];
|
|
46
|
+
status: 'valid' | 'warning' | 'error';
|
|
47
|
+
}
|
|
@@ -3,12 +3,14 @@ import { ProgramDiagnostic, QueryProgramPayload } from '../program/program.types
|
|
|
3
3
|
import { DataViewRef } from './data-view-source.types';
|
|
4
4
|
import { ProgramMetadataMap } from '../program/program-metadata.types';
|
|
5
5
|
import { QueryProgramProp, SourceExpressionIR, SourceFieldDefinition } from './source-expression.types';
|
|
6
|
-
/** Поддерживаемые kind
|
|
7
|
-
export type QuerySourceKind = 'rest';
|
|
6
|
+
/** Поддерживаемые transport-kind Query source. */
|
|
7
|
+
export type QuerySourceKind = 'rest' | 'graphql';
|
|
8
|
+
/** Политика GraphQL errors в HTTP 2xx response. */
|
|
9
|
+
export type QueryGraphQLErrorPolicy = 'throw' | 'ignore';
|
|
8
10
|
/** Static request value or a safe expression evaluated from Query props at runtime. */
|
|
9
11
|
export type QuerySourceRequestValue<T> = T | SourceExpressionIR;
|
|
10
12
|
/** Source-описание HTTP request части REST-запроса. */
|
|
11
|
-
export interface
|
|
13
|
+
export interface QuerySourceRestRequest {
|
|
12
14
|
/** Endpoint или Endge var-token вида {API_URL}. */
|
|
13
15
|
endpoint: QuerySourceRequestValue<string>;
|
|
14
16
|
/** REST path. В legacy RQuery это поле хранится как query. */
|
|
@@ -26,6 +28,25 @@ export interface QuerySourceRequest {
|
|
|
26
28
|
/** Безопасный body expression для query source v2. */
|
|
27
29
|
body?: SourceExpressionIR | null;
|
|
28
30
|
}
|
|
31
|
+
/** Source-описание GraphQL operation и variables. */
|
|
32
|
+
export interface QuerySourceGraphQLRequest {
|
|
33
|
+
/** GraphQL endpoint или Endge var-token вида {API_URL}. */
|
|
34
|
+
endpoint: QuerySourceRequestValue<string>;
|
|
35
|
+
/** Статический GraphQL document из gql template. */
|
|
36
|
+
document: string;
|
|
37
|
+
/** Operation name для document с несколькими operations. */
|
|
38
|
+
operationName?: string;
|
|
39
|
+
/** Безопасное variables expression, построенное через variables(...). */
|
|
40
|
+
variables?: SourceExpressionIR | null;
|
|
41
|
+
/** Дополнительные HTTP headers. */
|
|
42
|
+
headers: QuerySourceRequestValue<Record<string, string>>;
|
|
43
|
+
/** Auth config. */
|
|
44
|
+
auth: QuerySourceRequestValue<RQueryAuth>;
|
|
45
|
+
/** Request timeout. */
|
|
46
|
+
timeoutMs?: QuerySourceRequestValue<number>;
|
|
47
|
+
/** Обработка GraphQL errors в HTTP 2xx response. */
|
|
48
|
+
errorPolicy: QueryGraphQLErrorPolicy;
|
|
49
|
+
}
|
|
29
50
|
/** Source-описание mock-режима запроса. */
|
|
30
51
|
export interface QuerySourceMock {
|
|
31
52
|
/** Включены ли mock data. */
|
|
@@ -48,12 +69,7 @@ export interface QuerySourceOutput {
|
|
|
48
69
|
contract?: SourceFieldDefinition | null;
|
|
49
70
|
}
|
|
50
71
|
export type QuerySourceOutputs = QuerySourceOutput[];
|
|
51
|
-
|
|
52
|
-
export interface QuerySourceDocument {
|
|
53
|
-
/** Тип source query. */
|
|
54
|
-
kind: QuerySourceKind;
|
|
55
|
-
/** Request config. */
|
|
56
|
-
request: QuerySourceRequest;
|
|
72
|
+
interface QuerySourceDocumentBase {
|
|
57
73
|
/** Единственный runtime input contract Query. */
|
|
58
74
|
props: QueryProgramProp[];
|
|
59
75
|
/** Ordered output graph: response/output sources and transformations. */
|
|
@@ -61,6 +77,16 @@ export interface QuerySourceDocument {
|
|
|
61
77
|
/** Mock config. */
|
|
62
78
|
mock: QuerySourceMock;
|
|
63
79
|
}
|
|
80
|
+
export interface QuerySourceRestDocument extends QuerySourceDocumentBase {
|
|
81
|
+
kind: 'rest';
|
|
82
|
+
request: QuerySourceRestRequest;
|
|
83
|
+
}
|
|
84
|
+
export interface QuerySourceGraphQLDocument extends QuerySourceDocumentBase {
|
|
85
|
+
kind: 'graphql';
|
|
86
|
+
request: QuerySourceGraphQLRequest;
|
|
87
|
+
}
|
|
88
|
+
/** Canonical authoring-модель source-only Query v2. */
|
|
89
|
+
export type QuerySourceDocument = QuerySourceRestDocument | QuerySourceGraphQLDocument;
|
|
64
90
|
/** Публичные editor-slots, которые query source patcher умеет менять точечно. */
|
|
65
91
|
export type QuerySourcePatchPath = 'kind' | 'request.endpoint' | 'request.path' | 'request.method' | 'request.headers' | 'request.auth' | 'request.timeoutMs' | 'request.formUrlencoded' | 'request.body' | 'props' | 'outputs' | 'mock.enabled' | 'mock.data';
|
|
66
92
|
/** Операция AST-патчинга query source. */
|
|
@@ -87,3 +113,4 @@ export interface QuerySourceCompileResult {
|
|
|
87
113
|
/** Diagnostics source compiler-а. */
|
|
88
114
|
diagnostics: Omit<ProgramDiagnostic, 'entityRef'>[];
|
|
89
115
|
}
|
|
116
|
+
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { I18nCatalogProvenance, I18nRuntimeCatalog } from '../i18n.types';
|
|
2
|
+
import { TypeSourceDefinition } from './type-source.types';
|
|
2
3
|
/** Канонический тип source-документа, для которого выбирается source strategy. */
|
|
3
|
-
export type SourceKind = 'query' | 'data-view' | 'filter' | 'composition' | 'store' | 'stream' | 'update' | 'computation' | 'style' | 'type';
|
|
4
|
+
export type SourceKind = 'query' | 'data-view' | 'filter' | 'composition' | 'store' | 'stream' | 'update' | 'computation' | 'style' | 'type' | 'configuration';
|
|
4
5
|
/** Тип нейтральной source completion без привязки к Monaco или другому editor API. */
|
|
5
6
|
export type SourceLanguageCompletionKind = 'keyword' | 'function' | 'property' | 'value' | 'snippet';
|
|
6
7
|
/** Позиция курсора внутри source-документа. */
|
|
@@ -21,6 +22,11 @@ export interface SourceLanguageContext {
|
|
|
21
22
|
identity: string;
|
|
22
23
|
displayName?: string;
|
|
23
24
|
category?: 'primitive' | 'reference' | 'user';
|
|
25
|
+
definition?: TypeSourceDefinition | null;
|
|
26
|
+
entityReference?: {
|
|
27
|
+
target: string;
|
|
28
|
+
storage: 'id' | 'identity';
|
|
29
|
+
};
|
|
24
30
|
}>;
|
|
25
31
|
/** Identity of the document that owns current source diagnostics. */
|
|
26
32
|
ownerIdentity?: string;
|
|
@@ -197,7 +203,7 @@ export interface SourceLanguageStrategy {
|
|
|
197
203
|
/** Описывает подсветку, brackets и editor triggers в adapter-neutral формате. */
|
|
198
204
|
syntax: SourceLanguageSyntaxDefinition;
|
|
199
205
|
/** Возвращает базовый source для новой сущности. */
|
|
200
|
-
createDefaultSource: () => string;
|
|
206
|
+
createDefaultSource: (variant?: string) => string;
|
|
201
207
|
/** Нормализует поддержанный syntax, сохраняя остальной авторский source. */
|
|
202
208
|
normalize?: (source: string) => string;
|
|
203
209
|
/** Валидирует source без знания о конкретном editor adapter. */
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type EndgeTooltipMarkdownInline = {
|
|
2
|
+
kind: 'text';
|
|
3
|
+
value: string;
|
|
4
|
+
} | {
|
|
5
|
+
kind: 'strong';
|
|
6
|
+
children: EndgeTooltipMarkdownInline[];
|
|
7
|
+
} | {
|
|
8
|
+
kind: 'emphasis';
|
|
9
|
+
children: EndgeTooltipMarkdownInline[];
|
|
10
|
+
} | {
|
|
11
|
+
kind: 'code';
|
|
12
|
+
value: string;
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'link';
|
|
15
|
+
href: string;
|
|
16
|
+
children: EndgeTooltipMarkdownInline[];
|
|
17
|
+
};
|
|
18
|
+
export type EndgeTooltipMarkdownBlock = {
|
|
19
|
+
kind: 'heading';
|
|
20
|
+
level: 1 | 2 | 3;
|
|
21
|
+
children: EndgeTooltipMarkdownInline[];
|
|
22
|
+
} | {
|
|
23
|
+
kind: 'paragraph';
|
|
24
|
+
children: EndgeTooltipMarkdownInline[];
|
|
25
|
+
} | {
|
|
26
|
+
kind: 'list';
|
|
27
|
+
ordered: boolean;
|
|
28
|
+
items: EndgeTooltipMarkdownInline[][];
|
|
29
|
+
} | {
|
|
30
|
+
kind: 'code-block';
|
|
31
|
+
value: string;
|
|
32
|
+
};
|