hyraft 0.1.0.alpha2 → 1.0.0.alpha1

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 (118) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +63 -100
  3. data/{templates/do_app → do_app}/Gemfile +15 -14
  4. data/do_app/Rakefile +29 -0
  5. data/do_app/app/web/display/pages/errors/404.hyr +8 -0
  6. data/do_app/app/web/display/pages/home/home.hyr +555 -0
  7. data/do_app/app/web/display/pages/layouts/application.hyr +9 -0
  8. data/do_app/app/web/display/pages/segments/footer.hyr +5 -0
  9. data/do_app/app/web/display/pages/segments/navbar.hyr +26 -0
  10. data/do_app/boot.rb +35 -0
  11. data/do_app/connectors/helpers/paginate_helper.rb +86 -0
  12. data/do_app/framework/adapters/display/global_display_adapter.rb +38 -0
  13. data/do_app/framework/adapters/display/spa_adapter.rb +170 -0
  14. data/do_app/framework/adapters/display/traditional_adapter.rb +367 -0
  15. data/do_app/framework/adapters/server/server_api_adapter.rb +140 -0
  16. data/do_app/framework/adapters/server/server_api_adapter_old.rb +143 -0
  17. data/do_app/framework/adapters/server/server_web_adapter.rb +382 -0
  18. data/{templates/do_app/framework/adapters/server/server_web_adapter.rb → do_app/framework/adapters/server/server_web_adapterWork.rb} +80 -63
  19. data/{templates/do_app → do_app}/framework/middleware/cors_middleware.rb +8 -5
  20. data/do_app/framework/ports/display_resolver_port.rb +36 -0
  21. data/do_app/public/favicon.ico +0 -0
  22. data/do_app/public/images/hyr-logo.png +0 -0
  23. data/do_app/public/images/hyr-logo.webp +0 -0
  24. data/do_app/public/index.html +20 -0
  25. data/do_app/public/styles/css/articles.css +106 -0
  26. data/do_app/public/styles/css/styles.css +14 -0
  27. data/do_app/routes/api_routes.rb +7 -0
  28. data/do_app/routes/web_routes.rb +27 -0
  29. data/do_app/setup/database/migrations/20260301210926_create_users.rb +23 -0
  30. data/{templates/do_app/infra → do_app/setup}/database/sequel_connection.rb +2 -2
  31. data/do_app/setup/environment.rb +218 -0
  32. data/{templates/do_app/infra/config → do_app/setup}/error_config.rb +7 -7
  33. data/{templates/do_app/infra → do_app/setup}/gems/database.rb +1 -1
  34. data/do_app/setup/gems/load_all.rb +4 -0
  35. data/do_app/setup/gems/utilities.rb +1 -0
  36. data/do_app/setup/gems/web.rb +3 -0
  37. data/{templates/do_app/infra → do_app/setup}/server/web-server.ru +1 -1
  38. data/{templates/do_app → do_app}/test/db.rb +1 -1
  39. data/do_app/test/test_helper.rb +37 -0
  40. data/exe/hyraft +0 -0
  41. data/lib/hyraft/application.rb +6 -0
  42. data/lib/hyraft/boot/preloader.rb +34 -65
  43. data/lib/hyraft/circuit/origin.rb +124 -0
  44. data/lib/hyraft/circuit/port.rb +184 -0
  45. data/lib/hyraft/circuit.rb +10 -0
  46. data/lib/hyraft/cli.rb +147 -128
  47. data/lib/hyraft/compiler/compiler.rb +71 -19
  48. data/lib/hyraft/compiler/encryptor.rb +10 -0
  49. data/lib/hyraft/compiler/{html_purifier.rb → html_safety.rb} +12 -12
  50. data/lib/hyraft/compiler/import_processor.rb +19 -0
  51. data/lib/hyraft/compiler/javascript_library.rb +21 -280
  52. data/lib/hyraft/compiler/join_processor.rb +238 -0
  53. data/lib/hyraft/compiler/page_processor.rb +226 -0
  54. data/lib/hyraft/compiler/parser.rb +33 -16
  55. data/lib/hyraft/compiler/renderer.rb +339 -178
  56. data/lib/hyraft/pathway.rb +24 -0
  57. data/lib/hyraft/response.rb +46 -0
  58. data/lib/hyraft/router/api_router.rb +36 -28
  59. data/lib/hyraft/router/web_router.rb +119 -78
  60. data/lib/hyraft/system_info.rb +46 -9
  61. data/lib/hyraft/version.rb +1 -3
  62. data/lib/hyraft.rb +34 -15
  63. metadata +146 -111
  64. data/lib/hyraft/compiler/javascript_obfuscator.rb +0 -141
  65. data/lib/hyraft/engine/circuit.rb +0 -35
  66. data/lib/hyraft/engine/port.rb +0 -17
  67. data/lib/hyraft/engine/source.rb +0 -19
  68. data/lib/hyraft/engine.rb +0 -11
  69. data/templates/do_app/Rakefile +0 -88
  70. data/templates/do_app/adapter-intake/web-app/display/pages/home/home.hyr +0 -174
  71. data/templates/do_app/adapter-intake/web-app/request/home_web_adapter.rb +0 -19
  72. data/templates/do_app/boot.rb +0 -41
  73. data/templates/do_app/framework/adapters/server/server_api_adapter.rb +0 -51
  74. data/templates/do_app/framework/compiler/style_resolver.rb +0 -33
  75. data/templates/do_app/infra/config/environment.rb +0 -86
  76. data/templates/do_app/infra/config/routes/api_routes.rb +0 -2
  77. data/templates/do_app/infra/config/routes/web_routes.rb +0 -10
  78. data/templates/do_app/infra/gems/load_all.rb +0 -4
  79. data/templates/do_app/infra/gems/utilities.rb +0 -1
  80. data/templates/do_app/infra/gems/web.rb +0 -3
  81. data/templates/do_app/public/favicon.ico +0 -0
  82. data/templates/do_app/public/images/hyr-logo.png +0 -0
  83. data/templates/do_app/public/images/hyr-logo.webp +0 -0
  84. data/templates/do_app/public/index.html +0 -22
  85. data/templates/do_app/shared/helpers/pagination_helper.rb +0 -44
  86. data/templates/do_app/shared/helpers/response_formatter.rb +0 -25
  87. data/templates/do_app/test/acceptance/api/articles_api_acceptance_test.rb +0 -43
  88. data/templates/do_app/test/acceptance/web/articles_acceptance_test.rb +0 -31
  89. data/templates/do_app/test/acceptance/web/home_acceptance_test.rb +0 -17
  90. data/templates/do_app/test/integration/adapter-exhaust/data-gateway/sequel_articles_gateway_test.rb +0 -79
  91. data/templates/do_app/test/integration/adapter-intake/api-app/request/articles_api_adapter_test.rb +0 -61
  92. data/templates/do_app/test/integration/adapter-intake/web-app/request/articles_web_adapter_test.rb +0 -20
  93. data/templates/do_app/test/integration/adapter-intake/web-app/request/home_web_adapter_test.rb +0 -17
  94. data/templates/do_app/test/integration/database/migration_test.rb +0 -35
  95. data/templates/do_app/test/support/mock_api_adapter.rb +0 -82
  96. data/templates/do_app/test/support/mock_articles_gateway.rb +0 -41
  97. data/templates/do_app/test/support/mock_web_adapter.rb +0 -85
  98. data/templates/do_app/test/support/test_patches.rb +0 -33
  99. data/templates/do_app/test/test_helper.rb +0 -526
  100. data/templates/do_app/test/unit/engine/circuit/articles_circuit_test.rb +0 -167
  101. data/templates/do_app/test/unit/engine/port/articles_gateway_port_test.rb +0 -12
  102. data/templates/do_app/test/unit/engine/source/article_test.rb +0 -37
  103. /data/{templates/do_app → do_app}/framework/errors/error_handler.rb +0 -0
  104. /data/{templates/do_app → do_app}/framework/errors/templates/304.html +0 -0
  105. /data/{templates/do_app → do_app}/framework/errors/templates/400.html +0 -0
  106. /data/{templates/do_app → do_app}/framework/errors/templates/401.html +0 -0
  107. /data/{templates/do_app → do_app}/framework/errors/templates/403.html +0 -0
  108. /data/{templates/do_app → do_app}/framework/errors/templates/404.html +0 -0
  109. /data/{templates/do_app → do_app}/framework/errors/templates/500.html +0 -0
  110. /data/{templates/do_app → do_app}/package.json +0 -0
  111. /data/{templates/do_app → do_app}/public/icons/docs.svg +0 -0
  112. /data/{templates/do_app → do_app}/public/icons/expli.svg +0 -0
  113. /data/{templates/do_app → do_app}/public/icons/git-repo.svg +0 -0
  114. /data/{templates/do_app → do_app}/public/icons/hexagonal-arch.svg +0 -0
  115. /data/{templates/do_app → do_app}/public/icons/template-engine.svg +0 -0
  116. /data/{templates/do_app → do_app}/public/styles/css/main.css +0 -0
  117. /data/{templates/do_app → do_app}/public/styles/css/spa.css +0 -0
  118. /data/{templates/do_app/infra → do_app/setup}/server/api-server.ru +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5665b4dea485012a017781ea33b192b663955b8874f7203dc33d0a2862e0632c
4
- data.tar.gz: e0433dad58b580e3e8cd9d157cf6f0e1e4d33847fc628d19120b1a05117bc0dc
3
+ metadata.gz: e1c73d82ac8fd58cce15060981b826ce3f2c5759e89d014a85318da5e86fbe6b
4
+ data.tar.gz: d09d08b20503940d85c37ceae908e298ae078daae05c7b28a125ffbc0c82090d
5
5
  SHA512:
6
- metadata.gz: fd8d79578b9a1b1a6aee53f75dc225072bbc42badb4fe2d5ca57b4313c0d5d33b3b2a00101a2e96dca2d237753801d1e7bc15f8692c10d50fd25359af07fbeab
7
- data.tar.gz: b64fe3beef1b8065c89182f369ea35a3e9695501bae642333902918ac9e9fb2e251bd27a4d2071f02469bf49ea19baa1ad91e86386468623d2472896b54e216a
6
+ metadata.gz: 682bc7c834acc1480cb358e4c1cf26146ac335c15963a2721ed378209518585bd00ad0da3d2fde428d25258cfd4620b8c06e5859a69eef4d4d38bd29595d895c
7
+ data.tar.gz: 481c0550587c02b23cb8d50ae3a4d83c358ba297e8000ee58588d2591933edd7f3f1423886cc938572b7a1a0e2917ee5fb97367e0c03acb162e072e5003f7825
data/README.md CHANGED
@@ -8,25 +8,24 @@
8
8
  [![Gem Version](https://badge.fury.io/rb/hyraft.svg?icon=si%3Arubygems&icon_color=%23ffffff)](https://badge.fury.io/rb/hyraft)
9
9
  ![Downloads](https://img.shields.io/gem/dt/hyraft)
10
10
  ![License](https://img.shields.io/github/license/demjhonsilver/hyraft)
11
- ![Ruby Version](https://img.shields.io/badge/ruby-%3E%3D%203.4.0-red)
12
- ![Tests](https://github.com/demjhonsilver/hyraft/actions/workflows/ci.yml/badge.svg)
11
+ ![Ruby Version](https://img.shields.io/badge/ruby-%3E%3D%204.0.0-blue)
13
12
 
14
13
 
15
14
  </div>
16
15
 
17
16
 
18
- **A high-performance Ruby web framework with hexagonal architecture**
17
+ **A high-performance Ruby framework with hexagonal architecture and easy to learn.**
19
18
 
20
- Hyraft is a modern Ruby web framework that combines excellent performance with clean hexagonal architecture. Built for developers who want both speed and maintainability in their web applications.
19
+ Hyraft is a high-performance Ruby API framework combining hexagonal architecture with Elevhyra frontend integration, enabling developers to build scalable, full-stack applications with clean layer separation and reactive client-side interactivity.
21
20
 
22
21
 
23
22
  ## Features
24
23
 
25
- - **High Performance**: 37-55ms page renders, faster than most Ruby frameworks
26
- - **Hexagonal Architecture**: Clean separation with ports, adapters, and use cases
24
+ - **High Performance**: Page renders, faster than most Ruby frameworks
25
+ - **Hexagonal Architecture**: Clean separation with ports, adapters, and use cases (concrete)
27
26
  - **Custom Template Engine**: `.hyr` files with metadata, displayers, transmuters, and manifestors
28
27
  - **Multi-App Support**: Run multiple applications under one framework
29
- - **Dual Server Mode**: Web server (port 1091) + API server (port 1092) simultaneously
28
+ - **Dual Server Mode**: Web server (port 1025) + API server (port 1126) simultaneously
30
29
  - **Auto-Discovery**: Automatic template and component discovery across apps
31
30
  - **Lightweight**: Minimal dependencies, maximum performance
32
31
 
@@ -38,12 +37,13 @@ Hyraft is a modern Ruby web framework that combines excellent performance with c
38
37
  - **Hyraft-rule** - CLI `(Commands)`
39
38
 
40
39
 
40
+
41
41
  ## Installation
42
42
 
43
43
  Install the gem and add to your application's Gemfile:
44
44
 
45
45
  ```bash
46
- gem install hyraft
46
+ gem install hyraft --pre
47
47
  ```
48
48
 
49
49
  ## Create a new Hyraft application:
@@ -53,114 +53,91 @@ hyraft do myapp
53
53
 
54
54
  cd myapp
55
55
 
56
- bundle install && npm install
56
+ bundle install
57
57
  ```
58
58
  Run server:
59
59
 
60
60
  ```bash
61
61
 
62
- hyraft-server thin
62
+ hyraft-server puma
63
63
 
64
64
  or
65
65
 
66
- hyr s thin
66
+ hyr s puma
67
67
  ```
68
68
 
69
69
  Visit:
70
70
 
71
71
  ```bash
72
- http://localhost:1091
72
+ http://localhost:1025
73
73
  ```
74
74
 
75
75
  ## Project Structure
76
76
 
77
77
  ```bash
78
+
78
79
  myapp/
79
- ├── adapter-intake/ # Input adapters
80
- ├── multi-app/
81
- ├── admin-app/
82
- ├── api-app/
83
- │ └── request/ # API controllers/adapters
84
- └── articles_api_adapter.rb
85
- └── web-app/
86
- ├── request/ # Web controllers/adapters
87
- ├── home_web_adapter.rb
88
- └── articles_web_adapter.rb
89
- │ │
90
- │ └── display/ # Hyraft templates (.hyr files)
91
- │ └── pages/
92
- │ ├── home/
93
- │ │ └── home.hyr
94
- │ └── articles/
95
- │ ├── index.hyr
96
- │ ├── show.hyr
97
- │ ├── new.hyr
98
- │ └── edit.hyr
80
+ ├── app/ # APP folder
81
+ └── web/
82
+
83
+ └── display/ # Hyraft templates (.hyr files)
84
+ ├── pages/
85
+ ├── errors
86
+ │ ├── home
87
+ ├── layouts
88
+ └── segments
89
+ └── app.hyr
99
90
 
100
- ├── adapter-exhaust/ # Output adapters
101
- └── data-gateway/ # Database access implementations
102
- └── sequel_articles_gateway.rb
91
+ ├── base-adapters/ # Output adapters
92
+ ├── in-api/
93
+ └── out-api/
103
94
 
104
- ├── engine/ # Business logic (framework-independent)
105
- ├── source/ # Domain entities
106
- │ └── article.rb
107
- │ │
108
- │ ├── circuit/ # Use cases/business processes
109
- │ │ └── articles_circuit.rb
110
- │ │
111
- │ └── port/ # Interfaces (abstract)
112
- │ └── articles_gateway_port.rb
95
+ ├── circuit/ # Business logic (framework-independent)
96
+ ├── engine/ # File uploads (images, etc.)
97
+ ├── ports/
113
98
 
99
+ ├── connectors/ # Business logic (framework-independent)
100
+ │ ├── cable/ # File uploads (images, etc.)
101
+ │ └── helpers/
102
+
114
103
  ├── framework/ # Framework tools
115
- │ ├── adapters/
116
- │ ├── compiler/
117
- │ ├── errors/
118
- │ └── middleware/
119
-
120
- ├── shared/ # Shared files
121
- │ └── helpers/
122
- │ ├── pagination_helper.rb
123
- │ └── response_formatter.rb
124
-
125
- ├── infra/ # Infrastructure
126
- │ ├── config/
127
- │ │ ├── routes/ # Route definitions
128
- │ │ │ ├── api_routes.rb # API
129
- │ │ │ └── web_routes.rb # Web
130
- │ │ │
131
- │ │ ├── environment.rb
132
- │ │ └── error_config.rb
133
- │ │
134
- │ ├── database/
135
- │ │ ├── migrations/ # Database schema
136
- │ │ │ ├── 001_create_articles.rb
137
- │ │ │ └── 002_add_image_to_articles.rb
138
- │ │ │
139
- │ │ └── sequel_connection.rb # Database configuration
140
- │ │
141
- │ ├── gems/ # Third party gems to import
142
- │ │ ├── database.rb # Database gems
143
- │ │ ├── load_all.rb # Load all gems
144
- │ │ ├── utilities.rb # Utilities
145
- │ │ └── web.rb # Web gems
146
- │ │
147
- │ └── server/
148
- │ ├── api-server.ru # Rack api configuration
149
- │ └── web-server.ru # Rack web configuration
150
-
151
104
  ├── public/ # Static assets
152
105
  │ ├── uploads/ # File uploads (images, etc.)
153
106
  │ ├── icons/
154
107
  │ ├── styles/
155
- │ │ └── css/
156
- │ │ ├── main.css
157
- │ │ └── spa.css
108
+ │ │ └── css/
109
+ │ │ ├── main.css
110
+ │ │ └── spa.css
158
111
  │ ├── images/
159
- │ │ ├── hyr-logo.png
160
- │ │ └── hyr-logo.webp
112
+ │ │ ├── hyr-logo.png
113
+ │ │ └── hyr-logo.webp
161
114
  │ ├── favicon.ico
162
115
  │ │
163
116
  │ └── index.html
117
+ ├── routes
118
+ │ ├── api_routes.rb
119
+ │ └── web_routes.rb
120
+
121
+ ├── setup/ # Setup
122
+ │ │
123
+ │ ├── database/
124
+ │ │ ├── migrations/ # Database schema
125
+ │ │ │ ├── 001_create_articles.rb
126
+ │ │ │ └── 002_add_image_to_articles.rb
127
+ │ │ │
128
+ │ │ └── sequel_connection.rb # Database configuration
129
+ │ │
130
+ │ ├── gems/ # Third party gems to import
131
+ │ │ ├── database.rb # Database gems
132
+ │ │ ├── load_all.rb # Load all gems
133
+ │ │ ├── utilities.rb # Utilities
134
+ │ │ └── web.rb # Web gems
135
+ │ │
136
+ │ ├── server/
137
+ │ │ ├── api-server.ru # Rack configuration
138
+ │ │ └── web-server.ru # Rack configuration
139
+ │ ├── environment.rb
140
+ │ └── error_config.rb
164
141
 
165
142
  ├── boot.rb
166
143
  ├── env.yml
@@ -168,6 +145,7 @@ myapp/
168
145
  └── package.json
169
146
 
170
147
 
148
+
171
149
  ```
172
150
 
173
151
  ## # For template files ( .hyr )
@@ -184,22 +162,7 @@ Install from VS Code:
184
162
  # Click Install
185
163
  ```
186
164
 
187
- ## VS Code Extension ( snippets )
188
-
189
- Prefix:
190
-
191
- Type 3 letters: hyr
192
-
193
-
194
- It will display the following snippet options:
195
-
196
- ----------
197
165
 
198
- - hyr-component
199
- - hyr-embed
200
- - hyr-html-method
201
- - hyr-interp
202
- - hyr-template
203
166
 
204
167
  ----------
205
168
 
@@ -5,20 +5,18 @@ source 'https://rubygems.org'
5
5
  # #
6
6
  # FRAMEWORK #
7
7
 
8
- gem 'hyraft'
9
- gem 'hyraft-rule'
10
-
11
- #_________________________#
12
-
8
+ gem 'hyraft'
13
9
 
10
+ # gem 'jwt', '~> 3.1', '>= 3.1.2'
14
11
 
15
12
 
16
13
  #_________________________#
17
14
  # #
18
15
  # SERVER #
19
- gem "fiddle" #/ for windows
20
- gem 'thin'
21
- # gem 'puma'
16
+
17
+
18
+ #gem 'thin'
19
+ gem 'puma'
22
20
  # gem 'falcon', '~> 0.52.3'
23
21
  # gem 'async-http' # for http 3 (via Falcon)
24
22
  # gem 'iodine'
@@ -34,17 +32,20 @@ gem 'hyraft-rule'
34
32
  #_________________________#
35
33
 
36
34
 
37
- # Test gems compatible with Ruby 3.4
35
+ # Test gems compatible with Ruby 4.0
36
+
38
37
 
39
38
  =begin
40
39
 
41
- gem 'minitest', '~> 5.26', '>= 5.26.1'
42
- gem 'minitest-reporters', '~> 1.7', '>= 1.7.1'
43
- gem 'minitest-focus', '~> 1.4'
44
- gem 'mocha', '~> 2.8'
45
- gem 'rack-test', '~> 2.2', group: :test
40
+ group :test do
41
+ gem 'minitest', '~> 6.0', '>= 6.0.2'
42
+ gem 'rack-test', '~> 2.2'
43
+ end
46
44
 
45
+ group :development do
46
+ gem 'rake', '~> 13.3', '>= 13.3.1'
47
47
  end
48
48
 
49
+
49
50
  =end
50
51
 
data/do_app/Rakefile ADDED
@@ -0,0 +1,29 @@
1
+ # Rakefile
2
+
3
+ require 'rake/testtask'
4
+
5
+ # Ruby 4 - Endless method for test task
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << 'test'
8
+ t.libs << 'lib'
9
+ t.test_files = FileList['test/**/*_test.rb']
10
+ t.verbose = true
11
+ t.warning = false
12
+ end
13
+
14
+ # Ruby 4 - Pattern matching for task categories
15
+ namespace :test do
16
+ Rake::TestTask.new(:unit) do |t|
17
+ t.libs << 'test'
18
+ t.libs << 'lib'
19
+ t.test_files = FileList['test/unit/*_test.rb']
20
+ end
21
+
22
+ Rake::TestTask.new(:integration) do |t|
23
+ t.libs << 'test'
24
+ t.libs << 'lib'
25
+ t.test_files = FileList['test/integration/*_test.rb']
26
+ end
27
+ end
28
+
29
+ task default: :test
@@ -0,0 +1,8 @@
1
+
2
+ <div class="container mt-4">
3
+ <div class="alert alert-danger">
4
+ <h1>404 - Page Not Found</h1>
5
+ <p>The page you are looking for does not exist</p>
6
+ <a href="/" class="btn btn-primary">Go Home</a>
7
+ </div>
8
+ </div>