panda-core 0.1.12 → 0.1.14

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc545a266b233a065a0ad1400d61566033d676509364cbb0b3264cfebf1f937c
4
- data.tar.gz: 1328107817e05bf72dd11dd0b3b27a3d39813b792ef2cd19b7e3d545d12a9df8
3
+ metadata.gz: 6763bac43452e4bb3f65ade7e08f723958e48a213d294edd236fdd777b7e5b87
4
+ data.tar.gz: c0acc14a2adeab22ff7338c4d41e6ef542e2d058ec8d56b638f7afcf9b39b938
5
5
  SHA512:
6
- metadata.gz: 221e370f59805011182520d1846637996517b080639dae1273814b8d44409bcc21b5af9b60f668acae9519a849407bb47f590f8c5ec29be35c67d743ad87dff5
7
- data.tar.gz: 07bf703d37be3e11224154713566817eebe59e99660a902d52c2c7b77f050049fb8334ea501ba939e71537e12d33c6dc38130f02f7dbd6c9dd17713fcf4bbc9c
6
+ metadata.gz: 64d47dc75d74d9d9de54228d587fe470035d0f6a9c7f33bda2d1106b55de23480249c70504c92e277965bb371423450b9aff77e9bb160bd1efec640e5bf59e47
7
+ data.tar.gz: 2c2d6d1837408de9ae15b48ae57512b50b534cf89e693e48a2dbd2a9c31dde1d702160f15ac77ea7ead477bccc6e28e79a63cf9505b84d2cad425c241b5a94cc
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  BSD 3-Clause License
2
2
 
3
- Copyright © 2024, Panda Software Limited, James Inman
3
+ Copyright © 2024 - 2025, Panda Software Limited, James Inman
4
4
 
5
5
  Redistribution and use in source and binary forms, with or without
6
6
  modification, are permitted provided that the following conditions are met:
@@ -27,6 +27,9 @@ module Panda
27
27
  end
28
28
 
29
29
  def mount_engine
30
+ routes_file = File.join(destination_root, "config/routes.rb")
31
+ return unless File.exist?(routes_file)
32
+
30
33
  route 'mount Panda::Core::Engine => "/"'
31
34
  end
32
35
 
@@ -1,6 +1,12 @@
1
1
  Panda::Core.configure do |config|
2
+ # Configure the session token cookie name
3
+ config.session_token_cookie = :panda_session
4
+
2
5
  # Configure the user class for the application
3
- # config.user_class = "User"
6
+ config.user_class = "Panda::Core::User"
7
+
8
+ # Configure the user identity class for the application
9
+ config.user_identity_class = "Panda::Core::UserIdentity"
4
10
 
5
11
  # Configure the storage provider (default: :active_storage)
6
12
  # config.storage_provider = :active_storage
@@ -1,26 +1,5 @@
1
1
  require "rubygems"
2
2
 
3
- require "active_storage"
4
- require "awesome_nested_set"
5
- require "aws-sdk-s3"
6
- require "dry-configurable"
7
- require "faraday"
8
- require "faraday/multipart"
9
- require "faraday/retry"
10
- require "fx"
11
- require "image_processing"
12
- require "importmap-rails"
13
- require "logidze"
14
- require "lookbook"
15
- require "omniauth"
16
- require "omniauth/rails_csrf_protection"
17
- require "propshaft"
18
- require "redis"
19
- require "silencer"
20
- require "stimulus-rails"
21
- require "turbo-rails"
22
- require "view_component"
23
-
24
3
  require "rails/engine"
25
4
 
26
5
  module Panda
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Panda
4
4
  module Core
5
- VERSION = "0.1.12"
5
+ VERSION = "0.1.14"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panda-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tasty Bamboo
@@ -10,48 +10,6 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activestorage-office-previewer
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.1'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.1'
27
- - !ruby/object:Gem::Dependency
28
- name: awesome_nested_set
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '3.7'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '3.7'
41
- - !ruby/object:Gem::Dependency
42
- name: aws-sdk-s3
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1'
55
13
  - !ruby/object:Gem::Dependency
56
14
  name: dry-configurable
57
15
  requirement: !ruby/object:Gem::Requirement
@@ -66,160 +24,6 @@ dependencies:
66
24
  - - "~>"
67
25
  - !ruby/object:Gem::Version
68
26
  version: '1'
69
- - !ruby/object:Gem::Dependency
70
- name: faraday
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '2'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '2'
83
- - !ruby/object:Gem::Dependency
84
- name: faraday-multipart
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1'
97
- - !ruby/object:Gem::Dependency
98
- name: faraday-retry
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '2'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '2'
111
- - !ruby/object:Gem::Dependency
112
- name: fx
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.9'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.9'
125
- - !ruby/object:Gem::Dependency
126
- name: image_processing
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '1.2'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '1.2'
139
- - !ruby/object:Gem::Dependency
140
- name: importmap-rails
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '2'
146
- type: :runtime
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '2'
153
- - !ruby/object:Gem::Dependency
154
- name: logidze
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '1.3'
160
- type: :runtime
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '1.3'
167
- - !ruby/object:Gem::Dependency
168
- name: lookbook
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '2.3'
174
- type: :runtime
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '2.3'
181
- - !ruby/object:Gem::Dependency
182
- name: omniauth
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: '2.1'
188
- type: :runtime
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: '2.1'
195
- - !ruby/object:Gem::Dependency
196
- name: omniauth-rails_csrf_protection
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - "~>"
200
- - !ruby/object:Gem::Version
201
- version: '1.0'
202
- type: :runtime
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - "~>"
207
- - !ruby/object:Gem::Version
208
- version: '1.0'
209
- - !ruby/object:Gem::Dependency
210
- name: propshaft
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - "~>"
214
- - !ruby/object:Gem::Version
215
- version: '1.1'
216
- type: :runtime
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - "~>"
221
- - !ruby/object:Gem::Version
222
- version: '1.1'
223
27
  - !ruby/object:Gem::Dependency
224
28
  name: rails
225
29
  requirement: !ruby/object:Gem::Requirement
@@ -234,90 +38,6 @@ dependencies:
234
38
  - - ">="
235
39
  - !ruby/object:Gem::Version
236
40
  version: '7.0'
237
- - !ruby/object:Gem::Dependency
238
- name: redis
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - "~>"
242
- - !ruby/object:Gem::Version
243
- version: '5.3'
244
- type: :runtime
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - "~>"
249
- - !ruby/object:Gem::Version
250
- version: '5.3'
251
- - !ruby/object:Gem::Dependency
252
- name: silencer
253
- requirement: !ruby/object:Gem::Requirement
254
- requirements:
255
- - - "~>"
256
- - !ruby/object:Gem::Version
257
- version: '2.0'
258
- type: :runtime
259
- prerelease: false
260
- version_requirements: !ruby/object:Gem::Requirement
261
- requirements:
262
- - - "~>"
263
- - !ruby/object:Gem::Version
264
- version: '2.0'
265
- - !ruby/object:Gem::Dependency
266
- name: stimulus-rails
267
- requirement: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - "~>"
270
- - !ruby/object:Gem::Version
271
- version: '1.3'
272
- type: :runtime
273
- prerelease: false
274
- version_requirements: !ruby/object:Gem::Requirement
275
- requirements:
276
- - - "~>"
277
- - !ruby/object:Gem::Version
278
- version: '1.3'
279
- - !ruby/object:Gem::Dependency
280
- name: tailwindcss-rails
281
- requirement: !ruby/object:Gem::Requirement
282
- requirements:
283
- - - ">="
284
- - !ruby/object:Gem::Version
285
- version: '0'
286
- type: :runtime
287
- prerelease: false
288
- version_requirements: !ruby/object:Gem::Requirement
289
- requirements:
290
- - - ">="
291
- - !ruby/object:Gem::Version
292
- version: '0'
293
- - !ruby/object:Gem::Dependency
294
- name: turbo-rails
295
- requirement: !ruby/object:Gem::Requirement
296
- requirements:
297
- - - "~>"
298
- - !ruby/object:Gem::Version
299
- version: '2.0'
300
- type: :runtime
301
- prerelease: false
302
- version_requirements: !ruby/object:Gem::Requirement
303
- requirements:
304
- - - "~>"
305
- - !ruby/object:Gem::Version
306
- version: '2.0'
307
- - !ruby/object:Gem::Dependency
308
- name: view_component
309
- requirement: !ruby/object:Gem::Requirement
310
- requirements:
311
- - - "~>"
312
- - !ruby/object:Gem::Version
313
- version: '3'
314
- type: :runtime
315
- prerelease: false
316
- version_requirements: !ruby/object:Gem::Requirement
317
- requirements:
318
- - - "~>"
319
- - !ruby/object:Gem::Version
320
- version: '3'
321
41
  - !ruby/object:Gem::Dependency
322
42
  name: pg
323
43
  requirement: !ruby/object:Gem::Requirement
@@ -347,8 +67,6 @@ files:
347
67
  - db/migrate/20250121012333_logidze_install.rb
348
68
  - db/migrate/20250121012334_enable_hstore.rb
349
69
  - lib/generators/panda/core/authentication/templates/reek_spec.rb
350
- - lib/generators/panda/core/install/install_generator.rb
351
- - lib/generators/panda/core/install/templates/initializer.rb
352
70
  - lib/generators/panda/core/install_generator.rb
353
71
  - lib/generators/panda/core/templates/initializer.rb
354
72
  - lib/generators/panda/core/templates_generator.rb
@@ -383,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
383
101
  - !ruby/object:Gem::Version
384
102
  version: '0'
385
103
  requirements: []
386
- rubygems_version: 3.6.8
104
+ rubygems_version: 3.6.9
387
105
  specification_version: 4
388
106
  summary: Core libraries and development tools for Tasty Bamboo projects
389
107
  test_files: []
@@ -1,145 +0,0 @@
1
- require "rails/generators"
2
-
3
- module Panda
4
- module Core
5
- module Generators
6
- class InstallGenerator < Rails::Generators::Base
7
- source_root File.expand_path("templates", __dir__)
8
-
9
- desc "Installs Panda::Core and its dependencies"
10
-
11
- def install_dependencies
12
- manage_gem_dependencies
13
- end
14
-
15
- def install_initializer
16
- initializer_path = File.join(destination_root, "config/initializers/panda/core.rb")
17
-
18
- if File.exist?(initializer_path)
19
- append_missing_configurations(initializer_path)
20
- else
21
- begin
22
- FileUtils.mkdir_p(File.dirname(initializer_path))
23
- rescue Errno::EEXIST
24
- # Directory already exists, that's fine
25
- end
26
- template "initializer.rb", initializer_path
27
- end
28
- end
29
-
30
- # def mount_engine
31
- # inject_into_file File.join(destination_root, "config/routes.rb"),
32
- # " mount Panda::Core::Engine => '/'\n",
33
- # before: /^end/
34
- # end
35
-
36
- private
37
-
38
- def gems_to_add
39
- {
40
- "panda_core" => {}
41
- # "gem_name" => {version: "1.0.0"},
42
- # "another_gem" => {git: "https://github.com/example/another_gem"}
43
- # Add other gems as needed
44
- }
45
- end
46
-
47
- def manage_gem_dependencies
48
- if File.exist?(File.join(destination_root, "Gemfile"))
49
- manage_gemfile_dependencies
50
- elsif Dir.glob(File.join(destination_root, "*.gemspec")).any?
51
- manage_gemspec_dependencies
52
- else
53
- create_file File.join(destination_root, "Gemfile") do
54
- content = "source 'https://rubygems.org'\n\n"
55
- gems_to_add.each do |gem_name, options|
56
- content << if options[:git]
57
- "gem '#{gem_name}', git: '#{options[:git]}'\n"
58
- elsif options[:version]
59
- "gem '#{gem_name}', '#{options[:version]}'\n"
60
- else
61
- "gem '#{gem_name}'\n"
62
- end
63
- end
64
- content
65
- end
66
- end
67
- end
68
-
69
- def manage_gemfile_dependencies
70
- gemfile_content = File.read(File.join(destination_root, "Gemfile"))
71
-
72
- gems_to_add.each do |gem_name, options|
73
- next if should_skip_gem?(gemfile_content, gem_name, options)
74
-
75
- if options[:git]
76
- append_to_file File.join(destination_root, "Gemfile"), "\ngem '#{gem_name}', git: '#{options[:git]}'"
77
- elsif options[:version]
78
- append_to_file File.join(destination_root, "Gemfile"), "\ngem '#{gem_name}', '#{options[:version]}'"
79
- else
80
- append_to_file File.join(destination_root, "Gemfile"), "\ngem '#{gem_name}'"
81
- end
82
- end
83
- end
84
-
85
- def manage_gemspec_dependencies
86
- gemspec_file = Dir.glob(File.join(destination_root, "*.gemspec")).first
87
-
88
- if File.exist?(gemspec_file)
89
- content = File.read(gemspec_file)
90
-
91
- gems_to_add.each do |gem_name, options|
92
- next if content.include?("spec.add_dependency \"#{gem_name}\"")
93
-
94
- dependency_line = if options[:version]
95
- " spec.add_dependency \"#{gem_name}\", \"#{options[:version]}\"\n"
96
- else
97
- " spec.add_dependency \"#{gem_name}\"\n"
98
- end
99
-
100
- # Insert before the last 'end'
101
- gsub_file gemspec_file, /end\s*\z/ do |match|
102
- "#{dependency_line}#{match}"
103
- end
104
- end
105
- end
106
- end
107
-
108
- def should_skip_gem?(gemfile_content, gem_name, new_options)
109
- gemfile_content.match?(/gem ['"]#{gem_name}['"]/)
110
- end
111
-
112
- def append_missing_configurations(path)
113
- content = File.read(path)
114
- missing_configs = []
115
-
116
- unless content.include?("config.user_class")
117
- missing_configs << " # Set the user class for authentication (e.g., 'User')"
118
- missing_configs << " # config.user_class = nil"
119
- end
120
-
121
- unless content.include?("config.authentication_providers")
122
- missing_configs << " # Configure authentication providers (e.g., [:devise, :jwt])"
123
- missing_configs << " # config.authentication_providers = []"
124
- end
125
-
126
- unless content.include?("config.storage_provider")
127
- missing_configs << " # Set the storage provider (:active_storage or :aws)"
128
- missing_configs << " # config.storage_provider = :active_storage"
129
- end
130
-
131
- unless content.include?("config.cache_store")
132
- missing_configs << " # Set the cache store (:memory_store, :redis_cache_store, etc.)"
133
- missing_configs << " # config.cache_store = :memory_store"
134
- end
135
-
136
- if missing_configs.any?
137
- inject_into_file path, before: /^end/ do
138
- "\n#{missing_configs.join("\n")}\n"
139
- end
140
- end
141
- end
142
- end
143
- end
144
- end
145
- end
@@ -1,13 +0,0 @@
1
- Panda::Core.configure do |config|
2
- # Set the user class for authentication (e.g., 'User')
3
- # config.user_class = nil
4
-
5
- # Configure authentication providers (e.g., [:devise, :jwt])
6
- # config.authentication_providers = []
7
-
8
- # Set the storage provider (:active_storage or :aws)
9
- # config.storage_provider = :active_storage
10
-
11
- # Set the cache store (:memory_store, :redis_cache_store, etc.)
12
- # config.cache_store = :memory_store
13
- end