stimeo-ui 0.17.0 → 0.18.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.
- package/CHANGELOG.md +136 -2
- package/README.md +19 -10
- package/dist/cable/index.d.ts +11 -9
- package/dist/cable/index.js +22 -14
- package/dist/cable/index.js.map +1 -1
- package/dist/coerce-JtZVNG5h.d.ts +20 -0
- package/dist/controllers/accordion_controller.js +14 -6
- package/dist/controllers/accordion_controller.js.map +1 -1
- package/dist/controllers/alert_dialog_controller.js +145 -118
- package/dist/controllers/alert_dialog_controller.js.map +1 -1
- package/dist/controllers/announcer_controller.d.ts +5 -3
- package/dist/controllers/announcer_controller.js +113 -17
- package/dist/controllers/announcer_controller.js.map +1 -1
- package/dist/controllers/auto_submit_controller.js +185 -60
- package/dist/controllers/auto_submit_controller.js.map +1 -1
- package/dist/controllers/avatar_controller.js +55 -43
- package/dist/controllers/avatar_controller.js.map +1 -1
- package/dist/controllers/breadcrumb_controller.js.map +1 -1
- package/dist/controllers/bulk_select_controller.d.ts +3 -3
- package/dist/controllers/bulk_select_controller.js +64 -50
- package/dist/controllers/bulk_select_controller.js.map +1 -1
- package/dist/controllers/calendar_controller.d.ts +15 -12
- package/dist/controllers/calendar_controller.js +55 -53
- package/dist/controllers/calendar_controller.js.map +1 -1
- package/dist/controllers/carousel_controller.d.ts +9 -5
- package/dist/controllers/carousel_controller.js +124 -86
- package/dist/controllers/carousel_controller.js.map +1 -1
- package/dist/controllers/character_counter_controller.d.ts +27 -6
- package/dist/controllers/character_counter_controller.js +291 -95
- package/dist/controllers/character_counter_controller.js.map +1 -1
- package/dist/controllers/checkbox_controller.js +6 -0
- package/dist/controllers/checkbox_controller.js.map +1 -1
- package/dist/controllers/clipboard_controller.js +118 -27
- package/dist/controllers/clipboard_controller.js.map +1 -1
- package/dist/controllers/collapsible_controller.d.ts +1 -1
- package/dist/controllers/collapsible_controller.js +52 -49
- package/dist/controllers/collapsible_controller.js.map +1 -1
- package/dist/controllers/color_picker_controller.js +29 -7
- package/dist/controllers/color_picker_controller.js.map +1 -1
- package/dist/controllers/combobox_controller.d.ts +1 -1
- package/dist/controllers/combobox_controller.js +210 -71
- package/dist/controllers/combobox_controller.js.map +1 -1
- package/dist/controllers/command_palette_controller.d.ts +9 -9
- package/dist/controllers/command_palette_controller.js +290 -140
- package/dist/controllers/command_palette_controller.js.map +1 -1
- package/dist/controllers/conditional_fields_controller.js +145 -58
- package/dist/controllers/conditional_fields_controller.js.map +1 -1
- package/dist/controllers/confirm_controller.js +145 -118
- package/dist/controllers/confirm_controller.js.map +1 -1
- package/dist/controllers/context_menu_controller.d.ts +49 -14
- package/dist/controllers/context_menu_controller.js +138 -73
- package/dist/controllers/context_menu_controller.js.map +1 -1
- package/dist/controllers/count_up_controller.js.map +1 -1
- package/dist/controllers/countdown_controller.d.ts +2 -2
- package/dist/controllers/countdown_controller.js +109 -21
- package/dist/controllers/countdown_controller.js.map +1 -1
- package/dist/controllers/currency_input_controller.d.ts +75 -11
- package/dist/controllers/currency_input_controller.js +446 -72
- package/dist/controllers/currency_input_controller.js.map +1 -1
- package/dist/controllers/data_grid_controller.d.ts +10 -8
- package/dist/controllers/data_grid_controller.js +134 -28
- package/dist/controllers/data_grid_controller.js.map +1 -1
- package/dist/controllers/date_range_picker_controller.d.ts +12 -9
- package/dist/controllers/date_range_picker_controller.js +93 -72
- package/dist/controllers/date_range_picker_controller.js.map +1 -1
- package/dist/controllers/dialog_controller.d.ts +4 -5
- package/dist/controllers/dialog_controller.js +145 -118
- package/dist/controllers/dialog_controller.js.map +1 -1
- package/dist/controllers/direct_upload_controller.d.ts +1 -1
- package/dist/controllers/direct_upload_controller.js +24 -14
- package/dist/controllers/direct_upload_controller.js.map +1 -1
- package/dist/controllers/dirty_form_controller.d.ts +6 -1
- package/dist/controllers/dirty_form_controller.js +68 -31
- package/dist/controllers/dirty_form_controller.js.map +1 -1
- package/dist/controllers/dismissible_controller.js +66 -46
- package/dist/controllers/dismissible_controller.js.map +1 -1
- package/dist/controllers/drawer_controller.js +145 -118
- package/dist/controllers/drawer_controller.js.map +1 -1
- package/dist/controllers/dropdown_controller.js +76 -63
- package/dist/controllers/dropdown_controller.js.map +1 -1
- package/dist/controllers/editable_controller.js +200 -62
- package/dist/controllers/editable_controller.js.map +1 -1
- package/dist/controllers/empty_state_controller.js +13 -6
- package/dist/controllers/empty_state_controller.js.map +1 -1
- package/dist/controllers/file_dropzone_controller.d.ts +3 -0
- package/dist/controllers/file_dropzone_controller.js +55 -48
- package/dist/controllers/file_dropzone_controller.js.map +1 -1
- package/dist/controllers/filter_controller.js +9 -2
- package/dist/controllers/filter_controller.js.map +1 -1
- package/dist/controllers/flash_controller.d.ts +4 -4
- package/dist/controllers/flash_controller.js +66 -33
- package/dist/controllers/flash_controller.js.map +1 -1
- package/dist/controllers/focus_controller.d.ts +3 -3
- package/dist/controllers/focus_controller.js +39 -14
- package/dist/controllers/focus_controller.js.map +1 -1
- package/dist/controllers/form_field_controller.d.ts +2 -1
- package/dist/controllers/form_field_controller.js +52 -43
- package/dist/controllers/form_field_controller.js.map +1 -1
- package/dist/controllers/form_validation_controller.d.ts +3 -3
- package/dist/controllers/form_validation_controller.js +18 -11
- package/dist/controllers/form_validation_controller.js.map +1 -1
- package/dist/controllers/frame_loading_controller.d.ts +13 -12
- package/dist/controllers/frame_loading_controller.js +55 -48
- package/dist/controllers/frame_loading_controller.js.map +1 -1
- package/dist/controllers/highlight_controller.d.ts +5 -4
- package/dist/controllers/highlight_controller.js.map +1 -1
- package/dist/controllers/hover_card_controller.d.ts +4 -1
- package/dist/controllers/hover_card_controller.js +67 -61
- package/dist/controllers/hover_card_controller.js.map +1 -1
- package/dist/controllers/idle_controller.d.ts +6 -5
- package/dist/controllers/idle_controller.js +10 -6
- package/dist/controllers/idle_controller.js.map +1 -1
- package/dist/controllers/input_mask_controller.d.ts +31 -13
- package/dist/controllers/input_mask_controller.js +434 -24
- package/dist/controllers/input_mask_controller.js.map +1 -1
- package/dist/controllers/intersection_controller.js +3 -0
- package/dist/controllers/intersection_controller.js.map +1 -1
- package/dist/controllers/lazy_frame_controller.d.ts +3 -2
- package/dist/controllers/lazy_frame_controller.js +15 -3
- package/dist/controllers/lazy_frame_controller.js.map +1 -1
- package/dist/controllers/listbox_controller.d.ts +10 -7
- package/dist/controllers/listbox_controller.js +260 -79
- package/dist/controllers/listbox_controller.js.map +1 -1
- package/dist/controllers/local_time_controller.d.ts +8 -6
- package/dist/controllers/local_time_controller.js +48 -13
- package/dist/controllers/local_time_controller.js.map +1 -1
- package/dist/controllers/masonry_controller.js +11 -4
- package/dist/controllers/masonry_controller.js.map +1 -1
- package/dist/controllers/menu_controller.d.ts +24 -5
- package/dist/controllers/menu_controller.js +138 -82
- package/dist/controllers/menu_controller.js.map +1 -1
- package/dist/controllers/menubar_controller.d.ts +49 -7
- package/dist/controllers/menubar_controller.js +65 -19
- package/dist/controllers/menubar_controller.js.map +1 -1
- package/dist/controllers/meter_controller.d.ts +13 -20
- package/dist/controllers/meter_controller.js +270 -24
- package/dist/controllers/meter_controller.js.map +1 -1
- package/dist/controllers/multi_select_controller.d.ts +19 -16
- package/dist/controllers/multi_select_controller.js +272 -95
- package/dist/controllers/multi_select_controller.js.map +1 -1
- package/dist/controllers/navigation_menu_controller.d.ts +19 -5
- package/dist/controllers/navigation_menu_controller.js +67 -19
- package/dist/controllers/navigation_menu_controller.js.map +1 -1
- package/dist/controllers/nested_form_controller.js +98 -64
- package/dist/controllers/nested_form_controller.js.map +1 -1
- package/dist/controllers/network_status_controller.js +70 -52
- package/dist/controllers/network_status_controller.js.map +1 -1
- package/dist/controllers/number_input_controller.d.ts +24 -6
- package/dist/controllers/number_input_controller.js +344 -94
- package/dist/controllers/number_input_controller.js.map +1 -1
- package/dist/controllers/optimistic_controller.d.ts +8 -5
- package/dist/controllers/optimistic_controller.js +29 -11
- package/dist/controllers/optimistic_controller.js.map +1 -1
- package/dist/controllers/otp_controller.d.ts +35 -4
- package/dist/controllers/otp_controller.js +502 -104
- package/dist/controllers/otp_controller.js.map +1 -1
- package/dist/controllers/overflow_indicator_controller.js +6 -0
- package/dist/controllers/overflow_indicator_controller.js.map +1 -1
- package/dist/controllers/overflow_menu_controller.d.ts +10 -9
- package/dist/controllers/overflow_menu_controller.js +136 -21
- package/dist/controllers/overflow_menu_controller.js.map +1 -1
- package/dist/controllers/pagination_controller.d.ts +3 -2
- package/dist/controllers/pagination_controller.js +47 -14
- package/dist/controllers/pagination_controller.js.map +1 -1
- package/dist/controllers/password_reveal_controller.d.ts +5 -4
- package/dist/controllers/password_reveal_controller.js +52 -49
- package/dist/controllers/password_reveal_controller.js.map +1 -1
- package/dist/controllers/password_strength_controller.d.ts +1 -1
- package/dist/controllers/password_strength_controller.js +13 -6
- package/dist/controllers/password_strength_controller.js.map +1 -1
- package/dist/controllers/persist_controller.js +48 -128
- package/dist/controllers/persist_controller.js.map +1 -1
- package/dist/controllers/pointer_drag_controller.d.ts +20 -8
- package/dist/controllers/pointer_drag_controller.js +255 -24
- package/dist/controllers/pointer_drag_controller.js.map +1 -1
- package/dist/controllers/popover_controller.d.ts +9 -5
- package/dist/controllers/popover_controller.js +91 -65
- package/dist/controllers/popover_controller.js.map +1 -1
- package/dist/controllers/portal_controller.js +6 -0
- package/dist/controllers/portal_controller.js.map +1 -1
- package/dist/controllers/preview_guard_controller.js +14 -3
- package/dist/controllers/preview_guard_controller.js.map +1 -1
- package/dist/controllers/progress_controller.d.ts +9 -19
- package/dist/controllers/progress_controller.js +271 -27
- package/dist/controllers/progress_controller.js.map +1 -1
- package/dist/controllers/radio_group_controller.d.ts +11 -8
- package/dist/controllers/radio_group_controller.js +167 -80
- package/dist/controllers/radio_group_controller.js.map +1 -1
- package/dist/controllers/range_slider_controller.d.ts +4 -3
- package/dist/controllers/range_slider_controller.js +27 -7
- package/dist/controllers/range_slider_controller.js.map +1 -1
- package/dist/controllers/rating_controller.js +93 -57
- package/dist/controllers/rating_controller.js.map +1 -1
- package/dist/controllers/read_more_controller.js +10 -6
- package/dist/controllers/read_more_controller.js.map +1 -1
- package/dist/controllers/reading_progress_controller.js +22 -5
- package/dist/controllers/reading_progress_controller.js.map +1 -1
- package/dist/controllers/relative_time_controller.d.ts +4 -4
- package/dist/controllers/relative_time_controller.js +75 -11
- package/dist/controllers/relative_time_controller.js.map +1 -1
- package/dist/controllers/reset_on_restore_controller.d.ts +3 -3
- package/dist/controllers/reset_on_restore_controller.js +6 -0
- package/dist/controllers/reset_on_restore_controller.js.map +1 -1
- package/dist/controllers/resizable_controller.d.ts +3 -0
- package/dist/controllers/resizable_controller.js +55 -22
- package/dist/controllers/resizable_controller.js.map +1 -1
- package/dist/controllers/roving_controller.d.ts +3 -3
- package/dist/controllers/roving_controller.js +10 -4
- package/dist/controllers/roving_controller.js.map +1 -1
- package/dist/controllers/scroll_area_controller.js +129 -88
- package/dist/controllers/scroll_area_controller.js.map +1 -1
- package/dist/controllers/scroll_restore_controller.d.ts +3 -3
- package/dist/controllers/scroll_restore_controller.js +14 -2
- package/dist/controllers/scroll_restore_controller.js.map +1 -1
- package/dist/controllers/scroll_visibility_controller.js +93 -60
- package/dist/controllers/scroll_visibility_controller.js.map +1 -1
- package/dist/controllers/scrollspy_controller.js +11 -5
- package/dist/controllers/scrollspy_controller.js.map +1 -1
- package/dist/controllers/separator_controller.d.ts +1 -1
- package/dist/controllers/separator_controller.js +59 -43
- package/dist/controllers/separator_controller.js.map +1 -1
- package/dist/controllers/sidebar_controller.d.ts +1 -1
- package/dist/controllers/sidebar_controller.js +150 -122
- package/dist/controllers/sidebar_controller.js.map +1 -1
- package/dist/controllers/skeleton_controller.js +55 -48
- package/dist/controllers/skeleton_controller.js.map +1 -1
- package/dist/controllers/slider_controller.d.ts +2 -1
- package/dist/controllers/slider_controller.js +27 -6
- package/dist/controllers/slider_controller.js.map +1 -1
- package/dist/controllers/smart_sticky_header_controller.d.ts +1 -1
- package/dist/controllers/smart_sticky_header_controller.js +13 -5
- package/dist/controllers/smart_sticky_header_controller.js.map +1 -1
- package/dist/controllers/sortable_controller.d.ts +4 -4
- package/dist/controllers/sortable_controller.js +27 -14
- package/dist/controllers/sortable_controller.js.map +1 -1
- package/dist/controllers/spinner_controller.js +55 -48
- package/dist/controllers/spinner_controller.js.map +1 -1
- package/dist/controllers/step_indicator_controller.d.ts +4 -4
- package/dist/controllers/step_indicator_controller.js +6 -0
- package/dist/controllers/step_indicator_controller.js.map +1 -1
- package/dist/controllers/stepper_controller.d.ts +2 -3
- package/dist/controllers/stepper_controller.js +6 -0
- package/dist/controllers/stepper_controller.js.map +1 -1
- package/dist/controllers/stick_to_bottom_controller.d.ts +3 -1
- package/dist/controllers/stick_to_bottom_controller.js +19 -8
- package/dist/controllers/stick_to_bottom_controller.js.map +1 -1
- package/dist/controllers/sticky_observer_controller.js +49 -43
- package/dist/controllers/sticky_observer_controller.js.map +1 -1
- package/dist/controllers/submit_once_controller.d.ts +2 -1
- package/dist/controllers/submit_once_controller.js +145 -85
- package/dist/controllers/submit_once_controller.js.map +1 -1
- package/dist/controllers/switch_controller.d.ts +7 -4
- package/dist/controllers/switch_controller.js +172 -28
- package/dist/controllers/switch_controller.js.map +1 -1
- package/dist/controllers/tabs_controller.d.ts +7 -4
- package/dist/controllers/tabs_controller.js +6 -1
- package/dist/controllers/tabs_controller.js.map +1 -1
- package/dist/controllers/tags_input_controller.d.ts +4 -3
- package/dist/controllers/tags_input_controller.js +157 -28
- package/dist/controllers/tags_input_controller.js.map +1 -1
- package/dist/controllers/textarea_autosize_controller.d.ts +1 -1
- package/dist/controllers/textarea_autosize_controller.js +40 -19
- package/dist/controllers/textarea_autosize_controller.js.map +1 -1
- package/dist/controllers/theme_controller.d.ts +3 -2
- package/dist/controllers/theme_controller.js +10 -4
- package/dist/controllers/theme_controller.js.map +1 -1
- package/dist/controllers/time_picker_controller.d.ts +38 -5
- package/dist/controllers/time_picker_controller.js +192 -54
- package/dist/controllers/time_picker_controller.js.map +1 -1
- package/dist/controllers/toast_controller.d.ts +4 -5
- package/dist/controllers/toast_controller.js +58 -27
- package/dist/controllers/toast_controller.js.map +1 -1
- package/dist/controllers/toggle_group_controller.d.ts +2 -3
- package/dist/controllers/toggle_group_controller.js +158 -56
- package/dist/controllers/toggle_group_controller.js.map +1 -1
- package/dist/controllers/toolbar_controller.d.ts +8 -6
- package/dist/controllers/toolbar_controller.js +150 -21
- package/dist/controllers/toolbar_controller.js.map +1 -1
- package/dist/controllers/tooltip_controller.d.ts +4 -1
- package/dist/controllers/tooltip_controller.js.map +1 -1
- package/dist/controllers/transition_controller.js.map +1 -1
- package/dist/controllers/tree_view_controller.d.ts +1 -1
- package/dist/controllers/tree_view_controller.js +134 -25
- package/dist/controllers/tree_view_controller.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +2515 -1315
- package/dist/index.js.map +1 -1
- package/dist/inspector/cli.d.ts +25 -12
- package/dist/inspector/cli.js +21 -3
- package/dist/inspector/cli.js.map +1 -1
- package/dist/inspector/cli_bin.d.ts +1 -1
- package/dist/inspector/cli_bin.js +62 -8
- package/dist/inspector/cli_bin.js.map +1 -1
- package/dist/inspector/examples.json +13 -13
- package/dist/inspector/manifest.json +19 -5
- package/dist/positioning/index.d.ts +9 -8
- package/dist/positioning/index.js +6 -0
- package/dist/positioning/index.js.map +1 -1
- package/package.json +11 -10
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
export {
|
|
2
|
+
export { };
|
|
@@ -18,17 +18,20 @@ var ANNOUNCING_CONTROLLERS = [
|
|
|
18
18
|
"stimeo--flash",
|
|
19
19
|
"stimeo--form-field",
|
|
20
20
|
"stimeo--frame-loading",
|
|
21
|
+
"stimeo--live-counter",
|
|
21
22
|
"stimeo--meter",
|
|
22
23
|
"stimeo--multi-select",
|
|
23
24
|
"stimeo--nested-form",
|
|
24
25
|
"stimeo--network-status",
|
|
25
26
|
"stimeo--password-strength",
|
|
27
|
+
"stimeo--presence",
|
|
26
28
|
"stimeo--progress",
|
|
27
29
|
"stimeo--skeleton",
|
|
28
30
|
"stimeo--sortable",
|
|
29
31
|
"stimeo--spinner",
|
|
30
32
|
"stimeo--submit-once",
|
|
31
|
-
"stimeo--tags-input"
|
|
33
|
+
"stimeo--tags-input",
|
|
34
|
+
"stimeo--typing-indicator"
|
|
32
35
|
];
|
|
33
36
|
function positionAt(source, index) {
|
|
34
37
|
const before = source.slice(0, index);
|
|
@@ -1181,6 +1184,11 @@ function checkSource(source, manifest) {
|
|
|
1181
1184
|
const effectiveType = type?.value.trim().toLowerCase() || "submit";
|
|
1182
1185
|
return (rule.buttonTypes ?? []).includes(effectiveType);
|
|
1183
1186
|
}
|
|
1187
|
+
if (element.tag === "input" && rule.inputTypes) {
|
|
1188
|
+
const type = element.attrs.find((attr) => attr.name === "type");
|
|
1189
|
+
if (type && isDynamicValue(type)) return null;
|
|
1190
|
+
return rule.inputTypes.includes(type?.value.toLowerCase() || "text");
|
|
1191
|
+
}
|
|
1184
1192
|
if (ALWAYS_INTERACTIVE_HOSTS.has(element.tag)) return false;
|
|
1185
1193
|
if ((element.tag === "a" || element.tag === "area") && hasAttr(element, "href")) return false;
|
|
1186
1194
|
if ((element.tag === "audio" || element.tag === "video") && hasAttr(element, "controls")) {
|
|
@@ -2073,9 +2081,11 @@ function checkSource(source, manifest) {
|
|
|
2073
2081
|
const what = describeCounted(rule.target, rule.attr, rule.values);
|
|
2074
2082
|
const where = rule.within === "" ? "controller scope" : `"${rule.within}" target`;
|
|
2075
2083
|
for (const container of containers) {
|
|
2084
|
+
if (rule.excludeTemplateContents && crossesTemplateContent(container, node)) continue;
|
|
2076
2085
|
const matched = [];
|
|
2077
2086
|
for (const el of counted) {
|
|
2078
2087
|
if (!isSelfOrDescendantOf(el, container)) continue;
|
|
2088
|
+
if (rule.excludeTemplateContents && crossesTemplateContent(el, node)) continue;
|
|
2079
2089
|
if (rule.attr === void 0) {
|
|
2080
2090
|
matched.push({ el, at: el });
|
|
2081
2091
|
continue;
|
|
@@ -2092,7 +2102,7 @@ function checkSource(source, manifest) {
|
|
|
2092
2102
|
report(
|
|
2093
2103
|
el,
|
|
2094
2104
|
"cardinality-violation",
|
|
2095
|
-
"error",
|
|
2105
|
+
rule.severity ?? "error",
|
|
2096
2106
|
`"${identifier}" allows at most ${rule.max} ${what} per ${where}, but found ${matched.length}.`,
|
|
2097
2107
|
at,
|
|
2098
2108
|
rule.suggestion
|
|
@@ -2104,7 +2114,7 @@ function checkSource(source, manifest) {
|
|
|
2104
2114
|
report(
|
|
2105
2115
|
container,
|
|
2106
2116
|
"cardinality-violation",
|
|
2107
|
-
complete ? "error" : "warning",
|
|
2117
|
+
complete ? rule.severity ?? "error" : "warning",
|
|
2108
2118
|
`"${identifier}" requires at least ${rule.min} ${what} per ${where}, but found ${matched.length}.`,
|
|
2109
2119
|
container,
|
|
2110
2120
|
complete ? rule.suggestion : UNRESOLVED_TARGET_HINT
|
|
@@ -2332,6 +2342,14 @@ var IDREF_ATTRS = /* @__PURE__ */ new Set([
|
|
|
2332
2342
|
"aria-owns"
|
|
2333
2343
|
]);
|
|
2334
2344
|
var IGNORE_ATTR = "data-stimeo-ignore";
|
|
2345
|
+
function crossesTemplateContent(node, scope) {
|
|
2346
|
+
if (node === scope) return false;
|
|
2347
|
+
for (let parent = node.parent; parent; parent = parent.parent) {
|
|
2348
|
+
if (parent.tag === "template") return true;
|
|
2349
|
+
if (parent === scope) return false;
|
|
2350
|
+
}
|
|
2351
|
+
return false;
|
|
2352
|
+
}
|
|
2335
2353
|
function findOwner(node, identifier) {
|
|
2336
2354
|
let current = node;
|
|
2337
2355
|
while (current && current.tag !== "#root") {
|
|
@@ -3196,6 +3214,10 @@ var CONTROLLER_CONTRACT_SCHEMA = {
|
|
|
3196
3214
|
...STRING_ARRAY,
|
|
3197
3215
|
description: "Literal button types admitted by non-interactive-or-button."
|
|
3198
3216
|
},
|
|
3217
|
+
inputTypes: {
|
|
3218
|
+
...STRING_ARRAY,
|
|
3219
|
+
description: "Literal input types admitted in either mode (a native control the controller composes with)."
|
|
3220
|
+
},
|
|
3199
3221
|
suggestion: { type: "string" }
|
|
3200
3222
|
},
|
|
3201
3223
|
required: ["target", "mode", "suggestion"]
|
|
@@ -3293,6 +3315,11 @@ var CONTROLLER_CONTRACT_SCHEMA = {
|
|
|
3293
3315
|
values: { ...STRING_ARRAY, description: "Restrict the attribute to these values." },
|
|
3294
3316
|
min: { type: "integer", description: "Smallest permitted count (inclusive)." },
|
|
3295
3317
|
max: { type: "integer", description: "Largest permitted count (inclusive)." },
|
|
3318
|
+
severity: { type: "string", enum: ["error", "warning"] },
|
|
3319
|
+
excludeTemplateContents: {
|
|
3320
|
+
type: "boolean",
|
|
3321
|
+
description: "Exclude targets and containers across template contents from the scope."
|
|
3322
|
+
},
|
|
3296
3323
|
when: VALUE_CONDITION_SCHEMA,
|
|
3297
3324
|
suggestion: { type: "string" }
|
|
3298
3325
|
},
|
|
@@ -3518,6 +3545,7 @@ var SUPPORTED_PROTOCOL_VERSIONS = [
|
|
|
3518
3545
|
"2025-03-26",
|
|
3519
3546
|
"2024-11-05"
|
|
3520
3547
|
];
|
|
3548
|
+
var BATCH_PROTOCOL_VERSION = "2025-03-26";
|
|
3521
3549
|
var JSONRPC_PARSE_ERROR = -32700;
|
|
3522
3550
|
var JSONRPC_INVALID_REQUEST = -32600;
|
|
3523
3551
|
var JSONRPC_METHOD_NOT_FOUND = -32601;
|
|
@@ -3541,7 +3569,7 @@ function asRecord(value) {
|
|
|
3541
3569
|
}
|
|
3542
3570
|
var McpSession = class {
|
|
3543
3571
|
#context;
|
|
3544
|
-
#
|
|
3572
|
+
#protocolVersion = null;
|
|
3545
3573
|
constructor(context) {
|
|
3546
3574
|
this.#context = context;
|
|
3547
3575
|
}
|
|
@@ -3554,9 +3582,28 @@ var McpSession = class {
|
|
|
3554
3582
|
} catch {
|
|
3555
3583
|
return failure(null, JSONRPC_PARSE_ERROR, "Parse error");
|
|
3556
3584
|
}
|
|
3557
|
-
return this.#
|
|
3585
|
+
if (Array.isArray(message)) return this.#handleBatch(message);
|
|
3586
|
+
return this.#handleMessage(message, false);
|
|
3558
3587
|
}
|
|
3559
|
-
#
|
|
3588
|
+
#handleBatch(messages) {
|
|
3589
|
+
if (this.#protocolVersion !== BATCH_PROTOCOL_VERSION) {
|
|
3590
|
+
return failure(
|
|
3591
|
+
null,
|
|
3592
|
+
JSONRPC_INVALID_REQUEST,
|
|
3593
|
+
`Invalid request: JSON-RPC batches are accepted only in a session that negotiated protocol version ${BATCH_PROTOCOL_VERSION}.`
|
|
3594
|
+
);
|
|
3595
|
+
}
|
|
3596
|
+
if (messages.length === 0) {
|
|
3597
|
+
return failure(null, JSONRPC_INVALID_REQUEST, "Invalid request: empty batch");
|
|
3598
|
+
}
|
|
3599
|
+
const responses = [];
|
|
3600
|
+
for (const message of messages) {
|
|
3601
|
+
const response = this.#handleMessage(message, true);
|
|
3602
|
+
if (response !== null) responses.push(response);
|
|
3603
|
+
}
|
|
3604
|
+
return responses.length === 0 ? null : `[${responses.join(",")}]`;
|
|
3605
|
+
}
|
|
3606
|
+
#handleMessage(message, inBatch) {
|
|
3560
3607
|
const record = asRecord(message);
|
|
3561
3608
|
if (record === null || record.jsonrpc !== "2.0" || typeof record.method !== "string") {
|
|
3562
3609
|
return failure(null, JSONRPC_INVALID_REQUEST, "Invalid request");
|
|
@@ -3570,12 +3617,19 @@ var McpSession = class {
|
|
|
3570
3617
|
if (typeof id !== "string" && typeof id !== "number") {
|
|
3571
3618
|
return failure(null, JSONRPC_INVALID_REQUEST, "Invalid request id");
|
|
3572
3619
|
}
|
|
3620
|
+
if (inBatch && method === "initialize") {
|
|
3621
|
+
return failure(
|
|
3622
|
+
id,
|
|
3623
|
+
JSONRPC_INVALID_REQUEST,
|
|
3624
|
+
"Invalid request: initialize must not be part of a JSON-RPC batch."
|
|
3625
|
+
);
|
|
3626
|
+
}
|
|
3573
3627
|
return this.#handleRequest(id, method, record.params);
|
|
3574
3628
|
}
|
|
3575
3629
|
#handleRequest(id, method, params) {
|
|
3576
3630
|
if (method === "initialize") return this.#initialize(id, params);
|
|
3577
3631
|
if (method === "ping") return success(id, {});
|
|
3578
|
-
if (
|
|
3632
|
+
if (this.#protocolVersion === null) {
|
|
3579
3633
|
return failure(
|
|
3580
3634
|
id,
|
|
3581
3635
|
JSONRPC_SERVER_NOT_INITIALIZED,
|
|
@@ -3594,7 +3648,7 @@ var McpSession = class {
|
|
|
3594
3648
|
const record = asRecord(params) ?? {};
|
|
3595
3649
|
const requested = typeof record.protocolVersion === "string" ? record.protocolVersion : "";
|
|
3596
3650
|
const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(requested) ? requested : LATEST_PROTOCOL_VERSION;
|
|
3597
|
-
this.#
|
|
3651
|
+
this.#protocolVersion = protocolVersion;
|
|
3598
3652
|
return success(id, {
|
|
3599
3653
|
protocolVersion,
|
|
3600
3654
|
capabilities: {
|