gitextract_eam4n9mt/ ├── .ameba.yml ├── .crystal-version ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── config.yml │ └── workflows/ │ ├── ci.yml │ └── docs.yml ├── .gitignore ├── .prettierrc ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── UPGRADE_NOTES.md ├── bin/ │ ├── lucky.exec.cr │ ├── lucky.gen.action.api.cr │ ├── lucky.gen.action.browser.cr │ ├── lucky.gen.action.cr │ ├── lucky.gen.component.cr │ ├── lucky.gen.page.cr │ ├── lucky.gen.secret_key.cr │ ├── lucky.gen.task.cr │ └── lucky.watch.cr ├── bunfig.toml ├── docker-compose.yml ├── public/ │ ├── bun-manifest.json │ ├── mix-manifest.json │ └── vite-manifest.json ├── script/ │ ├── docs │ ├── setup │ └── test ├── shard.edge.yml ├── shard.override.yml ├── shard.yml ├── spec/ │ ├── bun/ │ │ ├── config_spec.cr │ │ └── lucky.test.js │ ├── charms/ │ │ ├── cookie_spec.cr │ │ ├── hash_spec.cr │ │ ├── string_spec.cr │ │ └── uuid_spec.cr │ ├── fixtures/ │ │ └── plain_text │ ├── lucky/ │ │ ├── action_cookies_and_sessions_spec.cr │ │ ├── action_pipes_spec.cr │ │ ├── action_redirect_spec.cr │ │ ├── action_rendering_spec.cr │ │ ├── action_route_params_spec.cr │ │ ├── action_spec.cr │ │ ├── asset_helpers_spec.cr │ │ ├── assignable_spec.cr │ │ ├── base_http_client_spec.cr │ │ ├── base_tags_spec.cr │ │ ├── component_spec.cr │ │ ├── cookies/ │ │ │ ├── cookie_jar_spec.cr │ │ │ ├── flash_store_spec.cr │ │ │ └── session_spec.cr │ │ ├── custom_tags_spec.cr │ │ ├── data_response_spec.cr │ │ ├── dev_asset_cache_handler_spec.cr │ │ ├── error_handling_spec.cr │ │ ├── errors_spec.cr │ │ ├── expose_spec.cr │ │ ├── fallback_action_spec.cr │ │ ├── file_response_spec.cr │ │ ├── force_ssl_handler_spec.cr │ │ ├── forgery_protection_helpers_spec.cr │ │ ├── form_helpers_spec.cr │ │ ├── format_edge_cases_spec.cr │ │ ├── format_integration_spec.cr │ │ ├── html_page_spec.cr │ │ ├── http_method_override_handler_spec.cr │ │ ├── infer_page_spec.cr │ │ ├── link_helpers_spec.cr │ │ ├── log_handler_spec.cr │ │ ├── maximum_request_size_handler_spec.cr │ │ ├── memoize_spec.cr │ │ ├── mime_type_spec.cr │ │ ├── namespaced_action_spec.cr │ │ ├── number_to_currency_spec.cr │ │ ├── paginator/ │ │ │ ├── backend_helpers_spec.cr │ │ │ ├── components_spec.cr │ │ │ └── paginator_spec.cr │ │ ├── param_parser_spec.cr │ │ ├── params_spec.cr │ │ ├── pretty_log_formatter_spec.cr │ │ ├── protect_from_forgery_spec.cr │ │ ├── quick_def_spec.cr │ │ ├── rate_limit_spec.cr │ │ ├── remote_ip_handler_spec.cr │ │ ├── render_if_defined_spec.cr │ │ ├── request_expectations_spec.cr │ │ ├── request_type_helper_spec.cr │ │ ├── root_spec.cr │ │ ├── route_handler_format_spec.cr │ │ ├── route_helper_format_spec.cr │ │ ├── route_helper_spec.cr │ │ ├── route_not_found_error_spec.cr │ │ ├── route_not_found_handler_spec.cr │ │ ├── route_prefix_spec.cr │ │ ├── router_spec.cr │ │ ├── secure_headers_spec.cr │ │ ├── serializable_spec.cr │ │ ├── specialty_tags_spec.cr │ │ ├── static_compression_handler_spec.cr │ │ ├── static_file_handler_spec.cr │ │ ├── subdomain_spec.cr │ │ ├── support/ │ │ │ ├── message_encrypter_spec.cr │ │ │ └── message_verifier_spec.cr │ │ ├── tag_defaults_spec.cr │ │ ├── text_helpers/ │ │ │ ├── cycle_spec.cr │ │ │ ├── excerpts_spec.cr │ │ │ ├── highlight_spec.cr │ │ │ ├── pluralize_spec.cr │ │ │ ├── simple_format_spec.cr │ │ │ ├── svg_inliner_spec.cr │ │ │ ├── text_helpers_spec.cr │ │ │ ├── to_sentence_spec.cr │ │ │ ├── truncate_spec.cr │ │ │ └── word_wrap_spec.cr │ │ ├── text_response_spec.cr │ │ ├── time_helpers_spec.cr │ │ ├── uploaded_file_spec.cr │ │ ├── url_format_spec.cr │ │ ├── url_helpers_spec.cr │ │ ├── verify_accepts_format_spec.cr │ │ └── welcome_page_spec.cr │ ├── spec_helper.cr │ ├── support/ │ │ ├── cleanup_helper.cr │ │ ├── context_helper.cr │ │ ├── exec_template.cr.template │ │ ├── generator_helper.cr │ │ ├── multipart_helper.cr │ │ ├── raw_log_formatter.cr │ │ ├── routes_helper.cr │ │ ├── test_action.cr │ │ ├── test_fallback_action.cr │ │ └── test_server.cr │ └── tasks/ │ ├── exec_spec.cr │ ├── gen/ │ │ ├── action_spec.cr │ │ ├── component_spec.cr │ │ ├── page_spec.cr │ │ ├── secret_key_base_spec.cr │ │ └── task_spec.cr │ └── routes_spec.cr ├── src/ │ ├── bun/ │ │ ├── bake.js │ │ ├── config.cr │ │ ├── lucky.js │ │ └── plugins/ │ │ ├── aliases.js │ │ ├── cssGlobs.js │ │ ├── index.js │ │ └── jsGlobs.js │ ├── charms/ │ │ ├── bool_extensions.cr │ │ ├── cookie.cr │ │ ├── hash_extensions.cr │ │ ├── int16_extensions.cr │ │ ├── int32_extensions.cr │ │ ├── int64_extensions.cr │ │ ├── object.cr │ │ ├── request_extensions.cr │ │ ├── static_file_handler.cr │ │ ├── string_extensions.cr │ │ └── uuid_extensions.cr │ ├── lucky/ │ │ ├── action.cr │ │ ├── action_delegates.cr │ │ ├── action_pipes.cr │ │ ├── allowed_in_tags.cr │ │ ├── asset_helpers.cr │ │ ├── assignable.cr │ │ ├── base_app_server.cr │ │ ├── base_component.cr │ │ ├── base_http_client.cr │ │ ├── base_log_formatter.cr │ │ ├── context_extensions.cr │ │ ├── cookies/ │ │ │ ├── cookie_jar.cr │ │ │ ├── flash_store.cr │ │ │ └── session.cr │ │ ├── data_response.cr │ │ ├── dev_asset_cache_handler.cr │ │ ├── enforce_underscored_route.cr │ │ ├── error_action.cr │ │ ├── error_handler.cr │ │ ├── errors.cr │ │ ├── events/ │ │ │ ├── pipe_event.cr │ │ │ └── request_complete_event.cr │ │ ├── exception_page.cr │ │ ├── exposable.cr │ │ ├── file_response.cr │ │ ├── force_ssl_handler.cr │ │ ├── form_data.cr │ │ ├── form_data_parser.cr │ │ ├── format.cr │ │ ├── format_registry.cr │ │ ├── html_builder.cr │ │ ├── html_page.cr │ │ ├── http_method_override_handler.cr │ │ ├── json_body_parser.cr │ │ ├── log_handler.cr │ │ ├── logger_helpers.cr │ │ ├── maximum_request_size_handler.cr │ │ ├── memoizable.cr │ │ ├── mime_type.cr │ │ ├── mount_component.cr │ │ ├── page_helpers/ │ │ │ ├── helperful_paragraph_error.cr │ │ │ ├── html_text_helpers.cr │ │ │ ├── number_to_currency.cr │ │ │ ├── render_if_defined.cr │ │ │ ├── svg_inliner.cr │ │ │ ├── text_helpers.cr │ │ │ ├── time_helpers.cr │ │ │ └── url_helpers.cr │ │ ├── paginator/ │ │ │ ├── backend_helpers.cr │ │ │ ├── components/ │ │ │ │ ├── bootstrap_nav.cr │ │ │ │ ├── bulma_nav.cr │ │ │ │ └── simple_nav.cr │ │ │ ├── current_page.cr │ │ │ ├── gap.cr │ │ │ ├── page.cr │ │ │ └── paginator.cr │ │ ├── param_helpers.cr │ │ ├── param_parser.cr │ │ ├── params.cr │ │ ├── pretty_log_formatter.cr │ │ ├── protect_from_forgery.cr │ │ ├── quick_def.cr │ │ ├── rate_limit.cr │ │ ├── redirectable.cr │ │ ├── redirectable_turbolinks_support.cr │ │ ├── remote_ip_handler.cr │ │ ├── renderable.cr │ │ ├── renderable_error.cr │ │ ├── request_body_limit.cr │ │ ├── request_body_reader.cr │ │ ├── request_expectations.cr │ │ ├── request_id_handler.cr │ │ ├── request_type_helpers.cr │ │ ├── response.cr │ │ ├── routable.cr │ │ ├── route_handler.cr │ │ ├── route_helper.cr │ │ ├── route_inferrer.cr │ │ ├── route_not_found_handler.cr │ │ ├── router.cr │ │ ├── secure_headers/ │ │ │ ├── disable_floc.cr │ │ │ ├── set_csp_guard.cr │ │ │ ├── set_frame_guard.cr │ │ │ ├── set_sniff_guard.cr │ │ │ └── set_xss_guard.cr │ │ ├── serializable.cr │ │ ├── server.cr │ │ ├── server_settings.cr │ │ ├── skip_route_style_check.cr │ │ ├── static_compression_handler.cr │ │ ├── subdomain.cr │ │ ├── support/ │ │ │ ├── message_encryptor.cr │ │ │ └── message_verifier.cr │ │ ├── tags/ │ │ │ ├── _check_tag_content.cr │ │ │ ├── base_tags.cr │ │ │ ├── bun_reload_tag.cr │ │ │ ├── custom_tags.cr │ │ │ ├── forgery_protection_helpers.cr │ │ │ ├── form_helpers.cr │ │ │ ├── link_helpers.cr │ │ │ ├── live_reload_tag.cr │ │ │ ├── specialty_tags.cr │ │ │ └── tag_defaults.cr │ │ ├── text_response.cr │ │ ├── uploaded_file.cr │ │ ├── verify_accepts_format.cr │ │ ├── version.cr │ │ └── welcome_page.cr │ ├── lucky.cr │ └── run_macros/ │ ├── asset_manifest_builder.cr │ └── missing_asset.cr ├── tasks/ │ ├── exec.cr │ ├── exec_template.cr.template │ ├── gen/ │ │ ├── action/ │ │ │ ├── action_generator.cr │ │ │ ├── api.cr │ │ │ └── browser.cr │ │ ├── component.cr │ │ ├── page.cr │ │ ├── secret_key.cr │ │ ├── task.cr │ │ └── templates/ │ │ ├── action/ │ │ │ └── action.cr.ecr │ │ ├── component/ │ │ │ └── component.cr.ecr │ │ ├── page/ │ │ │ └── page.cr.ecr │ │ └── task/ │ │ └── task.cr.ecr │ ├── routes.cr │ └── watch.cr └── tasks.cr