waxx 0.1.2

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 (75) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/LICENSE +201 -0
  4. data/README.md +879 -0
  5. data/bin/waxx +120 -0
  6. data/lib/waxx/app.rb +173 -0
  7. data/lib/waxx/conf.rb +54 -0
  8. data/lib/waxx/console.rb +204 -0
  9. data/lib/waxx/csrf.rb +14 -0
  10. data/lib/waxx/database.rb +80 -0
  11. data/lib/waxx/encrypt.rb +38 -0
  12. data/lib/waxx/error.rb +60 -0
  13. data/lib/waxx/html.rb +33 -0
  14. data/lib/waxx/http.rb +268 -0
  15. data/lib/waxx/init.rb +273 -0
  16. data/lib/waxx/irb.rb +44 -0
  17. data/lib/waxx/irb_env.rb +18 -0
  18. data/lib/waxx/json.rb +23 -0
  19. data/lib/waxx/mongodb.rb +221 -0
  20. data/lib/waxx/mysql2.rb +234 -0
  21. data/lib/waxx/object.rb +115 -0
  22. data/lib/waxx/patch.rb +138 -0
  23. data/lib/waxx/pdf.rb +69 -0
  24. data/lib/waxx/pg.rb +246 -0
  25. data/lib/waxx/process.rb +270 -0
  26. data/lib/waxx/req.rb +116 -0
  27. data/lib/waxx/res.rb +98 -0
  28. data/lib/waxx/server.rb +304 -0
  29. data/lib/waxx/sqlite3.rb +237 -0
  30. data/lib/waxx/supervisor.rb +47 -0
  31. data/lib/waxx/test.rb +162 -0
  32. data/lib/waxx/util.rb +57 -0
  33. data/lib/waxx/version.rb +3 -0
  34. data/lib/waxx/view.rb +389 -0
  35. data/lib/waxx/waxx.rb +73 -0
  36. data/lib/waxx/x.rb +103 -0
  37. data/lib/waxx.rb +50 -0
  38. data/skel/README.md +11 -0
  39. data/skel/app/app/app.rb +39 -0
  40. data/skel/app/app/error/app_error.rb +16 -0
  41. data/skel/app/app/error/dhtml.rb +9 -0
  42. data/skel/app/app/error/html.rb +8 -0
  43. data/skel/app/app/error/json.rb +8 -0
  44. data/skel/app/app/error/pdf.rb +13 -0
  45. data/skel/app/app/log/app_log.rb +13 -0
  46. data/skel/app/app.rb +20 -0
  47. data/skel/app/home/home.rb +16 -0
  48. data/skel/app/home/html.rb +145 -0
  49. data/skel/app/html.rb +192 -0
  50. data/skel/app/usr/email.rb +66 -0
  51. data/skel/app/usr/html.rb +115 -0
  52. data/skel/app/usr/list.rb +51 -0
  53. data/skel/app/usr/password.rb +54 -0
  54. data/skel/app/usr/record.rb +98 -0
  55. data/skel/app/usr/usr.js +67 -0
  56. data/skel/app/usr/usr.rb +277 -0
  57. data/skel/app/waxx/waxx.rb +109 -0
  58. data/skel/bin/README.md +1 -0
  59. data/skel/db/README.md +11 -0
  60. data/skel/db/app/0-init.sql +88 -0
  61. data/skel/lib/README.md +1 -0
  62. data/skel/log/README.md +1 -0
  63. data/skel/opt/dev/config.yaml +1 -0
  64. data/skel/opt/prod/config.yaml +1 -0
  65. data/skel/opt/stage/config.yaml +1 -0
  66. data/skel/opt/test/config.yaml +1 -0
  67. data/skel/private/README.md +1 -0
  68. data/skel/public/lib/site.css +202 -0
  69. data/skel/public/lib/waxx/w.ico +0 -0
  70. data/skel/public/lib/waxx/w.png +0 -0
  71. data/skel/public/lib/waxx/waxx.js +111 -0
  72. data/skel/tmp/pids/README.md +1 -0
  73. data.tar.gz.sig +0 -0
  74. metadata +140 -0
  75. metadata.gz.sig +3 -0
@@ -0,0 +1,202 @@
1
+ /* Site-specific CSS */
2
+ body{margin: 0}
3
+ body.home > .container{
4
+ margin-top: 20px;
5
+ }
6
+ nav{
7
+ height: 133px;
8
+ background-color: white;
9
+ line-height: 1;
10
+ }
11
+ .logo{
12
+ font-family: Courier, Courier New, monospace;
13
+ }
14
+ nav .logo{
15
+ margin-top: 40px;
16
+ display: block;
17
+ font-size: 100px;
18
+ color: #333;
19
+ }
20
+ nav .items{
21
+ margin: 100px 0 0 280px;
22
+ }
23
+ nav .items a{
24
+ display: inline-block;
25
+ margin: 0 2em 0 0;
26
+ font-size: 16px;
27
+ font-weight: 100;
28
+ color: #555;
29
+ text-transform: uppercase;
30
+ }
31
+ nav a.btn{
32
+ color: white;
33
+ background-color: #333;
34
+ border: 1px solid #555;
35
+ font-size: 20px;
36
+ padding: 4px 8px 0px;
37
+ margin-right: 6px;
38
+ }
39
+ /* Homepage slides */
40
+ .slides{
41
+ position: absolute;
42
+ top: 133px;
43
+ left: 0;
44
+ line-height: 1;
45
+ z-index: 1;
46
+ width: 100%;
47
+ height: calc(width * .3);
48
+ }
49
+ .slides .demo-code{
50
+ position: absolute;
51
+ z-index: 20;
52
+ top: 50px;
53
+ left: 0;
54
+ min-width: 10%;
55
+ color: black;
56
+ background-color: rgba(255,255,255,0.7);
57
+ border: 1px solid rgba(0,0,0,.4);
58
+ border-radius: 0 8px 8px 0;
59
+ }
60
+ .slides .slide{
61
+ position: absolute;
62
+ top: 0;
63
+ left: 0;
64
+ line-height: 1;
65
+ z-index: 15;
66
+ width: 100%;
67
+ }
68
+ .slides .slide > img{
69
+ width: 100%;
70
+ }
71
+ .slides .caption{
72
+ font-family: Courier, Courier New, monospace;
73
+ position: absolute;
74
+ top: 10%;
75
+ left: 20px;
76
+ right: 30px;
77
+ text-align: right;
78
+ color: rgba(255,255,255,.9);
79
+ font-size: 70px;
80
+ font-weight: bolder;
81
+ z-index: 25;
82
+ text-shadow: rgba(0, 0, 0, 0.7) 0px 2px 3px;
83
+ }
84
+
85
+ code{
86
+ font-family: Courier, Courier New, monospace;
87
+ }
88
+ body{
89
+ font-family: Helvetica, Arial, Sans-serif;
90
+ background-color: #e8e8e8;
91
+ }
92
+ h1{
93
+ margin-top: 40px;
94
+ font-size: 44px;
95
+ font-weight: bolder;
96
+ text-transform: uppercase;
97
+ }
98
+ .container{
99
+ margin-bottom: 10px;
100
+ }
101
+ nav a.usr{
102
+ border: 1px solid #999;
103
+ color: #eee;
104
+ display: block;
105
+ margin: 0 4px;
106
+ padding: 4px 8px 2px;
107
+ border-radius: 3px;
108
+ }
109
+ nav a:hover{
110
+ color: #111;
111
+ }
112
+ footer{
113
+ height: 212px;
114
+ margin-top: 40px;
115
+ font-size: 15px;
116
+ line-height: 24px;
117
+ background-color: #292929;
118
+ color: white;
119
+ font-weight: lighter;
120
+ }
121
+ footer div{
122
+ color: white;
123
+ vertical-align: middle;
124
+ }
125
+ footer .logo{
126
+ display: block;
127
+ font-size: 80px;
128
+ color: #ddd;
129
+ line-height: 1.2;
130
+ }
131
+ footer .contact{
132
+ margin-top: 20px;
133
+ }
134
+ footer .copyright{
135
+ font-size: 10px;
136
+ opacity: .5;
137
+ }
138
+ footer a{
139
+ text-decoration: none;
140
+ color: white;
141
+ }
142
+ footer a:hover{
143
+ text-decoration: underline;
144
+ color: white;
145
+ }
146
+ a.edit-icon{
147
+ color: #999;
148
+ }
149
+ a.edit-icon:hover{
150
+ color: #333;
151
+ }
152
+ .doc-menu a{
153
+ display: block;
154
+ padding: 10px;
155
+ border-bottom: 1px solid #fff;
156
+ }
157
+ .doc-menu a:hover, .doc-menu a.on{
158
+ background-color: white;
159
+ }
160
+ .clear{
161
+ clear: both;
162
+ }
163
+ /* Phones */
164
+ @media all and (max-width: 459px) {
165
+ nav{ height: 60px; }
166
+ nav .items{ margin: 2px 0 0 140px; }
167
+ nav .items a{ font-size: 10px; margin-right: 1em; }
168
+ nav .logo{ margin-top: 12px; width: 126px; height: 40px; }
169
+ h1{ margin-top: 40px; font-size: 24px; }
170
+ footer .logo{ width: 116px; height: 40px; margin-top: 21px; }
171
+ footer .copyright{ font-size: 6px; }
172
+ footer{ height: 282px; font-size: 11px;}
173
+ }
174
+ @media all and (min-width: 460px) and (max-width: 539px) {
175
+ nav{ height: 80px; }
176
+ nav .items{ margin: 12px 0 0 210px; }
177
+ nav .items a{ font-size: 12px; margin-right: 1em; }
178
+ nav .logo{ margin-top: 15px; width: 189px; height: 60px; }
179
+ .slide-panel .callout{ top: 229px; width: 140px; height: 164px; font-size: 20px; }
180
+ h1{ margin-top: 40px; font-size: 24px; }
181
+ footer .logo{ width: 116px; height: 40px; margin-top: 21px; }
182
+ footer .copyright{ font-size: 6px; }
183
+ footer{ height: 282px; font-size: 11px;}
184
+ }
185
+ @media all and (min-width: 540px) and (max-width: 749px) {
186
+ nav{ height: 100px; }
187
+ nav .items{ margin: 50px 0 0 240px; }
188
+ nav .items a{ font-size: 13px; margin-right: 1em; }
189
+ nav .logo{ margin-top: 30px; width: 200px; height: 63px; }
190
+ footer .logo{ width: 139px; height: 48px; margin-top: 21px; }
191
+ footer .copyright{ font-size: 6px; }
192
+ }
193
+ /* Tablet */
194
+ @media all and (min-width: 750px) and (max-width: 991px) {
195
+ nav .items{ margin: 100px 0 0 270px; }
196
+ nav .items a{ font-size: 13px; margin-right: 1em; }
197
+ }
198
+ @media all and (min-width: 992px) and (max-width: 1199px) {
199
+ }
200
+ /* Large desktops and up */
201
+ @media all and (min-width: 1200px) {
202
+ }
Binary file
Binary file
@@ -0,0 +1,111 @@
1
+ waxx = {
2
+ href: function(ev){
3
+ console.log(ev);
4
+ // If the target is not us return
5
+ if(ev.currentTarget.target != "" && ev.type != "popstate"){
6
+ console.log("target not us")
7
+ return true;
8
+ }
9
+ // If not an http[s] link return
10
+ if(/^http/.test(ev.currentTarget.protocol) == false && ev.type != "popstate"){
11
+ console.log("not http/s link")
12
+ return true;
13
+ //ev.preventDefault();
14
+ }
15
+ // If not our host
16
+ if(ev.currentTarget.host != app.host && ev.type != "popstate"){
17
+ console.log("other host")
18
+ return true; // location = ev.currentTarget.href;
19
+ }
20
+ // Run the hash
21
+ if(ev.currentTarget && ev.currentTarget.hash){
22
+ var hash = ev.currentTarget.hash;
23
+ if(hash != undefined && hash != ""){
24
+ if(waxx.runHash(hash)){
25
+ ev.preventDefault();
26
+ return false;
27
+ }
28
+ return true;
29
+ }
30
+ }
31
+ // Push the state if this is not a back/forward nav
32
+ if(ev.originalEvent.type != "popstate"){
33
+ window.history.pushState({},ev.currentTarget.title, ev.currentTarget.pathname);
34
+ }
35
+ // Run the URI
36
+ if(waxx.runURI()){
37
+ console.log("runURI")
38
+ ev.preventDefault();
39
+ }
40
+ // else: If no app/act continue away from this page
41
+ },
42
+ runHash: function(hash){
43
+ var parts = hash.replace("#","").split("/");
44
+ var ap = parts[0];
45
+ var act = parts[1];
46
+ var args = parts.slice(2,99);
47
+ if(act != undefined){
48
+ app[ap][act].apply(this, args);
49
+ return true;
50
+ }
51
+ return false;
52
+ },
53
+ runURI: function(){
54
+ var parts = location.pathname.split("/");
55
+ if(location.pathname == "/"){
56
+ parts = app.default_pathname.split("/");
57
+ }
58
+ var ap = parts[1];
59
+ var act = parts[2];
60
+ var args = parts.slice(3,99);
61
+ //console.log("app["+ap+"]["+act+"].apply(this, "+args.join(",")+")");
62
+ if(app[ap] != undefined && act != undefined && app[ap][act] != undefined){
63
+ app[ap][act].apply(this, args);
64
+ return true;
65
+ }
66
+ //console.log("Unknow app/act");
67
+ return false;
68
+ },
69
+ qs: function(str){
70
+ return encodeURIComponent(str);
71
+ },
72
+ ta: document.createElement('textarea'),
73
+ esc: function(str){
74
+ waxx.ta.textContent = str;
75
+ return waxx.ta.innerHTML;
76
+ },
77
+ h: function(str){
78
+ waxx.ta.textContent = str;
79
+ return waxx.ta.innerHTML;
80
+ },
81
+ query: function(query_string){
82
+ query_string = query_string || location.search;
83
+ return query_string.substring(1).split(/[;&]/).reduce(function(result, value) {
84
+ var parts = value.split('=');
85
+ if (parts[0]) result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
86
+ return result;
87
+ }, {});
88
+ },
89
+ fileSize: function(sz){return filesize(sz);},
90
+ cookie: function(name, value, days) {
91
+ if(value === undefined){return waxx.cookies(name)}
92
+ if(value === null){return waxx.cookie(name,"",-1)}
93
+ if (days) {
94
+ var date = new Date();
95
+ date.setTime(date.getTime()+(days*24*60*60*1000));
96
+ var expires = "; expires="+date.toGMTString();
97
+ }
98
+ else var expires = "";
99
+ document.cookie = name+"="+waxx.qs(value)+expires+"; path=/";
100
+ },
101
+ cookies: function(name) {
102
+ var nameEQ = name + "=";
103
+ var ca = document.cookie.split(';');
104
+ for(var i=0;i < ca.length;i++) {
105
+ var c = ca[i];
106
+ while (c.charAt(0)==' ') c = c.substring(1,c.length);
107
+ if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
108
+ }
109
+ return null;
110
+ }
111
+ };
@@ -0,0 +1 @@
1
+ Process ID fiels are stored here and used for `waxx off` and `waxx buff`
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,140 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: waxx
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Dan Fitzpatrick
8
+ autorequire:
9
+ bindir:
10
+ - bin
11
+ cert_chain:
12
+ - |
13
+ -----BEGIN CERTIFICATE-----
14
+ MIIDVDCCAjygAwIBAgIBATANBgkqhkiG9w0BAQUFADA4MQwwCgYDVQQDDANkYW4x
15
+ FDASBgoJkiaJk/IsZAEZFgR3YXh4MRIwEAYKCZImiZPyLGQBGRYCaW8wHhcNMTcw
16
+ NDE3MTcxMzAwWhcNMTgwNDE3MTcxMzAwWjA4MQwwCgYDVQQDDANkYW4xFDASBgoJ
17
+ kiaJk/IsZAEZFgR3YXh4MRIwEAYKCZImiZPyLGQBGRYCaW8wggEiMA0GCSqGSIb3
18
+ DQEBAQUAA4IBDwAwggEKAoIBAQDGUoSrunsgtsd+jeXyX2CznhakmRdYI/50J+IS
19
+ E9mgVoC6TnsAQ4w9Z4JPMEKXxiso3WfqTQJo4d9rfdlFZ/84Wu6VPScH24A2Zxkt
20
+ QMha2DJVTUU1yN5aH+3+1AjcsG0jH7Yx/6H3ApGNyFnlmgXKYSZr7xOBV7KUM29J
21
+ GpKNLI9bXNnXuJ8jby0KlfBvbV7iRB+8pSysg89dp9ohnimCqBNnPimPBsT/U1kH
22
+ 09nByG0nTB13LvvantQ+oCpGAKCJU7z7+q6yhvbNUgnc88maV1DunB3OTxW1vamF
23
+ YCtsMxAMAxeCOCyxw18FRDDN6DE6j8YRBsNbPpaah+SeJQ2nAgMBAAGjaTBnMAkG
24
+ A1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSuu1nJ5bm0uqHpXvnxL9Zc
25
+ XBXadDAWBgNVHREEDzANgQtkYW5Ad2F4eC5pbzAWBgNVHRIEDzANgQtkYW5Ad2F4
26
+ eC5pbzANBgkqhkiG9w0BAQUFAAOCAQEAGcX2EJNHw2VBwnWG5YAp5XdrWrhzKtZw
27
+ vNussBnVJlyIg300JeS1fEuPeSXgEjWfzt6KrGJ4FhFjFAxV3JLDScEBbYxNr6ap
28
+ e5oZ89/eBo6YfvJlKMPokgjuHrbm7HKe1N1MODrkHNtg1qHyH743p687F7wj8cc/
29
+ ALdvb8FswIfCQYYx7sfoWzGEIFCeHXCbgMLX+1eJ89unt1u9rgh9FY0EW5qO2jeD
30
+ N9+NhUJ4uMfbynCLzKcMjcuPzoDWmDz0mg5SSmCS3h6oeTVXANBVEF8XCm+rT8qq
31
+ clYKdYNemzokmKaXfrURxBKOd95zfkg/IHiG1yqlVDxLM0o8Wis4vw==
32
+ -----END CERTIFICATE-----
33
+ date: 2017-07-27 00:00:00.000000000 Z
34
+ dependencies: []
35
+ description: Waxx is a high performace REST/RPC hybrid web application development
36
+ framework.
37
+ email: dan@waxx.io
38
+ executables:
39
+ - waxx
40
+ extensions: []
41
+ extra_rdoc_files: []
42
+ files:
43
+ - LICENSE
44
+ - README.md
45
+ - bin/waxx
46
+ - lib/waxx.rb
47
+ - lib/waxx/app.rb
48
+ - lib/waxx/conf.rb
49
+ - lib/waxx/console.rb
50
+ - lib/waxx/csrf.rb
51
+ - lib/waxx/database.rb
52
+ - lib/waxx/encrypt.rb
53
+ - lib/waxx/error.rb
54
+ - lib/waxx/html.rb
55
+ - lib/waxx/http.rb
56
+ - lib/waxx/init.rb
57
+ - lib/waxx/irb.rb
58
+ - lib/waxx/irb_env.rb
59
+ - lib/waxx/json.rb
60
+ - lib/waxx/mongodb.rb
61
+ - lib/waxx/mysql2.rb
62
+ - lib/waxx/object.rb
63
+ - lib/waxx/patch.rb
64
+ - lib/waxx/pdf.rb
65
+ - lib/waxx/pg.rb
66
+ - lib/waxx/process.rb
67
+ - lib/waxx/req.rb
68
+ - lib/waxx/res.rb
69
+ - lib/waxx/server.rb
70
+ - lib/waxx/sqlite3.rb
71
+ - lib/waxx/supervisor.rb
72
+ - lib/waxx/test.rb
73
+ - lib/waxx/util.rb
74
+ - lib/waxx/version.rb
75
+ - lib/waxx/view.rb
76
+ - lib/waxx/waxx.rb
77
+ - lib/waxx/x.rb
78
+ - skel/README.md
79
+ - skel/app/app.rb
80
+ - skel/app/app/app.rb
81
+ - skel/app/app/error/app_error.rb
82
+ - skel/app/app/error/dhtml.rb
83
+ - skel/app/app/error/html.rb
84
+ - skel/app/app/error/json.rb
85
+ - skel/app/app/error/pdf.rb
86
+ - skel/app/app/log/app_log.rb
87
+ - skel/app/home/home.rb
88
+ - skel/app/home/html.rb
89
+ - skel/app/html.rb
90
+ - skel/app/usr/email.rb
91
+ - skel/app/usr/html.rb
92
+ - skel/app/usr/list.rb
93
+ - skel/app/usr/password.rb
94
+ - skel/app/usr/record.rb
95
+ - skel/app/usr/usr.js
96
+ - skel/app/usr/usr.rb
97
+ - skel/app/waxx/waxx.rb
98
+ - skel/bin/README.md
99
+ - skel/db/README.md
100
+ - skel/db/app/0-init.sql
101
+ - skel/lib/README.md
102
+ - skel/log/README.md
103
+ - skel/opt/dev/config.yaml
104
+ - skel/opt/prod/config.yaml
105
+ - skel/opt/stage/config.yaml
106
+ - skel/opt/test/config.yaml
107
+ - skel/private/README.md
108
+ - skel/public/lib/site.css
109
+ - skel/public/lib/waxx/w.ico
110
+ - skel/public/lib/waxx/w.png
111
+ - skel/public/lib/waxx/waxx.js
112
+ - skel/tmp/pids/README.md
113
+ homepage: https://www.waxx.io/
114
+ licenses:
115
+ - Apache-2.0
116
+ metadata: {}
117
+ post_install_message: |2
118
+
119
+ Thanks for installing Waxx.
120
+ See <www.waxx.io> for more info.
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: 2.0.0
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ requirements: []
135
+ rubyforge_project:
136
+ rubygems_version: 2.6.8
137
+ signing_key:
138
+ specification_version: 4
139
+ summary: A fast and flexible application development framework
140
+ test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ m8ŧj���D����K����(�,82��"�pܲ��E��!��=����^����5�U�cGY�tG#&���z��(��C\jr�U �x�� r�%��2�"��a
2
+ �Y�����M��ŷ ��Po�$a���cm~���H�v��-��E��c�* �21p���W�^�.o�����=3���k��?zE��_p��}��i��H�5nP)(�U���15���� �Y�����P
3
+ h�7�/����I��0����a�[n�W�