vueapp 0.1.1

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 (46) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +43 -0
  4. data/bin/console +14 -0
  5. data/bin/setup +8 -0
  6. data/bin/vueapp +7 -0
  7. data/lib/vueapp.rb +32 -0
  8. data/lib/vueapp/cli.rb +44 -0
  9. data/lib/vueapp/core/builder.rb +37 -0
  10. data/lib/vueapp/core/builders/js_builder.rb +140 -0
  11. data/lib/vueapp/core/builders/scss_builder.rb +114 -0
  12. data/lib/vueapp/core/builders/slim_builder.rb +94 -0
  13. data/lib/vueapp/core/cli/build_helper.rb +20 -0
  14. data/lib/vueapp/core/cli/generator_helper.rb +23 -0
  15. data/lib/vueapp/core/cli/init_helper.rb +81 -0
  16. data/lib/vueapp/core/helpers/build.rb +22 -0
  17. data/lib/vueapp/core/helpers/env.rb +47 -0
  18. data/lib/vueapp/core/helpers/log.rb +16 -0
  19. data/lib/vueapp/core/helpers/path.rb +49 -0
  20. data/lib/vueapp/core/helpers/timer.rb +19 -0
  21. data/lib/vueapp/core/listener.rb +64 -0
  22. data/lib/vueapp/errors.rb +8 -0
  23. data/lib/vueapp/templates/_core/vendor/vue.dev.js +11965 -0
  24. data/lib/vueapp/templates/_core/vendor/vue.js +6 -0
  25. data/lib/vueapp/templates/_core/vendor/vue_router.js +3061 -0
  26. data/lib/vueapp/templates/api/api.js +3 -0
  27. data/lib/vueapp/templates/api/api_client.js +131 -0
  28. data/lib/vueapp/templates/api/base_api.js +27 -0
  29. data/lib/vueapp/templates/config/app.js +17 -0
  30. data/lib/vueapp/templates/config/router.js +7 -0
  31. data/lib/vueapp/templates/config/routes.js +10 -0
  32. data/lib/vueapp/templates/filters/percentage.js +7 -0
  33. data/lib/vueapp/templates/generators/component/new.js +3 -0
  34. data/lib/vueapp/templates/generators/component/new.scss +0 -0
  35. data/lib/vueapp/templates/generators/component/new.slim +2 -0
  36. data/lib/vueapp/templates/index.slim +24 -0
  37. data/lib/vueapp/templates/mixins/base.js +10 -0
  38. data/lib/vueapp/templates/pages/about_us/about_us.js +3 -0
  39. data/lib/vueapp/templates/pages/about_us/about_us.scss +0 -0
  40. data/lib/vueapp/templates/pages/about_us/about_us.slim +2 -0
  41. data/lib/vueapp/templates/pages/home/home.js +3 -0
  42. data/lib/vueapp/templates/pages/home/home.scss +0 -0
  43. data/lib/vueapp/templates/pages/home/home.slim +2 -0
  44. data/lib/vueapp/templates/styles.scss +1 -0
  45. data/lib/vueapp/version.rb +5 -0
  46. metadata +228 -0
@@ -0,0 +1,3 @@
1
+ window.VueAPI = {
2
+ base: 8
3
+ };
@@ -0,0 +1,131 @@
1
+ class ApiClient {
2
+ constructor(baseUrl) {
3
+ this.baseUrl = baseUrl;
4
+ this.timeout = 10000;
5
+ this.token = railsAppConfig.uuid;
6
+ this.locale = railsAppConfig.locale;
7
+ }
8
+
9
+ // Set base Headers
10
+ setHeaders(xhr) {
11
+ xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
12
+ xhr.setRequestHeader("Authorization", "Token token=" + this.token);
13
+ xhr.setRequestHeader("Accept-Language", this.locale);
14
+ xhr.timeout = this.timeout;
15
+ }
16
+
17
+ // On error
18
+ onError(xhr, errorCallback) {
19
+ xhr.onerror = function() {
20
+ errorCallback({
21
+ message: appTranslations.errors.server.unknown
22
+ });
23
+ };
24
+ }
25
+
26
+ // On timeout error
27
+ onTimeout(xhr, errorCallback) {
28
+ xhr.ontimeout = function() {
29
+ xhr.abort();
30
+ errorCallback({
31
+ message: appTranslations.errors.server.timeout
32
+ });
33
+ };
34
+ }
35
+
36
+ // On done
37
+ onDone(xhr, dataCallback, errorCallback) {
38
+ if (xhr.status !== 200 && xhr.status !== 204) {
39
+ if (xhr.responseText && xhr.responseText.length > 0) {
40
+ let data = JSON.parse(xhr.responseText);
41
+ errorCallback({
42
+ message: data.error,
43
+ code: xhr.status
44
+ });
45
+ } else {
46
+ errorCallback({
47
+ message: appTranslations.errors.server.unknown
48
+ });
49
+ }
50
+ } else {
51
+ if(xhr.responseText.length > 0) {
52
+ dataCallback(JSON.parse(xhr.responseText));
53
+ } else {
54
+ dataCallback();
55
+ }
56
+
57
+ }
58
+ }
59
+
60
+ // On ready state change
61
+ onReadyStateChange(xhr, dataCallback, errorCallback) {
62
+ let self = this;
63
+ xhr.onreadystatechange = function() {
64
+ switch (xhr.readyState) {
65
+ case 0:
66
+ // console.log('UNSENT');
67
+ break;
68
+ case 1:
69
+ // console.log('OPENED');
70
+ break;
71
+ case 2:
72
+ // console.log('HEADERS_RECEIVED');
73
+ break;
74
+ case 3:
75
+ // console.log('LOADING');
76
+ break;
77
+ case 4:
78
+ // console.log('DONE');
79
+ self.onDone(xhr, dataCallback, errorCallback);
80
+ break;
81
+ default:
82
+ return;
83
+ }
84
+ };
85
+ }
86
+
87
+ /**
88
+ * HTTP GET
89
+ * @param path
90
+ * @returns {Promise<any>}
91
+ */
92
+ get(path) {
93
+ return new Promise((resolve, reject) => {
94
+ let xhr = new XMLHttpRequest();
95
+ this.onError(xhr, reject);
96
+ this.onTimeout(xhr, reject);
97
+ this.onReadyStateChange(xhr, resolve, reject);
98
+
99
+ xhr.open("GET", this.baseUrl + path, true);
100
+ this.setHeaders(xhr);
101
+ xhr.send();
102
+ });
103
+ }
104
+
105
+ // HTTP POST
106
+ post(path, data) {
107
+ return new Promise((resolve, reject) => {
108
+ let xhr = new XMLHttpRequest();
109
+ this.onError(xhr, reject);
110
+ this.onTimeout(xhr, reject);
111
+ this.onReadyStateChange(xhr, resolve, reject);
112
+
113
+ xhr.open("POST", this.baseUrl + path, true);
114
+ this.setHeaders(xhr);
115
+ xhr.send(JSON.stringify(data));
116
+ });
117
+ }
118
+
119
+ // HTTP DELETE
120
+ delete(path) {
121
+ return new Promise((resolve, reject) => {
122
+ let xhr = new XMLHttpRequest();
123
+ this.onError(xhr, reject);
124
+ this.onTimeout(xhr, reject);
125
+ this.onReadyStateChange(xhr, resolve, reject);
126
+ xhr.open("DELETE", this.baseUrl + path, true);
127
+ this.setHeaders(xhr);
128
+ xhr.send();
129
+ });
130
+ }
131
+ }
@@ -0,0 +1,27 @@
1
+ class BaseApi {
2
+ constructor () {
3
+ this.apiClient = new ApiClient(
4
+ 'url'
5
+ );
6
+ }
7
+
8
+ all() {
9
+ return this.apiClient.get('/chats.json');
10
+ }
11
+
12
+ show(chatId) {
13
+ return this.apiClient.get('/chats/' + chatId + '.json');
14
+ }
15
+
16
+ send(chatId, message) {
17
+ return this.apiClient.post(
18
+ '/chats/' + chatId + '/messages.json',
19
+ { content: message }
20
+ );
21
+ }
22
+
23
+ search(query) {
24
+ return this.apiClient.get('/languages.json?q=' + query);
25
+ }
26
+
27
+ }
@@ -0,0 +1,17 @@
1
+ const VueApp = new Vue({
2
+ el: '#vueapp',
3
+ router: AppRouter,
4
+ // data: function() {
5
+ // return {
6
+ // percent: 0
7
+ // };
8
+ // },
9
+ // methods: {
10
+ // setPercent: function(newPercent) {
11
+ // this.percent = newPercent;
12
+ // }
13
+ // },
14
+ // mounted: function() {
15
+ //
16
+ // }
17
+ });
@@ -0,0 +1,7 @@
1
+ const AppRouter = new VueRouter({
2
+ routes: AppRoutes,
3
+ base: '/',
4
+ mode: 'hash',
5
+ linkExactActiveClass: '',
6
+ linkActiveClass: 'active'
7
+ });
@@ -0,0 +1,10 @@
1
+ const AppRoutes = [
2
+ {
3
+ path: '/', name: 'home',
4
+ component: HomePage
5
+ },
6
+ {
7
+ path: '/about-us', name: 'about-us',
8
+ component: AboutUsPage
9
+ }
10
+ ];
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Filter for percentage value
3
+ * {{ 10 | percentage }} => '10%'
4
+ */
5
+ Vue.filter("percentage", function(value) {
6
+ return value + "%";
7
+ });
@@ -0,0 +1,3 @@
1
+ const <%= component_name.capitalize %> = Vue.component('<%= component_name %>', {
2
+ template: '#<%= component_name %>'
3
+ });
@@ -0,0 +1,2 @@
1
+ template#<%= component_name %>
2
+ div <%= component_name.capitalize %>
@@ -0,0 +1,24 @@
1
+ doctype html
2
+ html
3
+ head
4
+ meta charset="utf-8"
5
+ meta name="language" content="EN"
6
+
7
+ title VueApp
8
+
9
+ meta name="description" content="Generated by VueApp"
10
+ meta name="author" content="vueapp"
11
+
12
+ link rel="stylesheet" href="styles.css?v=1.0"
13
+ script src="scripts.js?v=1.0" async=""
14
+
15
+ body
16
+ #vueapp
17
+
18
+ router-link :to="{ name: 'home' }" Home
19
+ router-link :to="{ name: 'about-us' }" About Us
20
+
21
+ transition
22
+ router-view
23
+
24
+ == render_components
@@ -0,0 +1,10 @@
1
+ const ItemableMixin = {
2
+ props: {
3
+ item: {
4
+ type: Object,
5
+ default: function() {
6
+ return {};
7
+ }
8
+ }
9
+ }
10
+ };
@@ -0,0 +1,3 @@
1
+ const AboutUsPage = Vue.component('about-us-page', {
2
+ template: '#about-us-page'
3
+ });
@@ -0,0 +1,2 @@
1
+ template#about-us-page
2
+ div About Us
@@ -0,0 +1,3 @@
1
+ const HomePage = Vue.component('home-page', {
2
+ template: '#home-page'
3
+ });
@@ -0,0 +1,2 @@
1
+ template#home-page
2
+ div Home
@@ -0,0 +1 @@
1
+ // Write your base styles for website here
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VueApp
4
+ VERSION = '0.1.1'
5
+ end
metadata ADDED
@@ -0,0 +1,228 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vueapp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Alex Merkulov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-08-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 12.3.3
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 12.3.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.75.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.75.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.1.4
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.1.4
69
+ - !ruby/object:Gem::Dependency
70
+ name: concolor
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.0.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.0.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: listen
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 3.2.1
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 3.2.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: sassc
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 2.2.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 2.2.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: slim
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 4.0.1
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 4.0.1
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.0.1
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 1.0.1
139
+ - !ruby/object:Gem::Dependency
140
+ name: uglifier
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 4.2.0
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 4.2.0
153
+ description: Tools for creating and developing vue.js applications easily
154
+ email:
155
+ - mercury@bit-forge.org
156
+ executables:
157
+ - vueapp
158
+ extensions: []
159
+ extra_rdoc_files: []
160
+ files:
161
+ - LICENSE.txt
162
+ - README.md
163
+ - bin/console
164
+ - bin/setup
165
+ - bin/vueapp
166
+ - lib/vueapp.rb
167
+ - lib/vueapp/cli.rb
168
+ - lib/vueapp/core/builder.rb
169
+ - lib/vueapp/core/builders/js_builder.rb
170
+ - lib/vueapp/core/builders/scss_builder.rb
171
+ - lib/vueapp/core/builders/slim_builder.rb
172
+ - lib/vueapp/core/cli/build_helper.rb
173
+ - lib/vueapp/core/cli/generator_helper.rb
174
+ - lib/vueapp/core/cli/init_helper.rb
175
+ - lib/vueapp/core/helpers/build.rb
176
+ - lib/vueapp/core/helpers/env.rb
177
+ - lib/vueapp/core/helpers/log.rb
178
+ - lib/vueapp/core/helpers/path.rb
179
+ - lib/vueapp/core/helpers/timer.rb
180
+ - lib/vueapp/core/listener.rb
181
+ - lib/vueapp/errors.rb
182
+ - lib/vueapp/templates/_core/vendor/vue.dev.js
183
+ - lib/vueapp/templates/_core/vendor/vue.js
184
+ - lib/vueapp/templates/_core/vendor/vue_router.js
185
+ - lib/vueapp/templates/api/api.js
186
+ - lib/vueapp/templates/api/api_client.js
187
+ - lib/vueapp/templates/api/base_api.js
188
+ - lib/vueapp/templates/config/app.js
189
+ - lib/vueapp/templates/config/router.js
190
+ - lib/vueapp/templates/config/routes.js
191
+ - lib/vueapp/templates/filters/percentage.js
192
+ - lib/vueapp/templates/generators/component/new.js
193
+ - lib/vueapp/templates/generators/component/new.scss
194
+ - lib/vueapp/templates/generators/component/new.slim
195
+ - lib/vueapp/templates/index.slim
196
+ - lib/vueapp/templates/mixins/base.js
197
+ - lib/vueapp/templates/pages/about_us/about_us.js
198
+ - lib/vueapp/templates/pages/about_us/about_us.scss
199
+ - lib/vueapp/templates/pages/about_us/about_us.slim
200
+ - lib/vueapp/templates/pages/home/home.js
201
+ - lib/vueapp/templates/pages/home/home.scss
202
+ - lib/vueapp/templates/pages/home/home.slim
203
+ - lib/vueapp/templates/styles.scss
204
+ - lib/vueapp/version.rb
205
+ homepage: https://github.com/bit-forge-org/vueapp
206
+ licenses:
207
+ - MIT
208
+ metadata: {}
209
+ post_install_message:
210
+ rdoc_options: []
211
+ require_paths:
212
+ - lib
213
+ required_ruby_version: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: 2.3.0
218
+ required_rubygems_version: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ requirements: []
224
+ rubygems_version: 3.1.2
225
+ signing_key:
226
+ specification_version: 4
227
+ summary: Tools for vue.js applications
228
+ test_files: []