tina4 0.4.0 → 0.5.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tina4/version.rb +1 -1
  3. data/lib/tina4ruby.rb +4 -0
  4. metadata +14 -258
  5. data/CHANGELOG.md +0 -80
  6. data/LICENSE.txt +0 -21
  7. data/README.md +0 -758
  8. data/exe/tina4 +0 -4
  9. data/lib/tina4/api.rb +0 -152
  10. data/lib/tina4/auth.rb +0 -139
  11. data/lib/tina4/cli.rb +0 -312
  12. data/lib/tina4/crud.rb +0 -124
  13. data/lib/tina4/database.rb +0 -135
  14. data/lib/tina4/database_result.rb +0 -89
  15. data/lib/tina4/debug.rb +0 -83
  16. data/lib/tina4/dev_reload.rb +0 -68
  17. data/lib/tina4/drivers/firebird_driver.rb +0 -94
  18. data/lib/tina4/drivers/mssql_driver.rb +0 -112
  19. data/lib/tina4/drivers/mysql_driver.rb +0 -90
  20. data/lib/tina4/drivers/postgres_driver.rb +0 -99
  21. data/lib/tina4/drivers/sqlite_driver.rb +0 -85
  22. data/lib/tina4/env.rb +0 -55
  23. data/lib/tina4/field_types.rb +0 -84
  24. data/lib/tina4/graphql.rb +0 -837
  25. data/lib/tina4/localization.rb +0 -100
  26. data/lib/tina4/middleware.rb +0 -59
  27. data/lib/tina4/migration.rb +0 -124
  28. data/lib/tina4/orm.rb +0 -168
  29. data/lib/tina4/queue.rb +0 -117
  30. data/lib/tina4/queue_backends/kafka_backend.rb +0 -80
  31. data/lib/tina4/queue_backends/lite_backend.rb +0 -79
  32. data/lib/tina4/queue_backends/rabbitmq_backend.rb +0 -73
  33. data/lib/tina4/rack_app.rb +0 -150
  34. data/lib/tina4/request.rb +0 -158
  35. data/lib/tina4/response.rb +0 -172
  36. data/lib/tina4/router.rb +0 -142
  37. data/lib/tina4/scss_compiler.rb +0 -131
  38. data/lib/tina4/session.rb +0 -145
  39. data/lib/tina4/session_handlers/file_handler.rb +0 -55
  40. data/lib/tina4/session_handlers/mongo_handler.rb +0 -49
  41. data/lib/tina4/session_handlers/redis_handler.rb +0 -43
  42. data/lib/tina4/swagger.rb +0 -123
  43. data/lib/tina4/template.rb +0 -478
  44. data/lib/tina4/templates/base.twig +0 -25
  45. data/lib/tina4/templates/errors/403.twig +0 -22
  46. data/lib/tina4/templates/errors/404.twig +0 -22
  47. data/lib/tina4/templates/errors/500.twig +0 -22
  48. data/lib/tina4/testing.rb +0 -213
  49. data/lib/tina4/webserver.rb +0 -101
  50. data/lib/tina4/websocket.rb +0 -167
  51. data/lib/tina4/wsdl.rb +0 -164
  52. data/lib/tina4.rb +0 -234
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5418ddd6412424d2a754ec45b7a435d1d189dcbfdfc0ddfcff54b02f5993d5ca
4
- data.tar.gz: 8729da6284e85d545426c96b8b8e5a33b22b040270cd6e0fd754bb9f75e71198
3
+ metadata.gz: 739e17e55f03eaae607aef1a67926c9435e0635133b1b4abc4e12f4ec828e627
4
+ data.tar.gz: 68ad63f323b83a4684289102db5605ee74cd29a6906d980d64a27e9908484cec
5
5
  SHA512:
6
- metadata.gz: e63ae672c5752d40cb22785438897ae0b6cbdea0e52402cf749dec6eba22786b4da72873ab87f2de3df8df73ed0a2abd15e925dcf8aeffaddb660900834f5b5d
7
- data.tar.gz: 1fdfcf15878f12d1cc4451dd0a9cdb73e659455d8e1c54ccbeba41d4acd1396d08c5c7022f75037fb4590c7d36c99e67968fdc7c3ae1d6461f5a50208a731263
6
+ metadata.gz: eaacb288608786026b1a3f03bd7753074bff30eff9fc16bfcc3b4396bf67c6c9fe61c6cb06f5d0668102ffaa0ca6a762d2530a5e2f2bc70e8e060e4203de7391
7
+ data.tar.gz: 9a8a5fd6d40af9de2e8eedbd14b467e7f8e9c83fc891a9be0337a8c6cd7bb3480c0c063d35d3101ffa76caff96cfa536b8f3edd2354f4edee22a35aa88266bee
data/lib/tina4/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tina4
4
- VERSION = "0.4.0"
4
+ VERSION = "0.5.0"
5
5
  end
data/lib/tina4ruby.rb ADDED
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Alias: `require "tina4ruby"` loads the same code as `require "tina4"`
4
+ require_relative "tina4"
metadata CHANGED
@@ -1,288 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tina4
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tina4 Team
8
- autorequire:
9
- bindir: exe
8
+ bindir: bin
10
9
  cert_chain: []
11
- date: 2026-03-18 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: rack
13
+ name: tina4ruby
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '3.0'
18
+ version: '0.5'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '3.0'
27
- - !ruby/object:Gem::Dependency
28
- name: rackup
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.1'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.1'
41
- - !ruby/object:Gem::Dependency
42
- name: puma
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '6.0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '6.0'
55
- - !ruby/object:Gem::Dependency
56
- name: webrick
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '1.8'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '1.8'
69
- - !ruby/object:Gem::Dependency
70
- name: dotenv
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.0'
83
- - !ruby/object:Gem::Dependency
84
- name: jwt
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '2.7'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '2.7'
97
- - !ruby/object:Gem::Dependency
98
- name: bcrypt
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '3.1'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '3.1'
111
- - !ruby/object:Gem::Dependency
112
- name: listen
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '3.8'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '3.8'
125
- - !ruby/object:Gem::Dependency
126
- name: thor
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '1.3'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '1.3'
139
- - !ruby/object:Gem::Dependency
140
- name: json
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '2.7'
146
- type: :runtime
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '2.7'
153
- - !ruby/object:Gem::Dependency
154
- name: sqlite3
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '2.0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '2.0'
167
- - !ruby/object:Gem::Dependency
168
- name: pg
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '1.5'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '1.5'
181
- - !ruby/object:Gem::Dependency
182
- name: rake
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: '13.0'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: '13.0'
195
- - !ruby/object:Gem::Dependency
196
- name: rspec
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - "~>"
200
- - !ruby/object:Gem::Version
201
- version: '3.12'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - "~>"
207
- - !ruby/object:Gem::Version
208
- version: '3.12'
209
- - !ruby/object:Gem::Dependency
210
- name: rubocop
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - "~>"
214
- - !ruby/object:Gem::Version
215
- version: '1.50'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - "~>"
221
- - !ruby/object:Gem::Version
222
- version: '1.50'
223
- description: A lightweight, zero-configuration, Windows-friendly Ruby web framework.
25
+ version: '0.5'
26
+ description: This gem has been renamed to tina4ruby. Install tina4ruby for the latest
27
+ version.
224
28
  email:
225
29
  - info@tina4.com
226
- executables:
227
- - tina4
30
+ executables: []
228
31
  extensions: []
229
32
  extra_rdoc_files: []
230
33
  files:
231
- - CHANGELOG.md
232
- - LICENSE.txt
233
- - README.md
234
- - exe/tina4
235
- - lib/tina4.rb
236
- - lib/tina4/api.rb
237
- - lib/tina4/auth.rb
238
- - lib/tina4/cli.rb
239
- - lib/tina4/crud.rb
240
- - lib/tina4/database.rb
241
- - lib/tina4/database_result.rb
242
- - lib/tina4/debug.rb
243
- - lib/tina4/dev_reload.rb
244
- - lib/tina4/drivers/firebird_driver.rb
245
- - lib/tina4/drivers/mssql_driver.rb
246
- - lib/tina4/drivers/mysql_driver.rb
247
- - lib/tina4/drivers/postgres_driver.rb
248
- - lib/tina4/drivers/sqlite_driver.rb
249
- - lib/tina4/env.rb
250
- - lib/tina4/field_types.rb
251
- - lib/tina4/graphql.rb
252
- - lib/tina4/localization.rb
253
- - lib/tina4/middleware.rb
254
- - lib/tina4/migration.rb
255
- - lib/tina4/orm.rb
256
- - lib/tina4/queue.rb
257
- - lib/tina4/queue_backends/kafka_backend.rb
258
- - lib/tina4/queue_backends/lite_backend.rb
259
- - lib/tina4/queue_backends/rabbitmq_backend.rb
260
- - lib/tina4/rack_app.rb
261
- - lib/tina4/request.rb
262
- - lib/tina4/response.rb
263
- - lib/tina4/router.rb
264
- - lib/tina4/scss_compiler.rb
265
- - lib/tina4/session.rb
266
- - lib/tina4/session_handlers/file_handler.rb
267
- - lib/tina4/session_handlers/mongo_handler.rb
268
- - lib/tina4/session_handlers/redis_handler.rb
269
- - lib/tina4/swagger.rb
270
- - lib/tina4/template.rb
271
- - lib/tina4/templates/base.twig
272
- - lib/tina4/templates/errors/403.twig
273
- - lib/tina4/templates/errors/404.twig
274
- - lib/tina4/templates/errors/500.twig
275
- - lib/tina4/testing.rb
276
34
  - lib/tina4/version.rb
277
- - lib/tina4/webserver.rb
278
- - lib/tina4/websocket.rb
279
- - lib/tina4/wsdl.rb
35
+ - lib/tina4ruby.rb
280
36
  homepage: https://tina4.com
281
37
  licenses:
282
38
  - MIT
283
39
  metadata:
284
40
  homepage_uri: https://tina4.com
285
- post_install_message:
41
+ post_install_message: 'NOTE: The ''tina4'' gem has been renamed to ''tina4ruby''.
42
+ Please update your Gemfile: gem ''tina4ruby'''
286
43
  rdoc_options: []
287
44
  require_paths:
288
45
  - lib
@@ -297,8 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
297
54
  - !ruby/object:Gem::Version
298
55
  version: '0'
299
56
  requirements: []
300
- rubygems_version: 3.5.22
301
- signing_key:
57
+ rubygems_version: 4.0.3
302
58
  specification_version: 4
303
- summary: Simple. Fast. Human. This is not a framework.
59
+ summary: Transitional package use tina4ruby instead.
304
60
  test_files: []
data/CHANGELOG.md DELETED
@@ -1,80 +0,0 @@
1
- # Changelog
2
-
3
- ## [0.4.0] - 2026-03-18
4
-
5
- ### Added
6
- - Multi-stage Dockerfile (ruby:3.3-alpine, build + runtime stages, optimized layer caching)
7
- - .dockerignore for clean Docker builds
8
- - `tina4 init` now generates Dockerfile and .dockerignore alongside project scaffolding
9
-
10
- ## [0.3.0] - 2026-03-14
11
-
12
- ### Added
13
- - Zero-dependency GraphQL implementation (matching tina4php-graphql)
14
- - Recursive descent GraphQL parser (queries, mutations, fragments, variables, aliases)
15
- - Depth-first AST executor with resolver pattern
16
- - GraphQL schema with programmatic type registration
17
- - ORM auto-schema generation (`schema.from_orm(User)`) — auto-creates CRUD queries/mutations
18
- - GraphiQL UI served at GET /graphql
19
- - Route integration via `gql.register_route("/graphql")`
20
- - Full GraphQL type system (scalars, objects, lists, non-null, input objects)
21
-
22
- ## [0.2.0] - 2026-03-14
23
-
24
- ### Added
25
- - Default auth protection for POST/PUT/PATCH/DELETE routes (matching tina4_python behavior)
26
- - API_KEY bypass in bearer auth — if `ENV["API_KEY"]` matches the bearer token, access is granted
27
- - `auth: false` option to make write routes public (equivalent to tina4_python's `@noauth()`)
28
- - `default_secure_auth` cached auth handler for performance
29
- - `resolve_auth` helper for flexible auth resolution
30
- - Puma as default production server (WEBrick fallback)
31
- - `add_header` method on Response object
32
-
33
- ### Improved
34
- - Performance: lazy-initialized Request fields (headers, body, params, cookies, files)
35
- - Performance: pre-frozen CORS headers and OPTIONS response (zero allocation)
36
- - Performance: method-indexed route lookup (O(1) method filtering)
37
- - Performance: pre-computed static file roots at boot
38
- - Performance: fast-path for API routes skipping static file checks
39
- - Performance: cookie-less response fast path (no header duplication)
40
- - Router: normalized path computed once per request instead of per-route
41
- - Router: `match_path` returns params directly without redundant method check
42
- - Response: frozen content-type constants
43
- - Request: lazy `json_body` parsing
44
- - RackApp: skip `auto_detect` when handler returns response object directly
45
-
46
- ### Changed
47
- - GET routes remain public by default
48
- - POST/PUT/PATCH/DELETE routes are now secured by default (use `auth: false` to make public)
49
- - `any` routes default to public (`auth: false`)
50
- - `secure_*` variants now use `default_secure_auth` (cached lambda)
51
-
52
- ## [0.1.0] - 2026-03-14
53
-
54
- ### Added
55
- - Core framework with Rack-based request pipeline
56
- - DSL routing (get, post, put, patch, delete, any)
57
- - Path parameters with type casting ({id:int}, {id:float}, {id:path})
58
- - Route groups with shared auth handlers
59
- - Request/Response objects with auto-type detection
60
- - Puma production server (WEBrick fallback)
61
- - SQLite, PostgreSQL, MySQL, MSSQL, Firebird database drivers
62
- - Database abstraction with parameterized queries
63
- - ORM with field types DSL and CRUD operations
64
- - SQL migration runner
65
- - JWT RS256 authentication + bcrypt password hashing
66
- - File-based sessions with JWT tokens
67
- - Before/after middleware hooks
68
- - OpenAPI 3.0 Swagger auto-generation
69
- - Twig-compatible template engine (ERB fallback)
70
- - CRUD scaffolding
71
- - REST API client helper
72
- - WebSocket support
73
- - Message queue abstraction (file, RabbitMQ, Kafka backends)
74
- - SCSS auto-compilation
75
- - Dev reload with file watching
76
- - i18n localization
77
- - Inline testing framework
78
- - CLI commands (init, start, migrate, test)
79
- - .env auto-creation and loading
80
- - Colored debug logging with rotation
data/LICENSE.txt DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 Tina4 Team
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.