gemstack 0.2.5 → 0.3.0

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 (199) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +7 -3
  4. data/lib/gemstack/cache/memory_store.rb +69 -0
  5. data/lib/gemstack/cache/null_store.rb +18 -0
  6. data/lib/gemstack/cache/redis_store.rb +70 -0
  7. data/lib/gemstack/cache/store.rb +89 -0
  8. data/lib/gemstack/cache.rb +61 -0
  9. data/lib/gemstack/cli/add_generator.rb +258 -0
  10. data/lib/gemstack/cli/app_generator.rb +142 -0
  11. data/lib/gemstack/cli/commands/db.rb +136 -0
  12. data/lib/gemstack/cli/commands/jobs.rb +96 -0
  13. data/lib/gemstack/cli/controller_generator.rb +73 -0
  14. data/lib/gemstack/cli/deploy_generator.rb +102 -0
  15. data/lib/gemstack/cli/doctor/upgrade_check.rb +32 -0
  16. data/lib/gemstack/cli/doctor.rb +311 -0
  17. data/lib/gemstack/cli/generator.rb +161 -0
  18. data/lib/gemstack/cli/job_generator.rb +48 -0
  19. data/lib/gemstack/cli/migration_generator.rb +52 -0
  20. data/lib/gemstack/cli/policy_generator.rb +35 -0
  21. data/lib/gemstack/cli/project.rb +53 -0
  22. data/lib/gemstack/cli/resource_generator.rb +170 -0
  23. data/lib/gemstack/cli/resource_spec.rb +95 -0
  24. data/lib/gemstack/cli.rb +304 -0
  25. data/lib/gemstack/contract/builder.rb +168 -0
  26. data/lib/gemstack/contract/docs/index.html +264 -0
  27. data/lib/gemstack/contract/docs.rb +45 -0
  28. data/lib/gemstack/contract/openapi.rb +123 -0
  29. data/lib/gemstack/contract/typescript.rb +162 -0
  30. data/lib/gemstack/contract.rb +93 -0
  31. data/lib/gemstack/core.rb +129 -0
  32. data/lib/gemstack/db/configuration.rb +148 -0
  33. data/lib/gemstack/db/errors.rb +137 -0
  34. data/lib/gemstack/db/json_compat.rb +21 -0
  35. data/lib/gemstack/db/migrator.rb +80 -0
  36. data/lib/gemstack/db/model.rb +226 -0
  37. data/lib/gemstack/db/schema_types.rb +28 -0
  38. data/lib/gemstack/db/tasks.rb +94 -0
  39. data/lib/gemstack/db/testing.rb +99 -0
  40. data/lib/gemstack/db.rb +210 -0
  41. data/lib/gemstack/dev/file_watcher.rb +58 -0
  42. data/lib/gemstack/dev/gateway.rb +220 -0
  43. data/lib/gemstack/dev/managed_process.rb +96 -0
  44. data/lib/gemstack/dev/ports.rb +26 -0
  45. data/lib/gemstack/dev/supervisor.rb +267 -0
  46. data/lib/gemstack/dev/terminal.rb +40 -0
  47. data/lib/gemstack/dev/toolchain.rb +86 -0
  48. data/lib/gemstack/dev.rb +43 -0
  49. data/lib/gemstack/dotenv.rb +61 -0
  50. data/lib/gemstack/environment.rb +37 -0
  51. data/lib/gemstack/error_mapping.rb +37 -0
  52. data/lib/gemstack/errors.rb +100 -0
  53. data/lib/gemstack/http/app.rb +30 -0
  54. data/lib/gemstack/http/config.rb +84 -0
  55. data/lib/gemstack/http/controller.rb +343 -0
  56. data/lib/gemstack/http/error_page.rb +111 -0
  57. data/lib/gemstack/http/error_renderer.rb +63 -0
  58. data/lib/gemstack/http/json_codec.rb +114 -0
  59. data/lib/gemstack/http/middleware/body_limit.rb +69 -0
  60. data/lib/gemstack/http/middleware/compression.rb +127 -0
  61. data/lib/gemstack/http/middleware/cors.rb +77 -0
  62. data/lib/gemstack/http/middleware/error_handler.rb +39 -0
  63. data/lib/gemstack/http/middleware/etags.rb +24 -0
  64. data/lib/gemstack/http/middleware/health_check.rb +28 -0
  65. data/lib/gemstack/http/middleware/request_id.rb +31 -0
  66. data/lib/gemstack/http/middleware/request_logger.rb +39 -0
  67. data/lib/gemstack/http/middleware/security_headers.rb +31 -0
  68. data/lib/gemstack/http/middleware_stack.rb +96 -0
  69. data/lib/gemstack/http/page.rb +36 -0
  70. data/lib/gemstack/http/params.rb +140 -0
  71. data/lib/gemstack/http/request.rb +64 -0
  72. data/lib/gemstack/http/router.rb +315 -0
  73. data/lib/gemstack/http.rb +41 -0
  74. data/lib/gemstack/inflector.rb +133 -0
  75. data/lib/gemstack/job.rb +154 -0
  76. data/lib/gemstack/jobs/adapters/async.rb +94 -0
  77. data/lib/gemstack/jobs/adapters/database.rb +188 -0
  78. data/lib/gemstack/jobs/adapters/inline.rb +34 -0
  79. data/lib/gemstack/jobs/adapters/sidekiq.rb +65 -0
  80. data/lib/gemstack/jobs/adapters/test.rb +59 -0
  81. data/lib/gemstack/jobs/executor.rb +70 -0
  82. data/lib/gemstack/jobs/testing.rb +55 -0
  83. data/lib/gemstack/jobs/worker.rb +137 -0
  84. data/lib/gemstack/jobs.rb +144 -0
  85. data/lib/gemstack/logger.rb +131 -0
  86. data/lib/gemstack/mail/delivery_job.rb +20 -0
  87. data/lib/gemstack/mail/testing.rb +33 -0
  88. data/lib/gemstack/mail.rb +230 -0
  89. data/lib/gemstack/plugins.rb +38 -0
  90. data/lib/gemstack/schema.rb +251 -0
  91. data/lib/gemstack/serializer.rb +186 -0
  92. data/lib/gemstack/settings.rb +86 -0
  93. data/lib/gemstack/storage/endpoint.rb +112 -0
  94. data/lib/gemstack/storage/services/disk.rb +60 -0
  95. data/lib/gemstack/storage/services/s3.rb +65 -0
  96. data/lib/gemstack/storage/testing.rb +30 -0
  97. data/lib/gemstack/storage.rb +183 -0
  98. data/lib/gemstack/types.rb +163 -0
  99. data/lib/gemstack/version.rb +6 -0
  100. data/lib/gemstack.rb +1 -1
  101. data/templates/app/Gemfile.tt +27 -0
  102. data/templates/app/README.md.tt +29 -0
  103. data/templates/app/app/controllers/application_controller.rb +6 -0
  104. data/templates/app/app/jobs/application_job.rb +9 -0
  105. data/templates/app/app/mailers/application_mailer.rb +8 -0
  106. data/templates/app/app/mailers/templates/dot_keep +0 -0
  107. data/templates/app/app/models/application_model.rb +19 -0
  108. data/templates/app/app/serializers/application_serializer.rb +6 -0
  109. data/templates/app/bin/gemstack +7 -0
  110. data/templates/app/config/app.rb.tt +60 -0
  111. data/templates/app/config/database.yml.tt +61 -0
  112. data/templates/app/config/environments/development.rb.tt +35 -0
  113. data/templates/app/config/environments/production.rb.tt +40 -0
  114. data/templates/app/config/environments/test.rb.tt +21 -0
  115. data/templates/app/config/puma.rb +21 -0
  116. data/templates/app/config/routes.rb +10 -0
  117. data/templates/app/config.ru +6 -0
  118. data/templates/app/db/migrations/dot_keep +0 -0
  119. data/templates/app/db/seeds.rb +5 -0
  120. data/templates/app/dot_env.example.tt +19 -0
  121. data/templates/app/dot_gitignore +16 -0
  122. data/templates/app/dot_node-version.tt +1 -0
  123. data/templates/app/dot_nvmrc.tt +1 -0
  124. data/templates/app/dot_ruby-version.tt +1 -0
  125. data/templates/app/dot_tool-versions.tt +4 -0
  126. data/templates/app/test/health_test.rb +18 -0
  127. data/templates/app/test/test_helper.rb.tt +25 -0
  128. data/templates/auth/app/controllers/api_tokens_controller.rb +35 -0
  129. data/templates/auth/app/controllers/email_verifications_controller.rb +31 -0
  130. data/templates/auth/app/controllers/password_resets_controller.rb +40 -0
  131. data/templates/auth/app/controllers/registrations_controller.rb +19 -0
  132. data/templates/auth/app/controllers/sessions_controller.rb +29 -0
  133. data/templates/auth/app/mailers/auth_mailer.rb +20 -0
  134. data/templates/auth/app/mailers/templates/auth_mailer/email_verification.html.erb +2 -0
  135. data/templates/auth/app/mailers/templates/auth_mailer/email_verification.text.erb +2 -0
  136. data/templates/auth/app/mailers/templates/auth_mailer/password_reset.html.erb +3 -0
  137. data/templates/auth/app/mailers/templates/auth_mailer/password_reset.text.erb +6 -0
  138. data/templates/auth/app/models/auth_token.rb +15 -0
  139. data/templates/auth/app/models/user.rb +12 -0
  140. data/templates/auth/app/policies/application_policy.rb +6 -0
  141. data/templates/auth/app/serializers/api_token_serializer.rb +6 -0
  142. data/templates/auth/app/serializers/new_api_token_serializer.rb +9 -0
  143. data/templates/auth/app/serializers/user_serializer.rb +6 -0
  144. data/templates/auth/db/migrations/%timestamp%_create_auth_tables.rb +41 -0
  145. data/templates/auth/frontend/app/account/page.tsx +116 -0
  146. data/templates/auth/frontend/app/forgot-password/page.tsx +48 -0
  147. data/templates/auth/frontend/app/login/page.tsx +26 -0
  148. data/templates/auth/frontend/app/reset-password/page.tsx +11 -0
  149. data/templates/auth/frontend/app/signup/page.tsx +27 -0
  150. data/templates/auth/frontend/app/verify-email/page.tsx +11 -0
  151. data/templates/auth/frontend/components/auth/CredentialsForm.tsx +58 -0
  152. data/templates/auth/frontend/components/auth/ResetPasswordForm.tsx +43 -0
  153. data/templates/auth/frontend/components/auth/VerifyEmail.tsx +28 -0
  154. data/templates/auth/frontend/lib/auth.ts +113 -0
  155. data/templates/auth/test/controllers/auth_test.rb +108 -0
  156. data/templates/controller/app/controllers/%file_name%_controller.rb.tt +10 -0
  157. data/templates/controller/test/controllers/%file_name%_controller_test.rb.tt +14 -0
  158. data/templates/deploy/Caddyfile.tt +19 -0
  159. data/templates/deploy/Dockerfile.tt +63 -0
  160. data/templates/deploy/Procfile.tt +6 -0
  161. data/templates/deploy/compose.yaml.tt +129 -0
  162. data/templates/deploy/dot_dockerignore +14 -0
  163. data/templates/frontend/app/globals.css +171 -0
  164. data/templates/frontend/app/layout.tsx.tt +19 -0
  165. data/templates/frontend/app/page.module.css +315 -0
  166. data/templates/frontend/app/page.tsx.tt +183 -0
  167. data/templates/frontend/app/providers.tsx +24 -0
  168. data/templates/frontend/lib/gemstack/client.ts +125 -0
  169. data/templates/frontend/next-env.d.ts +5 -0
  170. data/templates/frontend/next.config.ts +17 -0
  171. data/templates/frontend/package.json.tt +23 -0
  172. data/templates/frontend/tsconfig.json +21 -0
  173. data/templates/job/app/jobs/%file_name%.rb.tt +15 -0
  174. data/templates/job/test/jobs/%file_name%_test.rb.tt +15 -0
  175. data/templates/migration/db/migrations/%timestamp%_%file_name%.rb.tt +17 -0
  176. data/templates/policy/app/policies/%file_name%_policy.rb.tt +21 -0
  177. data/templates/policy/test/policies/%file_name%_policy_test.rb.tt +9 -0
  178. data/templates/realtime/config/channels.rb +14 -0
  179. data/templates/realtime/frontend/lib/gemstack/realtime.ts +120 -0
  180. data/templates/resource/controller/app/controllers/%plural%_controller.rb.tt +51 -0
  181. data/templates/resource/controller/test/controllers/%plural%_controller_test.rb.tt +74 -0
  182. data/templates/resource/frontend/frontend/app/%url_segment%/[id]/edit/page.tsx.tt +45 -0
  183. data/templates/resource/frontend/frontend/app/%url_segment%/[id]/page.tsx.tt +49 -0
  184. data/templates/resource/frontend/frontend/app/%url_segment%/new/page.tsx.tt +27 -0
  185. data/templates/resource/frontend/frontend/app/%url_segment%/page.tsx.tt +51 -0
  186. data/templates/resource/frontend/frontend/components/%url_segment%/%class_name%Card.tsx.tt +15 -0
  187. data/templates/resource/frontend/frontend/components/%url_segment%/%class_name%Form.tsx.tt +98 -0
  188. data/templates/resource/frontend/frontend/components/%url_segment%/%class_name%Table.tsx.tt +36 -0
  189. data/templates/resource/frontend/frontend/lib/format.ts +12 -0
  190. data/templates/resource/frontend/frontend/lib/queries/%url_segment%.ts.tt +64 -0
  191. data/templates/resource/migration/db/migrations/%timestamp%_create_%table%.rb.tt +18 -0
  192. data/templates/resource/model/app/models/%file_name%.rb.tt +15 -0
  193. data/templates/resource/model/test/models/%file_name%_test.rb.tt +29 -0
  194. data/templates/resource/serializer/app/serializers/%file_name%_serializer.rb.tt +7 -0
  195. data/templates/storage/app/controllers/uploads_controller.rb.tt +33 -0
  196. data/templates/storage/app/serializers/upload_serializer.rb +11 -0
  197. data/templates/storage/frontend/lib/upload.ts +52 -0
  198. data/templates/storage/test/controllers/uploads_test.rb.tt +30 -0
  199. metadata +251 -39
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../test_helper"
4
+
5
+ class UploadsTest < GemStack::TestCase
6
+ <% if auth? -%>
7
+ def setup
8
+ sign_in_as(User.create(email: "uploader@example.com", password: "correct horse battery staple"))
9
+ end
10
+
11
+ <% end -%>
12
+ def test_direct_upload
13
+ post_json "/api/uploads", { filename: "cat.png", content_type: "image/png", byte_size: 4 }
14
+
15
+ assert_status 201
16
+ signed_id = json_body["signed_id"]
17
+ put json_body["url"], "\x89PNG", "CONTENT_TYPE" => "image/png"
18
+
19
+ assert_status 201
20
+ key = GemStack::Storage.key_for_signed_id(signed_id)
21
+ assert_equal "\x89PNG".b, GemStack::Storage.download(key).b
22
+ end
23
+
24
+ def test_refuses_other_types
25
+ post_json "/api/uploads", { filename: "page.html", content_type: "text/html", byte_size: 10 }
26
+
27
+ assert_error 422, "validation_failed"
28
+ assert json_body["errors"]["content_type"]
29
+ end
30
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemstack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adware Technologies
@@ -11,117 +11,131 @@ cert_chain: []
11
11
  date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: gemstack-cache
14
+ name: bigdecimal
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.5
19
+ version: '3.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.5
26
+ version: '3.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: erubi
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.13'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.13'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: gemstack-cli
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - '='
32
46
  - !ruby/object:Gem::Version
33
- version: 0.2.5
47
+ version: 0.3.0
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - '='
39
53
  - !ruby/object:Gem::Version
40
- version: 0.2.5
54
+ version: 0.3.0
41
55
  - !ruby/object:Gem::Dependency
42
- name: gemstack-contract
56
+ name: json
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - '='
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: 0.2.5
61
+ version: '2.10'
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - '='
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: 0.2.5
68
+ version: '2.10'
55
69
  - !ruby/object:Gem::Dependency
56
- name: gemstack-core
70
+ name: mail
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - '='
73
+ - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: 0.2.5
75
+ version: '2.9'
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - '='
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: 0.2.5
82
+ version: '2.9'
69
83
  - !ruby/object:Gem::Dependency
70
- name: gemstack-dev
84
+ name: puma
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - '='
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: 0.2.5
89
+ version: '6.4'
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - '='
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: 0.2.5
96
+ version: '6.4'
83
97
  - !ruby/object:Gem::Dependency
84
- name: gemstack-http
98
+ name: rack
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - '='
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 0.2.5
103
+ version: '3.1'
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - '='
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 0.2.5
110
+ version: '3.1'
97
111
  - !ruby/object:Gem::Dependency
98
- name: gemstack-schema
112
+ name: sequel
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - '='
115
+ - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.2.5
117
+ version: '5.80'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - '='
122
+ - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.2.5
124
+ version: '5.80'
111
125
  - !ruby/object:Gem::Dependency
112
- name: puma
126
+ name: thor
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ">="
129
+ - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '6.4'
131
+ version: '1.3'
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ">="
136
+ - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '6.4'
138
+ version: '1.3'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: zeitwerk
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +150,10 @@ dependencies:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
152
  version: '2.6'
153
+ description: 'Ruby API + Next.js with one origin: routing, controllers, models (SQLite,
154
+ PostgreSQL, MySQL), background jobs, mail, file storage, a TypeScript contract,
155
+ generators and a development server. Authentication and realtime are the gemstack-auth
156
+ and gemstack-realtime gems.'
139
157
  email:
140
158
  - gemstack26@gmail.com
141
159
  executables: []
@@ -147,16 +165,210 @@ files:
147
165
  - README.md
148
166
  - lib/gemstack.rb
149
167
  - lib/gemstack/application.rb
168
+ - lib/gemstack/cache.rb
169
+ - lib/gemstack/cache/memory_store.rb
170
+ - lib/gemstack/cache/null_store.rb
171
+ - lib/gemstack/cache/redis_store.rb
172
+ - lib/gemstack/cache/store.rb
173
+ - lib/gemstack/cli.rb
174
+ - lib/gemstack/cli/add_generator.rb
175
+ - lib/gemstack/cli/app_generator.rb
176
+ - lib/gemstack/cli/commands/db.rb
177
+ - lib/gemstack/cli/commands/jobs.rb
178
+ - lib/gemstack/cli/controller_generator.rb
179
+ - lib/gemstack/cli/deploy_generator.rb
180
+ - lib/gemstack/cli/doctor.rb
181
+ - lib/gemstack/cli/doctor/upgrade_check.rb
182
+ - lib/gemstack/cli/generator.rb
183
+ - lib/gemstack/cli/job_generator.rb
184
+ - lib/gemstack/cli/migration_generator.rb
185
+ - lib/gemstack/cli/policy_generator.rb
186
+ - lib/gemstack/cli/project.rb
187
+ - lib/gemstack/cli/resource_generator.rb
188
+ - lib/gemstack/cli/resource_spec.rb
189
+ - lib/gemstack/contract.rb
190
+ - lib/gemstack/contract/builder.rb
191
+ - lib/gemstack/contract/docs.rb
192
+ - lib/gemstack/contract/docs/index.html
193
+ - lib/gemstack/contract/openapi.rb
194
+ - lib/gemstack/contract/typescript.rb
195
+ - lib/gemstack/core.rb
196
+ - lib/gemstack/db.rb
197
+ - lib/gemstack/db/configuration.rb
198
+ - lib/gemstack/db/errors.rb
199
+ - lib/gemstack/db/json_compat.rb
200
+ - lib/gemstack/db/migrator.rb
201
+ - lib/gemstack/db/model.rb
202
+ - lib/gemstack/db/schema_types.rb
203
+ - lib/gemstack/db/tasks.rb
204
+ - lib/gemstack/db/testing.rb
205
+ - lib/gemstack/dev.rb
206
+ - lib/gemstack/dev/file_watcher.rb
207
+ - lib/gemstack/dev/gateway.rb
208
+ - lib/gemstack/dev/managed_process.rb
209
+ - lib/gemstack/dev/ports.rb
210
+ - lib/gemstack/dev/supervisor.rb
211
+ - lib/gemstack/dev/terminal.rb
212
+ - lib/gemstack/dev/toolchain.rb
213
+ - lib/gemstack/dotenv.rb
214
+ - lib/gemstack/environment.rb
215
+ - lib/gemstack/error_mapping.rb
216
+ - lib/gemstack/errors.rb
217
+ - lib/gemstack/http.rb
218
+ - lib/gemstack/http/app.rb
219
+ - lib/gemstack/http/config.rb
220
+ - lib/gemstack/http/controller.rb
221
+ - lib/gemstack/http/error_page.rb
222
+ - lib/gemstack/http/error_renderer.rb
223
+ - lib/gemstack/http/json_codec.rb
224
+ - lib/gemstack/http/middleware/body_limit.rb
225
+ - lib/gemstack/http/middleware/compression.rb
226
+ - lib/gemstack/http/middleware/cors.rb
227
+ - lib/gemstack/http/middleware/error_handler.rb
228
+ - lib/gemstack/http/middleware/etags.rb
229
+ - lib/gemstack/http/middleware/health_check.rb
230
+ - lib/gemstack/http/middleware/request_id.rb
231
+ - lib/gemstack/http/middleware/request_logger.rb
232
+ - lib/gemstack/http/middleware/security_headers.rb
233
+ - lib/gemstack/http/middleware_stack.rb
234
+ - lib/gemstack/http/page.rb
235
+ - lib/gemstack/http/params.rb
236
+ - lib/gemstack/http/request.rb
237
+ - lib/gemstack/http/router.rb
238
+ - lib/gemstack/inflector.rb
150
239
  - lib/gemstack/interlock.rb
240
+ - lib/gemstack/job.rb
241
+ - lib/gemstack/jobs.rb
242
+ - lib/gemstack/jobs/adapters/async.rb
243
+ - lib/gemstack/jobs/adapters/database.rb
244
+ - lib/gemstack/jobs/adapters/inline.rb
245
+ - lib/gemstack/jobs/adapters/sidekiq.rb
246
+ - lib/gemstack/jobs/adapters/test.rb
247
+ - lib/gemstack/jobs/executor.rb
248
+ - lib/gemstack/jobs/testing.rb
249
+ - lib/gemstack/jobs/worker.rb
250
+ - lib/gemstack/logger.rb
251
+ - lib/gemstack/mail.rb
252
+ - lib/gemstack/mail/delivery_job.rb
253
+ - lib/gemstack/mail/testing.rb
254
+ - lib/gemstack/plugins.rb
151
255
  - lib/gemstack/reloader.rb
256
+ - lib/gemstack/schema.rb
257
+ - lib/gemstack/serializer.rb
258
+ - lib/gemstack/settings.rb
259
+ - lib/gemstack/storage.rb
260
+ - lib/gemstack/storage/endpoint.rb
261
+ - lib/gemstack/storage/services/disk.rb
262
+ - lib/gemstack/storage/services/s3.rb
263
+ - lib/gemstack/storage/testing.rb
152
264
  - lib/gemstack/testing.rb
265
+ - lib/gemstack/types.rb
266
+ - lib/gemstack/version.rb
267
+ - templates/app/Gemfile.tt
268
+ - templates/app/README.md.tt
269
+ - templates/app/app/controllers/application_controller.rb
270
+ - templates/app/app/jobs/application_job.rb
271
+ - templates/app/app/mailers/application_mailer.rb
272
+ - templates/app/app/mailers/templates/dot_keep
273
+ - templates/app/app/models/application_model.rb
274
+ - templates/app/app/serializers/application_serializer.rb
275
+ - templates/app/bin/gemstack
276
+ - templates/app/config.ru
277
+ - templates/app/config/app.rb.tt
278
+ - templates/app/config/database.yml.tt
279
+ - templates/app/config/environments/development.rb.tt
280
+ - templates/app/config/environments/production.rb.tt
281
+ - templates/app/config/environments/test.rb.tt
282
+ - templates/app/config/puma.rb
283
+ - templates/app/config/routes.rb
284
+ - templates/app/db/migrations/dot_keep
285
+ - templates/app/db/seeds.rb
286
+ - templates/app/dot_env.example.tt
287
+ - templates/app/dot_gitignore
288
+ - templates/app/dot_node-version.tt
289
+ - templates/app/dot_nvmrc.tt
290
+ - templates/app/dot_ruby-version.tt
291
+ - templates/app/dot_tool-versions.tt
292
+ - templates/app/test/health_test.rb
293
+ - templates/app/test/test_helper.rb.tt
294
+ - templates/auth/app/controllers/api_tokens_controller.rb
295
+ - templates/auth/app/controllers/email_verifications_controller.rb
296
+ - templates/auth/app/controllers/password_resets_controller.rb
297
+ - templates/auth/app/controllers/registrations_controller.rb
298
+ - templates/auth/app/controllers/sessions_controller.rb
299
+ - templates/auth/app/mailers/auth_mailer.rb
300
+ - templates/auth/app/mailers/templates/auth_mailer/email_verification.html.erb
301
+ - templates/auth/app/mailers/templates/auth_mailer/email_verification.text.erb
302
+ - templates/auth/app/mailers/templates/auth_mailer/password_reset.html.erb
303
+ - templates/auth/app/mailers/templates/auth_mailer/password_reset.text.erb
304
+ - templates/auth/app/models/auth_token.rb
305
+ - templates/auth/app/models/user.rb
306
+ - templates/auth/app/policies/application_policy.rb
307
+ - templates/auth/app/serializers/api_token_serializer.rb
308
+ - templates/auth/app/serializers/new_api_token_serializer.rb
309
+ - templates/auth/app/serializers/user_serializer.rb
310
+ - templates/auth/db/migrations/%timestamp%_create_auth_tables.rb
311
+ - templates/auth/frontend/app/account/page.tsx
312
+ - templates/auth/frontend/app/forgot-password/page.tsx
313
+ - templates/auth/frontend/app/login/page.tsx
314
+ - templates/auth/frontend/app/reset-password/page.tsx
315
+ - templates/auth/frontend/app/signup/page.tsx
316
+ - templates/auth/frontend/app/verify-email/page.tsx
317
+ - templates/auth/frontend/components/auth/CredentialsForm.tsx
318
+ - templates/auth/frontend/components/auth/ResetPasswordForm.tsx
319
+ - templates/auth/frontend/components/auth/VerifyEmail.tsx
320
+ - templates/auth/frontend/lib/auth.ts
321
+ - templates/auth/test/controllers/auth_test.rb
322
+ - templates/controller/app/controllers/%file_name%_controller.rb.tt
323
+ - templates/controller/test/controllers/%file_name%_controller_test.rb.tt
324
+ - templates/deploy/Caddyfile.tt
325
+ - templates/deploy/Dockerfile.tt
326
+ - templates/deploy/Procfile.tt
327
+ - templates/deploy/compose.yaml.tt
328
+ - templates/deploy/dot_dockerignore
329
+ - templates/frontend/app/globals.css
330
+ - templates/frontend/app/layout.tsx.tt
331
+ - templates/frontend/app/page.module.css
332
+ - templates/frontend/app/page.tsx.tt
333
+ - templates/frontend/app/providers.tsx
334
+ - templates/frontend/lib/gemstack/client.ts
335
+ - templates/frontend/next-env.d.ts
336
+ - templates/frontend/next.config.ts
337
+ - templates/frontend/package.json.tt
338
+ - templates/frontend/tsconfig.json
339
+ - templates/job/app/jobs/%file_name%.rb.tt
340
+ - templates/job/test/jobs/%file_name%_test.rb.tt
341
+ - templates/migration/db/migrations/%timestamp%_%file_name%.rb.tt
342
+ - templates/policy/app/policies/%file_name%_policy.rb.tt
343
+ - templates/policy/test/policies/%file_name%_policy_test.rb.tt
344
+ - templates/realtime/config/channels.rb
345
+ - templates/realtime/frontend/lib/gemstack/realtime.ts
346
+ - templates/resource/controller/app/controllers/%plural%_controller.rb.tt
347
+ - templates/resource/controller/test/controllers/%plural%_controller_test.rb.tt
348
+ - templates/resource/frontend/frontend/app/%url_segment%/[id]/edit/page.tsx.tt
349
+ - templates/resource/frontend/frontend/app/%url_segment%/[id]/page.tsx.tt
350
+ - templates/resource/frontend/frontend/app/%url_segment%/new/page.tsx.tt
351
+ - templates/resource/frontend/frontend/app/%url_segment%/page.tsx.tt
352
+ - templates/resource/frontend/frontend/components/%url_segment%/%class_name%Card.tsx.tt
353
+ - templates/resource/frontend/frontend/components/%url_segment%/%class_name%Form.tsx.tt
354
+ - templates/resource/frontend/frontend/components/%url_segment%/%class_name%Table.tsx.tt
355
+ - templates/resource/frontend/frontend/lib/format.ts
356
+ - templates/resource/frontend/frontend/lib/queries/%url_segment%.ts.tt
357
+ - templates/resource/migration/db/migrations/%timestamp%_create_%table%.rb.tt
358
+ - templates/resource/model/app/models/%file_name%.rb.tt
359
+ - templates/resource/model/test/models/%file_name%_test.rb.tt
360
+ - templates/resource/serializer/app/serializers/%file_name%_serializer.rb.tt
361
+ - templates/storage/app/controllers/uploads_controller.rb.tt
362
+ - templates/storage/app/serializers/upload_serializer.rb
363
+ - templates/storage/frontend/lib/upload.ts
364
+ - templates/storage/test/controllers/uploads_test.rb.tt
153
365
  homepage: https://github.com/gemstack-rb/gemstack
154
366
  licenses:
155
367
  - MIT
156
368
  metadata:
157
369
  rubygems_mfa_required: 'true'
158
370
  source_code_uri: https://github.com/gemstack-rb/gemstack/tree/main/gems/gemstack
159
- changelog_uri: https://github.com/gemstack-rb/gemstack/blob/main/gems/gemstack/CHANGELOG.md
371
+ changelog_uri: https://github.com/gemstack-rb/gemstack/blob/main/CHANGELOG.md
160
372
  bug_tracker_uri: https://github.com/gemstack-rb/gemstack/issues
161
373
  documentation_uri: https://github.com/gemstack-rb/gemstack/tree/main/docs
162
374
  rdoc_options: []