├── .editorconfig ├── .github ├── FUNDING.yml ├── dependabot.yml └── workflows │ ├── lint-check.yml │ └── lint-fixer.yml ├── .nodoc ├── LICENSE ├── README.md ├── composer.json ├── config └── ide-helper.php ├── resources └── views │ └── facades.php └── src ├── Commands └── Generate.php ├── Entities ├── Instance.php ├── Method.php └── Parameter.php ├── ServiceProvider.php ├── Services ├── BaseService.php ├── ComposerClassMap.php ├── DocBlock.php ├── Finder.php └── Processor.php └── Traits └── Containable.php /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | end_of_line = lf 4 | indent_size = 4 5 | indent_style = space 6 | insert_final_newline = true 7 | max_line_length = 180 8 | tab_width = 4 9 | trim_trailing_whitespace = false 10 | ij_continuation_indent_size = 8 11 | ij_formatter_off_tag = @formatter:off 12 | ij_formatter_on_tag = @formatter:on 13 | ij_formatter_tags_enabled = true 14 | ij_smart_tabs = false 15 | ij_visual_guides = none 16 | ij_wrap_on_typing = false 17 | 18 | [*.blade.php] 19 | ij_continuation_indent_size = 4 20 | ij_blade_keep_indents_on_empty_lines = false 21 | 22 | [*.css] 23 | ij_css_align_closing_brace_with_properties = false 24 | ij_css_blank_lines_around_nested_selector = 1 25 | ij_css_blank_lines_between_blocks = 1 26 | ij_css_block_comment_add_space = true 27 | ij_css_brace_placement = end_of_line 28 | ij_css_enforce_quotes_on_format = true 29 | ij_css_hex_color_long_format = true 30 | ij_css_hex_color_lower_case = false 31 | ij_css_hex_color_short_format = false 32 | ij_css_hex_color_upper_case = true 33 | ij_css_keep_blank_lines_in_code = 1 34 | ij_css_keep_indents_on_empty_lines = false 35 | ij_css_keep_single_line_blocks = false 36 | ij_css_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 37 | ij_css_space_after_colon = true 38 | ij_css_space_before_opening_brace = true 39 | ij_css_use_double_quotes = true 40 | ij_css_value_alignment = do_not_align 41 | 42 | [*.haml] 43 | indent_size = 2 44 | ij_haml_keep_indents_on_empty_lines = false 45 | 46 | [*.less] 47 | indent_size = 2 48 | ij_less_align_closing_brace_with_properties = false 49 | ij_less_blank_lines_around_nested_selector = 1 50 | ij_less_blank_lines_between_blocks = 1 51 | ij_less_block_comment_add_space = false 52 | ij_less_brace_placement = 0 53 | ij_less_enforce_quotes_on_format = false 54 | ij_less_hex_color_long_format = true 55 | ij_less_hex_color_lower_case = false 56 | ij_less_hex_color_short_format = false 57 | ij_less_hex_color_upper_case = true 58 | ij_less_keep_blank_lines_in_code = 2 59 | ij_less_keep_indents_on_empty_lines = false 60 | ij_less_keep_single_line_blocks = false 61 | ij_less_line_comment_add_space = false 62 | ij_less_line_comment_at_first_column = false 63 | ij_less_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 64 | ij_less_space_after_colon = true 65 | ij_less_space_before_opening_brace = true 66 | ij_less_use_double_quotes = true 67 | ij_less_value_alignment = 0 68 | 69 | [*.sass] 70 | indent_size = 2 71 | ij_sass_align_closing_brace_with_properties = false 72 | ij_sass_blank_lines_around_nested_selector = 1 73 | ij_sass_blank_lines_between_blocks = 1 74 | ij_sass_brace_placement = 0 75 | ij_sass_enforce_quotes_on_format = false 76 | ij_sass_hex_color_long_format = false 77 | ij_sass_hex_color_lower_case = false 78 | ij_sass_hex_color_short_format = false 79 | ij_sass_hex_color_upper_case = false 80 | ij_sass_keep_blank_lines_in_code = 2 81 | ij_sass_keep_indents_on_empty_lines = false 82 | ij_sass_keep_single_line_blocks = false 83 | ij_sass_line_comment_add_space = false 84 | ij_sass_line_comment_at_first_column = false 85 | ij_sass_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 86 | ij_sass_space_after_colon = true 87 | ij_sass_space_before_opening_brace = true 88 | ij_sass_use_double_quotes = true 89 | ij_sass_value_alignment = 0 90 | 91 | [*.scss] 92 | ij_scss_align_closing_brace_with_properties = false 93 | ij_scss_blank_lines_around_nested_selector = 1 94 | ij_scss_blank_lines_between_blocks = 1 95 | ij_scss_block_comment_add_space = true 96 | ij_scss_brace_placement = 0 97 | ij_scss_enforce_quotes_on_format = true 98 | ij_scss_hex_color_long_format = true 99 | ij_scss_hex_color_lower_case = false 100 | ij_scss_hex_color_short_format = false 101 | ij_scss_hex_color_upper_case = true 102 | ij_scss_keep_blank_lines_in_code = 1 103 | ij_scss_keep_indents_on_empty_lines = false 104 | ij_scss_keep_single_line_blocks = false 105 | ij_scss_line_comment_add_space = false 106 | ij_scss_line_comment_at_first_column = false 107 | ij_scss_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 108 | ij_scss_space_after_colon = true 109 | ij_scss_space_before_opening_brace = true 110 | ij_scss_use_double_quotes = true 111 | ij_scss_value_alignment = 0 112 | 113 | [*.twig] 114 | ij_twig_keep_indents_on_empty_lines = false 115 | ij_twig_spaces_inside_comments_delimiters = true 116 | ij_twig_spaces_inside_delimiters = true 117 | ij_twig_spaces_inside_variable_delimiters = true 118 | 119 | [*.vue] 120 | ij_continuation_indent_size = 4 121 | ij_vue_indent_children_of_top_level = template 122 | ij_vue_interpolation_new_line_after_start_delimiter = true 123 | ij_vue_interpolation_new_line_before_end_delimiter = true 124 | ij_vue_interpolation_wrap = off 125 | ij_vue_keep_indents_on_empty_lines = false 126 | ij_vue_spaces_within_interpolation_expressions = true 127 | 128 | [.editorconfig] 129 | ij_editorconfig_align_group_field_declarations = false 130 | ij_editorconfig_space_after_colon = false 131 | ij_editorconfig_space_after_comma = true 132 | ij_editorconfig_space_before_colon = false 133 | ij_editorconfig_space_before_comma = false 134 | ij_editorconfig_spaces_around_assignment_operators = true 135 | 136 | [{*.ant,*.fxml,*.jhm,*.jnlp,*.jrxml,*.rng,*.tld,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul,phpunit.xml.dist}] 137 | ij_xml_align_attributes = true 138 | ij_xml_align_text = false 139 | ij_xml_attribute_wrap = normal 140 | ij_xml_block_comment_add_space = true 141 | ij_xml_block_comment_at_first_column = true 142 | ij_xml_keep_blank_lines = 2 143 | ij_xml_keep_indents_on_empty_lines = false 144 | ij_xml_keep_line_breaks = true 145 | ij_xml_keep_line_breaks_in_text = true 146 | ij_xml_keep_whitespaces = false 147 | ij_xml_keep_whitespaces_around_cdata = preserve 148 | ij_xml_keep_whitespaces_inside_cdata = false 149 | ij_xml_line_comment_at_first_column = true 150 | ij_xml_space_after_tag_name = false 151 | ij_xml_space_around_equals_in_attribute = false 152 | ij_xml_space_inside_empty_tag = true 153 | ij_xml_text_wrap = normal 154 | 155 | [{*.ats,*.cts,*.mts,*.ts}] 156 | ij_continuation_indent_size = 4 157 | ij_typescript_align_imports = false 158 | ij_typescript_align_multiline_array_initializer_expression = false 159 | ij_typescript_align_multiline_binary_operation = false 160 | ij_typescript_align_multiline_chained_methods = false 161 | ij_typescript_align_multiline_extends_list = false 162 | ij_typescript_align_multiline_for = true 163 | ij_typescript_align_multiline_parameters = true 164 | ij_typescript_align_multiline_parameters_in_calls = false 165 | ij_typescript_align_multiline_ternary_operation = false 166 | ij_typescript_align_object_properties = 0 167 | ij_typescript_align_union_types = false 168 | ij_typescript_align_var_statements = 0 169 | ij_typescript_array_initializer_new_line_after_left_brace = false 170 | ij_typescript_array_initializer_right_brace_on_new_line = false 171 | ij_typescript_array_initializer_wrap = off 172 | ij_typescript_assignment_wrap = off 173 | ij_typescript_binary_operation_sign_on_next_line = false 174 | ij_typescript_binary_operation_wrap = off 175 | ij_typescript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/** 176 | ij_typescript_blank_lines_after_imports = 1 177 | ij_typescript_blank_lines_around_class = 1 178 | ij_typescript_blank_lines_around_field = 0 179 | ij_typescript_blank_lines_around_field_in_interface = 0 180 | ij_typescript_blank_lines_around_function = 1 181 | ij_typescript_blank_lines_around_method = 1 182 | ij_typescript_blank_lines_around_method_in_interface = 1 183 | ij_typescript_block_brace_style = end_of_line 184 | ij_typescript_block_comment_add_space = false 185 | ij_typescript_block_comment_at_first_column = true 186 | ij_typescript_call_parameters_new_line_after_left_paren = false 187 | ij_typescript_call_parameters_right_paren_on_new_line = false 188 | ij_typescript_call_parameters_wrap = off 189 | ij_typescript_catch_on_new_line = false 190 | ij_typescript_chained_call_dot_on_new_line = true 191 | ij_typescript_class_brace_style = next_line 192 | ij_typescript_comma_on_new_line = false 193 | ij_typescript_do_while_brace_force = never 194 | ij_typescript_else_on_new_line = false 195 | ij_typescript_enforce_trailing_comma = remove 196 | ij_typescript_enum_constants_wrap = on_every_item 197 | ij_typescript_extends_keyword_wrap = off 198 | ij_typescript_extends_list_wrap = off 199 | ij_typescript_field_prefix = _ 200 | ij_typescript_file_name_style = relaxed 201 | ij_typescript_finally_on_new_line = false 202 | ij_typescript_for_brace_force = never 203 | ij_typescript_for_statement_new_line_after_left_paren = false 204 | ij_typescript_for_statement_right_paren_on_new_line = false 205 | ij_typescript_for_statement_wrap = off 206 | ij_typescript_force_quote_style = true 207 | ij_typescript_force_semicolon_style = true 208 | ij_typescript_function_expression_brace_style = end_of_line 209 | ij_typescript_if_brace_force = never 210 | ij_typescript_import_merge_members = global 211 | ij_typescript_import_prefer_absolute_path = global 212 | ij_typescript_import_sort_members = true 213 | ij_typescript_import_sort_module_name = false 214 | ij_typescript_import_use_node_resolution = true 215 | ij_typescript_imports_wrap = on_every_item 216 | ij_typescript_indent_case_from_switch = true 217 | ij_typescript_indent_chained_calls = true 218 | ij_typescript_indent_package_children = 0 219 | ij_typescript_jsdoc_include_types = false 220 | ij_typescript_jsx_attribute_value = braces 221 | ij_typescript_keep_blank_lines_in_code = 1 222 | ij_typescript_keep_first_column_comment = true 223 | ij_typescript_keep_indents_on_empty_lines = false 224 | ij_typescript_keep_line_breaks = true 225 | ij_typescript_keep_simple_blocks_in_one_line = false 226 | ij_typescript_keep_simple_methods_in_one_line = false 227 | ij_typescript_line_comment_add_space = true 228 | ij_typescript_line_comment_at_first_column = false 229 | ij_typescript_method_brace_style = next_line 230 | ij_typescript_method_call_chain_wrap = off 231 | ij_typescript_method_parameters_new_line_after_left_paren = false 232 | ij_typescript_method_parameters_right_paren_on_new_line = false 233 | ij_typescript_method_parameters_wrap = off 234 | ij_typescript_object_literal_wrap = on_every_item 235 | ij_typescript_parentheses_expression_new_line_after_left_paren = false 236 | ij_typescript_parentheses_expression_right_paren_on_new_line = false 237 | ij_typescript_place_assignment_sign_on_next_line = false 238 | ij_typescript_prefer_as_type_cast = false 239 | ij_typescript_prefer_explicit_types_function_expression_returns = false 240 | ij_typescript_prefer_explicit_types_function_returns = false 241 | ij_typescript_prefer_explicit_types_vars_fields = false 242 | ij_typescript_prefer_parameters_wrap = false 243 | ij_typescript_reformat_c_style_comments = false 244 | ij_typescript_space_after_colon = true 245 | ij_typescript_space_after_comma = true 246 | ij_typescript_space_after_dots_in_rest_parameter = false 247 | ij_typescript_space_after_generator_mult = true 248 | ij_typescript_space_after_property_colon = true 249 | ij_typescript_space_after_quest = true 250 | ij_typescript_space_after_type_colon = true 251 | ij_typescript_space_after_unary_not = true 252 | ij_typescript_space_before_async_arrow_lparen = true 253 | ij_typescript_space_before_catch_keyword = true 254 | ij_typescript_space_before_catch_left_brace = true 255 | ij_typescript_space_before_catch_parentheses = true 256 | ij_typescript_space_before_class_lbrace = true 257 | ij_typescript_space_before_class_left_brace = true 258 | ij_typescript_space_before_colon = true 259 | ij_typescript_space_before_comma = false 260 | ij_typescript_space_before_do_left_brace = true 261 | ij_typescript_space_before_else_keyword = true 262 | ij_typescript_space_before_else_left_brace = true 263 | ij_typescript_space_before_finally_keyword = true 264 | ij_typescript_space_before_finally_left_brace = true 265 | ij_typescript_space_before_for_left_brace = true 266 | ij_typescript_space_before_for_parentheses = true 267 | ij_typescript_space_before_for_semicolon = false 268 | ij_typescript_space_before_function_left_parenth = true 269 | ij_typescript_space_before_generator_mult = false 270 | ij_typescript_space_before_if_left_brace = true 271 | ij_typescript_space_before_if_parentheses = true 272 | ij_typescript_space_before_method_call_parentheses = false 273 | ij_typescript_space_before_method_left_brace = true 274 | ij_typescript_space_before_method_parentheses = false 275 | ij_typescript_space_before_property_colon = false 276 | ij_typescript_space_before_quest = true 277 | ij_typescript_space_before_switch_left_brace = true 278 | ij_typescript_space_before_switch_parentheses = true 279 | ij_typescript_space_before_try_left_brace = true 280 | ij_typescript_space_before_type_colon = false 281 | ij_typescript_space_before_unary_not = false 282 | ij_typescript_space_before_while_keyword = true 283 | ij_typescript_space_before_while_left_brace = true 284 | ij_typescript_space_before_while_parentheses = true 285 | ij_typescript_spaces_around_additive_operators = true 286 | ij_typescript_spaces_around_arrow_function_operator = true 287 | ij_typescript_spaces_around_assignment_operators = true 288 | ij_typescript_spaces_around_bitwise_operators = true 289 | ij_typescript_spaces_around_equality_operators = true 290 | ij_typescript_spaces_around_logical_operators = true 291 | ij_typescript_spaces_around_multiplicative_operators = true 292 | ij_typescript_spaces_around_relational_operators = true 293 | ij_typescript_spaces_around_shift_operators = true 294 | ij_typescript_spaces_around_unary_operator = false 295 | ij_typescript_spaces_within_array_initializer_brackets = false 296 | ij_typescript_spaces_within_brackets = false 297 | ij_typescript_spaces_within_catch_parentheses = false 298 | ij_typescript_spaces_within_for_parentheses = false 299 | ij_typescript_spaces_within_if_parentheses = false 300 | ij_typescript_spaces_within_imports = true 301 | ij_typescript_spaces_within_interpolation_expressions = true 302 | ij_typescript_spaces_within_method_call_parentheses = false 303 | ij_typescript_spaces_within_method_parentheses = false 304 | ij_typescript_spaces_within_object_literal_braces = true 305 | ij_typescript_spaces_within_object_type_braces = true 306 | ij_typescript_spaces_within_parentheses = false 307 | ij_typescript_spaces_within_switch_parentheses = false 308 | ij_typescript_spaces_within_type_assertion = false 309 | ij_typescript_spaces_within_union_types = true 310 | ij_typescript_spaces_within_while_parentheses = false 311 | ij_typescript_special_else_if_treatment = true 312 | ij_typescript_ternary_operation_signs_on_next_line = false 313 | ij_typescript_ternary_operation_wrap = off 314 | ij_typescript_union_types_wrap = on_every_item 315 | ij_typescript_use_chained_calls_group_indents = false 316 | ij_typescript_use_double_quotes = false 317 | ij_typescript_use_explicit_js_extension = auto 318 | ij_typescript_use_path_mapping = always 319 | ij_typescript_use_public_modifier = false 320 | ij_typescript_use_semicolon_after_statement = false 321 | ij_typescript_var_declaration_wrap = normal 322 | ij_typescript_while_brace_force = never 323 | ij_typescript_while_on_new_line = false 324 | ij_typescript_wrap_comments = false 325 | 326 | [{*.bash,*.sh,*.zsh}] 327 | ij_shell_binary_ops_start_line = false 328 | ij_shell_keep_column_alignment_padding = false 329 | ij_shell_minify_program = false 330 | ij_shell_redirect_followed_by_space = false 331 | ij_shell_switch_cases_indented = false 332 | ij_shell_use_unix_line_separator = true 333 | 334 | [{*.cjs,*.js}] 335 | ij_continuation_indent_size = 4 336 | ij_javascript_align_imports = false 337 | ij_javascript_align_multiline_array_initializer_expression = false 338 | ij_javascript_align_multiline_binary_operation = false 339 | ij_javascript_align_multiline_chained_methods = false 340 | ij_javascript_align_multiline_extends_list = false 341 | ij_javascript_align_multiline_for = true 342 | ij_javascript_align_multiline_parameters = true 343 | ij_javascript_align_multiline_parameters_in_calls = false 344 | ij_javascript_align_multiline_ternary_operation = false 345 | ij_javascript_align_object_properties = 0 346 | ij_javascript_align_union_types = false 347 | ij_javascript_align_var_statements = 1 348 | ij_javascript_array_initializer_new_line_after_left_brace = true 349 | ij_javascript_array_initializer_right_brace_on_new_line = true 350 | ij_javascript_array_initializer_wrap = on_every_item 351 | ij_javascript_assignment_wrap = off 352 | ij_javascript_binary_operation_sign_on_next_line = false 353 | ij_javascript_binary_operation_wrap = off 354 | ij_javascript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/** 355 | ij_javascript_blank_lines_after_imports = 1 356 | ij_javascript_blank_lines_around_class = 1 357 | ij_javascript_blank_lines_around_field = 0 358 | ij_javascript_blank_lines_around_function = 1 359 | ij_javascript_blank_lines_around_method = 1 360 | ij_javascript_block_brace_style = end_of_line 361 | ij_javascript_block_comment_add_space = false 362 | ij_javascript_block_comment_at_first_column = true 363 | ij_javascript_call_parameters_new_line_after_left_paren = false 364 | ij_javascript_call_parameters_right_paren_on_new_line = false 365 | ij_javascript_call_parameters_wrap = off 366 | ij_javascript_catch_on_new_line = false 367 | ij_javascript_chained_call_dot_on_new_line = true 368 | ij_javascript_class_brace_style = next_line 369 | ij_javascript_comma_on_new_line = false 370 | ij_javascript_do_while_brace_force = never 371 | ij_javascript_else_on_new_line = false 372 | ij_javascript_enforce_trailing_comma = remove 373 | ij_javascript_extends_keyword_wrap = off 374 | ij_javascript_extends_list_wrap = off 375 | ij_javascript_field_prefix = _ 376 | ij_javascript_file_name_style = lisp_case 377 | ij_javascript_finally_on_new_line = false 378 | ij_javascript_for_brace_force = never 379 | ij_javascript_for_statement_new_line_after_left_paren = false 380 | ij_javascript_for_statement_right_paren_on_new_line = false 381 | ij_javascript_for_statement_wrap = off 382 | ij_javascript_force_quote_style = true 383 | ij_javascript_force_semicolon_style = true 384 | ij_javascript_function_expression_brace_style = end_of_line 385 | ij_javascript_if_brace_force = never 386 | ij_javascript_import_merge_members = global 387 | ij_javascript_import_prefer_absolute_path = true 388 | ij_javascript_import_sort_members = true 389 | ij_javascript_import_sort_module_name = false 390 | ij_javascript_import_use_node_resolution = true 391 | ij_javascript_imports_wrap = on_every_item 392 | ij_javascript_indent_case_from_switch = true 393 | ij_javascript_indent_chained_calls = true 394 | ij_javascript_indent_package_children = 0 395 | ij_javascript_jsx_attribute_value = braces 396 | ij_javascript_keep_blank_lines_in_code = 1 397 | ij_javascript_keep_first_column_comment = true 398 | ij_javascript_keep_indents_on_empty_lines = false 399 | ij_javascript_keep_line_breaks = true 400 | ij_javascript_keep_simple_blocks_in_one_line = false 401 | ij_javascript_keep_simple_methods_in_one_line = false 402 | ij_javascript_line_comment_add_space = false 403 | ij_javascript_line_comment_at_first_column = false 404 | ij_javascript_method_brace_style = end_of_line 405 | ij_javascript_method_call_chain_wrap = off 406 | ij_javascript_method_parameters_new_line_after_left_paren = false 407 | ij_javascript_method_parameters_right_paren_on_new_line = false 408 | ij_javascript_method_parameters_wrap = off 409 | ij_javascript_object_literal_wrap = on_every_item 410 | ij_javascript_parentheses_expression_new_line_after_left_paren = false 411 | ij_javascript_parentheses_expression_right_paren_on_new_line = false 412 | ij_javascript_place_assignment_sign_on_next_line = false 413 | ij_javascript_prefer_as_type_cast = false 414 | ij_javascript_prefer_explicit_types_function_expression_returns = false 415 | ij_javascript_prefer_explicit_types_function_returns = false 416 | ij_javascript_prefer_explicit_types_vars_fields = false 417 | ij_javascript_prefer_parameters_wrap = false 418 | ij_javascript_reformat_c_style_comments = false 419 | ij_javascript_space_after_colon = true 420 | ij_javascript_space_after_comma = true 421 | ij_javascript_space_after_dots_in_rest_parameter = false 422 | ij_javascript_space_after_generator_mult = true 423 | ij_javascript_space_after_property_colon = true 424 | ij_javascript_space_after_quest = true 425 | ij_javascript_space_after_type_colon = true 426 | ij_javascript_space_after_unary_not = true 427 | ij_javascript_space_before_async_arrow_lparen = true 428 | ij_javascript_space_before_catch_keyword = true 429 | ij_javascript_space_before_catch_left_brace = true 430 | ij_javascript_space_before_catch_parentheses = true 431 | ij_javascript_space_before_class_lbrace = true 432 | ij_javascript_space_before_class_left_brace = true 433 | ij_javascript_space_before_colon = true 434 | ij_javascript_space_before_comma = false 435 | ij_javascript_space_before_do_left_brace = true 436 | ij_javascript_space_before_else_keyword = true 437 | ij_javascript_space_before_else_left_brace = true 438 | ij_javascript_space_before_finally_keyword = true 439 | ij_javascript_space_before_finally_left_brace = true 440 | ij_javascript_space_before_for_left_brace = true 441 | ij_javascript_space_before_for_parentheses = true 442 | ij_javascript_space_before_for_semicolon = false 443 | ij_javascript_space_before_function_left_parenth = true 444 | ij_javascript_space_before_generator_mult = false 445 | ij_javascript_space_before_if_left_brace = true 446 | ij_javascript_space_before_if_parentheses = true 447 | ij_javascript_space_before_method_call_parentheses = false 448 | ij_javascript_space_before_method_left_brace = true 449 | ij_javascript_space_before_method_parentheses = false 450 | ij_javascript_space_before_property_colon = false 451 | ij_javascript_space_before_quest = true 452 | ij_javascript_space_before_switch_left_brace = true 453 | ij_javascript_space_before_switch_parentheses = true 454 | ij_javascript_space_before_try_left_brace = true 455 | ij_javascript_space_before_type_colon = false 456 | ij_javascript_space_before_unary_not = false 457 | ij_javascript_space_before_while_keyword = true 458 | ij_javascript_space_before_while_left_brace = true 459 | ij_javascript_space_before_while_parentheses = true 460 | ij_javascript_spaces_around_additive_operators = true 461 | ij_javascript_spaces_around_arrow_function_operator = true 462 | ij_javascript_spaces_around_assignment_operators = true 463 | ij_javascript_spaces_around_bitwise_operators = true 464 | ij_javascript_spaces_around_equality_operators = true 465 | ij_javascript_spaces_around_logical_operators = true 466 | ij_javascript_spaces_around_multiplicative_operators = true 467 | ij_javascript_spaces_around_relational_operators = true 468 | ij_javascript_spaces_around_shift_operators = true 469 | ij_javascript_spaces_around_unary_operator = false 470 | ij_javascript_spaces_within_array_initializer_brackets = false 471 | ij_javascript_spaces_within_brackets = false 472 | ij_javascript_spaces_within_catch_parentheses = false 473 | ij_javascript_spaces_within_for_parentheses = false 474 | ij_javascript_spaces_within_if_parentheses = false 475 | ij_javascript_spaces_within_imports = true 476 | ij_javascript_spaces_within_interpolation_expressions = true 477 | ij_javascript_spaces_within_method_call_parentheses = false 478 | ij_javascript_spaces_within_method_parentheses = false 479 | ij_javascript_spaces_within_object_literal_braces = true 480 | ij_javascript_spaces_within_object_type_braces = true 481 | ij_javascript_spaces_within_parentheses = false 482 | ij_javascript_spaces_within_switch_parentheses = false 483 | ij_javascript_spaces_within_type_assertion = false 484 | ij_javascript_spaces_within_union_types = true 485 | ij_javascript_spaces_within_while_parentheses = false 486 | ij_javascript_special_else_if_treatment = true 487 | ij_javascript_ternary_operation_signs_on_next_line = false 488 | ij_javascript_ternary_operation_wrap = off 489 | ij_javascript_union_types_wrap = on_every_item 490 | ij_javascript_use_chained_calls_group_indents = false 491 | ij_javascript_use_double_quotes = false 492 | ij_javascript_use_explicit_js_extension = auto 493 | ij_javascript_use_path_mapping = always 494 | ij_javascript_use_public_modifier = false 495 | ij_javascript_use_semicolon_after_statement = false 496 | ij_javascript_var_declaration_wrap = on_every_item 497 | ij_javascript_while_brace_force = never 498 | ij_javascript_while_on_new_line = false 499 | ij_javascript_wrap_comments = false 500 | 501 | [{*.ctp,*.hphp,*.inc,*.module,*.php,*.php4,*.php5,*.phtml}] 502 | ij_continuation_indent_size = 4 503 | ij_php_align_assignments = true 504 | ij_php_align_class_constants = false 505 | ij_php_align_group_field_declarations = false 506 | ij_php_align_inline_comments = true 507 | ij_php_align_key_value_pairs = true 508 | ij_php_align_match_arm_bodies = true 509 | ij_php_align_multiline_array_initializer_expression = true 510 | ij_php_align_multiline_binary_operation = false 511 | ij_php_align_multiline_chained_methods = false 512 | ij_php_align_multiline_extends_list = true 513 | ij_php_align_multiline_for = false 514 | ij_php_align_multiline_parameters = true 515 | ij_php_align_multiline_parameters_in_calls = false 516 | ij_php_align_multiline_ternary_operation = false 517 | ij_php_align_named_arguments = true 518 | ij_php_align_phpdoc_comments = false 519 | ij_php_align_phpdoc_param_names = false 520 | ij_php_anonymous_brace_style = next_line 521 | ij_php_api_weight = 28 522 | ij_php_array_initializer_new_line_after_left_brace = true 523 | ij_php_array_initializer_right_brace_on_new_line = true 524 | ij_php_array_initializer_wrap = on_every_item 525 | ij_php_assignment_wrap = on_every_item 526 | ij_php_attributes_wrap = split_into_lines 527 | ij_php_author_weight = 3 528 | ij_php_binary_operation_sign_on_next_line = true 529 | ij_php_binary_operation_wrap = on_every_item 530 | ij_php_blank_lines_after_class_header = 0 531 | ij_php_blank_lines_after_function = 1 532 | ij_php_blank_lines_after_imports = 1 533 | ij_php_blank_lines_after_opening_tag = 1 534 | ij_php_blank_lines_after_package = 1 535 | ij_php_blank_lines_around_class = 1 536 | ij_php_blank_lines_around_constants = 1 537 | ij_php_blank_lines_around_field = 1 538 | ij_php_blank_lines_around_method = 1 539 | ij_php_blank_lines_before_class_end = 0 540 | ij_php_blank_lines_before_imports = 1 541 | ij_php_blank_lines_before_method_body = 0 542 | ij_php_blank_lines_before_package = 1 543 | ij_php_blank_lines_before_return_statement = 1 544 | ij_php_blank_lines_between_imports = 1 545 | ij_php_block_brace_style = end_of_line 546 | ij_php_call_parameters_new_line_after_left_paren = false 547 | ij_php_call_parameters_right_paren_on_new_line = false 548 | ij_php_call_parameters_wrap = on_every_item 549 | ij_php_catch_on_new_line = true 550 | ij_php_category_weight = 28 551 | ij_php_class_brace_style = next_line 552 | ij_php_comma_after_last_argument = false 553 | ij_php_comma_after_last_array_element = true 554 | ij_php_comma_after_last_closure_use_var = false 555 | ij_php_comma_after_last_parameter = false 556 | ij_php_concat_spaces = true 557 | ij_php_copyright_weight = 4 558 | ij_php_deprecated_weight = 0 559 | ij_php_do_while_brace_force = always 560 | ij_php_else_if_style = combine 561 | ij_php_else_on_new_line = true 562 | ij_php_example_weight = 28 563 | ij_php_extends_keyword_wrap = normal 564 | ij_php_extends_list_wrap = off 565 | ij_php_fields_default_visibility = protected 566 | ij_php_filesource_weight = 28 567 | ij_php_finally_on_new_line = true 568 | ij_php_for_brace_force = always 569 | ij_php_for_statement_new_line_after_left_paren = false 570 | ij_php_for_statement_right_paren_on_new_line = false 571 | ij_php_for_statement_wrap = normal 572 | ij_php_force_empty_methods_in_one_line = false 573 | ij_php_force_short_declaration_array_style = true 574 | ij_php_getters_setters_naming_style = camel_case 575 | ij_php_getters_setters_order_style = getters_first 576 | ij_php_global_weight = 28 577 | ij_php_group_use_wrap = on_every_item 578 | ij_php_if_brace_force = always 579 | ij_php_if_lparen_on_next_line = true 580 | ij_php_if_rparen_on_next_line = true 581 | ij_php_ignore_weight = 28 582 | ij_php_import_sorting = alphabetic 583 | ij_php_indent_break_from_case = true 584 | ij_php_indent_case_from_switch = true 585 | ij_php_indent_code_in_php_tags = false 586 | ij_php_internal_weight = 1 587 | ij_php_keep_blank_lines_after_lbrace = 1 588 | ij_php_keep_blank_lines_before_right_brace = 0 589 | ij_php_keep_blank_lines_in_code = 1 590 | ij_php_keep_blank_lines_in_declarations = 0 591 | ij_php_keep_control_statement_in_one_line = true 592 | ij_php_keep_first_column_comment = false 593 | ij_php_keep_indents_on_empty_lines = false 594 | ij_php_keep_line_breaks = true 595 | ij_php_keep_rparen_and_lbrace_on_one_line = true 596 | ij_php_keep_simple_classes_in_one_line = true 597 | ij_php_keep_simple_methods_in_one_line = false 598 | ij_php_lambda_brace_style = end_of_line 599 | ij_php_license_weight = 5 600 | ij_php_line_comment_add_space = false 601 | ij_php_line_comment_at_first_column = false 602 | ij_php_link_weight = 7 603 | ij_php_lower_case_boolean_const = true 604 | ij_php_lower_case_keywords = true 605 | ij_php_lower_case_null_const = true 606 | ij_php_method_brace_style = next_line 607 | ij_php_method_call_chain_wrap = on_every_item 608 | ij_php_method_parameters_new_line_after_left_paren = true 609 | ij_php_method_parameters_right_paren_on_new_line = true 610 | ij_php_method_parameters_wrap = on_every_item 611 | ij_php_method_weight = 13 612 | ij_php_modifier_list_wrap = false 613 | ij_php_multiline_chained_calls_semicolon_on_new_line = false 614 | ij_php_namespace_brace_style = 2 615 | ij_php_new_line_after_php_opening_tag = true 616 | ij_php_null_type_position = in_the_end 617 | ij_php_package_weight = 28 618 | ij_php_param_weight = 9 619 | ij_php_parameters_attributes_wrap = split_into_lines 620 | ij_php_parentheses_expression_new_line_after_left_paren = false 621 | ij_php_parentheses_expression_right_paren_on_new_line = false 622 | ij_php_phpdoc_blank_line_before_tags = true 623 | ij_php_phpdoc_blank_lines_around_parameters = true 624 | ij_php_phpdoc_keep_blank_lines = true 625 | ij_php_phpdoc_param_spaces_between_name_and_description = 1 626 | ij_php_phpdoc_param_spaces_between_tag_and_type = 1 627 | ij_php_phpdoc_param_spaces_between_type_and_name = 1 628 | ij_php_phpdoc_use_fqcn = true 629 | ij_php_phpdoc_wrap_long_lines = true 630 | ij_php_place_assignment_sign_on_next_line = false 631 | ij_php_place_parens_for_constructor = 0 632 | ij_php_property_read_weight = 11 633 | ij_php_property_weight = 10 634 | ij_php_property_write_weight = 12 635 | ij_php_return_type_on_new_line = false 636 | ij_php_return_weight = 15 637 | ij_php_see_weight = 6 638 | ij_php_since_weight = 2 639 | ij_php_sort_phpdoc_elements = true 640 | ij_php_space_after_colon = true 641 | ij_php_space_after_colon_in_enum_backed_type = true 642 | ij_php_space_after_colon_in_named_argument = true 643 | ij_php_space_after_colon_in_return_type = true 644 | ij_php_space_after_comma = true 645 | ij_php_space_after_for_semicolon = true 646 | ij_php_space_after_quest = true 647 | ij_php_space_after_type_cast = true 648 | ij_php_space_after_unary_not = true 649 | ij_php_space_before_array_initializer_left_brace = true 650 | ij_php_space_before_catch_keyword = true 651 | ij_php_space_before_catch_left_brace = true 652 | ij_php_space_before_catch_parentheses = true 653 | ij_php_space_before_class_left_brace = true 654 | ij_php_space_before_closure_left_parenthesis = true 655 | ij_php_space_before_colon = true 656 | ij_php_space_before_colon_in_enum_backed_type = false 657 | ij_php_space_before_colon_in_named_argument = false 658 | ij_php_space_before_colon_in_return_type = false 659 | ij_php_space_before_comma = false 660 | ij_php_space_before_do_left_brace = true 661 | ij_php_space_before_else_keyword = true 662 | ij_php_space_before_else_left_brace = true 663 | ij_php_space_before_finally_keyword = true 664 | ij_php_space_before_finally_left_brace = true 665 | ij_php_space_before_for_left_brace = true 666 | ij_php_space_before_for_parentheses = true 667 | ij_php_space_before_for_semicolon = false 668 | ij_php_space_before_if_left_brace = true 669 | ij_php_space_before_if_parentheses = true 670 | ij_php_space_before_method_call_parentheses = false 671 | ij_php_space_before_method_left_brace = true 672 | ij_php_space_before_method_parentheses = false 673 | ij_php_space_before_quest = true 674 | ij_php_space_before_short_closure_left_parenthesis = true 675 | ij_php_space_before_switch_left_brace = true 676 | ij_php_space_before_switch_parentheses = true 677 | ij_php_space_before_try_left_brace = true 678 | ij_php_space_before_unary_not = false 679 | ij_php_space_before_while_keyword = true 680 | ij_php_space_before_while_left_brace = true 681 | ij_php_space_before_while_parentheses = true 682 | ij_php_space_between_ternary_quest_and_colon = false 683 | ij_php_spaces_around_additive_operators = true 684 | ij_php_spaces_around_arrow = false 685 | ij_php_spaces_around_assignment_in_declare = false 686 | ij_php_spaces_around_assignment_operators = true 687 | ij_php_spaces_around_bitwise_operators = true 688 | ij_php_spaces_around_equality_operators = true 689 | ij_php_spaces_around_logical_operators = true 690 | ij_php_spaces_around_multiplicative_operators = true 691 | ij_php_spaces_around_null_coalesce_operator = true 692 | ij_php_spaces_around_pipe_in_union_type = false 693 | ij_php_spaces_around_relational_operators = true 694 | ij_php_spaces_around_shift_operators = true 695 | ij_php_spaces_around_unary_operator = false 696 | ij_php_spaces_around_var_within_brackets = false 697 | ij_php_spaces_within_array_initializer_braces = false 698 | ij_php_spaces_within_brackets = false 699 | ij_php_spaces_within_catch_parentheses = false 700 | ij_php_spaces_within_for_parentheses = false 701 | ij_php_spaces_within_if_parentheses = false 702 | ij_php_spaces_within_method_call_parentheses = false 703 | ij_php_spaces_within_method_parentheses = false 704 | ij_php_spaces_within_parentheses = false 705 | ij_php_spaces_within_short_echo_tags = true 706 | ij_php_spaces_within_switch_parentheses = false 707 | ij_php_spaces_within_while_parentheses = false 708 | ij_php_special_else_if_treatment = false 709 | ij_php_subpackage_weight = 28 710 | ij_php_ternary_operation_signs_on_next_line = true 711 | ij_php_ternary_operation_wrap = on_every_item 712 | ij_php_throws_weight = 14 713 | ij_php_todo_weight = 28 714 | ij_php_treat_multiline_arrays_and_lambdas_multiline = false 715 | ij_php_unknown_tag_weight = 28 716 | ij_php_upper_case_boolean_const = false 717 | ij_php_upper_case_null_const = false 718 | ij_php_uses_weight = 28 719 | ij_php_var_weight = 28 720 | ij_php_variable_naming_style = snake_case 721 | ij_php_version_weight = 8 722 | ij_php_while_brace_force = always 723 | ij_php_while_on_new_line = true 724 | 725 | [{*.har,*.jsb2,*.jsb3,*.json,.babelrc,.eslintrc,.stylelintrc,bowerrc,composer.lock,jest.config}] 726 | ij_continuation_indent_size = 4 727 | ij_json_array_wrapping = on_every_item 728 | ij_json_keep_blank_lines_in_code = 1 729 | ij_json_keep_indents_on_empty_lines = false 730 | ij_json_keep_line_breaks = true 731 | ij_json_keep_trailing_comma = false 732 | ij_json_object_wrapping = on_every_item 733 | ij_json_property_alignment = do_not_align 734 | ij_json_space_after_colon = true 735 | ij_json_space_after_comma = true 736 | ij_json_space_before_colon = false 737 | ij_json_space_before_comma = false 738 | ij_json_spaces_within_braces = true 739 | ij_json_spaces_within_brackets = false 740 | ij_json_wrap_long_lines = false 741 | 742 | [{*.htm,*.html,*.sht,*.shtm,*.shtml}] 743 | ij_continuation_indent_size = 4 744 | ij_visual_guides = 160 745 | ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3 746 | ij_html_align_attributes = false 747 | ij_html_align_text = false 748 | ij_html_attribute_wrap = on_every_item 749 | ij_html_block_comment_add_space = false 750 | ij_html_block_comment_at_first_column = true 751 | ij_html_do_not_align_children_of_min_lines = 0 752 | ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p 753 | ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot 754 | ij_html_enforce_quotes = true 755 | ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var 756 | ij_html_keep_blank_lines = 2 757 | ij_html_keep_indents_on_empty_lines = false 758 | ij_html_keep_line_breaks = true 759 | ij_html_keep_line_breaks_in_text = true 760 | ij_html_keep_whitespaces = false 761 | ij_html_keep_whitespaces_inside = span,pre,textarea 762 | ij_html_line_comment_at_first_column = true 763 | ij_html_new_line_after_last_attribute = never 764 | ij_html_new_line_before_first_attribute = when_multiline 765 | ij_html_quote_style = double 766 | ij_html_remove_new_line_before_tags = br 767 | ij_html_space_after_tag_name = false 768 | ij_html_space_around_equality_in_attribute = false 769 | ij_html_space_inside_empty_tag = true 770 | ij_html_text_wrap = off 771 | 772 | [{*.markdown,*.md}] 773 | ij_markdown_force_one_space_after_blockquote_symbol = true 774 | ij_markdown_force_one_space_after_header_symbol = true 775 | ij_markdown_force_one_space_after_list_bullet = true 776 | ij_markdown_force_one_space_between_words = true 777 | ij_markdown_insert_quote_arrows_on_wrap = true 778 | ij_markdown_keep_indents_on_empty_lines = false 779 | ij_markdown_keep_line_breaks_inside_text_blocks = true 780 | ij_markdown_max_lines_around_block_elements = 1 781 | ij_markdown_max_lines_around_header = 1 782 | ij_markdown_max_lines_between_paragraphs = 1 783 | ij_markdown_min_lines_around_block_elements = 1 784 | ij_markdown_min_lines_around_header = 2 785 | ij_markdown_min_lines_between_paragraphs = 1 786 | ij_markdown_wrap_text_if_long = true 787 | ij_markdown_wrap_text_inside_blockquotes = true 788 | 789 | [{*.yaml,*.yml}] 790 | ij_yaml_align_values_properties = do_not_align 791 | ij_yaml_autoinsert_sequence_marker = true 792 | ij_yaml_block_mapping_on_new_line = false 793 | ij_yaml_indent_sequence_value = true 794 | ij_yaml_keep_indents_on_empty_lines = false 795 | ij_yaml_keep_line_breaks = true 796 | ij_yaml_sequence_on_new_line = true 797 | ij_yaml_space_before_colon = false 798 | ij_yaml_spaces_within_braces = true 799 | ij_yaml_spaces_within_brackets = true 800 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: TheDragonCode 2 | open_collective: dragon-code 3 | custom: [ "https://boosty.to/dragon-code", "https://yoomoney.ru/to/410012608840929" ] 4 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - 4 | package-ecosystem: github-actions 5 | directory: / 6 | schedule: 7 | interval: daily 8 | -------------------------------------------------------------------------------- /.github/workflows/lint-check.yml: -------------------------------------------------------------------------------- 1 | name: "Code-Style Check" 2 | 3 | on: [ push, pull_request ] 4 | 5 | jobs: 6 | check: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - name: Checkout code 11 | uses: actions/checkout@v3 12 | 13 | - name: Checking PHP Syntax 14 | uses: TheDragonCode/codestyler@v2.6.2 15 | -------------------------------------------------------------------------------- /.github/workflows/lint-fixer.yml: -------------------------------------------------------------------------------- 1 | name: "Code-Style Fixer" 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | 7 | jobs: 8 | fix: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout code 13 | uses: actions/checkout@v3 14 | 15 | - name: Checking PHP Syntax 16 | uses: TheDragonCode/codestyler@v2.6.2 17 | with: 18 | github_token: ${{ secrets.COMPOSER_TOKEN }} 19 | fix: true 20 | -------------------------------------------------------------------------------- /.nodoc: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Andrey Helldar 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Laravel IDE Facade Helper 2 | 3 | Laravel IDE Facade Helper 4 | 5 |

6 | Total Downloads 7 | Latest Stable Version 8 | Latest Unstable Version 9 |

10 |

11 | StyleCI 12 | License 13 |

14 | 15 | > Laravel IDE Facade Helper, generates correct PHPDocs for your Facade classes, to improve auto-completion. 16 | 17 | > Note 18 | > This package has been deprecated. Use the [Laravel Idea](https://plugins.jetbrains.com/plugin/13441-laravel-idea) plugin instead. 19 | 20 | 21 | ## Installation 22 | 23 | Require this package with [composer](https://getcomposer.org) using the following command: 24 | 25 | ```bash 26 | $ composer require dragon-code/laravel-ide-facades-helper --dev 27 | ``` 28 | 29 | This package makes use of [Laravels package auto-discovery mechanism](https://medium.com/@taylorotwell/package-auto-discovery-in-laravel-5-5-ea9e3ab20518), which means if you don't 30 | install dev dependencies in production, it also won't be loaded. 31 | 32 | If for some reason you want manually control this: 33 | 34 | - add the package to the `extra.laravel.dont-discover` key in `composer.json`, e.g. 35 | ```json 36 | "extra": { 37 | "laravel": { 38 | "dont-discover": [ 39 | "dragon-code/laravel-ide-facades-helper", 40 | ] 41 | } 42 | } 43 | ``` 44 | - Add the following class to the `providers` array in `config/app.php`: 45 | ```php 46 | DragonCode\LaravelIdeFacadesHelper\ServiceProvider::class, 47 | ``` 48 | If you want to manually load it only in non-production environments, instead you can add this to your `AppServiceProvider` with the `register()` method: 49 | ```php 50 | public function register() 51 | { 52 | if ($this->app->environment() !== 'production') { 53 | $this->app->register(\DragonCode\LaravelIdeFacadesHelper\ServiceProvider::class); 54 | } 55 | // ... 56 | } 57 | ``` 58 | 59 | > Note: Avoid caching the configuration in your development environment, it may cause issues after installing this package; respectively clear the cache beforehand via `php artisan cache:clear` if you encounter problems when running the commands 60 | 61 | 62 | ## Usage 63 | 64 | * `php artisan ide-helper:facades` - PHPDoc generation for your Facades 65 | 66 | You can generate helpers for your facades. 67 | 68 | You will find additional settings in the options `facade_locations` and `facades_visibility` of the `config/ide-helper.php` file. 69 | 70 | > Note: The package uses the same file as [barryvdh/laravel-ide-helper](https://github.com/barryvdh/laravel-ide-helper). Therefore, if you need to redefine the paths, add the configuration from [this](config/ide-helper.php) file to it. 71 | 72 | 73 | ## License 74 | 75 | This package is licensed under the [MIT License](LICENSE). 76 | 77 | 78 | [badge_contributors]: https://img.shields.io/github/contributors/TheDragonCode/laravel-ide-facades-helper?style=flat-square 79 | 80 | [link_author]: https://github.com/TheDragonCode 81 | 82 | [link_contributors]: https://github.com/TheDragonCode/laravel-ide-facades-helper/graphs/contributors 83 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dragon-code/laravel-ide-facades-helper", 3 | "description": "Laravel IDE Facade Helper, generates correct PHPDocs for your Facade classes, to improve auto-completion.", 4 | "license": "MIT", 5 | "type": "library", 6 | "keywords": [ 7 | "laravel", 8 | "autocomplete", 9 | "ide", 10 | "helper", 11 | "phpdoc" 12 | ], 13 | "authors": [ 14 | { 15 | "name": "Andrey Helldar", 16 | "email": "helldar@dragon-code.pro", 17 | "homepage": "https://github.com/andrey-helldar" 18 | } 19 | ], 20 | "support": { 21 | "issues": "https://github.com/TheDragonCode/laravel-ide-facades-helper/issues", 22 | "source": "https://github.com/TheDragonCode/laravel-ide-facades-helper" 23 | }, 24 | "funding": [ 25 | { 26 | "type": "github", 27 | "url": "https://github.com/sponsors/TheDragonCode" 28 | }, 29 | { 30 | "type": "open_collective", 31 | "url": "https://opencollective.com/dragon-code" 32 | }, 33 | { 34 | "type": "boosty", 35 | "url": "https://boosty.to/dragon-code" 36 | }, 37 | { 38 | "type": "yoomoney", 39 | "url": "https://yoomoney.ru/to/410012608840929" 40 | } 41 | ], 42 | "require": { 43 | "php": "^7.2 || ^8.0", 44 | "dragon-code/support": "^5.6", 45 | "illuminate/console": "^7.0 || ^8.0 || ^9.0", 46 | "illuminate/container": "^7.0 || ^8.0 || ^9.0", 47 | "illuminate/contracts": "^7.0 || ^8.0 || ^9.0", 48 | "illuminate/support": "^7.0 || ^8.0 || ^9.0", 49 | "illuminate/view": "^7.0 || ^8.0 || ^9.0", 50 | "phpdocumentor/reflection-docblock": "^5.1", 51 | "symfony/finder": "^5.0 || ^6.0" 52 | }, 53 | "require-dev": { 54 | "composer/composer": "^2.0" 55 | }, 56 | "conflict": { 57 | "andrey-helldar/laravel-ide-facades-helper": "*" 58 | }, 59 | "minimum-stability": "stable", 60 | "prefer-stable": true, 61 | "autoload": { 62 | "psr-4": { 63 | "DragonCode\\LaravelIdeFacadesHelper\\": "src" 64 | }, 65 | "classmap": [ 66 | "src" 67 | ] 68 | }, 69 | "config": { 70 | "allow-plugins": { 71 | "dragon-code/codestyler": true, 72 | "ergebnis/composer-normalize": true, 73 | "friendsofphp/php-cs-fixer": true 74 | }, 75 | "preferred-install": "dist", 76 | "sort-packages": true 77 | }, 78 | "extra": { 79 | "laravel": { 80 | "providers": [ 81 | "DragonCode\\LaravelIdeFacadesHelper\\ServiceProvider" 82 | ] 83 | } 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /config/ide-helper.php: -------------------------------------------------------------------------------- 1 | '_ide_helper.php', 14 | 15 | /* 16 | |-------------------------------------------------------------------------- 17 | | Facades locations to include 18 | |-------------------------------------------------------------------------- 19 | | 20 | | Define in which directories the ide-helper:models command should look 21 | | for models. 22 | | 23 | | To process all files, specify "*". 24 | | 25 | */ 26 | 27 | 'facade_locations' => [ 28 | 'app/Facades', 29 | ], 30 | 31 | /* 32 | |-------------------------------------------------------------------------- 33 | | Method visibility types to include 34 | |-------------------------------------------------------------------------- 35 | | 36 | | Determines what types of methods will be generated. 37 | | 38 | */ 39 | 40 | 'facades_visibility' => ReflectionMethod::IS_PUBLIC, 41 | ]; 42 | -------------------------------------------------------------------------------- /resources/views/facades.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | // @formatter:off 4 | 5 | /** 6 | * A helper file for Laravel, to provide autocomplete information to your IDE 7 | * Generated for Laravel on . 8 | * 9 | * This file should not be included in your code, only analyzed by your IDE! 10 | * 11 | * @author Andrey Helldar 12 | * 13 | * @see https://github.com/TheDragonCode/laravel-ide-facades-helper 14 | */ 15 | 16 | 17 | 18 | 19 | $classes) { ?> 20 | namespace 21 | { 22 | 23 | 24 | class getFacadeBasename(); ?> 25 | 26 | { 27 | methods() as $method) { ?> 28 | 29 | /** 30 | getDescription()) { ?> 31 | * 32 | 33 | * 34 | 35 | parameters()) { ?> 36 | 37 | * @param getType(true); ?> isVariadic() ? '...' : ''; ?>$getName(); ?> 38 | 39 | 40 | * 41 | 42 | * @return getType(); ?> 43 | 44 | * @static 45 | */ 46 | public static function getName(); ?>(join(true); ?>) 47 | { 48 | /** @var \getInstanceClassname(); ?> $instance */ 49 | getType() === 'void' ? '' : 'return '; ?>$instance->getName(); ?>(join(); ?>); 50 | } 51 | 52 | } 53 | 54 | } 55 | 56 | -------------------------------------------------------------------------------- /src/Commands/Generate.php: -------------------------------------------------------------------------------- 1 | processor = $processor; 34 | $this->finder = $finder; 35 | 36 | $this->prepare(); 37 | $this->generate(); 38 | $this->showMessage(); 39 | } 40 | 41 | protected function prepare() 42 | { 43 | $this->finder->in($this->directories()); 44 | } 45 | 46 | /** 47 | * @throws \Illuminate\Contracts\Container\BindingResolutionException 48 | */ 49 | protected function generate(): void 50 | { 51 | $this->processor 52 | ->items($this->finder->get()) 53 | ->store(); 54 | } 55 | 56 | protected function directories(): array 57 | { 58 | return Config::get('ide-helper.facade_locations', ['app']); 59 | } 60 | 61 | protected function showMessage(): void 62 | { 63 | $this->info('Facades information was written to ' . $this->filename()); 64 | } 65 | 66 | protected function filename(): string 67 | { 68 | return $this->processor->filename(); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/Entities/Instance.php: -------------------------------------------------------------------------------- 1 | facade = $facade; 26 | $this->instance = $this->resolve($facade); 27 | } 28 | 29 | /** 30 | * @throws ReflectionException 31 | * 32 | * @return \DragonCode\LaravelIdeFacadesHelper\Entities\Method[] 33 | */ 34 | public function methods(): array 35 | { 36 | return array_values(array_map(static function (ReflectionMethod $method) { 37 | return Method::make($method); 38 | }, $this->getFilteredMethods())); 39 | } 40 | 41 | public function getNamespace(): string 42 | { 43 | return (string) Str::of($this->facade) 44 | ->beforeLast('\\'); 45 | } 46 | 47 | public function getFacadeBasename(): string 48 | { 49 | return class_basename($this->facade); 50 | } 51 | 52 | public function getInstanceClassname(): string 53 | { 54 | return get_class($this->instance); 55 | } 56 | 57 | /** 58 | * @throws ReflectionException 59 | * 60 | * @return array 61 | */ 62 | protected function getFilteredMethods(): array 63 | { 64 | $methods = $this->reflect()->getMethods( 65 | $this->methodsVisibility() 66 | ); 67 | 68 | return array_values(array_filter($methods, function ($method) { 69 | return ! Str::of($method->getName())->startsWith('__'); 70 | })); 71 | } 72 | 73 | /** 74 | * @throws ReflectionException 75 | * 76 | * @return ReflectionClass 77 | */ 78 | protected function reflect(): ReflectionClass 79 | { 80 | return new ReflectionClass($this->instance); 81 | } 82 | 83 | protected function resolve($class) 84 | { 85 | $facade = $class::getFacadeRoot(); 86 | 87 | return is_object($facade) ? $facade : $this->app($facade); 88 | } 89 | 90 | protected function methodsVisibility(): int 91 | { 92 | return Config::get('ide-helper.facades_visibility', ReflectionMethod::IS_PUBLIC); 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /src/Entities/Method.php: -------------------------------------------------------------------------------- 1 | method = $method; 24 | 25 | $this->doc = $this->getDocBlock($method); 26 | } 27 | 28 | public function getType(): ?string 29 | { 30 | if ($return_type = $this->method->getReturnType()) { 31 | $type = $return_type instanceof ReflectionNamedType 32 | ? $return_type->getName() 33 | : (string) $return_type; 34 | } 35 | else { 36 | $type = $this->doc->getReturnType(); 37 | } 38 | 39 | return $this->castClassname($type); 40 | } 41 | 42 | public function getName(): string 43 | { 44 | return $this->method->getName(); 45 | } 46 | 47 | public function getDescription(): ?string 48 | { 49 | return $this->doc->getSummary(); 50 | } 51 | 52 | /** 53 | * @return \DragonCode\LaravelIdeFacadesHelper\Entities\Parameter[] 54 | */ 55 | public function parameters() 56 | { 57 | return array_map(function (ReflectionParameter $parameter) { 58 | return Parameter::make($parameter, $this->doc); 59 | }, $this->getParameters()); 60 | } 61 | 62 | public function join(bool $with_types = false): ?string 63 | { 64 | $params = []; 65 | 66 | foreach ($this->parameters() as $parameter) { 67 | $variadic = $parameter->isVariadic() ? '...' : ''; 68 | 69 | if (! $with_types) { 70 | $params[] = $variadic . '$' . $parameter->getName(); 71 | 72 | continue; 73 | } 74 | 75 | $str = $parameter->getType() . $variadic . '$' . $parameter->getName(); 76 | 77 | if ($parameter->isOptional() && $parameter->isDefaultValueAvailable()) { 78 | $str .= ' = ' . $parameter->getValue(); 79 | } 80 | 81 | $params[] = $str; 82 | } 83 | 84 | return implode(', ', $params); 85 | } 86 | 87 | protected function castClassname(?string $value = null): ?string 88 | { 89 | if ($value === 'self' || $value === 'static') { 90 | return Str::start($this->method->class, '\\'); 91 | } 92 | 93 | return class_exists($value) || interface_exists($value) 94 | ? Str::start($value, '\\') 95 | : $value; 96 | } 97 | 98 | protected function getParameters() 99 | { 100 | return $this->method->getParameters(); 101 | } 102 | 103 | protected function getDocBlock(ReflectionMethod $method): DocBlock 104 | { 105 | return DocBlock::make( 106 | $method->getDocComment() ?: null 107 | ); 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /src/Entities/Parameter.php: -------------------------------------------------------------------------------- 1 | parameter = $parameter; 25 | 26 | $this->doc = $doc; 27 | } 28 | 29 | public function getName(): string 30 | { 31 | return $this->parameter->getName(); 32 | } 33 | 34 | public function getType(bool $mixed = false): string 35 | { 36 | if ($type = $this->parameter->getType()) { 37 | $name = $type->getName(); 38 | 39 | return InstanceHelper::exists($name) 40 | ? Str::start($name, '\\') . ' ' 41 | : $name . ' '; 42 | } 43 | 44 | return $mixed ? 'mixed ' : ''; 45 | } 46 | 47 | public function getValue(): string 48 | { 49 | return $this->castParameterValue( 50 | $this->getDefaultValue() 51 | ); 52 | } 53 | 54 | public function isOptional(): bool 55 | { 56 | return $this->parameter->isOptional(); 57 | } 58 | 59 | public function isDefaultValueAvailable(): bool 60 | { 61 | return $this->parameter->isDefaultValueAvailable(); 62 | } 63 | 64 | public function isVariadic(): bool 65 | { 66 | return $this->parameter->isVariadic(); 67 | } 68 | 69 | public function getDefaultValue() 70 | { 71 | return $this->parameter->getDefaultValue(); 72 | } 73 | 74 | protected function castParameterValue($value): string 75 | { 76 | if (is_bool($value)) { 77 | return Boolean::convertToString($value); 78 | } 79 | 80 | if (is_array($value)) { 81 | return '[]'; 82 | } 83 | 84 | if (is_null($value)) { 85 | return 'null'; 86 | } 87 | 88 | if (is_numeric($value)) { 89 | return $value; 90 | } 91 | 92 | return "'" . trim($value) . "'"; 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /src/ServiceProvider.php: -------------------------------------------------------------------------------- 1 | bootCommands(); 13 | $this->bootPublishes(); 14 | $this->bootViews(); 15 | } 16 | 17 | public function register() 18 | { 19 | $this->registerConfig(); 20 | } 21 | 22 | protected function bootCommands(): void 23 | { 24 | $this->commands([ 25 | Generate::class, 26 | ]); 27 | } 28 | 29 | protected function bootPublishes(): void 30 | { 31 | $this->publishes([ 32 | __DIR__ . '/../config/ide-helper.php' => $this->app->configPath('ide-helper.php'), 33 | ], 'config'); 34 | } 35 | 36 | protected function bootViews(): void 37 | { 38 | $this->loadViewsFrom( 39 | __DIR__ . '/../resources/views', 40 | 'laravel-ide-facades-helper' 41 | ); 42 | } 43 | 44 | protected function registerConfig(): void 45 | { 46 | $this->mergeConfigFrom(__DIR__ . '/../config/ide-helper.php', 'ide-helper'); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/Services/BaseService.php: -------------------------------------------------------------------------------- 1 | app()->basePath($path); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Services/ComposerClassMap.php: -------------------------------------------------------------------------------- 1 | composer = require $this->autoloadPath(); 20 | } 21 | 22 | public function classes(): array 23 | { 24 | return array_merge($this->listClasses(), $this->listClassesInPsrMaps()); 25 | } 26 | 27 | protected function listClasses(): array 28 | { 29 | return array_map(static function ($path) { 30 | return realpath($path); 31 | }, $this->composer->getClassMap()); 32 | } 33 | 34 | protected function listClassesInPsrMaps(): array 35 | { 36 | $prefixes = array_merge( 37 | $this->composer->getPrefixes(), 38 | $this->composer->getPrefixesPsr4() 39 | ); 40 | 41 | $classes = []; 42 | 43 | foreach ($prefixes as $namespace => $directories) { 44 | $files = $this->finder() 45 | ->in($directories) 46 | ->files() 47 | ->name('*.php'); 48 | 49 | foreach ($files as $file) { 50 | if ($file instanceof SplFileInfo) { 51 | $fqcn = $this->getFullyQualifiedClassNameFromFile($file); 52 | 53 | $classes[$fqcn] = $file->getRealPath(); 54 | } 55 | } 56 | } 57 | 58 | return $classes; 59 | } 60 | 61 | protected function getFullyQualifiedClassNameFromFile(SplFileInfo $file): string 62 | { 63 | return (string) Str::of($file->getRealPath()) 64 | ->after($this->basePath()) 65 | ->replaceFirst('app' . DIRECTORY_SEPARATOR, $this->app()->getNamespace()) 66 | ->replaceLast('.php', '') 67 | ->trim(' \\') 68 | ->title(); 69 | } 70 | 71 | protected function finder(): SymfonyFinder 72 | { 73 | return new SymfonyFinder(); 74 | } 75 | 76 | protected function autoloadPath() 77 | { 78 | return $this->app()->basePath('/vendor/autoload.php'); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/Services/DocBlock.php: -------------------------------------------------------------------------------- 1 | doc = $this->factory()->create( 18 | $docblock ?: '/** */' 19 | ); 20 | } 21 | 22 | public function getSummary(): ?string 23 | { 24 | return $this->doc->getSummary(); 25 | } 26 | 27 | public function getReturnType(): ?string 28 | { 29 | return $this->doc->hasTag('return') 30 | ? $this->doc->getTagsByName('return')[0]->getName() 31 | : null; 32 | } 33 | 34 | protected function factory(): DocBlockFactory 35 | { 36 | return DocBlockFactory::createInstance(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/Services/Finder.php: -------------------------------------------------------------------------------- 1 | composer = $composer; 19 | } 20 | 21 | /** 22 | * @param array|string $directories 23 | * 24 | * @return $this 25 | */ 26 | public function in($directories = '*'): self 27 | { 28 | $this->in = $this->prepareDirectories($directories); 29 | 30 | return $this; 31 | } 32 | 33 | public function get() 34 | { 35 | return array_keys(array_unique($this->filter())); 36 | } 37 | 38 | protected function filter(): array 39 | { 40 | return array_filter($this->composer->classes(), function ($path, $class) { 41 | return $this->allowPath($path) && $this->allowExtends($class); 42 | }, ARRAY_FILTER_USE_BOTH); 43 | } 44 | 45 | protected function allowPath(string $path): bool 46 | { 47 | return Str::startsWith($path, $this->in); 48 | } 49 | 50 | protected function allowExtends(string $class): bool 51 | { 52 | return is_subclass_of($class, Facade::class); 53 | } 54 | 55 | /** 56 | * @param array|string $directories 57 | * 58 | * @return array 59 | */ 60 | protected function prepareDirectories($directories = '*'): array 61 | { 62 | if ($directories === '*' || $directories === ['*']) { 63 | return [$this->basePath()]; 64 | } 65 | 66 | return array_map(function ($directory) { 67 | return $this->basePath($directory); 68 | }, $directories); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/Services/Processor.php: -------------------------------------------------------------------------------- 1 | addItem( 22 | Instance::make($item) 23 | ); 24 | } 25 | 26 | return $this; 27 | } 28 | 29 | /** 30 | * @throws \Illuminate\Contracts\Container\BindingResolutionException 31 | */ 32 | public function store() 33 | { 34 | file_put_contents( 35 | $this->storePath(), 36 | $this->view('laravel-ide-facades-helper::facades', $this->items) 37 | ); 38 | } 39 | 40 | public function filename(): string 41 | { 42 | $filename = Config::get('ide-helper.filename'); 43 | 44 | return sprintf('%s_facades.%s', $this->filePrefix($filename), $this->extension($filename)); 45 | } 46 | 47 | protected function filePrefix(string $filename): string 48 | { 49 | return pathinfo($filename, PATHINFO_FILENAME) ?: '_ide_helper'; 50 | } 51 | 52 | protected function extension(string $filename): string 53 | { 54 | return pathinfo($filename, PATHINFO_EXTENSION) ?: 'php'; 55 | } 56 | 57 | /** 58 | * @throws \Illuminate\Contracts\Container\BindingResolutionException 59 | * 60 | * @return string 61 | */ 62 | protected function storePath(): string 63 | { 64 | return $this->app()->basePath( 65 | $this->filename() 66 | ); 67 | } 68 | 69 | /** 70 | * @param \Illuminate\Support\Facades\Facade|string $classname 71 | * 72 | * @return stdClass 73 | */ 74 | protected function resolve(string $classname) 75 | { 76 | return $classname::getFacadeRoot(); 77 | } 78 | 79 | protected function addItem(Instance $instance): void 80 | { 81 | $namespace = $instance->getNamespace(); 82 | 83 | $this->makeItemsNamespace($namespace); 84 | 85 | $this->items[$namespace][] = $instance; 86 | } 87 | 88 | protected function makeItemsNamespace(string $namespace): void 89 | { 90 | if (! Arr::has($this->items, $namespace)) { 91 | Arr::set($this->items, $namespace, []); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /src/Traits/Containable.php: -------------------------------------------------------------------------------- 1 | containerMake($abstract, $parameters); 26 | } 27 | 28 | /** 29 | * @param string $view 30 | * @param $items 31 | * 32 | * @throws \Illuminate\Contracts\Container\BindingResolutionException 33 | * 34 | * @return string 35 | */ 36 | protected function view(string $view, $items): string 37 | { 38 | $version = $this->version(); 39 | 40 | return $this 41 | ->containerMake(ViewFactory::class) 42 | ->make($view, compact('version', 'items')) 43 | ->render(); 44 | } 45 | 46 | /** 47 | * @param null $abstract 48 | * @param array $parameters 49 | * 50 | * @throws \Illuminate\Contracts\Container\BindingResolutionException 51 | * 52 | * @return mixed|object 53 | */ 54 | protected function containerMake($abstract = null, array $parameters = []) 55 | { 56 | return Container::getInstance()->make($abstract, $parameters); 57 | } 58 | 59 | protected function version(): string 60 | { 61 | return $this->app()->version(); 62 | } 63 | } 64 | --------------------------------------------------------------------------------