zapp 0.1.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 (125) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +21 -0
  3. data/.gitignore +13 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +46 -0
  6. data/.ruby-version +1 -0
  7. data/Gemfile +13 -0
  8. data/Gemfile.lock +110 -0
  9. data/Guardfile +23 -0
  10. data/LICENSE.txt +21 -0
  11. data/README.md +91 -0
  12. data/Rakefile +8 -0
  13. data/bin/console +15 -0
  14. data/bin/setup +8 -0
  15. data/bin/zapp +7 -0
  16. data/examples/rails-app/.browserslistrc +1 -0
  17. data/examples/rails-app/.gitattributes +10 -0
  18. data/examples/rails-app/.gitignore +40 -0
  19. data/examples/rails-app/.ruby-version +1 -0
  20. data/examples/rails-app/Gemfile +58 -0
  21. data/examples/rails-app/Gemfile.lock +253 -0
  22. data/examples/rails-app/Rakefile +8 -0
  23. data/examples/rails-app/app/assets/config/manifest.js +2 -0
  24. data/examples/rails-app/app/assets/images/.keep +0 -0
  25. data/examples/rails-app/app/assets/stylesheets/application.css +15 -0
  26. data/examples/rails-app/app/channels/application_cable/channel.rb +6 -0
  27. data/examples/rails-app/app/channels/application_cable/connection.rb +6 -0
  28. data/examples/rails-app/app/controllers/application_controller.rb +4 -0
  29. data/examples/rails-app/app/controllers/concerns/.keep +0 -0
  30. data/examples/rails-app/app/helpers/application_helper.rb +4 -0
  31. data/examples/rails-app/app/javascript/channels/consumer.js +6 -0
  32. data/examples/rails-app/app/javascript/channels/index.js +5 -0
  33. data/examples/rails-app/app/javascript/packs/application.js +13 -0
  34. data/examples/rails-app/app/jobs/application_job.rb +9 -0
  35. data/examples/rails-app/app/mailers/application_mailer.rb +6 -0
  36. data/examples/rails-app/app/models/application_record.rb +5 -0
  37. data/examples/rails-app/app/models/concerns/.keep +0 -0
  38. data/examples/rails-app/app/views/layouts/application.html.erb +16 -0
  39. data/examples/rails-app/app/views/layouts/mailer.html.erb +13 -0
  40. data/examples/rails-app/app/views/layouts/mailer.text.erb +1 -0
  41. data/examples/rails-app/babel.config.js +82 -0
  42. data/examples/rails-app/bin/bundle +118 -0
  43. data/examples/rails-app/bin/rails +7 -0
  44. data/examples/rails-app/bin/rake +7 -0
  45. data/examples/rails-app/bin/setup +38 -0
  46. data/examples/rails-app/bin/spring +16 -0
  47. data/examples/rails-app/bin/webpack +21 -0
  48. data/examples/rails-app/bin/webpack-dev-server +21 -0
  49. data/examples/rails-app/bin/yarn +19 -0
  50. data/examples/rails-app/bin/zapp +1 -0
  51. data/examples/rails-app/config/application.rb +24 -0
  52. data/examples/rails-app/config/boot.rb +6 -0
  53. data/examples/rails-app/config/cable.yml +10 -0
  54. data/examples/rails-app/config/credentials.yml.enc +1 -0
  55. data/examples/rails-app/config/database.yml +25 -0
  56. data/examples/rails-app/config/environment.rb +7 -0
  57. data/examples/rails-app/config/environments/development.rb +78 -0
  58. data/examples/rails-app/config/environments/production.rb +122 -0
  59. data/examples/rails-app/config/environments/test.rb +62 -0
  60. data/examples/rails-app/config/initializers/application_controller_renderer.rb +9 -0
  61. data/examples/rails-app/config/initializers/assets.rb +16 -0
  62. data/examples/rails-app/config/initializers/backtrace_silencers.rb +10 -0
  63. data/examples/rails-app/config/initializers/content_security_policy.rb +31 -0
  64. data/examples/rails-app/config/initializers/cookies_serializer.rb +7 -0
  65. data/examples/rails-app/config/initializers/filter_parameter_logging.rb +8 -0
  66. data/examples/rails-app/config/initializers/inflections.rb +17 -0
  67. data/examples/rails-app/config/initializers/mime_types.rb +5 -0
  68. data/examples/rails-app/config/initializers/permissions_policy.rb +12 -0
  69. data/examples/rails-app/config/initializers/wrap_parameters.rb +16 -0
  70. data/examples/rails-app/config/locales/en.yml +33 -0
  71. data/examples/rails-app/config/puma.rb +45 -0
  72. data/examples/rails-app/config/routes.rb +5 -0
  73. data/examples/rails-app/config/spring.rb +8 -0
  74. data/examples/rails-app/config/storage.yml +34 -0
  75. data/examples/rails-app/config/webpack/development.js +5 -0
  76. data/examples/rails-app/config/webpack/environment.js +3 -0
  77. data/examples/rails-app/config/webpack/production.js +5 -0
  78. data/examples/rails-app/config/webpack/test.js +5 -0
  79. data/examples/rails-app/config/webpacker.yml +92 -0
  80. data/examples/rails-app/config/zapp.rb +10 -0
  81. data/examples/rails-app/config.ru +7 -0
  82. data/examples/rails-app/db/seeds.rb +8 -0
  83. data/examples/rails-app/lib/assets/.keep +0 -0
  84. data/examples/rails-app/lib/tasks/.keep +0 -0
  85. data/examples/rails-app/log/.keep +0 -0
  86. data/examples/rails-app/package.json +17 -0
  87. data/examples/rails-app/postcss.config.js +12 -0
  88. data/examples/rails-app/public/404.html +67 -0
  89. data/examples/rails-app/public/422.html +67 -0
  90. data/examples/rails-app/public/500.html +66 -0
  91. data/examples/rails-app/public/apple-touch-icon-precomposed.png +0 -0
  92. data/examples/rails-app/public/apple-touch-icon.png +0 -0
  93. data/examples/rails-app/public/favicon.ico +0 -0
  94. data/examples/rails-app/public/robots.txt +1 -0
  95. data/examples/rails-app/storage/.keep +0 -0
  96. data/examples/rails-app/test/application_system_test_case.rb +7 -0
  97. data/examples/rails-app/test/channels/application_cable/connection_test.rb +15 -0
  98. data/examples/rails-app/test/controllers/.keep +0 -0
  99. data/examples/rails-app/test/fixtures/files/.keep +0 -0
  100. data/examples/rails-app/test/helpers/.keep +0 -0
  101. data/examples/rails-app/test/integration/.keep +0 -0
  102. data/examples/rails-app/test/mailers/.keep +0 -0
  103. data/examples/rails-app/test/models/.keep +0 -0
  104. data/examples/rails-app/test/system/.keep +0 -0
  105. data/examples/rails-app/test/test_helper.rb +17 -0
  106. data/examples/rails-app/tmp/.keep +0 -0
  107. data/examples/rails-app/tmp/pids/.keep +0 -0
  108. data/examples/rails-app/vendor/.keep +0 -0
  109. data/examples/rails-app/yarn.lock +6973 -0
  110. data/lib/rack/handler/zap.rb +16 -0
  111. data/lib/zapp/cli.rb +45 -0
  112. data/lib/zapp/configuration.rb +131 -0
  113. data/lib/zapp/http_context/context.rb +32 -0
  114. data/lib/zapp/http_context/request.rb +28 -0
  115. data/lib/zapp/http_context/response.rb +27 -0
  116. data/lib/zapp/input_stream.rb +51 -0
  117. data/lib/zapp/logger.rb +63 -0
  118. data/lib/zapp/parser.rb +14 -0
  119. data/lib/zapp/server.rb +55 -0
  120. data/lib/zapp/version.rb +5 -0
  121. data/lib/zapp/worker.rb +88 -0
  122. data/lib/zapp/worker_pool.rb +40 -0
  123. data/lib/zapp.rb +34 -0
  124. data/zapp.gemspec +42 -0
  125. metadata +239 -0
@@ -0,0 +1,34 @@
1
+ test:
2
+ service: Disk
3
+ root: <%= Rails.root.join("tmp/storage") %>
4
+
5
+ local:
6
+ service: Disk
7
+ root: <%= Rails.root.join("storage") %>
8
+
9
+ # Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
10
+ # amazon:
11
+ # service: S3
12
+ # access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
13
+ # secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
14
+ # region: us-east-1
15
+ # bucket: your_own_bucket
16
+
17
+ # Remember not to checkin your GCS keyfile to a repository
18
+ # google:
19
+ # service: GCS
20
+ # project: your_project
21
+ # credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
22
+ # bucket: your_own_bucket
23
+
24
+ # Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
25
+ # microsoft:
26
+ # service: AzureStorage
27
+ # storage_account_name: your_account_name
28
+ # storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
29
+ # container: your_container_name
30
+
31
+ # mirror:
32
+ # service: Mirror
33
+ # primary: local
34
+ # mirrors: [ amazon, google, microsoft ]
@@ -0,0 +1,5 @@
1
+ process.env.NODE_ENV = process.env.NODE_ENV || 'development'
2
+
3
+ const environment = require('./environment')
4
+
5
+ module.exports = environment.toWebpackConfig()
@@ -0,0 +1,3 @@
1
+ const { environment } = require('@rails/webpacker')
2
+
3
+ module.exports = environment
@@ -0,0 +1,5 @@
1
+ process.env.NODE_ENV = process.env.NODE_ENV || 'production'
2
+
3
+ const environment = require('./environment')
4
+
5
+ module.exports = environment.toWebpackConfig()
@@ -0,0 +1,5 @@
1
+ process.env.NODE_ENV = process.env.NODE_ENV || 'development'
2
+
3
+ const environment = require('./environment')
4
+
5
+ module.exports = environment.toWebpackConfig()
@@ -0,0 +1,92 @@
1
+ # Note: You must restart bin/webpack-dev-server for changes to take effect
2
+
3
+ default: &default
4
+ source_path: app/javascript
5
+ source_entry_path: packs
6
+ public_root_path: public
7
+ public_output_path: packs
8
+ cache_path: tmp/cache/webpacker
9
+ webpack_compile_output: true
10
+
11
+ # Additional paths webpack should lookup modules
12
+ # ['app/assets', 'engine/foo/app/assets']
13
+ additional_paths: []
14
+
15
+ # Reload manifest.json on all requests so we reload latest compiled packs
16
+ cache_manifest: false
17
+
18
+ # Extract and emit a css file
19
+ extract_css: false
20
+
21
+ static_assets_extensions:
22
+ - .jpg
23
+ - .jpeg
24
+ - .png
25
+ - .gif
26
+ - .tiff
27
+ - .ico
28
+ - .svg
29
+ - .eot
30
+ - .otf
31
+ - .ttf
32
+ - .woff
33
+ - .woff2
34
+
35
+ extensions:
36
+ - .mjs
37
+ - .js
38
+ - .sass
39
+ - .scss
40
+ - .css
41
+ - .module.sass
42
+ - .module.scss
43
+ - .module.css
44
+ - .png
45
+ - .svg
46
+ - .gif
47
+ - .jpeg
48
+ - .jpg
49
+
50
+ development:
51
+ <<: *default
52
+ compile: true
53
+
54
+ # Reference: https://webpack.js.org/configuration/dev-server/
55
+ dev_server:
56
+ https: false
57
+ host: localhost
58
+ port: 3035
59
+ public: localhost:3035
60
+ hmr: false
61
+ # Inline should be set to true if using HMR
62
+ inline: true
63
+ overlay: true
64
+ compress: true
65
+ disable_host_check: true
66
+ use_local_ip: false
67
+ quiet: false
68
+ pretty: false
69
+ headers:
70
+ 'Access-Control-Allow-Origin': '*'
71
+ watch_options:
72
+ ignored: '**/node_modules/**'
73
+
74
+
75
+ test:
76
+ <<: *default
77
+ compile: true
78
+
79
+ # Compile test packs to a separate directory
80
+ public_output_path: packs-test
81
+
82
+ production:
83
+ <<: *default
84
+
85
+ # Production depends on precompilation of packs prior to booting for performance.
86
+ compile: false
87
+
88
+ # Extract and emit a css file
89
+ extract_css: true
90
+
91
+ # Cache manifest.json for performance
92
+ cache_manifest: true
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class App
4
+ def self.call(_env)
5
+ [200, {}, ["Hello from Zapp"]]
6
+ end
7
+ end
8
+
9
+ parallelism(2)
10
+ app(App)
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is used by Rack-based web servers to start the application.
4
+
5
+ require_relative("config/environment")
6
+
7
+ run(RailsApp::Application)
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # This file should contain all the record creation needed to seed the database with its default values.
3
+ # The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
4
+ #
5
+ # Examples:
6
+ #
7
+ # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
8
+ # Character.create(name: 'Luke', movie: movies.first)
File without changes
File without changes
File without changes
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "rails-app",
3
+ "private": true,
4
+ "dependencies": {
5
+ "@rails/actioncable": "^6.0.0",
6
+ "@rails/activestorage": "^6.0.0",
7
+ "@rails/ujs": "^6.0.0",
8
+ "@rails/webpacker": "5.4.3",
9
+ "turbolinks": "^5.2.0",
10
+ "webpack": "^4.46.0",
11
+ "webpack-cli": "^3.3.12"
12
+ },
13
+ "version": "0.1.0",
14
+ "devDependencies": {
15
+ "webpack-dev-server": "^3"
16
+ }
17
+ }
@@ -0,0 +1,12 @@
1
+ module.exports = {
2
+ plugins: [
3
+ require('postcss-import'),
4
+ require('postcss-flexbugs-fixes'),
5
+ require('postcss-preset-env')({
6
+ autoprefixer: {
7
+ flexbox: 'no-2009'
8
+ },
9
+ stage: 3
10
+ })
11
+ ]
12
+ }
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ .rails-default-error-page {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ .rails-default-error-page div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ .rails-default-error-page div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ .rails-default-error-page h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ .rails-default-error-page div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body class="rails-default-error-page">
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ .rails-default-error-page {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ .rails-default-error-page div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ .rails-default-error-page div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ .rails-default-error-page h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ .rails-default-error-page div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body class="rails-default-error-page">
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ .rails-default-error-page {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ .rails-default-error-page div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ .rails-default-error-page div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ .rails-default-error-page h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ .rails-default-error-page div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body class="rails-default-error-page">
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
File without changes
@@ -0,0 +1 @@
1
+ # See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
File without changes
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require("test_helper")
4
+
5
+ class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
6
+ driven_by(:selenium, using: :chrome, screen_size: [1400, 1400])
7
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require("test_helper")
4
+
5
+ module ApplicationCable
6
+ class ConnectionTest < ActionCable::Connection::TestCase
7
+ # test "connects with cookies" do
8
+ # cookies.signed[:user_id] = 42
9
+ #
10
+ # connect
11
+ #
12
+ # assert_equal connection.user_id, "42"
13
+ # end
14
+ end
15
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ ENV["RAILS_ENV"] ||= "test"
4
+ require_relative("../config/environment")
5
+ require("rails/test_help")
6
+
7
+ module ActiveSupport
8
+ class TestCase
9
+ # Run tests in parallel with specified workers
10
+ parallelize(workers: :number_of_processors)
11
+
12
+ # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
13
+ fixtures(:all)
14
+
15
+ # Add more helper methods to be used by all tests here...
16
+ end
17
+ end
File without changes
File without changes
File without changes