From deb38a118123ad285e112e90a3f23761d9846cf7 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 11 Sep 2025 21:46:47 +0200 Subject: [PATCH 1/2] base --- compiler/bsb/bsb_parse_sources.ml | 4 +- compiler/ext/literals.ml | 2 + compiler/gentype/Annotation.ml | 16 + compiler/gentype/EmitAssertions.ml | 419 ++++ compiler/gentype/GenTypeMain.ml | 77 +- compiler/gentype/ModuleExtension.ml | 2 + compiler/gentype/Paths.ml | 9 + .../typescript-react-example/package.json | 1 + .../src/AriaComponents.assertions.ts | 20 + .../src/AriaComponents.res | 25 + .../src/AriaComponents.res.js | 2 + yarn.lock | 2092 ++++++++++++++++- 12 files changed, 2596 insertions(+), 73 deletions(-) create mode 100644 compiler/gentype/EmitAssertions.ml create mode 100644 tests/gentype_tests/typescript-react-example/src/AriaComponents.assertions.ts create mode 100644 tests/gentype_tests/typescript-react-example/src/AriaComponents.res create mode 100644 tests/gentype_tests/typescript-react-example/src/AriaComponents.res.js diff --git a/compiler/bsb/bsb_parse_sources.ml b/compiler/bsb/bsb_parse_sources.ml index b829d616c3..30a6a16eb2 100644 --- a/compiler/bsb/bsb_parse_sources.ml +++ b/compiler/bsb/bsb_parse_sources.ml @@ -369,13 +369,15 @@ and walk_source_dir_map (cxt : walk_cxt) sub_dirs_field = let working_dir = Filename.concat cxt.root cxt.cwd in if not (Set_string.mem cxt.ignored_dirs cxt.cwd) then ( let file_array = Sys.readdir working_dir in - (* Remove .gen.js/.gen.tsx during clean up *) + (* Remove .gen.js/.gen.tsx/.assertions.ts during clean up *) Ext_array.iter file_array (fun file -> let is_typescript = cxt.gentype_language = "typescript" in if (not is_typescript) && Ext_string.ends_with file Literals.suffix_gen_js || (is_typescript && Ext_string.ends_with file Literals.suffix_gen_tsx) + || is_typescript + && Ext_string.ends_with file Literals.suffix_assertions_ts then Sys.remove (Filename.concat working_dir file)); let cxt_traverse = cxt.traverse in match (sub_dirs_field, cxt_traverse) with diff --git a/compiler/ext/literals.ml b/compiler/ext/literals.ml index 2b469652ad..16373ffc96 100644 --- a/compiler/ext/literals.ml +++ b/compiler/ext/literals.ml @@ -119,6 +119,8 @@ let suffix_gen_js = ".gen.js" let suffix_gen_tsx = ".gen.tsx" +let suffix_assertions_ts = ".assertions.ts" + let esmodule = "esmodule" let commonjs = "commonjs" diff --git a/compiler/gentype/Annotation.ml b/compiler/gentype/Annotation.ml index 9c66678b38..a546122907 100644 --- a/compiler/gentype/Annotation.ml +++ b/compiler/gentype/Annotation.ml @@ -29,6 +29,9 @@ let tag_is_unboxed s = s = "unboxed" || s = "ocaml.unboxed" let tag_is_gentype_import s = s = "genType.import" || s = "gentype.import" let tag_is_gentype_opaque s = s = "genType.opaque" || s = "gentype.opaque" +let tag_is_gentype_satisfies s = + s = "genType.satisfies" || s = "gentype.satisfies" + let tag_is_one_of_the_gentype_annotations s = tag_is_gentype s || tag_is_gentype_as s || tag_is_gentype_import s || tag_is_gentype_opaque s @@ -163,6 +166,19 @@ let doc_string_from_attrs attributes = attributes |> get_doc_payload let has_attribute check_text (attributes : Typedtree.attributes) = get_attribute_payload check_text attributes <> None +let get_satisfies_path (attributes : Typedtree.attributes) : string list option + = + match attributes |> get_attribute_payload tag_is_gentype_satisfies with + | Some (_, TuplePayload payloads) -> + let rec collect acc = function + | [] -> Some (List.rev acc) + | StringPayload s :: tl -> collect (s :: acc) tl + | _ -> None + in + collect [] payloads + | Some (_, StringPayload s) -> Some [s] + | _ -> None + let from_attributes ~(config : GenTypeConfig.t) ~loc (attributes : Typedtree.attributes) = let default = if config.everything then GenType else NoGenType in diff --git a/compiler/gentype/EmitAssertions.ml b/compiler/gentype/EmitAssertions.ml new file mode 100644 index 0000000000..24ea564eab --- /dev/null +++ b/compiler/gentype/EmitAssertions.ml @@ -0,0 +1,419 @@ +open GenTypeCommon + +(* Utilities to build TS import path expressions from a list of segments. *) +let ts_import_path (segments : string list) : string = + match segments with + | [] -> "import(\"\")." (* should not happen, but keep a valid token *) + | pkg :: rest -> ( + match rest with + | [] -> "import(\"" ^ pkg ^ "\")" + | _ -> "import(\"" ^ pkg ^ "\")." ^ String.concat "." rest) + +type type_assertion = { + name: string; + type_vars: string list; + type_: type_; + import_segments: string list; +} + +type value_assertion = { + name: string; (* original name of the value *) + type_: type_; + import_segments: string list; +} + +type assertions = { + type_assertions: type_assertion list; + value_assertions: value_assertion list; + gentype_type_defs: (string * string list * type_) list; + gentype_value_defs: (string * type_) list; +} + +let empty_assertions = + { + type_assertions = []; + value_assertions = []; + gentype_type_defs = []; + gentype_value_defs = []; + } + +let collect_from_structure ~(config : GenTypeConfig.t) ~output_file_relative + ~resolver ~type_env (structure : Typedtree.structure) : assertions = + let rec process_items (items : Typedtree.structure_item list) + (acc : assertions) : assertions = + match items with + | [] -> acc + | item :: rest -> + let acc1 = + match item.str_desc with + | Tstr_type (rec_flag, type_declarations) -> + (* Filter those with @gentype.satisfies and translate the whole group. *) + let wanted = + type_declarations + |> List.filter (fun (td : Typedtree.type_declaration) -> + Annotation.get_satisfies_path td.typ_attributes <> None) + in + let has_regular_gentype attrs = + Annotation.has_attribute Annotation.tag_is_gentype attrs + || Annotation.has_attribute Annotation.tag_is_gentype_as attrs + || Annotation.has_attribute Annotation.tag_is_gentype_opaque attrs + in + let wanted_gentype = + type_declarations + |> List.filter (fun (td : Typedtree.type_declaration) -> + has_regular_gentype td.typ_attributes) + in + if wanted = [] && wanted_gentype = [] then acc + else + let trans = + TranslateTypeDeclarations.translate_type_declarations ~config + ~output_file_relative ~recursive:(rec_flag = Recursive) + ~resolver ~type_env type_declarations + in + (* Build a map from base type name -> (type_, type_vars) *) + let by_name = + trans + |> List.fold_left + (fun m (td : CodeItem.type_declaration) -> + let et = td.export_from_type_declaration.export_type in + let base_name = + match ResolvedName.to_list et.resolved_type_name with + | [] -> "" + | xs -> List.hd (List.rev xs) + in + StringMap.add base_name (et.type_, et.type_vars) m) + StringMap.empty + in + let add_one_satisfies acc (td : Typedtree.type_declaration) = + let name = Ident.name td.typ_id in + match Annotation.get_satisfies_path td.typ_attributes with + | None -> acc + | Some import_segments -> ( + match StringMap.find name by_name with + | exception Not_found -> acc + | type_, type_vars -> + { + acc with + type_assertions = + {name; type_vars; type_; import_segments} + :: acc.type_assertions; + }) + in + let acc = wanted |> List.fold_left add_one_satisfies acc in + (* Also include regular @gentype type declarations (non-exported). *) + let add_one_gentype acc (td : Typedtree.type_declaration) = + let name = Ident.name td.typ_id in + if Annotation.get_satisfies_path td.typ_attributes <> None then + acc + else + match StringMap.find name by_name with + | exception Not_found -> acc + | type_, type_vars -> + { + acc with + gentype_type_defs = + (name, type_vars, type_) :: acc.gentype_type_defs; + } + in + wanted_gentype |> List.fold_left add_one_gentype acc + | Tstr_value (_loc, value_bindings) -> + let add_binding acc (vb : Typedtree.value_binding) = + match Annotation.get_satisfies_path vb.vb_attributes with + | None -> acc + | Some import_segments -> ( + match vb.vb_pat.pat_desc with + | Tpat_var (id, _) | Tpat_alias ({pat_desc = Tpat_any}, id, _) -> + let name = Ident.name id in + let tt = + vb.vb_pat.pat_type + |> TranslateTypeExprFromTypes.translate_type_expr_from_types + ~config ~type_env + in + let type_vars = tt.type_ |> TypeVars.free in + let type_ = + Translation.abstract_the_type_parameters ~type_vars tt.type_ + in + { + acc with + value_assertions = + {name; type_; import_segments} :: acc.value_assertions; + } + | _ -> acc) + in + let acc = value_bindings |> List.fold_left add_binding acc in + (* Also include regular @gentype values (non-exported). *) + let add_binding_gentype acc (vb : Typedtree.value_binding) = + let is_gentype = + Annotation.has_attribute Annotation.tag_is_gentype + vb.vb_attributes + || Annotation.has_attribute Annotation.tag_is_gentype_as + vb.vb_attributes + || Annotation.has_attribute Annotation.tag_is_gentype_opaque + vb.vb_attributes + in + if not is_gentype then acc + else if Annotation.get_satisfies_path vb.vb_attributes <> None then + acc + else + match vb.vb_pat.pat_desc with + | Tpat_var (id, _) | Tpat_alias ({pat_desc = Tpat_any}, id, _) -> + let name = Ident.name id in + let tt = + vb.vb_pat.pat_type + |> TranslateTypeExprFromTypes.translate_type_expr_from_types + ~config ~type_env + in + let type_vars = tt.type_ |> TypeVars.free in + let type_ = + Translation.abstract_the_type_parameters ~type_vars tt.type_ + in + { + acc with + gentype_value_defs = (name, type_) :: acc.gentype_value_defs; + } + | _ -> acc + in + value_bindings |> List.fold_left add_binding_gentype acc + | Tstr_primitive vd -> ( + let + (* external *) + open + Typedtree in + match Annotation.get_satisfies_path vd.val_attributes with + | None -> + if + (* Also include regular @gentype externals (non-exported). *) + Annotation.has_attribute Annotation.tag_is_gentype + vd.val_attributes + || Annotation.has_attribute Annotation.tag_is_gentype_as + vd.val_attributes + || Annotation.has_attribute Annotation.tag_is_gentype_opaque + vd.val_attributes + then + let name = + match vd.val_prim with + | "" :: _ | [] -> Ident.name vd.val_id + | name_of_extern :: _ -> name_of_extern + in + let tt = + vd.val_desc + |> TranslateCoreType.translate_core_type ~config ~type_env + in + let type_vars = tt.type_ |> TypeVars.free in + let type_ = + Translation.abstract_the_type_parameters ~type_vars tt.type_ + in + { + acc with + gentype_value_defs = (name, type_) :: acc.gentype_value_defs; + } + else acc + | Some import_segments -> + let name = + match vd.val_prim with + | "" :: _ | [] -> Ident.name vd.val_id + | name_of_extern :: _ -> name_of_extern + in + let tt = + vd.val_desc + |> TranslateCoreType.translate_core_type ~config ~type_env + in + let type_vars = tt.type_ |> TypeVars.free in + let type_ = + Translation.abstract_the_type_parameters ~type_vars tt.type_ + in + { + acc with + value_assertions = + {name; type_; import_segments} :: acc.value_assertions; + }) + | _ -> acc + in + process_items rest acc1 + in + process_items structure.str_items empty_assertions + +let collect_from_signature ~(config : GenTypeConfig.t) ~output_file_relative + ~resolver ~type_env (signature : Typedtree.signature) : assertions = + let rec process_items (items : Typedtree.signature_item list) + (acc : assertions) : assertions = + match items with + | [] -> acc + | item :: rest -> + let acc1 = + match item.sig_desc with + | Tsig_type (_rec, type_declarations) -> + let wanted = + type_declarations + |> List.filter (fun (td : Typedtree.type_declaration) -> + Annotation.get_satisfies_path td.typ_attributes <> None) + in + let has_regular_gentype attrs = + Annotation.has_attribute Annotation.tag_is_gentype attrs + || Annotation.has_attribute Annotation.tag_is_gentype_as attrs + || Annotation.has_attribute Annotation.tag_is_gentype_opaque attrs + in + let wanted_gentype = + type_declarations + |> List.filter (fun (td : Typedtree.type_declaration) -> + has_regular_gentype td.typ_attributes) + in + if wanted = [] && wanted_gentype = [] then acc + else + let trans = + TranslateTypeDeclarations.translate_type_declarations ~config + ~output_file_relative ~recursive:false ~resolver ~type_env + type_declarations + in + let by_name = + trans + |> List.fold_left + (fun m (td : CodeItem.type_declaration) -> + let et = td.export_from_type_declaration.export_type in + let base_name = + match ResolvedName.to_list et.resolved_type_name with + | [] -> "" + | xs -> List.hd (List.rev xs) + in + StringMap.add base_name (et.type_, et.type_vars) m) + StringMap.empty + in + let add_one acc (td : Typedtree.type_declaration) = + let name = Ident.name td.typ_id in + match Annotation.get_satisfies_path td.typ_attributes with + | None -> acc + | Some import_segments -> ( + match StringMap.find name by_name with + | exception Not_found -> acc + | type_, type_vars -> + { + acc with + type_assertions = + {name; type_vars; type_; import_segments} + :: acc.type_assertions; + }) + in + let acc = wanted |> List.fold_left add_one acc in + let add_one_gentype acc (td : Typedtree.type_declaration) = + let name = Ident.name td.typ_id in + if Annotation.get_satisfies_path td.typ_attributes <> None then + acc + else + match StringMap.find name by_name with + | exception Not_found -> acc + | type_, type_vars -> + { + acc with + gentype_type_defs = + (name, type_vars, type_) :: acc.gentype_type_defs; + } + in + wanted_gentype |> List.fold_left add_one_gentype acc + | Tsig_value vd -> ( + match Annotation.get_satisfies_path vd.val_attributes with + | None -> acc + | Some import_segments -> + let name = Ident.name vd.val_id in + let tt = + vd.val_desc + |> TranslateCoreType.translate_core_type ~config ~type_env + in + let type_vars = tt.type_ |> TypeVars.free in + let type_ = + Translation.abstract_the_type_parameters ~type_vars tt.type_ + in + { + acc with + value_assertions = + {name; type_; import_segments} :: acc.value_assertions; + }) + | _ -> acc + in + process_items rest acc1 + in + process_items signature.sig_items empty_assertions + +let render ~(config : GenTypeConfig.t) (a : assertions) : string option = + let type_name_is_interface _ = false in + let buf = Buffer.create 256 in + (* Emit the helper type if there's at least one type assertion *) + (match a.type_assertions with + | [] -> () + | _ -> + Buffer.add_string buf + "type $RescriptTypeSatisfiesTypeScriptType = TypeScriptType;\n\n"); + let emit_type (t : type_assertion) = + let generics = + match t.type_vars with + | [] -> "" + | vs -> "<" ^ String.concat ", " vs ^ ">" + in + let res_type = + EmitType.type_to_string ~config ~type_name_is_interface t.type_ + in + let import_ts = ts_import_path t.import_segments in + Buffer.add_string buf + ("type " ^ sanitize_type_name t.name ^ generics + ^ " = $RescriptTypeSatisfiesTypeScriptType<" ^ res_type ^ ", " ^ import_ts + ^ ">;\n") + in + let emit_value (v : value_assertion) = + let res_type = + EmitType.type_to_string ~config ~type_name_is_interface v.type_ + in + let import_ts = ts_import_path v.import_segments in + let name = "_" ^ v.name in + Buffer.add_string buf + ("const " ^ name ^ " = null as unknown as " ^ res_type + ^ " satisfies typeof " ^ import_ts ^ ";\n") + in + a.type_assertions |> List.rev |> List.iter emit_type; + (match a.type_assertions with + | [] -> () + | _ -> Buffer.add_char buf '\n'); + a.value_assertions |> List.rev |> List.iter emit_value; + (* Also emit definitions for @gentype types and values (non-exported). *) + let emit_gentype_type (name, type_vars, type_) = + let generics = + match type_vars with + | [] -> "" + | vs -> "<" ^ String.concat ", " vs ^ ">" + in + Buffer.add_string buf + ("type " ^ sanitize_type_name name ^ generics ^ " = " + ^ EmitType.type_to_string ~config ~type_name_is_interface type_ + ^ ";\n") + in + (match a.gentype_type_defs with + | [] -> () + | _ -> Buffer.add_char buf '\n'); + a.gentype_type_defs |> List.rev |> List.iter emit_gentype_type; + (* Also emit definitions for @gentype values (non-exported). *) + let emit_gentype_value (name, type_) = + Buffer.add_string buf + ("const _" ^ name ^ " = null as unknown as " + ^ EmitType.type_to_string ~config ~type_name_is_interface type_ + ^ ";\n") + in + (match a.gentype_value_defs with + | [] -> () + | _ -> Buffer.add_char buf '\n'); + a.gentype_value_defs |> List.rev |> List.iter emit_gentype_value; + if Buffer.length buf = 0 then None else Some (Buffer.contents buf) + +let emit_for_cmt ~(config : GenTypeConfig.t) ~(output_file_relative : string) + ~(resolver : ModuleResolver.resolver) (input_cmt : Cmt_format.cmt_infos) : + string option = + let type_env = TypeEnv.root () in + let assertions = + match input_cmt.Cmt_format.cmt_annots with + | Cmt_format.Implementation structure -> + collect_from_structure ~config ~output_file_relative ~resolver ~type_env + structure + | Cmt_format.Interface signature -> + collect_from_signature ~config ~output_file_relative ~resolver ~type_env + signature + | _ -> empty_assertions + in + render ~config assertions diff --git a/compiler/gentype/GenTypeMain.ml b/compiler/gentype/GenTypeMain.ml index ed5d41654a..5530369c9a 100644 --- a/compiler/gentype/GenTypeMain.ml +++ b/compiler/gentype/GenTypeMain.ml @@ -90,6 +90,7 @@ let read_cmt cmt_file = Log_.item "Try to clean and rebuild.\n\n"; assert false +(* TODO(gentype-satisfies) Make this return a record. And, in addition to returning `has_gentype_annotations` (the current 2nd element that is a bool), make it also return `has_gentype_satisfies_annotations`. *) let read_input_cmt is_interface cmt_file = let input_cmt = read_cmt cmt_file in let ignore_interface = ref false in @@ -137,10 +138,10 @@ let process_cmt_file cmt = let config = Paths.read_config ~namespace:(cmt |> Paths.find_name_space) in if !Debug.basic then Log_.item "Cmt %s\n" cmt; let cmt_file = cmt |> Paths.get_cmt_file in - if cmt_file <> "" then + if cmt_file <> "" then ( let file_name = cmt |> Paths.get_module_name in let is_interface = Filename.check_suffix cmt_file ".cmti" in - let input_cmt, has_gentype_annotations = + let input_cmt, _has_gentype_annotations = read_input_cmt is_interface cmt_file in let source_file = @@ -154,6 +155,7 @@ let process_cmt_file cmt = | false -> ".res") in let output_file = source_file |> Paths.get_output_file ~config in + let assertions_file = source_file |> Paths.get_assertions_file in let output_file_relative = source_file |> Paths.get_output_file_relative ~config in @@ -162,7 +164,37 @@ let process_cmt_file cmt = ~extensions:[".res"; ".shim.ts"] ~exclude_file:(fun fname -> fname = "React.res" || fname = "ReasonReact.res") in - if has_gentype_annotations then + (* First: normal .gen.tsx pipeline if annotated (excluding only-satisfies). *) + let _has_non_satisfies_annotations = + let file_text = try GeneratedFiles.read_file source_file with _ -> "" in + let contains s = Ext_string.contain_substring file_text s in + let has_default_gentype_annotations = + let check_attr ~loc:_ attrs = + attrs + |> Annotation.get_attribute_payload + Annotation.tag_is_one_of_the_gentype_annotations + <> None + in + input_cmt |> cmt_check_annotations ~check_annotation:check_attr + in + let source_mentions_only_satisfies = + (contains "@gentype.satisfies" || contains "@genType.satisfies") + && not + (contains "@gentype(" || contains "@gentype " + || contains "@genType(" || contains "@genType ") + in + has_default_gentype_annotations && not source_mentions_only_satisfies + in + if + (* original gating: keep behavior, then post-filter *) + let check_attr ~loc:_ attrs = + attrs + |> Annotation.get_attribute_payload + Annotation.tag_is_one_of_the_gentype_annotations + <> None + in + input_cmt |> cmt_check_annotations ~check_annotation:check_attr + then input_cmt |> translate_c_m_t ~config ~output_file_relative ~resolver |> emit_translation ~config ~file_name ~output_file ~output_file_relative @@ -171,5 +203,42 @@ let process_cmt_file cmt = output_file |> GeneratedFiles.log_file_action TypeError else ( output_file |> GeneratedFiles.log_file_action NoMatch; - if Sys.file_exists output_file then Sys.remove output_file) + if Sys.file_exists output_file then Sys.remove output_file); + (* Post-filter: if the source only has @gentype.satisfies, drop any .gen.tsx. *) + let file_text = try GeneratedFiles.read_file source_file with _ -> "" in + let contains s = Ext_string.contain_substring file_text s in + let source_mentions_only_satisfies = + (contains "@gentype.satisfies" || contains "@genType.satisfies") + && not + (contains "@gentype(" || contains "@gentype " || contains "@genType(" + || contains "@genType ") + in + if source_mentions_only_satisfies then ( + output_file |> GeneratedFiles.log_file_action NoMatch; + if Sys.file_exists output_file then Sys.remove output_file); + (* Then: emit assertions file when @gentype.satisfies is present. *) + let has_satisfies_annotations = + let check_attr ~loc:_ attrs = + attrs + |> Annotation.get_attribute_payload Annotation.tag_is_gentype_satisfies + <> None + in + input_cmt |> cmt_check_annotations ~check_annotation:check_attr + in + if has_satisfies_annotations then ( + match + EmitAssertions.emit_for_cmt ~config ~output_file_relative ~resolver + input_cmt + with + | Some file_contents -> + GeneratedFiles.write_file_if_required ~output_file:assertions_file + ~file_contents + | None -> + (* No content -> ensure file is removed if present. *) + if Sys.file_exists assertions_file then Sys.remove assertions_file) + else if input_cmt |> cmt_has_type_errors then + assertions_file |> GeneratedFiles.log_file_action TypeError + else ( + assertions_file |> GeneratedFiles.log_file_action NoMatch; + if Sys.file_exists assertions_file then Sys.remove assertions_file)) [@@live] diff --git a/compiler/gentype/ModuleExtension.ml b/compiler/gentype/ModuleExtension.ml index 0a1604f36f..56ab8f617c 100644 --- a/compiler/gentype/ModuleExtension.ml +++ b/compiler/gentype/ModuleExtension.ml @@ -18,6 +18,8 @@ let ts_input_file_suffix ~(config : Config.t) = | Some s when Filename.extension s <> "" (* double extension *) -> s | _ -> generated_files_extension ~config ^ ".tsx" +let ts_assertions_file_suffix = ".assertions.ts" + let ts_output_file_suffix ~(config : Config.t) = generated_files_extension ~config ^ ".js" diff --git a/compiler/gentype/Paths.ml b/compiler/gentype/Paths.ml index 89aeb8053b..890ac6d9a7 100644 --- a/compiler/gentype/Paths.ml +++ b/compiler/gentype/Paths.ml @@ -58,6 +58,15 @@ let get_output_file ~(config : Config.t) source_path = let get_module_name cmt = cmt |> handle_namespace |> Filename.basename |> ModuleName.from_string_unsafe +(* New: compute the companion assertions file path next to the source file. *) +let get_assertions_file (source_path : string) : string = + let dir = Filename.dirname source_path in + let base = + source_path |> Filename.basename + |> (Filename.chop_extension [@doesNotRaise]) + in + Filename.concat dir (base ^ ".assertions.ts") + let get_cmt_file cmt = let path_cmt = if Filename.is_relative cmt then Filename.concat (Sys.getcwd ()) cmt diff --git a/tests/gentype_tests/typescript-react-example/package.json b/tests/gentype_tests/typescript-react-example/package.json index f8e88d4316..c9dd43bd26 100644 --- a/tests/gentype_tests/typescript-react-example/package.json +++ b/tests/gentype_tests/typescript-react-example/package.json @@ -11,6 +11,7 @@ "dependencies": { "@rescript/react": "^0.13.1", "react": "^18.3.1", + "react-aria-components": "1.12.1", "react-dom": "^18.3.1", "rescript": "workspace:^" }, diff --git a/tests/gentype_tests/typescript-react-example/src/AriaComponents.assertions.ts b/tests/gentype_tests/typescript-react-example/src/AriaComponents.assertions.ts new file mode 100644 index 0000000000..e4220d240f --- /dev/null +++ b/tests/gentype_tests/typescript-react-example/src/AriaComponents.assertions.ts @@ -0,0 +1,20 @@ +type $RescriptTypeSatisfiesTypeScriptType = TypeScriptType; + +type groupRenderProps = $RescriptTypeSatisfiesTypeScriptType<{ + readonly isHovered: boolean; + readonly isFocusWithin: boolean; + readonly isFocusVisible: boolean; + readonly isDisabled: boolean; + readonly isInvalid: boolean +}, import("react-aria-components").GroupRenderProps>; +type selectionBehavior = $RescriptTypeSatisfiesTypeScriptType<"toggle" | "replace", import("react-stately").SelectionBehavior>; +type selectionMode = $RescriptTypeSatisfiesTypeScriptType<"none" | "single" | "multiple", import("react-stately").SelectionMode>; + +const _useTableOptions = null as unknown as () => tableOptionsContextValue satisfies typeof import("react-aria-components").useTableOptions; + +type tableOptionsContextValue = { + readonly selectionMode: selectionMode; + readonly selectionBehavior: (null | selectionBehavior); + readonly disallowEmptySelection: boolean; + readonly allowsDragging: boolean +}; diff --git a/tests/gentype_tests/typescript-react-example/src/AriaComponents.res b/tests/gentype_tests/typescript-react-example/src/AriaComponents.res new file mode 100644 index 0000000000..5324d844b5 --- /dev/null +++ b/tests/gentype_tests/typescript-react-example/src/AriaComponents.res @@ -0,0 +1,25 @@ +@gentype.satisfies(("react-aria-components", "GroupRenderProps")) +type groupRenderProps = { + isHovered: bool, + isFocusWithin: bool, + isFocusVisible: bool, + isDisabled: bool, + isInvalid: bool, +} + +@gentype.satisfies(("react-stately", "SelectionBehavior")) +type selectionBehavior = | @as("toggle") Toggle | @as("replace") Replace + +@gentype.satisfies(("react-stately", "SelectionMode")) +type selectionMode = | @as("none") None | @as("single") Single | @as("multiple") Multiple + +@gentype +type tableOptionsContextValue = { + selectionMode: selectionMode, + selectionBehavior: Null.t, + disallowEmptySelection: bool, + allowsDragging: bool, +} + +@gentype.satisfies(("react-aria-components", "useTableOptions")) @module("react-aria-components") +external useTableOptions: unit => tableOptionsContextValue = "useTableOptions" diff --git a/tests/gentype_tests/typescript-react-example/src/AriaComponents.res.js b/tests/gentype_tests/typescript-react-example/src/AriaComponents.res.js new file mode 100644 index 0000000000..d856702bfe --- /dev/null +++ b/tests/gentype_tests/typescript-react-example/src/AriaComponents.res.js @@ -0,0 +1,2 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/yarn.lock b/yarn.lock index 81e1630eae..020bbd4f88 100644 --- a/yarn.lock +++ b/yarn.lock @@ -274,117 +274,1892 @@ __metadata: languageName: node linkType: hard +"@formatjs/ecma402-abstract@npm:2.3.4": + version: 2.3.4 + resolution: "@formatjs/ecma402-abstract@npm:2.3.4" + dependencies: + "@formatjs/fast-memoize": "npm:2.2.7" + "@formatjs/intl-localematcher": "npm:0.6.1" + decimal.js: "npm:^10.4.3" + tslib: "npm:^2.8.0" + checksum: 10c0/2644bc618a34dc610ef9691281eeb45ae6175e6982cf19f1bd140672fc95c748747ce3c85b934649ea7e4a304f7ae0060625fd53d5df76f92ca3acf743e1eb0a + languageName: node + linkType: hard + +"@formatjs/fast-memoize@npm:2.2.7": + version: 2.2.7 + resolution: "@formatjs/fast-memoize@npm:2.2.7" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/f5eabb0e4ab7162297df8252b4cfde194b23248120d9df267592eae2be2d2f7c4f670b5a70523d91b4ecdc35d40e65823bb8eeba8dd79fbf8601a972bf3b8866 + languageName: node + linkType: hard + +"@formatjs/icu-messageformat-parser@npm:2.11.2": + version: 2.11.2 + resolution: "@formatjs/icu-messageformat-parser@npm:2.11.2" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.3.4" + "@formatjs/icu-skeleton-parser": "npm:1.8.14" + tslib: "npm:^2.8.0" + checksum: 10c0/a121f2d2c6b36a1632ffd64c3545e2500c8ee0f7fee5db090318c035d635c430ab123faedb5d000f18d9423a7b55fbf670b84e2e2dd72cc307a38aed61d3b2e0 + languageName: node + linkType: hard + +"@formatjs/icu-skeleton-parser@npm:1.8.14": + version: 1.8.14 + resolution: "@formatjs/icu-skeleton-parser@npm:1.8.14" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.3.4" + tslib: "npm:^2.8.0" + checksum: 10c0/a1807ed6e90b8a2e8d0e5b5125e6f9a2c057d3cff377fb031d2333af7cfaa6de4ed3a15c23da7294d4c3557f8b28b2163246434a19720f26b5db0497d97e9b58 + languageName: node + linkType: hard + +"@formatjs/intl-localematcher@npm:0.6.1": + version: 0.6.1 + resolution: "@formatjs/intl-localematcher@npm:0.6.1" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/bacbedd508519c1bb5ca2620e89dc38f12101be59439aa14aa472b222915b462cb7d679726640f6dcf52a05dd218b5aa27ccd60f2e5010bb96f1d4929848cde0 + languageName: node + linkType: hard + +"@internationalized/date@npm:^3.9.0": + version: 3.9.0 + resolution: "@internationalized/date@npm:3.9.0" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/8f2bf54c407aa95ab9922759c27f19bd9185bc6c4bde936fb5cc7a99bf764de8483102a61d53afa0598eefa11711617d3c05a65e8a5cb8bfac10c2c0800e488a + languageName: node + linkType: hard + +"@internationalized/message@npm:^3.1.8": + version: 3.1.8 + resolution: "@internationalized/message@npm:3.1.8" + dependencies: + "@swc/helpers": "npm:^0.5.0" + intl-messageformat: "npm:^10.1.0" + checksum: 10c0/91019d66d62ab6733fa46ed495fac6878bcc98f082e51be9fd0e4b5836a4df0f488c8dcd218f2e566c713e59cc68ef3aa5fc45e5b9bca8cca458d0990765b77a + languageName: node + linkType: hard + +"@internationalized/number@npm:^3.6.5": + version: 3.6.5 + resolution: "@internationalized/number@npm:3.6.5" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/f87d710863a8dbf057aac311193c82f3c42e862abdd99e5b71034f1022926036552620eab5dd00c23e975f28b9e41e830cb342ba0264436749d9cdc5ae031d44 + languageName: node + linkType: hard + +"@internationalized/string@npm:^3.2.7": + version: 3.2.7 + resolution: "@internationalized/string@npm:3.2.7" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/8f7bea379ce047026ef20d535aa1bd7612a5e5a5108d1e514965696a46bce34e38111411943b688d00dae2c81eae7779ae18343961310696d32ebb463a19b94a + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" dependencies: - string-width: "npm:^5.1.2" - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: "npm:^7.0.1" - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: "npm:^8.1.0" - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.8 + resolution: "@jridgewell/gen-mapping@npm:0.3.8" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@react-aria/autocomplete@npm:3.0.0-rc.1": + version: 3.0.0-rc.1 + resolution: "@react-aria/autocomplete@npm:3.0.0-rc.1" + dependencies: + "@react-aria/combobox": "npm:^3.13.2" + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/listbox": "npm:^3.14.8" + "@react-aria/searchfield": "npm:^3.8.8" + "@react-aria/textfield": "npm:^3.18.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/autocomplete": "npm:3.0.0-beta.3" + "@react-stately/combobox": "npm:^3.11.1" + "@react-types/autocomplete": "npm:3.0.0-alpha.34" + "@react-types/button": "npm:^3.14.0" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/375538f556f833f800ab9c8ebb957dd61fbeda07f6adf062e6a1418affdfd3abe4ef6195de328e76d1afb123650ce1e2670639baf1e79f2fd84a08ac9e9f0397 + languageName: node + linkType: hard + +"@react-aria/breadcrumbs@npm:^3.5.28": + version: 3.5.28 + resolution: "@react-aria/breadcrumbs@npm:3.5.28" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/link": "npm:^3.8.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/breadcrumbs": "npm:^3.7.16" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ce0948f36a4944b59788d10d34a1cda81ba8d48f9bef9959c4c0dd1e05a24c86f9d0c014b398b804fbe50909334e86801a20f4e559a7faa69a1252881653d506 + languageName: node + linkType: hard + +"@react-aria/button@npm:^3.14.1": + version: 3.14.1 + resolution: "@react-aria/button@npm:3.14.1" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/toolbar": "npm:3.0.0-beta.20" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/toggle": "npm:^3.9.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/fde6d70cbc95966094b513de5d2959143e7f027ee88d53bbcca638b0be7c355e79206be1cedce122a890dac74cc49695a9cadf4fba5cc91af37d2a6dfc97176f + languageName: node + linkType: hard + +"@react-aria/calendar@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-aria/calendar@npm:3.9.1" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/calendar": "npm:^3.8.4" + "@react-types/button": "npm:^3.14.0" + "@react-types/calendar": "npm:^3.7.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/0df71500322aad5cded31f1728947cdd4affc4b1199d6b443a0e4132b6c0c0ddc241dc85624e35d6fed658773088d6679e807e2bf3672d4b5891c50e0a0d73a0 + languageName: node + linkType: hard + +"@react-aria/checkbox@npm:^3.16.1": + version: 3.16.1 + resolution: "@react-aria/checkbox@npm:3.16.1" + dependencies: + "@react-aria/form": "npm:^3.1.1" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/toggle": "npm:^3.12.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/checkbox": "npm:^3.7.1" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/toggle": "npm:^3.9.1" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ab7d10874bd0b0608b9fb8e47985ff5c6bcb810b1ea09ba187a0e8b0840c1d9a03b5d116308698efca84b9b2483517f50d2113d5920cd377c45bebd8e0902d9b + languageName: node + linkType: hard + +"@react-aria/collections@npm:3.0.0-rc.6": + version: 3.0.0-rc.6 + resolution: "@react-aria/collections@npm:3.0.0-rc.6" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + use-sync-external-store: "npm:^1.4.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/4daa4c41edc300bfc5c78b5f4c0ed23bc92ac4219cecca7b0a6ac7352a7eac903696514e62ad34e12688bcb3f203c383cceed3a71cb6b871864eeb84a6a634d3 + languageName: node + linkType: hard + +"@react-aria/color@npm:^3.1.1": + version: 3.1.1 + resolution: "@react-aria/color@npm:3.1.1" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/numberfield": "npm:^3.12.1" + "@react-aria/slider": "npm:^3.8.1" + "@react-aria/spinbutton": "npm:^3.6.18" + "@react-aria/textfield": "npm:^3.18.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-aria/visually-hidden": "npm:^3.8.27" + "@react-stately/color": "npm:^3.9.1" + "@react-stately/form": "npm:^3.2.1" + "@react-types/color": "npm:^3.1.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/bf318d04de679ba169282fa8c57336b8faaed41632895e5d863d5fb8b426bd27ff8516152b0f30360ee6c88602ed840da83dac6d218586575edb18d2c8f14c93 + languageName: node + linkType: hard + +"@react-aria/combobox@npm:^3.13.2": + version: 3.13.2 + resolution: "@react-aria/combobox@npm:3.13.2" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/listbox": "npm:^3.14.8" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/menu": "npm:^3.19.2" + "@react-aria/overlays": "npm:^3.29.1" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/textfield": "npm:^3.18.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/combobox": "npm:^3.11.1" + "@react-stately/form": "npm:^3.2.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/combobox": "npm:^3.13.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/b02ed213774d67454d1f5234f444803bd0c4b12ab74614aa5120e8ccc1c08fa109d23a160f1fbc12fc5eaf28cf1173e8b16dcfc457cb75a5238de49f7de210f4 + languageName: node + linkType: hard + +"@react-aria/datepicker@npm:^3.15.1": + version: 3.15.1 + resolution: "@react-aria/datepicker@npm:3.15.1" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@internationalized/number": "npm:^3.6.5" + "@internationalized/string": "npm:^3.2.7" + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/form": "npm:^3.1.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/spinbutton": "npm:^3.6.18" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/datepicker": "npm:^3.15.1" + "@react-stately/form": "npm:^3.2.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/calendar": "npm:^3.7.4" + "@react-types/datepicker": "npm:^3.13.1" + "@react-types/dialog": "npm:^3.5.21" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/36bed73eb30ac3a24ae5bb3866dc2b25f9362be45ae3dca0cc30f122dd8787ee8aa2e3279846abee26940b68e471466db9e3acd321a39f59c046f8abda7681b1 + languageName: node + linkType: hard + +"@react-aria/dialog@npm:^3.5.30": + version: 3.5.30 + resolution: "@react-aria/dialog@npm:3.5.30" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/overlays": "npm:^3.29.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/dialog": "npm:^3.5.21" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/d7b739731b543386a47ac4920cd9b66892604062626930c4befe1e430a849d13e14a3f2ca0b9db5bf257e7d581e57da2bc71e356525c32ce7df6e0a292e4870c + languageName: node + linkType: hard + +"@react-aria/disclosure@npm:^3.0.8": + version: 3.0.8 + resolution: "@react-aria/disclosure@npm:3.0.8" + dependencies: + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/disclosure": "npm:^3.0.7" + "@react-types/button": "npm:^3.14.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ec110787e77c3b95ce694251cf7278b651cd50c99effeff805691258aad7abbb4b899f6687327a3ee0a7bc95af96d592a5359baa584437dac1da6ed9315dacb9 + languageName: node + linkType: hard + +"@react-aria/dnd@npm:^3.11.2": + version: 3.11.2 + resolution: "@react-aria/dnd@npm:3.11.2" + dependencies: + "@internationalized/string": "npm:^3.2.7" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/overlays": "npm:^3.29.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/dnd": "npm:^3.7.0" + "@react-types/button": "npm:^3.14.0" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/a714b5acc58c3cecc5cb620c15f5f07a817e556459747c31512a8ee8d0a622563c0ca8a1e29354d5001b7ef34ac7b37845514ed24c9db240145e55652508979b + languageName: node + linkType: hard + +"@react-aria/focus@npm:^3.21.1": + version: 3.21.1 + resolution: "@react-aria/focus@npm:3.21.1" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/9271132d9b215f916a19fa72a8a15eb68dc15a73ed8f9fc41096166c703a27336a1d908e3d55cd95de7eac234037abe3ff1fe2a33f15fc48934e9dd8cb97ff48 + languageName: node + linkType: hard + +"@react-aria/form@npm:^3.1.1": + version: 3.1.1 + resolution: "@react-aria/form@npm:3.1.1" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/form": "npm:^3.2.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/34872e8b30e2e407311e94bc6104af360f8795eaf7c66600c0de2a7c842d5aacc65628493fde92be0b578206761d720088150b12c2b9243032795c5a0b50d3fe + languageName: node + linkType: hard + +"@react-aria/grid@npm:^3.14.4": + version: 3.14.4 + resolution: "@react-aria/grid@npm:3.14.4" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/grid": "npm:^3.11.5" + "@react-stately/selection": "npm:^3.20.5" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/f7cf1586b2c1da0b3e1e3ea66bc1b94d54329815ffba38d069c129fb3c1e724d39d3a1b37f6f7fa3dc58e6203ad3692ac35524d7b9dad926111446fc00fa4985 + languageName: node + linkType: hard + +"@react-aria/gridlist@npm:^3.14.0": + version: 3.14.0 + resolution: "@react-aria/gridlist@npm:3.14.0" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/grid": "npm:^3.14.4" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/list": "npm:^3.13.0" + "@react-stately/tree": "npm:^3.9.2" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/b5eec01376889c04b45738eb6e354b87d380367fbb7b65d9835d5807d799246c7f8b4443ce5aa577050c0685d72ed2651bc0310065ed09dfbe10dd3215f322e1 + languageName: node + linkType: hard + +"@react-aria/i18n@npm:^3.12.12": + version: 3.12.12 + resolution: "@react-aria/i18n@npm:3.12.12" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@internationalized/message": "npm:^3.1.8" + "@internationalized/number": "npm:^3.6.5" + "@internationalized/string": "npm:^3.2.7" + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/83e1c4d0f246951ca9da6adf2e2825d50668b31f2de62a23ac04a0d9dd3e874a17e4616c72321a3fca6a99e22460f79fb15dee86637b6c7bea5c00835a076f8a + languageName: node + linkType: hard + +"@react-aria/interactions@npm:^3.25.5": + version: 3.25.5 + resolution: "@react-aria/interactions@npm:3.25.5" + dependencies: + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/flags": "npm:^3.1.2" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/056875ecc08b085134cc8298d5824ed55ff11433cd240320e14f8514e517d64f02f6a95e414a5304f46488c83090e3d1c138b0cf9cbe5d6fdab4e5a4bad5d727 + languageName: node + linkType: hard + +"@react-aria/label@npm:^3.7.21": + version: 3.7.21 + resolution: "@react-aria/label@npm:3.7.21" + dependencies: + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/34d55f423cd0ca6061453b2feee0dacc6ad70f7ddea7922615287a11283c8fc053e89e7425b2f2ca3d7e1a077b1bcedf5a2b4c6e95e8c7a203756b6703ffbd78 + languageName: node + linkType: hard + +"@react-aria/landmark@npm:^3.0.6": + version: 3.0.6 + resolution: "@react-aria/landmark@npm:3.0.6" + dependencies: + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + use-sync-external-store: "npm:^1.4.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ab5413e32d2fc21090ae39fd4414d00b37d56afec715d8715ad285d59f41f454547bf94919f386aa4c447723c1f817a0b47f4cb39c03c64b5211f4c105270453 + languageName: node + linkType: hard + +"@react-aria/link@npm:^3.8.5": + version: 3.8.5 + resolution: "@react-aria/link@npm:3.8.5" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/link": "npm:^3.6.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/cda1ac2c75f950745510bcc536ce4aab5f9f95e0310ad040070ff21ae2c42409eaab262ea4f69ad419f0044d78fcfe91e7224c8b87e779afc106dab7457e5d9a + languageName: node + linkType: hard + +"@react-aria/listbox@npm:^3.14.8": + version: 3.14.8 + resolution: "@react-aria/listbox@npm:3.14.8" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/list": "npm:^3.13.0" + "@react-types/listbox": "npm:^3.7.3" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/48f64c99047a94bb272027891f8840587b7e889d5c17bf772baea28d945d21a5d8e63217fa61bf45cc21e4c70f7dbcb759d4d97761318b402ba025ff42208c60 + languageName: node + linkType: hard + +"@react-aria/live-announcer@npm:^3.4.4": + version: 3.4.4 + resolution: "@react-aria/live-announcer@npm:3.4.4" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/1598372e773ee8dbb2f1d2a946652384f5140ab54106416e2a182c72eaabc1b3739e624bac7aea3d95429ba16487074c782ff90db093be36dd1d4cf84f9f9a17 + languageName: node + linkType: hard + +"@react-aria/menu@npm:^3.19.2": + version: 3.19.2 + resolution: "@react-aria/menu@npm:3.19.2" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/overlays": "npm:^3.29.1" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/menu": "npm:^3.9.7" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/tree": "npm:^3.9.2" + "@react-types/button": "npm:^3.14.0" + "@react-types/menu": "npm:^3.10.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/3592ff723178ec8f98f8cfde9bb8d4626daf553c5683b88b435e3275713b9b0ff0f26e9df00d8957423f0712e61799aa4a606f9f610950ae6e9ab72ab8772ed3 + languageName: node + linkType: hard + +"@react-aria/meter@npm:^3.4.26": + version: 3.4.26 + resolution: "@react-aria/meter@npm:3.4.26" + dependencies: + "@react-aria/progress": "npm:^3.4.26" + "@react-types/meter": "npm:^3.4.12" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/5e88247ef1e0a8a0141f6aae07da748dd03814eded8627cd392d8b7335616680486676f7212f05d6a797550b0b4bcfa306d2bbd94cb155a7340829a65bc4e9e5 + languageName: node + linkType: hard + +"@react-aria/numberfield@npm:^3.12.1": + version: 3.12.1 + resolution: "@react-aria/numberfield@npm:3.12.1" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/spinbutton": "npm:^3.6.18" + "@react-aria/textfield": "npm:^3.18.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/numberfield": "npm:^3.10.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/numberfield": "npm:^3.8.14" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/333f860a5c12692fb7904515950959e2b9bf175a1db5acddbbd206081ad1106ea41e46d94336704a9bf199b0fca0faf591fda79682ed59cb6fd340d0f3bb2fae + languageName: node + linkType: hard + +"@react-aria/overlays@npm:^3.29.1": + version: 3.29.1 + resolution: "@react-aria/overlays@npm:3.29.1" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/utils": "npm:^3.30.1" + "@react-aria/visually-hidden": "npm:^3.8.27" + "@react-stately/overlays": "npm:^3.6.19" + "@react-types/button": "npm:^3.14.0" + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/e69f2178cbbd30bd43373ca4dcb68edf275dae57926912c2845bd109b0ddf5820e28e8882df049ce188a42a1690ae7a31795d0be8895318b80478c61baf8af4c + languageName: node + linkType: hard + +"@react-aria/progress@npm:^3.4.26": + version: 3.4.26 + resolution: "@react-aria/progress@npm:3.4.26" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/progress": "npm:^3.5.15" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1d41424898c39c8c20b3943d3572367f2d3c937a48c8d4167f4874b31e03c4e894a21314729f44cfcbf6283c95a260111152b07d5fc570d86b6bbde785f7f1bf + languageName: node + linkType: hard + +"@react-aria/radio@npm:^3.12.1": + version: 3.12.1 + resolution: "@react-aria/radio@npm:3.12.1" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/form": "npm:^3.1.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/radio": "npm:^3.11.1" + "@react-types/radio": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/2c8625ce2214142c09af2f5a751a5d390dda6ef3148055973dc8ea71504e631ca0dc5e7d7202e557235c3175dad74b75a4c9440ce3de15d8f07a3b5a55571773 + languageName: node + linkType: hard + +"@react-aria/searchfield@npm:^3.8.8": + version: 3.8.8 + resolution: "@react-aria/searchfield@npm:3.8.8" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/textfield": "npm:^3.18.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/searchfield": "npm:^3.5.15" + "@react-types/button": "npm:^3.14.0" + "@react-types/searchfield": "npm:^3.6.5" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/72a55f3695762aec4da83240d5c3dc1e501f3b2520b3db3aa74d94e7b5981b6909a542b6f589f299f2d76538732b5ad814c86ab704c378d22ee5b3251b5682ba + languageName: node + linkType: hard + +"@react-aria/select@npm:^3.16.2": + version: 3.16.2 + resolution: "@react-aria/select@npm:3.16.2" + dependencies: + "@react-aria/form": "npm:^3.1.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/listbox": "npm:^3.14.8" + "@react-aria/menu": "npm:^3.19.2" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-aria/visually-hidden": "npm:^3.8.27" + "@react-stately/select": "npm:^3.7.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/select": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/c9ead86371cc583dcda11b1316df2f897c4cd618291302346d2980010196aa618f86a4ce5759ace539d144fc0f38fd8f380f6015af5160cc6fb5a27f7b2b6995 + languageName: node + linkType: hard + +"@react-aria/selection@npm:^3.25.1": + version: 3.25.1 + resolution: "@react-aria/selection@npm:3.25.1" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/selection": "npm:^3.20.5" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/7212dfc3280167c5f87256bbc580c3f05e1a8388d93ce5d66090778b67b7a3bcb49c522172a1a062c0c237204e1d85e6a9cb8ae6095725ed7f1e194ba277ed0e + languageName: node + linkType: hard + +"@react-aria/separator@npm:^3.4.12": + version: 3.4.12 + resolution: "@react-aria/separator@npm:3.4.12" + dependencies: + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/fa808a76b35ef663a0ff6745562b1238655e9112c27c3243a4334ad1d298f3ba3bb19eb551b8e96e52b23a9500a660fb8fdc8dd292f067b34a9200cb92792a8b + languageName: node + linkType: hard + +"@react-aria/slider@npm:^3.8.1": + version: 3.8.1 + resolution: "@react-aria/slider@npm:3.8.1" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/slider": "npm:^3.7.1" + "@react-types/shared": "npm:^3.32.0" + "@react-types/slider": "npm:^3.8.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1282cc395fcc531b35a94bb769d5cc462224f20fd876d96fabc432a40201eae9d01a87d6f8fdedc7382d3a1928eac9579aa9f6cc875461abd5bc8ae1c0bffd62 + languageName: node + linkType: hard + +"@react-aria/spinbutton@npm:^3.6.18": + version: 3.6.18 + resolution: "@react-aria/spinbutton@npm:3.6.18" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/button": "npm:^3.14.0" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/c9fdd24fe563e450130bb1e3ae7f09f9fc2728120feea965be413d4b1cf10eb2790bf13783dbf8247fc241d9691d12bcb77ea88f656966092f520d22c9eb6da5 + languageName: node + linkType: hard + +"@react-aria/ssr@npm:^3.9.10": + version: 3.9.10 + resolution: "@react-aria/ssr@npm:3.9.10" + dependencies: + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/44acb4c441d9c5d65aab94aa81fd8368413cf2958ab458582296dd78f6ba4783583f2311fa986120060e5c26b54b1f01e8910ffd17e4f41ccc5fc8c357d84089 + languageName: node + linkType: hard + +"@react-aria/switch@npm:^3.7.7": + version: 3.7.7 + resolution: "@react-aria/switch@npm:3.7.7" + dependencies: + "@react-aria/toggle": "npm:^3.12.1" + "@react-stately/toggle": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + "@react-types/switch": "npm:^3.5.14" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/386dd60efad6544e8bb03393c13d712e47aa68e3169a3d865375831e5353c8e5e849903ea51af09ae40eb1ae206df5c9b8854ce8601e81a7d21fd952bc18c8a2 + languageName: node + linkType: hard + +"@react-aria/table@npm:^3.17.7": + version: 3.17.7 + resolution: "@react-aria/table@npm:3.17.7" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/grid": "npm:^3.14.4" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/utils": "npm:^3.30.1" + "@react-aria/visually-hidden": "npm:^3.8.27" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/flags": "npm:^3.1.2" + "@react-stately/table": "npm:^3.15.0" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + "@react-types/table": "npm:^3.13.3" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ee09d8827929df9be0fdf313c22518f82a7e91669c2e6bb6754f6fbd4f656366d9fa86afc290c73e827ec8fb0574bcab19b35b385e7c16d28713569e20c91b6b + languageName: node + linkType: hard + +"@react-aria/tabs@npm:^3.10.7": + version: 3.10.7 + resolution: "@react-aria/tabs@npm:3.10.7" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/tabs": "npm:^3.8.5" + "@react-types/shared": "npm:^3.32.0" + "@react-types/tabs": "npm:^3.3.18" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ace9e245e0d8d9bf8a1e79a6e31a48dcc8c4604d8c3143c456a29a499eb39c484d4b2470b025f2c0adf86e531140f1c673df44ec012bd32704eb573fcd5a3ee1 + languageName: node + linkType: hard + +"@react-aria/tag@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-aria/tag@npm:3.7.1" + dependencies: + "@react-aria/gridlist": "npm:^3.14.0" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/list": "npm:^3.13.0" + "@react-types/button": "npm:^3.14.0" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/d7066939ca4d083f0dd651ca0884851601a920a6609741ec2ce088b52658d5b3b82481fe3acaf3e2522e2d37f5f6cde27e744386b5a4c354318780a23efad567 + languageName: node + linkType: hard + +"@react-aria/textfield@npm:^3.18.1": + version: 3.18.1 + resolution: "@react-aria/textfield@npm:3.18.1" + dependencies: + "@react-aria/form": "npm:^3.1.1" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@react-types/textfield": "npm:^3.12.5" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/c596e2414fd64d2354e7dc5f56c959ed033f465e4dce20b602efab9c35bbabe27bcc2e80ef213ab1aa2ff541adcb33c0c967b530f32dd3280a627c317331f5b8 + languageName: node + linkType: hard + +"@react-aria/toast@npm:^3.0.7": + version: 3.0.7 + resolution: "@react-aria/toast@npm:3.0.7" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/landmark": "npm:^3.0.6" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/toast": "npm:^3.1.2" + "@react-types/button": "npm:^3.14.0" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/83f2dc36c312150724bc4b669917374bf042156a8e4c9cd67a9c8a7e3250c43f97d7e75ddeaa4190474606323ee1239431b929019b919a8645273770c7c2d803 + languageName: node + linkType: hard + +"@react-aria/toggle@npm:^3.12.1": + version: 3.12.1 + resolution: "@react-aria/toggle@npm:3.12.1" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/toggle": "npm:^3.9.1" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/3ace07768327c7d86f57d7bcf22a60d64c84f7d9adef66e80db2194d237f82016a635903417289eaa7408caca74fee094b8e9dc7ac7d923823b63eabcc094b38 + languageName: node + linkType: hard + +"@react-aria/toolbar@npm:3.0.0-beta.20": + version: 3.0.0-beta.20 + resolution: "@react-aria/toolbar@npm:3.0.0-beta.20" + dependencies: + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/af186a16ba6d55b6fd80988ae95031e04bcfcd20bdedb02f12007f5f3c4ef1ace515a0d71d0191544c333bb181df8dfe33f89e52fde7ad83148172561d0c4049 + languageName: node + linkType: hard + +"@react-aria/tooltip@npm:^3.8.7": + version: 3.8.7 + resolution: "@react-aria/tooltip@npm:3.8.7" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/tooltip": "npm:^3.5.7" + "@react-types/shared": "npm:^3.32.0" + "@react-types/tooltip": "npm:^3.4.20" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/481ec2ee3d43ecae62c01f0c0a1122c735dfaddffbc8db5e4d38963201d4ecc2f66df50d27c97cc93b5480998d545480ec962282f3cf702f220e22ee3e443b73 + languageName: node + linkType: hard + +"@react-aria/tree@npm:^3.1.3": + version: 3.1.3 + resolution: "@react-aria/tree@npm:3.1.3" + dependencies: + "@react-aria/gridlist": "npm:^3.14.0" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/tree": "npm:^3.9.2" + "@react-types/button": "npm:^3.14.0" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/01b63f94951bbc8797437c27478552b945c107f580c04f2da8aac0f43ea8730ebe750c7a3b1acaf1c79066f6ef24425adff8f977e5cfe2dfe856abc2872ac604 + languageName: node + linkType: hard + +"@react-aria/utils@npm:^3.30.1": + version: 3.30.1 + resolution: "@react-aria/utils@npm:3.30.1" + dependencies: + "@react-aria/ssr": "npm:^3.9.10" + "@react-stately/flags": "npm:^3.1.2" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/3417a3ea7250c4ad23e6943117eb304a3708859fe8c738e0bee39edaefe7a7b82cedecc564f1a7f7fdf715ad13f57804a0b7c015a75fefdecbe3ecd7162f3e2f + languageName: node + linkType: hard + +"@react-aria/virtualizer@npm:^4.1.9": + version: 4.1.9 + resolution: "@react-aria/virtualizer@npm:4.1.9" + dependencies: + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-stately/virtualizer": "npm:^4.4.3" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/adfd45a5e328c5dfc9abc6167bfb2e06ff3d8a688a8c2901a5b5cb7fe2b7d688537d1c13e0dddf348dc9adc26c1c498329bc68afb831a590a96952aa7141f655 + languageName: node + linkType: hard + +"@react-aria/visually-hidden@npm:^3.8.27": + version: 3.8.27 + resolution: "@react-aria/visually-hidden@npm:3.8.27" + dependencies: + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/b9c1e64c9560ec6ff5e186502cc4c89f366d17d8ccd0487c698b22358b0583385f404c567861497cb4c0b035b3906993f700fc219040519b0ce9be1f69d74b24 + languageName: node + linkType: hard + +"@react-stately/autocomplete@npm:3.0.0-beta.3": + version: 3.0.0-beta.3 + resolution: "@react-stately/autocomplete@npm:3.0.0-beta.3" + dependencies: + "@react-stately/utils": "npm:^3.10.8" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/e3c07424f298746783b50bba8b366ca5262431c28b257239f2a91285578182991f0d5472afb596e83f32369e29fd5f84062383e604b17a6f0145537ded202ed5 + languageName: node + linkType: hard + +"@react-stately/calendar@npm:^3.8.4": + version: 3.8.4 + resolution: "@react-stately/calendar@npm:3.8.4" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/calendar": "npm:^3.7.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/ce7d212735b94d2ad8a0a2bd6c552f2aa6883b6d4ce34a2d9c8989536845d15bc90aabb66665ff4932eb32d2b43fe15602c5503c35edd05fa567348582b8ab16 + languageName: node + linkType: hard + +"@react-stately/checkbox@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-stately/checkbox@npm:3.7.1" + dependencies: + "@react-stately/form": "npm:^3.2.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/283d7e5aa63761c956fc48c42d12e5dee779c362013afabd36e086f530b4b8137966e6769421951c28cbffa4e793c0ce857de5aea85403a42688f0898f2503fa + languageName: node + linkType: hard + +"@react-stately/collections@npm:^3.12.7": + version: 3.12.7 + resolution: "@react-stately/collections@npm:3.12.7" + dependencies: + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/9f8e2f34a7e8a9630699ca91d8d5f215468b2a669df4e06bfd337d365d52df9b2e42b983d18f2023b746e30f0b06ee76e5838e1067299935ce78fab1c2c959c1 + languageName: node + linkType: hard + +"@react-stately/color@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-stately/color@npm:3.9.1" + dependencies: + "@internationalized/number": "npm:^3.6.5" + "@internationalized/string": "npm:^3.2.7" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/numberfield": "npm:^3.10.1" + "@react-stately/slider": "npm:^3.7.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/color": "npm:^3.1.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1d1833e7c20758318b80f19b1d9fa97eebe47a81089d4dbc05fe41dc9d82e8fc0e32a5cab28005429b145401384a648393e1a673e04869e655979b9f48a0fdb0 + languageName: node + linkType: hard + +"@react-stately/combobox@npm:^3.11.1": + version: 3.11.1 + resolution: "@react-stately/combobox@npm:3.11.1" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/list": "npm:^3.13.0" + "@react-stately/overlays": "npm:^3.6.19" + "@react-stately/select": "npm:^3.7.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/combobox": "npm:^3.13.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/d89f22d54f96e829a70e6700904a163d30766767567964ab29b78772b6bbe4f2abbe85ccd0a25b5d8a54a6c60e1d653215699b19d82d84b6620c9e5d73f9fe10 + languageName: node + linkType: hard + +"@react-stately/data@npm:^3.14.0": + version: 3.14.0 + resolution: "@react-stately/data@npm:3.14.0" + dependencies: + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/264de3396ba49e60b02c9fc204b2150c42cf72659e05ce27bf85d6c5a426b2447c6744d4fd824083a486e58c679428afdadebaffce76ab8001d2981683ef201a + languageName: node + linkType: hard + +"@react-stately/datepicker@npm:^3.15.1": + version: 3.15.1 + resolution: "@react-stately/datepicker@npm:3.15.1" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@internationalized/string": "npm:^3.2.7" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/overlays": "npm:^3.6.19" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/datepicker": "npm:^3.13.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/65167c563757d30a80656081ac51335a1c3f5b7b587dd4702bd28983b5a9a9cb7ce24b34e9e4a77ec7b6cc5dcd59748e4ec067ebba93e3b1a2709f9625e5f13b + languageName: node + linkType: hard + +"@react-stately/disclosure@npm:^3.0.7": + version: 3.0.7 + resolution: "@react-stately/disclosure@npm:3.0.7" + dependencies: + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/2cba308fea9af713a1560c2f2b62323a08c325f6a0ce2ea35fea96f94f352aa17cd8b4666c2e91a46496d50974fc5580a6536a312eac23b0e14ad9dfc6303a42 + languageName: node + linkType: hard + +"@react-stately/dnd@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-stately/dnd@npm:3.7.0" + dependencies: + "@react-stately/selection": "npm:^3.20.5" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/179961eada46bcd884dc48bf29230350f8361c87d578582006e67233a56b47e112d6eb316d5297562b1bd39413782d32b364121a1d9d39710d88b78298fb140e + languageName: node + linkType: hard + +"@react-stately/flags@npm:^3.1.2": + version: 3.1.2 + resolution: "@react-stately/flags@npm:3.1.2" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/d86890ce662f04c7d8984e9560527f46c9779b97757abded9e1bf7e230a6900a0ea7a3e7c22534de8d2ff278abae194e4e4ad962d710f3b04c52a4e1011c2e5b + languageName: node + linkType: hard + +"@react-stately/form@npm:^3.2.1": + version: 3.2.1 + resolution: "@react-stately/form@npm:3.2.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/9aa4c38001ea7811fc65677f04ffdaecf03be75bd9da911754d2510ef30be1b83fc45ef023660727bfdaf2f24dcebaa5587ca1ca4f5e1bc7aeb2319b3768c2c2 + languageName: node + linkType: hard + +"@react-stately/grid@npm:^3.11.5": + version: 3.11.5 + resolution: "@react-stately/grid@npm:3.11.5" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/selection": "npm:^3.20.5" + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/bacfde659d10815a435cf0c8333a15da9ff1629483fa32c2263ebb1975ee1b8de21e1768f136c0dc6db8e7e60fac6d7ae72f610915d1b147716d47022a1f35c9 + languageName: node + linkType: hard + +"@react-stately/layout@npm:^4.5.0": + version: 4.5.0 + resolution: "@react-stately/layout@npm:4.5.0" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/table": "npm:^3.15.0" + "@react-stately/virtualizer": "npm:^4.4.3" + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + "@react-types/table": "npm:^3.13.3" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/f03bd4fd4aed29b14172250aeecc4cd70f2c686106825c0c85d362583c1ba8b8b99b20f3d227b6e17b13b4446c315eaa95cf09c243e4cbf86a610080f5e667d6 + languageName: node + linkType: hard + +"@react-stately/list@npm:^3.13.0": + version: 3.13.0 + resolution: "@react-stately/list@npm:3.13.0" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/d408513e6b984ce912bb744b4da04222c0fa1a57e11fe53976c42df6d7126d3945fc65caaf8d67587ccaf2dce147658de432ddaa80e5b2b0b49012f7b572f810 + languageName: node + linkType: hard + +"@react-stately/menu@npm:^3.9.7": + version: 3.9.7 + resolution: "@react-stately/menu@npm:3.9.7" + dependencies: + "@react-stately/overlays": "npm:^3.6.19" + "@react-types/menu": "npm:^3.10.4" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/4ad5b7da2f6c09efcb459f77bab624be65d37ba6b72cf76c704e28361f9ee6f598365728f351aa15dc27bdb2dca8e1c634e0cf131f036fc5aafd308a2d0c111f + languageName: node + linkType: hard + +"@react-stately/numberfield@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-stately/numberfield@npm:3.10.1" + dependencies: + "@internationalized/number": "npm:^3.6.5" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/numberfield": "npm:^3.8.14" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1e7eb49fa1e135368bbc4f2e795be70f9db38d049139ce7efd988cddf0b01290527780ab0123b5c953a21991ffdafc76f5cc2cf1c09d68a91b18bdaec810f1ba + languageName: node + linkType: hard + +"@react-stately/overlays@npm:^3.6.19": + version: 3.6.19 + resolution: "@react-stately/overlays@npm:3.6.19" + dependencies: + "@react-stately/utils": "npm:^3.10.8" + "@react-types/overlays": "npm:^3.9.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/bc6749850313185a927f3d2f72e8e155d8452a4ec9f19ff3df7c167c6a60a29d91dd97e0b5d5f78ed8fa1a0b275cbfc4f5b135dbd37412246e0cc647499d4cde + languageName: node + linkType: hard + +"@react-stately/radio@npm:^3.11.1": + version: 3.11.1 + resolution: "@react-stately/radio@npm:3.11.1" + dependencies: + "@react-stately/form": "npm:^3.2.1" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/radio": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/f9e59f90f54507da594ef54df96d99cc2baa36e999674aed1950288dc29a5c5ef5235e2f90e3c92fe8a63a4963a7b0ccee9652b55e2552865b3029e34c11eaf8 + languageName: node + linkType: hard + +"@react-stately/searchfield@npm:^3.5.15": + version: 3.5.15 + resolution: "@react-stately/searchfield@npm:3.5.15" + dependencies: + "@react-stately/utils": "npm:^3.10.8" + "@react-types/searchfield": "npm:^3.6.5" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/e71cf9eee9b2112662abccf9d3a1af11693b9251db265a1312f2ba3a943a8dd9c824b9a0a797b37cc636838a6a0a6eca28d1d2ce17bf08b979cf1f98196db27c + languageName: node + linkType: hard + +"@react-stately/select@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-stately/select@npm:3.7.1" + dependencies: + "@react-stately/form": "npm:^3.2.1" + "@react-stately/list": "npm:^3.13.0" + "@react-stately/overlays": "npm:^3.6.19" + "@react-types/select": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/807b870e1bc26ed05b152f10aac3d2c34e66aeab70f01eed472b75edafe10808b03dca45d7ed2273e79b55f7af646a745d0c6a4c61f63067a3a11c5f1f8378c6 languageName: node linkType: hard -"@isaacs/fs-minipass@npm:^4.0.0": - version: 4.0.1 - resolution: "@isaacs/fs-minipass@npm:4.0.1" +"@react-stately/selection@npm:^3.20.5": + version: 3.20.5 + resolution: "@react-stately/selection@npm:3.20.5" dependencies: - minipass: "npm:^7.0.4" - checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/fa3e9440c10d836e48e019ce8811eab2bc38c15e807fec0d1f857ec30f180fa87005f882385259c48fa73d9793c292f3322c35b94df06535fe19eb7b0e715c76 languageName: node linkType: hard -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" +"@react-stately/slider@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-stately/slider@npm:3.7.1" dependencies: - camelcase: "npm:^5.3.1" - find-up: "npm:^4.1.0" - get-package-type: "npm:^0.1.0" - js-yaml: "npm:^3.13.1" - resolve-from: "npm:^5.0.0" - checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@react-types/slider": "npm:^3.8.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/2efd3c3bb50cb5874975ae2019566fc3df443e5f838472b2e56428ecbf184c39710ddb774dc69c856767a95278699a857bcfd3fdd9926ca638d7e4ca80cccc05 languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a +"@react-stately/table@npm:^3.15.0": + version: 3.15.0 + resolution: "@react-stately/table@npm:3.15.0" + dependencies: + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/flags": "npm:^3.1.2" + "@react-stately/grid": "npm:^3.11.5" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + "@react-types/table": "npm:^3.13.3" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/93813ef88a756755fdbb0a92f65d43b7cf83d2029290c34a2e0b337f1e2f25e9ebb7d54b122c4f280dc797ea82550bd0cc105072b7cdec836d5d48d175ea220e languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.8 - resolution: "@jridgewell/gen-mapping@npm:0.3.8" +"@react-stately/tabs@npm:^3.8.5": + version: 3.8.5 + resolution: "@react-stately/tabs@npm:3.8.5" dependencies: - "@jridgewell/set-array": "npm:^1.2.1" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a + "@react-stately/list": "npm:^3.13.0" + "@react-types/shared": "npm:^3.32.0" + "@react-types/tabs": "npm:^3.3.18" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/577f4640fbdedd2049c4b2b326ad32c8f9b89366c2e4bffbf5501713a8bc314623f72399ca3e0c112abdebc291d8733f381f34aabf304b87d30d5d29e09b63d9 languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.1.0": +"@react-stately/toast@npm:^3.1.2": version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + resolution: "@react-stately/toast@npm:3.1.2" + dependencies: + "@swc/helpers": "npm:^0.5.0" + use-sync-external-store: "npm:^1.4.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/5de06a2ca5830824a236f809e44a5084ae58a4f463c86aa2e72ec84c8ca632dfe1f5054248a9a1f6ee2aa213e22bfc186e0f4d5ef9a552eb369ee906686f8fec languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.2.1": - version: 1.2.1 - resolution: "@jridgewell/set-array@npm:1.2.1" - checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 +"@react-stately/toggle@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-stately/toggle@npm:3.9.1" + dependencies: + "@react-stately/utils": "npm:^3.10.8" + "@react-types/checkbox": "npm:^3.10.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/d7a87f9b00f324cfd2cab13733ceebaf66df9514024bfa85f7f8bef27ac0037b0568f763e96a4a9b46798fbd90048d8afffc0a6ad38803e121a3251d13bf7113 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.5.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" - checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 +"@react-stately/tooltip@npm:^3.5.7": + version: 3.5.7 + resolution: "@react-stately/tooltip@npm:3.5.7" + dependencies: + "@react-stately/overlays": "npm:^3.6.19" + "@react-types/tooltip": "npm:^3.4.20" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/fc180cd11b2ba557d64b30e495fc6ab60972b1fcc77924bf7d521d46a0973d8f0e3ff0dd846c031d604c66caac7a1654ad07505b0b577c6f2ac87b62f3e60a4d languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": - version: 0.3.25 - resolution: "@jridgewell/trace-mapping@npm:0.3.25" +"@react-stately/tree@npm:^3.9.2": + version: 3.9.2 + resolution: "@react-stately/tree@npm:3.9.2" dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/utils": "npm:^3.10.8" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/e2c3eb2eec5c0fdfc18e7cf09c3a866f0ebc261bf3398df7b54fa41c8b233e68ba4366c043896a101ddb72d2786adc5bad00f85eb61d0ff60afec34665de096f languageName: node linkType: hard -"@npmcli/agent@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/agent@npm:3.0.0" +"@react-stately/utils@npm:^3.10.8": + version: 3.10.8 + resolution: "@react-stately/utils@npm:3.10.8" dependencies: - agent-base: "npm:^7.1.0" - http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^10.0.1" - socks-proxy-agent: "npm:^8.0.3" - checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/a97cc292986e3eeb2ceb1626671ce60e8342a3ff35ab92bcfcb94bd6b28729836cc592e3fe4df2fba603e5fdd26291be77b7f60441920298c282bb93f424feba languageName: node linkType: hard -"@npmcli/fs@npm:^4.0.0": - version: 4.0.0 - resolution: "@npmcli/fs@npm:4.0.0" +"@react-stately/virtualizer@npm:^4.4.3": + version: 4.4.3 + resolution: "@react-stately/virtualizer@npm:4.4.3" dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 + "@react-aria/utils": "npm:^3.30.1" + "@react-types/shared": "npm:^3.32.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/9e49131a18e968a3119b17bca6826a008ed23074751c2bc564cb6d812ae13825d1368830026b3afbe016a0747658d48997048e53332b500378c6c8a66bc94a30 languageName: node linkType: hard -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd +"@react-types/autocomplete@npm:3.0.0-alpha.34": + version: 3.0.0-alpha.34 + resolution: "@react-types/autocomplete@npm:3.0.0-alpha.34" + dependencies: + "@react-types/combobox": "npm:^3.13.8" + "@react-types/searchfield": "npm:^3.6.5" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/05eca860ccfaa6df0e7a130cc2994cf4d35f1eee4285df94b77ede058687bf415cf98a2424ce1611b562bc7f814a28a27d8d080b3ae36377ebe20a1cf56e2d11 + languageName: node + linkType: hard + +"@react-types/breadcrumbs@npm:^3.7.16": + version: 3.7.16 + resolution: "@react-types/breadcrumbs@npm:3.7.16" + dependencies: + "@react-types/link": "npm:^3.6.4" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/af033fc8f5f47b926f15154e1f6cceb24a666004a1df058c7c8accb3bc0b916fc28a56a400f10bdb697425119584df7c4f10a985a6400633caa6d05f315d2593 + languageName: node + linkType: hard + +"@react-types/button@npm:^3.14.0": + version: 3.14.0 + resolution: "@react-types/button@npm:3.14.0" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/33891e850e0cccb5326cbd866c9bc7312611e7476ca82a83fee601a516a07a04da1eef1e9dbbf34f56a2f7cfcd546306ae91c088d99cdc548b49b80267e3f623 + languageName: node + linkType: hard + +"@react-types/calendar@npm:^3.7.4": + version: 3.7.4 + resolution: "@react-types/calendar@npm:3.7.4" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/0e05af84d55170792ae5f937bba3ae1534e25cafb9ff562b9b9485fc93631b887faf1400f2ef3b1fe764efbbdd999847494606cc770bc19c44d7d173601be2f0 + languageName: node + linkType: hard + +"@react-types/checkbox@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-types/checkbox@npm:3.10.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/cb2e3d0f4a47c2f664cce06a0956825d80e30d8c30e4d80fd6d657822dbbdee0d46f49d93c1f31d4919bbe2d69b09556d8185b1e0d4ebd4f658fe431e6a6aa65 + languageName: node + linkType: hard + +"@react-types/color@npm:^3.1.1": + version: 3.1.1 + resolution: "@react-types/color@npm:3.1.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + "@react-types/slider": "npm:^3.8.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/e2c4872a5c6534406356e05742f89f81d76a0114aebc754b381a416c029d08d1c79ad23ac79d3618adcfaace983779780b15009f30afabd48968e89699e3d187 + languageName: node + linkType: hard + +"@react-types/combobox@npm:^3.13.8": + version: 3.13.8 + resolution: "@react-types/combobox@npm:3.13.8" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/539abb36dc9b9de407c80d832933bcf073dc0bd6b11ce5da6a8b2aa279e839dcea713335601fdf45fa9693cdd39b18e1a4b5bc5a19cf5cf780a0449013807e0d + languageName: node + linkType: hard + +"@react-types/datepicker@npm:^3.13.1": + version: 3.13.1 + resolution: "@react-types/datepicker@npm:3.13.1" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@react-types/calendar": "npm:^3.7.4" + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/e0d61abe97a3a40ce36a0814fb010509e47153416b3c3adb05cb55c6142703c8c837f2fa73fd8d52a19ce7812c3931e75a88818941908ff8a6eb24bf939a8053 + languageName: node + linkType: hard + +"@react-types/dialog@npm:^3.5.21": + version: 3.5.21 + resolution: "@react-types/dialog@npm:3.5.21" + dependencies: + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/129bbdca319ab5353361f861c973837b73f7ed21cc7a887acb1e528b781ccbf390292bf5c8ca48a425e8b5a14d59d45be708e40a5b5f3aca4404c816a14ad135 + languageName: node + linkType: hard + +"@react-types/form@npm:^3.7.15": + version: 3.7.15 + resolution: "@react-types/form@npm:3.7.15" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/135ce29135bc66277a99840a01916b495dca98d4ce5854f3fa756c7bf891e897b325fc5777047c3e91ab938e73986be482b17ab3d669e083b8b815835c59fa1d + languageName: node + linkType: hard + +"@react-types/grid@npm:^3.3.5": + version: 3.3.5 + resolution: "@react-types/grid@npm:3.3.5" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/4b49af54683ce73ed2ee9be2b6f7a03870ee461bf41f1943f5d88fc4a4cedf62091e9a7937245db10acc0a1e4feedffe579be7e8746a7d71f6483553eed08e55 + languageName: node + linkType: hard + +"@react-types/link@npm:^3.6.4": + version: 3.6.4 + resolution: "@react-types/link@npm:3.6.4" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/69fa28299af26bd1473933dffd55a932b1a5cbd263898efc16c0fc5cbef02d21201f947e739a63ee26a9f0a311c3ee77a60689004176517558ada4622cfd5f7f + languageName: node + linkType: hard + +"@react-types/listbox@npm:^3.7.3": + version: 3.7.3 + resolution: "@react-types/listbox@npm:3.7.3" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/94fce2d390bfb9beafcc5a241ffe32524512240c7980fafee3195c859973ba84e1df2afc8a55e679d797c74f5d33fa18162fbaeeda983187423f7ce9bfd6d74a + languageName: node + linkType: hard + +"@react-types/menu@npm:^3.10.4": + version: 3.10.4 + resolution: "@react-types/menu@npm:3.10.4" + dependencies: + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/699da0cac2e31fdc362e8f5e227c2221187e4d883509ae242b1efd58ab28c55c2ee695c227ea04c3a4510354dc3348b409fa13a38b88a91544597cad63eb202b + languageName: node + linkType: hard + +"@react-types/meter@npm:^3.4.12": + version: 3.4.12 + resolution: "@react-types/meter@npm:3.4.12" + dependencies: + "@react-types/progress": "npm:^3.5.15" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/64e1177f43d3df794c339ea6d172d4703ee2084b04df113a453b49f7741a3ba8f5dc04333cf0d0757056f664fd0d005a7a29bb006432671e663a1b92694afedf + languageName: node + linkType: hard + +"@react-types/numberfield@npm:^3.8.14": + version: 3.8.14 + resolution: "@react-types/numberfield@npm:3.8.14" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1c9c4212a32e87d34eb1fff7a34dd1a7a4f616653087e8cdbe40ddafe6c6424b9a8d0a70076f6fdf88a2736a394de3f2cd697c955a6ca01c8d8c9a9133bc1f8d + languageName: node + linkType: hard + +"@react-types/overlays@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-types/overlays@npm:3.9.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/bf0e1c11251e2c6c79e12762d30e886ba5587cd7d38761d4174c3f512ace205cf7b3d7da44ca7fe3797af27ad32b844a6c4ecb3cf0a5c6b9784557cfaf035346 + languageName: node + linkType: hard + +"@react-types/progress@npm:^3.5.15": + version: 3.5.15 + resolution: "@react-types/progress@npm:3.5.15" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/7a5f4b2690fdea608b8b6d8c0ea8c262fc303b0440102ec2873a80fec45558139aeac20c507e6fbbad77686fb7f6c50ee0c4ec26c18d7ea5c7595081bda9b426 + languageName: node + linkType: hard + +"@react-types/radio@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-types/radio@npm:3.9.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/1af8c2612cde155082797f225e995bdaab2d7e127edd9b8ec82bee925699c053a106b506022ee12cb0dd52509b10d00dba4d168c89886d58c7b22884ece615d0 + languageName: node + linkType: hard + +"@react-types/searchfield@npm:^3.6.5": + version: 3.6.5 + resolution: "@react-types/searchfield@npm:3.6.5" + dependencies: + "@react-types/shared": "npm:^3.32.0" + "@react-types/textfield": "npm:^3.12.5" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/df9a7fc615e8c1098991550814bfbb67e22290ae89e10876144fdac9bde4156ab64a5c4b8c623184bf0e9f0b7a34855cb35be63d434a24de2ebe802ca5e271d2 + languageName: node + linkType: hard + +"@react-types/select@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-types/select@npm:3.10.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/b236419695ace9eb27e3f975d5b45bf6ff7c3c50a07ac7fbdc87ab1ec8bc977bf85187713656c14df1dd9da0b07b04a64b866bfc627e8d9f84bf709f1109f5aa + languageName: node + linkType: hard + +"@react-types/shared@npm:^3.32.0": + version: 3.32.0 + resolution: "@react-types/shared@npm:3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/8484f310a8911ab01daa87f9bfdea0a9a76e152d13d8421c28560dc84d64a7df23cda956db59f7010d2e8eaea27d7644118bfbe60b603499903b5f7e6cdfe4fa + languageName: node + linkType: hard + +"@react-types/slider@npm:^3.8.1": + version: 3.8.1 + resolution: "@react-types/slider@npm:3.8.1" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/c57cd9e7a7e561eaf367ca733c315db2c4132a754a43dd44a4100068bc9e695dadc9b482737f0a11e2991baed79d80ea29bf1cd18df6563b7c54767012ab1bde + languageName: node + linkType: hard + +"@react-types/switch@npm:^3.5.14": + version: 3.5.14 + resolution: "@react-types/switch@npm:3.5.14" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/43318b370863fd9fbc2537c3773dba8e28fb1f4e0d2849f0c115f523f59d8d8e88f59c6ede436fa32f634211e96d7a75b2752ec4bcf87a1edc392b624fab7ddd + languageName: node + linkType: hard + +"@react-types/table@npm:^3.13.3": + version: 3.13.3 + resolution: "@react-types/table@npm:3.13.3" + dependencies: + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/f1d40064f28441ae0387467f29ff01c641a8eb134b0e2d0dcb3b97331bdf56ac8d619e000bbb5a6229a31ddc288884913fcefb1e255f0c2f1c37f30575170b72 + languageName: node + linkType: hard + +"@react-types/tabs@npm:^3.3.18": + version: 3.3.18 + resolution: "@react-types/tabs@npm:3.3.18" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/dd830c08a517e3932d8c694896d5585b639530a7bad2d103b85531b8b4d8bcfde2bba512410260837eb1a0f464cce85d67675d025d56c5c23b30815039e400a0 + languageName: node + linkType: hard + +"@react-types/textfield@npm:^3.12.5": + version: 3.12.5 + resolution: "@react-types/textfield@npm:3.12.5" + dependencies: + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/4770454303a5b3d93afbc93e6d2e026eed62227a71474e791a598458880d2e06d681e9f3b1d586a8108cbb2e4f75ad64a77e5e71b9adb0e70d73bd8f0ee96bab + languageName: node + linkType: hard + +"@react-types/tooltip@npm:^3.4.20": + version: 3.4.20 + resolution: "@react-types/tooltip@npm:3.4.20" + dependencies: + "@react-types/overlays": "npm:^3.9.1" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/7fd8415658a140db98974225859fc355a81282563b61246897b98ed0afb398eaff1e770b1bafe246aaa2cc4a07485c501ebed9de9a0a3882a20c658ea29ffa6b languageName: node linkType: hard @@ -634,6 +2409,15 @@ __metadata: languageName: node linkType: hard +"@swc/helpers@npm:^0.5.0": + version: 0.5.17 + resolution: "@swc/helpers@npm:0.5.17" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/fe1f33ebb968558c5a0c595e54f2e479e4609bff844f9ca9a2d1ffd8dd8504c26f862a11b031f48f75c95b0381c2966c3dd156e25942f90089badd24341e7dbb + languageName: node + linkType: hard + "@tests/analysis@workspace:tests/analysis_tests/tests": version: 0.0.0-use.local resolution: "@tests/analysis@workspace:tests/analysis_tests/tests" @@ -669,6 +2453,7 @@ __metadata: "@types/react": "npm:^18.3.3" "@types/react-dom": "npm:^18.3.0" react: "npm:^18.3.1" + react-aria-components: "npm:1.12.1" react-dom: "npm:^18.3.1" rescript: "workspace:^" typescript: "npm:5.8.2" @@ -1060,6 +2845,13 @@ __metadata: languageName: node linkType: hard +"client-only@npm:^0.0.1": + version: 0.0.1 + resolution: "client-only@npm:0.0.1" + checksum: 10c0/9d6cfd0c19e1c96a434605added99dff48482152af791ec4172fb912a71cff9027ff174efd8cdb2160cc7f377543e0537ffc462d4f279bc4701de3f2a3c4b358 + languageName: node + linkType: hard + "cliui@npm:^6.0.0": version: 6.0.0 resolution: "cliui@npm:6.0.0" @@ -1082,6 +2874,13 @@ __metadata: languageName: node linkType: hard +"clsx@npm:^2.0.0": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 + languageName: node + linkType: hard + "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -1177,6 +2976,13 @@ __metadata: languageName: node linkType: hard +"decimal.js@npm:^10.4.3": + version: 10.6.0 + resolution: "decimal.js@npm:10.6.0" + checksum: 10c0/07d69fbcc54167a340d2d97de95f546f9ff1f69d2b45a02fd7a5292412df3cd9eb7e23065e532a318f5474a2e1bccf8392fdf0443ef467f97f3bf8cb0477e5aa + languageName: node + linkType: hard + "deepmerge@npm:^4.2.2": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" @@ -1650,6 +3456,18 @@ __metadata: languageName: node linkType: hard +"intl-messageformat@npm:^10.1.0": + version: 10.7.16 + resolution: "intl-messageformat@npm:10.7.16" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.3.4" + "@formatjs/fast-memoize": "npm:2.2.7" + "@formatjs/icu-messageformat-parser": "npm:2.11.2" + tslib: "npm:^2.8.0" + checksum: 10c0/537735bf6439f0560f132895d117df6839957ac04cdd58d861f6da86803d40bfc19059e3d341ddb8de87214b73a6329b57f9acdb512bb0f745dcf08729507b9b + languageName: node + linkType: hard + "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -2493,6 +4311,99 @@ __metadata: languageName: node linkType: hard +"react-aria-components@npm:1.12.1": + version: 1.12.1 + resolution: "react-aria-components@npm:1.12.1" + dependencies: + "@internationalized/date": "npm:^3.9.0" + "@internationalized/string": "npm:^3.2.7" + "@react-aria/autocomplete": "npm:3.0.0-rc.1" + "@react-aria/collections": "npm:3.0.0-rc.6" + "@react-aria/dnd": "npm:^3.11.2" + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/live-announcer": "npm:^3.4.4" + "@react-aria/overlays": "npm:^3.29.1" + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/textfield": "npm:^3.18.1" + "@react-aria/toolbar": "npm:3.0.0-beta.20" + "@react-aria/utils": "npm:^3.30.1" + "@react-aria/virtualizer": "npm:^4.1.9" + "@react-stately/autocomplete": "npm:3.0.0-beta.3" + "@react-stately/layout": "npm:^4.5.0" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/table": "npm:^3.15.0" + "@react-stately/utils": "npm:^3.10.8" + "@react-stately/virtualizer": "npm:^4.4.3" + "@react-types/form": "npm:^3.7.15" + "@react-types/grid": "npm:^3.3.5" + "@react-types/shared": "npm:^3.32.0" + "@react-types/table": "npm:^3.13.3" + "@swc/helpers": "npm:^0.5.0" + client-only: "npm:^0.0.1" + react-aria: "npm:^3.43.1" + react-stately: "npm:^3.41.0" + use-sync-external-store: "npm:^1.4.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/9b48a3b22d0afb45f79a224fa6b786c8761c9f3108e8da298ef66facc86f2446b11d2a20ecf0a173f0d660059a3d50025cd3907e91751ed5d4af0188378d1c7d + languageName: node + linkType: hard + +"react-aria@npm:^3.43.1": + version: 3.43.1 + resolution: "react-aria@npm:3.43.1" + dependencies: + "@internationalized/string": "npm:^3.2.7" + "@react-aria/breadcrumbs": "npm:^3.5.28" + "@react-aria/button": "npm:^3.14.1" + "@react-aria/calendar": "npm:^3.9.1" + "@react-aria/checkbox": "npm:^3.16.1" + "@react-aria/color": "npm:^3.1.1" + "@react-aria/combobox": "npm:^3.13.2" + "@react-aria/datepicker": "npm:^3.15.1" + "@react-aria/dialog": "npm:^3.5.30" + "@react-aria/disclosure": "npm:^3.0.8" + "@react-aria/dnd": "npm:^3.11.2" + "@react-aria/focus": "npm:^3.21.1" + "@react-aria/gridlist": "npm:^3.14.0" + "@react-aria/i18n": "npm:^3.12.12" + "@react-aria/interactions": "npm:^3.25.5" + "@react-aria/label": "npm:^3.7.21" + "@react-aria/landmark": "npm:^3.0.6" + "@react-aria/link": "npm:^3.8.5" + "@react-aria/listbox": "npm:^3.14.8" + "@react-aria/menu": "npm:^3.19.2" + "@react-aria/meter": "npm:^3.4.26" + "@react-aria/numberfield": "npm:^3.12.1" + "@react-aria/overlays": "npm:^3.29.1" + "@react-aria/progress": "npm:^3.4.26" + "@react-aria/radio": "npm:^3.12.1" + "@react-aria/searchfield": "npm:^3.8.8" + "@react-aria/select": "npm:^3.16.2" + "@react-aria/selection": "npm:^3.25.1" + "@react-aria/separator": "npm:^3.4.12" + "@react-aria/slider": "npm:^3.8.1" + "@react-aria/ssr": "npm:^3.9.10" + "@react-aria/switch": "npm:^3.7.7" + "@react-aria/table": "npm:^3.17.7" + "@react-aria/tabs": "npm:^3.10.7" + "@react-aria/tag": "npm:^3.7.1" + "@react-aria/textfield": "npm:^3.18.1" + "@react-aria/toast": "npm:^3.0.7" + "@react-aria/tooltip": "npm:^3.8.7" + "@react-aria/tree": "npm:^3.1.3" + "@react-aria/utils": "npm:^3.30.1" + "@react-aria/visually-hidden": "npm:^3.8.27" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/cf4e8cc615c687ecd16fdc1a80dba70d5e8e6fa98fde22467b949b4815a03e93600da1157e6aa7658d852000944d965806edc507fd02e7e40dfd1eb62443b3ba + languageName: node + linkType: hard + "react-dom@npm:^18.3.1": version: 18.3.1 resolution: "react-dom@npm:18.3.1" @@ -2505,6 +4416,42 @@ __metadata: languageName: node linkType: hard +"react-stately@npm:^3.41.0": + version: 3.41.0 + resolution: "react-stately@npm:3.41.0" + dependencies: + "@react-stately/calendar": "npm:^3.8.4" + "@react-stately/checkbox": "npm:^3.7.1" + "@react-stately/collections": "npm:^3.12.7" + "@react-stately/color": "npm:^3.9.1" + "@react-stately/combobox": "npm:^3.11.1" + "@react-stately/data": "npm:^3.14.0" + "@react-stately/datepicker": "npm:^3.15.1" + "@react-stately/disclosure": "npm:^3.0.7" + "@react-stately/dnd": "npm:^3.7.0" + "@react-stately/form": "npm:^3.2.1" + "@react-stately/list": "npm:^3.13.0" + "@react-stately/menu": "npm:^3.9.7" + "@react-stately/numberfield": "npm:^3.10.1" + "@react-stately/overlays": "npm:^3.6.19" + "@react-stately/radio": "npm:^3.11.1" + "@react-stately/searchfield": "npm:^3.5.15" + "@react-stately/select": "npm:^3.7.1" + "@react-stately/selection": "npm:^3.20.5" + "@react-stately/slider": "npm:^3.7.1" + "@react-stately/table": "npm:^3.15.0" + "@react-stately/tabs": "npm:^3.8.5" + "@react-stately/toast": "npm:^3.1.2" + "@react-stately/toggle": "npm:^3.9.1" + "@react-stately/tooltip": "npm:^3.5.7" + "@react-stately/tree": "npm:^3.9.2" + "@react-types/shared": "npm:^3.32.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10c0/36acef7ad6f0d58bc66804d152c25f31bd2e977b34cc131c6d70af142a20478a9e7d3826d22084ce4abedb94b6c87aa627ee7467337cab7ad5ae0d45b571d6b2 + languageName: node + linkType: hard + "react@npm:^18.3.1": version: 18.3.1 resolution: "react@npm:18.3.1" @@ -3020,7 +4967,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.4.0": +"tslib@npm:^2.4.0, tslib@npm:^2.8.0": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 @@ -3102,6 +5049,15 @@ __metadata: languageName: node linkType: hard +"use-sync-external-store@npm:^1.4.0": + version: 1.5.0 + resolution: "use-sync-external-store@npm:1.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/1b8663515c0be34fa653feb724fdcce3984037c78dd4a18f68b2c8be55cc1a1084c578d5b75f158d41b5ddffc2bf5600766d1af3c19c8e329bb20af2ec6f52f4 + languageName: node + linkType: hard + "uuid@npm:^3.3.3": version: 3.4.0 resolution: "uuid@npm:3.4.0" From eed7f634496d1c656fa4203e1b1ff7e37c746c62 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Fri, 12 Sep 2025 08:49:17 +0200 Subject: [PATCH 2/2] tweaks --- compiler/gentype/EmitAssertions.ml | 18 ++++--- .../gentype/TranslateTypeExprFromTypes.ml | 1 + .../typescript-react-example/package.json | 1 + .../src/AriaComponents.assertions.ts | 6 ++- .../src/Papaparse.assertions.ts | 49 +++++++++++++++++++ .../src/Papaparse.res | 47 ++++++++++++++++++ .../src/Papaparse.res.js | 2 + yarn.lock | 26 ++++++++++ 8 files changed, 142 insertions(+), 8 deletions(-) create mode 100644 tests/gentype_tests/typescript-react-example/src/Papaparse.assertions.ts create mode 100644 tests/gentype_tests/typescript-react-example/src/Papaparse.res create mode 100644 tests/gentype_tests/typescript-react-example/src/Papaparse.res.js diff --git a/compiler/gentype/EmitAssertions.ml b/compiler/gentype/EmitAssertions.ml index 24ea564eab..5dd94f41a7 100644 --- a/compiler/gentype/EmitAssertions.ml +++ b/compiler/gentype/EmitAssertions.ml @@ -336,13 +336,15 @@ let collect_from_signature ~(config : GenTypeConfig.t) ~output_file_relative let render ~(config : GenTypeConfig.t) (a : assertions) : string option = let type_name_is_interface _ = false in let buf = Buffer.create 256 in + (* Make the file a module to avoid global-scope collisions across files. *) + Buffer.add_string buf "export {};\n\n"; (* Emit the helper type if there's at least one type assertion *) (match a.type_assertions with | [] -> () | _ -> Buffer.add_string buf - "type $RescriptTypeSatisfiesTypeScriptType = TypeScriptType;\n\n"); + "type $RescriptTypeSatisfiesTypeScriptType = RescriptType;\n\n"); let emit_type (t : type_assertion) = let generics = match t.type_vars with @@ -353,20 +355,24 @@ let render ~(config : GenTypeConfig.t) (a : assertions) : string option = EmitType.type_to_string ~config ~type_name_is_interface t.type_ in let import_ts = ts_import_path t.import_segments in + let import_applied_generics = + match t.type_vars with + | [] -> "" + | vs -> "<" ^ String.concat ", " vs ^ ">" + in Buffer.add_string buf ("type " ^ sanitize_type_name t.name ^ generics ^ " = $RescriptTypeSatisfiesTypeScriptType<" ^ res_type ^ ", " ^ import_ts - ^ ">;\n") + ^ import_applied_generics ^ ">;\n") in let emit_value (v : value_assertion) = let res_type = EmitType.type_to_string ~config ~type_name_is_interface v.type_ in let import_ts = ts_import_path v.import_segments in - let name = "_" ^ v.name in Buffer.add_string buf - ("const " ^ name ^ " = null as unknown as " ^ res_type - ^ " satisfies typeof " ^ import_ts ^ ";\n") + ("const " ^ v.name ^ " = undefined as unknown as typeof " ^ import_ts + ^ " satisfies " ^ res_type ^ ";\n") in a.type_assertions |> List.rev |> List.iter emit_type; (match a.type_assertions with diff --git a/compiler/gentype/TranslateTypeExprFromTypes.ml b/compiler/gentype/TranslateTypeExprFromTypes.ml index 5e6024495a..8bb05dd70e 100644 --- a/compiler/gentype/TranslateTypeExprFromTypes.ml +++ b/compiler/gentype/TranslateTypeExprFromTypes.ml @@ -118,6 +118,7 @@ let translate_constr ~config ~params_translation ~(path : Path.t) ~type_env = } | (["Js"; "Re"; "t"] | ["RegExp"; "t"] | ["Stdlib"; "RegExp"; "t"]), [] -> {dependencies = []; type_ = regexp_t} + | ["Js"; "File"; "t"], [] -> {dependencies = []; type_ = ident "File"} | ["Stdlib"; "ArrayBuffer"; "t"], [] -> {dependencies = []; type_ = ident "ArrayBuffer"} | ["Stdlib"; "DataView"; "t"], [] -> diff --git a/tests/gentype_tests/typescript-react-example/package.json b/tests/gentype_tests/typescript-react-example/package.json index c9dd43bd26..912bd5c18c 100644 --- a/tests/gentype_tests/typescript-react-example/package.json +++ b/tests/gentype_tests/typescript-react-example/package.json @@ -17,6 +17,7 @@ }, "devDependencies": { "@biomejs/biome": "1.9.4", + "@types/papaparse": "5.3.16", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "typescript": "5.8.2" diff --git a/tests/gentype_tests/typescript-react-example/src/AriaComponents.assertions.ts b/tests/gentype_tests/typescript-react-example/src/AriaComponents.assertions.ts index e4220d240f..3ce51ae12b 100644 --- a/tests/gentype_tests/typescript-react-example/src/AriaComponents.assertions.ts +++ b/tests/gentype_tests/typescript-react-example/src/AriaComponents.assertions.ts @@ -1,4 +1,6 @@ -type $RescriptTypeSatisfiesTypeScriptType = TypeScriptType; +export {}; + +type $RescriptTypeSatisfiesTypeScriptType = RescriptType; type groupRenderProps = $RescriptTypeSatisfiesTypeScriptType<{ readonly isHovered: boolean; @@ -10,7 +12,7 @@ type groupRenderProps = $RescriptTypeSatisfiesTypeScriptType<{ type selectionBehavior = $RescriptTypeSatisfiesTypeScriptType<"toggle" | "replace", import("react-stately").SelectionBehavior>; type selectionMode = $RescriptTypeSatisfiesTypeScriptType<"none" | "single" | "multiple", import("react-stately").SelectionMode>; -const _useTableOptions = null as unknown as () => tableOptionsContextValue satisfies typeof import("react-aria-components").useTableOptions; +const useTableOptions = undefined as unknown as typeof import("react-aria-components").useTableOptions satisfies () => tableOptionsContextValue; type tableOptionsContextValue = { readonly selectionMode: selectionMode; diff --git a/tests/gentype_tests/typescript-react-example/src/Papaparse.assertions.ts b/tests/gentype_tests/typescript-react-example/src/Papaparse.assertions.ts new file mode 100644 index 0000000000..615642cea0 --- /dev/null +++ b/tests/gentype_tests/typescript-react-example/src/Papaparse.assertions.ts @@ -0,0 +1,49 @@ +export {}; + +type $RescriptTypeSatisfiesTypeScriptType = RescriptType; + +type parseError = $RescriptTypeSatisfiesTypeScriptType<{ + /** A generalization of the error */ + readonly type: + "Delimiter" + | "FieldMismatch" + | "Quotes"; + /** Standardized error code */ + readonly code: + "TooManyFields" + | "MissingQuotes" + | "UndetectableDelimiter" + | "TooFewFields" + | "InvalidQuotes"; + /** Human-readable details */ + readonly message: string; + /** Row index of parsed data where error is */ + readonly row?: number; + /** Index within the row where error is */ + readonly index?: number +}, import("papaparse").ParseError>; +type parseMeta = $RescriptTypeSatisfiesTypeScriptType<{ + /** Delimiter used */ + readonly delimiter: string; + /** Line break sequence used */ + readonly linebreak: string; + /** Whether process was aborted */ + readonly aborted: boolean; + /** Array of field names */ + readonly fields?: string[]; + /** Whether preview consumed all input */ + readonly truncated: boolean; + readonly cursor: number +}, import("papaparse").ParseMeta>; +type parseResult = $RescriptTypeSatisfiesTypeScriptType<{ + /** * an array of rows. If header is false, rows are arrays; otherwise they are objects of data keyed by the field name. */ + readonly data: t[]; + /** an array of errors. */ + readonly errors: parseError[]; + /** * contains extra information about the parse, such as delimiter used, + * the newline sequence, whether the process was aborted, etc. + * Properties in this object are not guaranteed to exist in all situations. */ + readonly meta: parseMeta +}, import("papaparse").ParseResult>; + +const parse = undefined as unknown as typeof import("papaparse").parse satisfies (_1:string) => parseResult; diff --git a/tests/gentype_tests/typescript-react-example/src/Papaparse.res b/tests/gentype_tests/typescript-react-example/src/Papaparse.res new file mode 100644 index 0000000000..805531c2c6 --- /dev/null +++ b/tests/gentype_tests/typescript-react-example/src/Papaparse.res @@ -0,0 +1,47 @@ +@gentype.satisfies(("papaparse", "ParseError")) +type parseError = { + /** A generalization of the error */ + @as("type") type_: [#Quotes | #Delimiter | #FieldMismatch], + /** Standardized error code */ + code: [#MissingQuotes | #UndetectableDelimiter | #TooFewFields | #TooManyFields | #InvalidQuotes], + /** Human-readable details */ + message: string, + /** Row index of parsed data where error is */ + row?: int, + /** Index within the row where error is */ + index?: int, +} + +@gentype.satisfies(("papaparse", "ParseMeta")) +type parseMeta = { + /** Delimiter used */ + delimiter: string, + /** Line break sequence used */ + linebreak: string, + /** Whether process was aborted */ + aborted: bool, + /** Array of field names */ + fields?: array, + /** Whether preview consumed all input */ + truncated: bool, + cursor: float, +} + +@gentype.satisfies(("papaparse", "ParseResult")) +type parseResult<'t> = { + /** + * an array of rows. If header is false, rows are arrays; otherwise they are objects of data keyed by the field name. + */ + data: array<'t>, + /** an array of errors. */ + errors: array, + /** + * contains extra information about the parse, such as delimiter used, + * the newline sequence, whether the process was aborted, etc. + * Properties in this object are not guaranteed to exist in all situations. + */ + meta: parseMeta, +} + +@gentype.satisfies(("papaparse", "parse")) +external parseCsvString: string => parseResult<'t> = "parse" diff --git a/tests/gentype_tests/typescript-react-example/src/Papaparse.res.js b/tests/gentype_tests/typescript-react-example/src/Papaparse.res.js new file mode 100644 index 0000000000..d856702bfe --- /dev/null +++ b/tests/gentype_tests/typescript-react-example/src/Papaparse.res.js @@ -0,0 +1,2 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/yarn.lock b/yarn.lock index 020bbd4f88..26e951f5ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2450,6 +2450,7 @@ __metadata: dependencies: "@biomejs/biome": "npm:1.9.4" "@rescript/react": "npm:^0.13.1" + "@types/papaparse": "npm:5.3.16" "@types/react": "npm:^18.3.3" "@types/react-dom": "npm:^18.3.0" react: "npm:^18.3.1" @@ -2516,6 +2517,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:*": + version: 24.3.1 + resolution: "@types/node@npm:24.3.1" + dependencies: + undici-types: "npm:~7.10.0" + checksum: 10c0/99b86fc32294fcd61136ca1f771026443a1e370e9f284f75e243b29299dd878e18c193deba1ce29a374932db4e30eb80826e1049b9aad02d36f5c30b94b6f928 + languageName: node + linkType: hard + "@types/node@npm:^20.14.9": version: 20.17.27 resolution: "@types/node@npm:20.17.27" @@ -2525,6 +2535,15 @@ __metadata: languageName: node linkType: hard +"@types/papaparse@npm:5.3.16": + version: 5.3.16 + resolution: "@types/papaparse@npm:5.3.16" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/0009d3dcdc20cd37f171db77307844a575b89435a3398d1437173a1e5feb13a88e61fed7756f264555743a9510693ae1c9e20c4558c066085fd0bd881abf5497 + languageName: node + linkType: hard + "@types/prop-types@npm:*": version: 15.7.14 resolution: "@types/prop-types@npm:15.7.14" @@ -5017,6 +5036,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~7.10.0": + version: 7.10.0 + resolution: "undici-types@npm:7.10.0" + checksum: 10c0/8b00ce50e235fe3cc601307f148b5e8fb427092ee3b23e8118ec0a5d7f68eca8cee468c8fc9f15cbb2cf2a3797945ebceb1cbd9732306a1d00e0a9b6afa0f635 + languageName: node + linkType: hard + "unique-filename@npm:^4.0.0": version: 4.0.0 resolution: "unique-filename@npm:4.0.0"