stimeo-ui 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +106 -1
- package/README.md +19 -10
- package/dist/cable/index.d.ts +9 -8
- 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 +289 -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 +64 -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 +199 -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.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 +30 -13
- package/dist/controllers/input_mask_controller.js +411 -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 +17 -15
- package/dist/controllers/multi_select_controller.js +251 -94
- 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 +19 -8
- package/dist/controllers/pointer_drag_controller.js +249 -23
- package/dist/controllers/pointer_drag_controller.js.map +1 -1
- package/dist/controllers/popover_controller.d.ts +3 -3
- package/dist/controllers/popover_controller.js +82 -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 +2 -0
- package/dist/index.js +2451 -1312
- package/dist/index.js.map +1 -1
- package/dist/inspector/cli.d.ts +15 -11
- package/dist/inspector/cli.js +16 -3
- package/dist/inspector/cli.js.map +1 -1
- package/dist/inspector/cli_bin.js +53 -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 +7 -7
- package/dist/positioning/index.js +6 -0
- package/dist/positioning/index.js.map +1 -1
- package/package.json +10 -9
|
@@ -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);
|
|
@@ -2073,9 +2076,11 @@ function checkSource(source, manifest) {
|
|
|
2073
2076
|
const what = describeCounted(rule.target, rule.attr, rule.values);
|
|
2074
2077
|
const where = rule.within === "" ? "controller scope" : `"${rule.within}" target`;
|
|
2075
2078
|
for (const container of containers) {
|
|
2079
|
+
if (rule.excludeTemplateContents && crossesTemplateContent(container, node)) continue;
|
|
2076
2080
|
const matched = [];
|
|
2077
2081
|
for (const el of counted) {
|
|
2078
2082
|
if (!isSelfOrDescendantOf(el, container)) continue;
|
|
2083
|
+
if (rule.excludeTemplateContents && crossesTemplateContent(el, node)) continue;
|
|
2079
2084
|
if (rule.attr === void 0) {
|
|
2080
2085
|
matched.push({ el, at: el });
|
|
2081
2086
|
continue;
|
|
@@ -2092,7 +2097,7 @@ function checkSource(source, manifest) {
|
|
|
2092
2097
|
report(
|
|
2093
2098
|
el,
|
|
2094
2099
|
"cardinality-violation",
|
|
2095
|
-
"error",
|
|
2100
|
+
rule.severity ?? "error",
|
|
2096
2101
|
`"${identifier}" allows at most ${rule.max} ${what} per ${where}, but found ${matched.length}.`,
|
|
2097
2102
|
at,
|
|
2098
2103
|
rule.suggestion
|
|
@@ -2104,7 +2109,7 @@ function checkSource(source, manifest) {
|
|
|
2104
2109
|
report(
|
|
2105
2110
|
container,
|
|
2106
2111
|
"cardinality-violation",
|
|
2107
|
-
complete ? "error" : "warning",
|
|
2112
|
+
complete ? rule.severity ?? "error" : "warning",
|
|
2108
2113
|
`"${identifier}" requires at least ${rule.min} ${what} per ${where}, but found ${matched.length}.`,
|
|
2109
2114
|
container,
|
|
2110
2115
|
complete ? rule.suggestion : UNRESOLVED_TARGET_HINT
|
|
@@ -2332,6 +2337,14 @@ var IDREF_ATTRS = /* @__PURE__ */ new Set([
|
|
|
2332
2337
|
"aria-owns"
|
|
2333
2338
|
]);
|
|
2334
2339
|
var IGNORE_ATTR = "data-stimeo-ignore";
|
|
2340
|
+
function crossesTemplateContent(node, scope) {
|
|
2341
|
+
if (node === scope) return false;
|
|
2342
|
+
for (let parent = node.parent; parent; parent = parent.parent) {
|
|
2343
|
+
if (parent.tag === "template") return true;
|
|
2344
|
+
if (parent === scope) return false;
|
|
2345
|
+
}
|
|
2346
|
+
return false;
|
|
2347
|
+
}
|
|
2335
2348
|
function findOwner(node, identifier) {
|
|
2336
2349
|
let current = node;
|
|
2337
2350
|
while (current && current.tag !== "#root") {
|
|
@@ -3293,6 +3306,11 @@ var CONTROLLER_CONTRACT_SCHEMA = {
|
|
|
3293
3306
|
values: { ...STRING_ARRAY, description: "Restrict the attribute to these values." },
|
|
3294
3307
|
min: { type: "integer", description: "Smallest permitted count (inclusive)." },
|
|
3295
3308
|
max: { type: "integer", description: "Largest permitted count (inclusive)." },
|
|
3309
|
+
severity: { type: "string", enum: ["error", "warning"] },
|
|
3310
|
+
excludeTemplateContents: {
|
|
3311
|
+
type: "boolean",
|
|
3312
|
+
description: "Exclude targets and containers across template contents from the scope."
|
|
3313
|
+
},
|
|
3296
3314
|
when: VALUE_CONDITION_SCHEMA,
|
|
3297
3315
|
suggestion: { type: "string" }
|
|
3298
3316
|
},
|
|
@@ -3518,6 +3536,7 @@ var SUPPORTED_PROTOCOL_VERSIONS = [
|
|
|
3518
3536
|
"2025-03-26",
|
|
3519
3537
|
"2024-11-05"
|
|
3520
3538
|
];
|
|
3539
|
+
var BATCH_PROTOCOL_VERSION = "2025-03-26";
|
|
3521
3540
|
var JSONRPC_PARSE_ERROR = -32700;
|
|
3522
3541
|
var JSONRPC_INVALID_REQUEST = -32600;
|
|
3523
3542
|
var JSONRPC_METHOD_NOT_FOUND = -32601;
|
|
@@ -3541,7 +3560,7 @@ function asRecord(value) {
|
|
|
3541
3560
|
}
|
|
3542
3561
|
var McpSession = class {
|
|
3543
3562
|
#context;
|
|
3544
|
-
#
|
|
3563
|
+
#protocolVersion = null;
|
|
3545
3564
|
constructor(context) {
|
|
3546
3565
|
this.#context = context;
|
|
3547
3566
|
}
|
|
@@ -3554,9 +3573,28 @@ var McpSession = class {
|
|
|
3554
3573
|
} catch {
|
|
3555
3574
|
return failure(null, JSONRPC_PARSE_ERROR, "Parse error");
|
|
3556
3575
|
}
|
|
3557
|
-
return this.#
|
|
3576
|
+
if (Array.isArray(message)) return this.#handleBatch(message);
|
|
3577
|
+
return this.#handleMessage(message, false);
|
|
3558
3578
|
}
|
|
3559
|
-
#
|
|
3579
|
+
#handleBatch(messages) {
|
|
3580
|
+
if (this.#protocolVersion !== BATCH_PROTOCOL_VERSION) {
|
|
3581
|
+
return failure(
|
|
3582
|
+
null,
|
|
3583
|
+
JSONRPC_INVALID_REQUEST,
|
|
3584
|
+
`Invalid request: JSON-RPC batches are accepted only in a session that negotiated protocol version ${BATCH_PROTOCOL_VERSION}.`
|
|
3585
|
+
);
|
|
3586
|
+
}
|
|
3587
|
+
if (messages.length === 0) {
|
|
3588
|
+
return failure(null, JSONRPC_INVALID_REQUEST, "Invalid request: empty batch");
|
|
3589
|
+
}
|
|
3590
|
+
const responses = [];
|
|
3591
|
+
for (const message of messages) {
|
|
3592
|
+
const response = this.#handleMessage(message, true);
|
|
3593
|
+
if (response !== null) responses.push(response);
|
|
3594
|
+
}
|
|
3595
|
+
return responses.length === 0 ? null : `[${responses.join(",")}]`;
|
|
3596
|
+
}
|
|
3597
|
+
#handleMessage(message, inBatch) {
|
|
3560
3598
|
const record = asRecord(message);
|
|
3561
3599
|
if (record === null || record.jsonrpc !== "2.0" || typeof record.method !== "string") {
|
|
3562
3600
|
return failure(null, JSONRPC_INVALID_REQUEST, "Invalid request");
|
|
@@ -3570,12 +3608,19 @@ var McpSession = class {
|
|
|
3570
3608
|
if (typeof id !== "string" && typeof id !== "number") {
|
|
3571
3609
|
return failure(null, JSONRPC_INVALID_REQUEST, "Invalid request id");
|
|
3572
3610
|
}
|
|
3611
|
+
if (inBatch && method === "initialize") {
|
|
3612
|
+
return failure(
|
|
3613
|
+
id,
|
|
3614
|
+
JSONRPC_INVALID_REQUEST,
|
|
3615
|
+
"Invalid request: initialize must not be part of a JSON-RPC batch."
|
|
3616
|
+
);
|
|
3617
|
+
}
|
|
3573
3618
|
return this.#handleRequest(id, method, record.params);
|
|
3574
3619
|
}
|
|
3575
3620
|
#handleRequest(id, method, params) {
|
|
3576
3621
|
if (method === "initialize") return this.#initialize(id, params);
|
|
3577
3622
|
if (method === "ping") return success(id, {});
|
|
3578
|
-
if (
|
|
3623
|
+
if (this.#protocolVersion === null) {
|
|
3579
3624
|
return failure(
|
|
3580
3625
|
id,
|
|
3581
3626
|
JSONRPC_SERVER_NOT_INITIALIZED,
|
|
@@ -3594,7 +3639,7 @@ var McpSession = class {
|
|
|
3594
3639
|
const record = asRecord(params) ?? {};
|
|
3595
3640
|
const requested = typeof record.protocolVersion === "string" ? record.protocolVersion : "";
|
|
3596
3641
|
const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(requested) ? requested : LATEST_PROTOCOL_VERSION;
|
|
3597
|
-
this.#
|
|
3642
|
+
this.#protocolVersion = protocolVersion;
|
|
3598
3643
|
return success(id, {
|
|
3599
3644
|
protocolVersion,
|
|
3600
3645
|
capabilities: {
|