piko-lite-box 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. checksums.yaml +7 -0
  2. data/hanami-3.0.1/CHANGELOG.md +1701 -0
  3. data/hanami-3.0.1/LICENSE +20 -0
  4. data/hanami-3.0.1/README.md +89 -0
  5. data/hanami-3.0.1/hanami.gemspec +49 -0
  6. data/hanami-3.0.1/lib/hanami/app.rb +197 -0
  7. data/hanami-3.0.1/lib/hanami/boot.rb +5 -0
  8. data/hanami-3.0.1/lib/hanami/config/actions/content_security_policy.rb +140 -0
  9. data/hanami-3.0.1/lib/hanami/config/actions/cookies.rb +57 -0
  10. data/hanami-3.0.1/lib/hanami/config/actions/sessions.rb +83 -0
  11. data/hanami-3.0.1/lib/hanami/config/actions.rb +189 -0
  12. data/hanami-3.0.1/lib/hanami/config/assets.rb +84 -0
  13. data/hanami-3.0.1/lib/hanami/config/console.rb +79 -0
  14. data/hanami-3.0.1/lib/hanami/config/db.rb +35 -0
  15. data/hanami-3.0.1/lib/hanami/config/i18n.rb +138 -0
  16. data/hanami-3.0.1/lib/hanami/config/logger.rb +207 -0
  17. data/hanami-3.0.1/lib/hanami/config/null_config.rb +17 -0
  18. data/hanami-3.0.1/lib/hanami/config/router.rb +48 -0
  19. data/hanami-3.0.1/lib/hanami/config/views.rb +103 -0
  20. data/hanami-3.0.1/lib/hanami/config.rb +564 -0
  21. data/hanami-3.0.1/lib/hanami/constants.rb +62 -0
  22. data/hanami-3.0.1/lib/hanami/env.rb +52 -0
  23. data/hanami-3.0.1/lib/hanami/errors.rb +41 -0
  24. data/hanami-3.0.1/lib/hanami/extensions/action/i18n_helper.rb +64 -0
  25. data/hanami-3.0.1/lib/hanami/extensions/action/name_inferrer.rb +34 -0
  26. data/hanami-3.0.1/lib/hanami/extensions/action/slice_configured_action.rb +190 -0
  27. data/hanami-3.0.1/lib/hanami/extensions/action.rb +147 -0
  28. data/hanami-3.0.1/lib/hanami/extensions/db/repo.rb +108 -0
  29. data/hanami-3.0.1/lib/hanami/extensions/mailer/slice_configured_mailer.rb +134 -0
  30. data/hanami-3.0.1/lib/hanami/extensions/mailer.rb +28 -0
  31. data/hanami-3.0.1/lib/hanami/extensions/operation/slice_configured_db_operation.rb +90 -0
  32. data/hanami-3.0.1/lib/hanami/extensions/operation.rb +33 -0
  33. data/hanami-3.0.1/lib/hanami/extensions/router/errors.rb +58 -0
  34. data/hanami-3.0.1/lib/hanami/extensions/view/context.rb +298 -0
  35. data/hanami-3.0.1/lib/hanami/extensions/view/part.rb +92 -0
  36. data/hanami-3.0.1/lib/hanami/extensions/view/scope.rb +36 -0
  37. data/hanami-3.0.1/lib/hanami/extensions/view/slice_configured_context.rb +73 -0
  38. data/hanami-3.0.1/lib/hanami/extensions/view/slice_configured_helpers.rb +55 -0
  39. data/hanami-3.0.1/lib/hanami/extensions/view/slice_configured_part.rb +73 -0
  40. data/hanami-3.0.1/lib/hanami/extensions/view/slice_configured_view.rb +243 -0
  41. data/hanami-3.0.1/lib/hanami/extensions/view/standard_helpers.rb +26 -0
  42. data/hanami-3.0.1/lib/hanami/extensions/view.rb +38 -0
  43. data/hanami-3.0.1/lib/hanami/extensions.rb +30 -0
  44. data/hanami-3.0.1/lib/hanami/helpers/assets_helper.rb +804 -0
  45. data/hanami-3.0.1/lib/hanami/helpers/form_helper/form_builder.rb +1389 -0
  46. data/hanami-3.0.1/lib/hanami/helpers/form_helper/values.rb +75 -0
  47. data/hanami-3.0.1/lib/hanami/helpers/form_helper.rb +213 -0
  48. data/hanami-3.0.1/lib/hanami/helpers/i18n_helper.rb +241 -0
  49. data/hanami-3.0.1/lib/hanami/logger/rack_formatter.rb +73 -0
  50. data/hanami-3.0.1/lib/hanami/logger/sql_formatter.rb +80 -0
  51. data/hanami-3.0.1/lib/hanami/logger/sql_logger.rb +48 -0
  52. data/hanami-3.0.1/lib/hanami/middleware/assets.rb +21 -0
  53. data/hanami-3.0.1/lib/hanami/middleware/content_security_policy_nonce.rb +53 -0
  54. data/hanami-3.0.1/lib/hanami/middleware/public_errors_app.rb +75 -0
  55. data/hanami-3.0.1/lib/hanami/middleware/render_errors.rb +90 -0
  56. data/hanami-3.0.1/lib/hanami/port.rb +45 -0
  57. data/hanami-3.0.1/lib/hanami/prepare.rb +5 -0
  58. data/hanami-3.0.1/lib/hanami/provider/source.rb +16 -0
  59. data/hanami-3.0.1/lib/hanami/provider_registrar.rb +28 -0
  60. data/hanami-3.0.1/lib/hanami/providers/assets.rb +28 -0
  61. data/hanami-3.0.1/lib/hanami/providers/db/adapter.rb +75 -0
  62. data/hanami-3.0.1/lib/hanami/providers/db/adapters.rb +66 -0
  63. data/hanami-3.0.1/lib/hanami/providers/db/config.rb +44 -0
  64. data/hanami-3.0.1/lib/hanami/providers/db/gateway.rb +87 -0
  65. data/hanami-3.0.1/lib/hanami/providers/db/sql_adapter.rb +100 -0
  66. data/hanami-3.0.1/lib/hanami/providers/db.rb +325 -0
  67. data/hanami-3.0.1/lib/hanami/providers/db_logging.rb +19 -0
  68. data/hanami-3.0.1/lib/hanami/providers/i18n/backend.rb +373 -0
  69. data/hanami-3.0.1/lib/hanami/providers/i18n/locale/en.yml +57 -0
  70. data/hanami-3.0.1/lib/hanami/providers/i18n.rb +114 -0
  71. data/hanami-3.0.1/lib/hanami/providers/inflector.rb +17 -0
  72. data/hanami-3.0.1/lib/hanami/providers/logger.rb +41 -0
  73. data/hanami-3.0.1/lib/hanami/providers/mailers.rb +101 -0
  74. data/hanami-3.0.1/lib/hanami/providers/rack.rb +47 -0
  75. data/hanami-3.0.1/lib/hanami/providers/relations.rb +31 -0
  76. data/hanami-3.0.1/lib/hanami/providers/routes.rb +29 -0
  77. data/hanami-3.0.1/lib/hanami/rake_tasks.rb +54 -0
  78. data/hanami-3.0.1/lib/hanami/routes.rb +146 -0
  79. data/hanami-3.0.1/lib/hanami/settings/composite_store.rb +53 -0
  80. data/hanami-3.0.1/lib/hanami/settings/env_store.rb +32 -0
  81. data/hanami-3.0.1/lib/hanami/settings.rb +234 -0
  82. data/hanami-3.0.1/lib/hanami/setup.rb +6 -0
  83. data/hanami-3.0.1/lib/hanami/slice/router.rb +280 -0
  84. data/hanami-3.0.1/lib/hanami/slice/routes_helper.rb +37 -0
  85. data/hanami-3.0.1/lib/hanami/slice/routing/middleware/stack.rb +216 -0
  86. data/hanami-3.0.1/lib/hanami/slice/routing/resolver.rb +88 -0
  87. data/hanami-3.0.1/lib/hanami/slice/view_name_inferrer.rb +63 -0
  88. data/hanami-3.0.1/lib/hanami/slice.rb +1239 -0
  89. data/hanami-3.0.1/lib/hanami/slice_configurable.rb +72 -0
  90. data/hanami-3.0.1/lib/hanami/slice_name.rb +111 -0
  91. data/hanami-3.0.1/lib/hanami/slice_registrar.rb +215 -0
  92. data/hanami-3.0.1/lib/hanami/universal_logger.rb +250 -0
  93. data/hanami-3.0.1/lib/hanami/version.rb +45 -0
  94. data/hanami-3.0.1/lib/hanami/web/rack_logger.rb +126 -0
  95. data/hanami-3.0.1/lib/hanami/web/welcome.html.erb +584 -0
  96. data/hanami-3.0.1/lib/hanami/web/welcome.rb +46 -0
  97. data/hanami-3.0.1/lib/hanami.rb +276 -0
  98. data/piko-lite-box.gemspec +11 -0
  99. metadata +137 -0
@@ -0,0 +1,207 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/configurable"
4
+ require "dry/logger"
5
+
6
+ module Hanami
7
+ class Config
8
+ # Hanami logger config
9
+ #
10
+ # @api public
11
+ # @since 2.0.0
12
+ class Logger
13
+ include Dry::Configurable
14
+
15
+ # @return [Hanami::SliceName]
16
+ #
17
+ # @api private
18
+ # @since 2.0.0
19
+ attr_reader :app_name
20
+
21
+ # @return [Symbol]
22
+ #
23
+ # @api private
24
+ # @since 2.0.0
25
+ attr_reader :env
26
+
27
+ # @!attribute [rw] level
28
+ # Sets or returns the logger's level.
29
+ #
30
+ # Defaults to `:info` for the production environment and `:debug` for all others.
31
+ # Can be set via the `HANAMI_LOG_LEVEL` environment variable.
32
+ #
33
+ # @return [Symbol]
34
+ #
35
+ # @api public
36
+ # @since 2.0.0
37
+ setting :level
38
+
39
+ # @!attribute [rw] stream
40
+ # Sets or returns the logger's stream.
41
+ #
42
+ # This can be a file path or an `IO`-like object for the logger to write to.
43
+ #
44
+ # Defaults to `"log/test.log"` for the test environment and `$stdout` for all others.
45
+ #
46
+ # @return [String, #write]
47
+ #
48
+ # @api public
49
+ # @since 2.0.0
50
+ setting :stream, default: $stdout
51
+
52
+ # @!attribute [rw] formatter
53
+ # Sets or returns the logger's formatter.
54
+ #
55
+ # This may be a name that matches a formatter registered with `Dry::Logger`, which includes
56
+ # `:string`, `:rack` and `:json`.
57
+ #
58
+ # This may also be an instance of Ruby's built-in `::Logger::Formatter` or any compatible
59
+ # object.
60
+ #
61
+ # Defaults to `:json` for the production environment, and `:rack` for all others.
62
+ #
63
+ # @return [Symbol, ::Logger::Formatter]
64
+ #
65
+ # @api public
66
+ # @since 2.0.0
67
+ setting :formatter, default: :string
68
+
69
+ # @!attribute [rw] template
70
+ # Sets or returns log entry string template
71
+ #
72
+ # Defaults to `false`.
73
+ #
74
+ # @return [Boolean]
75
+ #
76
+ # @api public
77
+ # @since 2.0.0
78
+ setting :template, default: :details
79
+
80
+ # @!attribute [rw] filters
81
+ # Sets or returns an array of attribute names to filter from logs.
82
+ #
83
+ # Defaults to `["_csrf", "password", "password_confirmation"]`. If you want to preserve
84
+ # these defaults, append to this array rather than reassigning it.
85
+ #
86
+ # @return [Array<String>]
87
+ #
88
+ # @api public
89
+ # @since 2.0.0
90
+ setting :filters, default: %w[_csrf password password_confirmation].freeze
91
+
92
+ # @!attribute [rw] logger_constructor
93
+ # Sets or returns the constructor proc to use for the logger instantiation.
94
+ #
95
+ # Defaults to either `Config#production_logger` or `Config#development_logger`
96
+ #
97
+ # @api public
98
+ # @since 2.0.0
99
+ setting :logger_constructor
100
+
101
+ # @!attribute [rw] options
102
+ # Sets or returns a hash of options to pass to the {logger_constructor} when initializing
103
+ # the logger.
104
+ #
105
+ # Defaults to `{}`
106
+ #
107
+ # @return [Hash]
108
+ #
109
+ # @api public
110
+ # @since 2.0.0
111
+ setting :options, default: {}
112
+
113
+ # Returns a new `Logger` config.
114
+ #
115
+ # You should not need to initialize this directly, instead use {Hanami::Config#logger}.
116
+ #
117
+ # @param env [Symbol] the Hanami env
118
+ # @param app_name [Hanami::SliceName]
119
+ #
120
+ # @api private
121
+ def initialize(env:, app_name:)
122
+ @app_name = app_name
123
+ @env = env
124
+
125
+ case env
126
+ when :development
127
+ config.level = :debug
128
+ config.options = {colorize: true}
129
+ config.logger_constructor = method(:development_logger)
130
+ when :test
131
+ config.level = :debug
132
+ config.stream = File.join("log", "#{env}.log")
133
+ config.logger_constructor = method(:development_logger)
134
+ else
135
+ config.level = :info
136
+ config.formatter = :json
137
+ config.logger_constructor = method(:production_logger)
138
+ end
139
+ end
140
+
141
+ # Returns a new instance of the logger.
142
+ #
143
+ # @return [logger_class]
144
+ #
145
+ # @api public
146
+ # @since 2.0.0
147
+ def instance
148
+ logger_constructor.call(env, app_name.name, **logger_constructor_options)
149
+ end
150
+
151
+ # Build an instance of a development logger
152
+ #
153
+ # This logger is used in both development and test
154
+ #
155
+ # @return [Dry::Logger::Dispatcher]
156
+ # @since 2.0.0
157
+ # @api private
158
+ def development_logger(_env, app_name, **options)
159
+ Dry.Logger(app_name, **options) do |setup|
160
+ setup
161
+ .add_backend(log_if: -> entry { !entry.tag?(:rack) && !entry.tag?(:sql) })
162
+ .add_backend(log_if: -> entry { entry.tag?(:rack) }, formatter: Hanami::Logger::RackFormatter)
163
+ .add_backend(log_if: -> entry { entry.tag?(:sql) }, formatter: Hanami::Logger::SQLFormatter)
164
+ end
165
+ end
166
+
167
+ # Build an instance of a production logger
168
+ #
169
+ # This logger is used in both development and test
170
+ #
171
+ # @return [Dry::Logger::Dispatcher]
172
+ # @since 2.0.0
173
+ # @api private
174
+ def production_logger(_env, app_name, **options)
175
+ Dry.Logger(app_name, **options)
176
+ end
177
+
178
+ private
179
+
180
+ # @api private
181
+ def logger_constructor_options
182
+ {
183
+ stream: stream,
184
+ level: ENV["HANAMI_LOG_LEVEL"]&.to_sym || level,
185
+ formatter: formatter,
186
+ filters: filters,
187
+ template: template,
188
+ **options
189
+ }
190
+ end
191
+
192
+ # @api private
193
+ def method_missing(name, *args, &block)
194
+ if config.respond_to?(name)
195
+ config.public_send(name, *args, &block)
196
+ else
197
+ super
198
+ end
199
+ end
200
+
201
+ # @api private
202
+ def respond_to_missing?(name, _include_all = false)
203
+ config.respond_to?(name) || super
204
+ end
205
+ end
206
+ end
207
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/configurable"
4
+
5
+ module Hanami
6
+ class Config
7
+ # NullConfig can serve as a fallback config object when out-of-gem config objects are not
8
+ # available (specifically, when the hanami-action, hanami-router or hanami-view gems are not
9
+ # loaded)
10
+ class NullConfig
11
+ include Dry::Configurable
12
+
13
+ def finalize!(*)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/configurable"
4
+ require_relative "../slice/routing/resolver"
5
+
6
+ module Hanami
7
+ class Config
8
+ # Hanami router config
9
+ #
10
+ # @since 2.0.0
11
+ # @api private
12
+ class Router
13
+ include Dry::Configurable
14
+
15
+ # Base config is provided so router config can include the `base_url`
16
+ attr_reader :base_config
17
+ private :base_config
18
+
19
+ # @api private
20
+ # @since 2.0.0
21
+ def initialize(base_config)
22
+ @base_config = base_config
23
+ end
24
+
25
+ setting :resolver, default: Slice::Routing::Resolver
26
+
27
+ # @api private
28
+ # @since 2.0.0
29
+ def options
30
+ {base_url: base_config.base_url}
31
+ end
32
+
33
+ private
34
+
35
+ def method_missing(name, *args, &block)
36
+ if config.respond_to?(name)
37
+ config.public_send(name, *args, &block)
38
+ else
39
+ super
40
+ end
41
+ end
42
+
43
+ def respond_to_missing?(name, _include_all = false)
44
+ config.respond_to?(name) || super
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/configurable"
4
+ require "hanami/view"
5
+
6
+ module Hanami
7
+ class Config
8
+ # Hanami views config
9
+ #
10
+ # This exposes all the settings from the standalone `Hanami::View` class, pre-configured with
11
+ # sensible defaults for actions within a full Hanami app. It also provides additional settings
12
+ # for further integration of views with other full stack app components.
13
+ #
14
+ # @since 2.1.0
15
+ # @api public
16
+ class Views
17
+ include Dry::Configurable
18
+
19
+ # @!attribute [rw] default_template_engine
20
+ # Sets or returns the default template engine to use for generated views.
21
+ #
22
+ # Used by generators when no explicit template engine is specified.
23
+ # Supports `erb`, `haml`, and `slim`.
24
+ #
25
+ # Defaults to `"erb"`.
26
+ #
27
+ # @example
28
+ # config.views.default_template_engine = "slim"
29
+ #
30
+ # @return [String] the template engine name
31
+ #
32
+ # @api public
33
+ # @since 2.4.0
34
+ setting :default_template_engine, default: "erb"
35
+
36
+ # @api private
37
+ # @since 2.1.0
38
+ attr_reader :base_config
39
+ protected :base_config
40
+
41
+ # @api private
42
+ # @since 2.1.0
43
+ def initialize(*)
44
+ super
45
+
46
+ @base_config = Hanami::View.config.dup
47
+
48
+ configure_defaults
49
+ end
50
+
51
+ # @api private
52
+ # @since 2.1.0
53
+ def initialize_copy(source)
54
+ super
55
+ @base_config = source.base_config.dup
56
+ end
57
+ private :initialize_copy
58
+
59
+ # @api private
60
+ # @since 2.1.0
61
+ def finalize!
62
+ return self if frozen?
63
+
64
+ base_config.finalize!
65
+
66
+ super
67
+ end
68
+
69
+ private
70
+
71
+ def configure_defaults
72
+ self.layout = "app"
73
+ end
74
+
75
+ # An inflector for views is not configurable via `config.views.inflector` on an
76
+ # `Hanami::App`. The app-wide inflector is already configurable
77
+ # there as `config.inflector` and will be used as the default inflector for views.
78
+ #
79
+ # A custom inflector may still be provided in an `Hanami::View` subclass, via
80
+ # `config.inflector=`.
81
+ NON_FORWARDABLE_METHODS = %i[inflector inflector=].freeze
82
+ private_constant :NON_FORWARDABLE_METHODS
83
+
84
+ def method_missing(name, *args, &block)
85
+ return super if NON_FORWARDABLE_METHODS.include?(name)
86
+
87
+ if config.respond_to?(name)
88
+ config.public_send(name, *args, &block)
89
+ elsif base_config.respond_to?(name)
90
+ base_config.public_send(name, *args, &block)
91
+ else
92
+ super
93
+ end
94
+ end
95
+
96
+ def respond_to_missing?(name, _include_all = false)
97
+ return false if NON_FORWARDABLE_METHODS.include?(name)
98
+
99
+ config.respond_to?(name) || base_config.respond_to?(name) || super
100
+ end
101
+ end
102
+ end
103
+ end