potassium 6.6.0 → 6.7.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -1
- data/lib/potassium/assets/.circleci/config.yml.erb +20 -7
- data/lib/potassium/assets/.eslintrc.json +2 -1
- data/lib/potassium/assets/app/javascript/api/index.ts +55 -0
- data/lib/potassium/assets/app/javascript/utils/case-converter.ts +39 -0
- data/lib/potassium/assets/tsconfig.json +2 -1
- data/lib/potassium/recipes/admin.rb +39 -1
- data/lib/potassium/recipes/file_storage.rb +1 -1
- data/lib/potassium/recipes/front_end.rb +18 -4
- data/lib/potassium/recipes/style.rb +2 -1
- data/lib/potassium/version.rb +5 -5
- data/spec/features/front_end_spec.rb +5 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81ec8c6408ed21f78421ecb48565bcd42e6478fc0a08a7ca0881035eb8d0c444
|
4
|
+
data.tar.gz: 0b925fa5a1344c3f284d91f8fdb092d984d47f8434b4beed51678e4a909e2ada
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a07cf43e021c0350e84eb0213f5ac513fa2446c16cfd492a0b7947acdd45776b817004d5f4cf42962947137dc988ccaa1e61020f23b89a63040b85d04e61a2e
|
7
|
+
data.tar.gz: af4598c990bede9a8be8cbf47dd324f9f13b584b5b0982ab277806f71318b4d97da289e9cad725d45398e66cc7454578bd89fc086b550ebc586286d46d217f98
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,20 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
##
|
3
|
+
## 6.7.0
|
4
|
+
|
5
|
+
Features
|
6
|
+
- Add type checking to reviewdog [#411](https://github.com/platanus/potassium/pull/411)
|
7
|
+
- Add initial api files [#412](https://github.com/platanus/potassium/pull/412)
|
8
|
+
- Add eslint-plugin-platanus [#415](https://github.com/platanus/potassium/pull/415)
|
9
|
+
|
10
|
+
Fixes
|
11
|
+
- Prepend vips installation [#407](https://github.com/platanus/potassium/pull/407)
|
12
|
+
- Fix jest install [#408](https://github.com/platanus/potassium/pull/408)
|
13
|
+
- Fix circle ci config. Provide global context to test job [#409](https://github.com/platanus/potassium/pull/409)
|
14
|
+
- Fix admin css (arctic_skin) [#413](https://github.com/platanus/potassium/pull/413)
|
15
|
+
- Fix tsc check [#414](https://github.com/platanus/potassium/pull/414)
|
16
|
+
- Fix monkeyci commenting because of uncovered lines when tests do exist [#416](https://github.com/platanus/potassium/pull/416)
|
17
|
+
- Typescript fixes [#417](https://github.com/platanus/potassium/pull/417)
|
4
18
|
|
5
19
|
## 6.6.0
|
6
20
|
Features
|
@@ -116,6 +116,12 @@ jobs:
|
|
116
116
|
RSPEC_FORMAT_ARGS="-f progress --no-color -p 10"
|
117
117
|
bundle exec rspec spec $RSPEC_FORMAT_ARGS $RSPEC_JUNIT_ARGS
|
118
118
|
|
119
|
+
- run:
|
120
|
+
name: Run simplecov
|
121
|
+
shell: /bin/bash
|
122
|
+
command: |
|
123
|
+
cat coverage/coverage.txt | ./bin/reviewdog -reporter=github-pr-review -efm="%f:%l:%c: %m"
|
124
|
+
|
119
125
|
- run:
|
120
126
|
name: Run RSpec system tests
|
121
127
|
command: |
|
@@ -123,12 +129,6 @@ jobs:
|
|
123
129
|
RSPEC_FORMAT_ARGS="--tag type:system -f progress --no-color -p 10"
|
124
130
|
bundle exec rspec spec $RSPEC_FORMAT_ARGS $RSPEC_JUNIT_ARGS
|
125
131
|
|
126
|
-
- run:
|
127
|
-
name: Run simplecov
|
128
|
-
shell: /bin/bash
|
129
|
-
command: |
|
130
|
-
cat coverage/coverage.txt | ./bin/reviewdog -reporter=github-pr-review -efm="%f:%l:%c: %m"
|
131
|
-
|
132
132
|
<%- if selected?(:front_end, :vue) -%>
|
133
133
|
- run:
|
134
134
|
name: Run jest
|
@@ -164,6 +164,18 @@ jobs:
|
|
164
164
|
cat tmp/files_to_lint | grep -E '.+\.(js|jsx|vue)$' | xargs yarn run eslint \
|
165
165
|
| ./bin/reviewdog -reporter=github-pr-review -f=eslint
|
166
166
|
|
167
|
+
- run:
|
168
|
+
name: Run tsc
|
169
|
+
shell: /bin/bash
|
170
|
+
command: |
|
171
|
+
yarn run tsc --noEmit | ./bin/reviewdog -reporter=github-pr-review -f=tsc
|
172
|
+
|
173
|
+
- run:
|
174
|
+
name: Run vue-tsc
|
175
|
+
shell: /bin/bash
|
176
|
+
command: |
|
177
|
+
yarn run vue-tsc --noEmit | ./bin/reviewdog -reporter=github-pr-review -f=tsc
|
178
|
+
|
167
179
|
- run:
|
168
180
|
name: Run stylelint
|
169
181
|
shell: /bin/bash
|
@@ -174,6 +186,7 @@ jobs:
|
|
174
186
|
workflows:
|
175
187
|
test_and_lint:
|
176
188
|
jobs:
|
177
|
-
- test
|
189
|
+
- test:
|
190
|
+
context: org-global
|
178
191
|
- lint:
|
179
192
|
context: org-global
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import axios, { type AxiosRequestTransformer, type AxiosResponseTransformer } from 'axios';
|
2
|
+
import convertKeys from '../utils/case-converter';
|
3
|
+
|
4
|
+
const api = axios.create({
|
5
|
+
transformRequest: [
|
6
|
+
(data: any) => convertKeys(data, 'decamelize'),
|
7
|
+
...(axios.defaults.transformRequest as AxiosRequestTransformer[]),
|
8
|
+
],
|
9
|
+
transformResponse: [
|
10
|
+
...(axios.defaults.transformResponse as AxiosResponseTransformer[]),
|
11
|
+
(data: any) => convertKeys(data, 'camelize'),
|
12
|
+
],
|
13
|
+
});
|
14
|
+
|
15
|
+
export default api;
|
16
|
+
|
17
|
+
/*
|
18
|
+
// Example to use the api object in the path ´app/javascript/api/users.ts´
|
19
|
+
|
20
|
+
import api from './index';
|
21
|
+
|
22
|
+
export default {
|
23
|
+
index() {
|
24
|
+
const path = '/api/internal/users';
|
25
|
+
|
26
|
+
return api({
|
27
|
+
method: 'get',
|
28
|
+
url: path,
|
29
|
+
});
|
30
|
+
},
|
31
|
+
create(data: Partial<User>) {
|
32
|
+
const path = '/api/internal/users';
|
33
|
+
|
34
|
+
return api({
|
35
|
+
method: 'post',
|
36
|
+
url: path,
|
37
|
+
data: {
|
38
|
+
user: data,
|
39
|
+
},
|
40
|
+
});
|
41
|
+
},
|
42
|
+
update(data: Partial<User>) {
|
43
|
+
const path = `/api/internal/users/${data.id}`;
|
44
|
+
|
45
|
+
return api({
|
46
|
+
method: 'put',
|
47
|
+
url: path,
|
48
|
+
data: {
|
49
|
+
user: data,
|
50
|
+
},
|
51
|
+
});
|
52
|
+
},
|
53
|
+
};
|
54
|
+
|
55
|
+
*/
|
@@ -0,0 +1,39 @@
|
|
1
|
+
// From https://github.com/domchristie/humps/issues/51#issuecomment-425113505
|
2
|
+
/* eslint-disable complexity */
|
3
|
+
/* eslint-disable max-statements */
|
4
|
+
import { camelize, decamelize } from 'humps';
|
5
|
+
|
6
|
+
type objectToConvert = File | FormData | Blob | Record<string, unknown> | Array<objectToConvert>;
|
7
|
+
|
8
|
+
function convertKeys(
|
9
|
+
object: objectToConvert,
|
10
|
+
conversion: 'camelize' | 'decamelize',
|
11
|
+
): objectToConvert {
|
12
|
+
const converter = {
|
13
|
+
camelize,
|
14
|
+
decamelize,
|
15
|
+
};
|
16
|
+
if (object && !(object instanceof File) && !(object instanceof Blob)) {
|
17
|
+
if (object instanceof Array) {
|
18
|
+
return object.map((item: objectToConvert) => convertKeys(item, conversion));
|
19
|
+
}
|
20
|
+
if (object instanceof FormData) {
|
21
|
+
const formData = new FormData();
|
22
|
+
for (const [key, value] of object.entries()) {
|
23
|
+
formData.append(converter[conversion](key), value);
|
24
|
+
}
|
25
|
+
|
26
|
+
return formData;
|
27
|
+
}
|
28
|
+
if (typeof object === 'object') {
|
29
|
+
return Object.keys(object).reduce((acc, next) => ({
|
30
|
+
...acc,
|
31
|
+
[converter[conversion](next)]: convertKeys(object[next] as objectToConvert, conversion),
|
32
|
+
}), {});
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
return object;
|
37
|
+
}
|
38
|
+
|
39
|
+
export default convertKeys;
|
@@ -66,7 +66,45 @@ class Recipes::Admin < Rails::AppBuilder
|
|
66
66
|
aa_style,
|
67
67
|
"@import \"~@activeadmin/activeadmin/src/scss/mixins\";\n" +
|
68
68
|
"@import \"~@activeadmin/activeadmin/src/scss/base\";",
|
69
|
-
|
69
|
+
<<~HERE
|
70
|
+
@import '~arctic_admin/src/scss/main';
|
71
|
+
|
72
|
+
// Fix for sidebar when there are too many filters
|
73
|
+
#sidebar {
|
74
|
+
height: 100vh;
|
75
|
+
top: 0;
|
76
|
+
z-index: 10;
|
77
|
+
}
|
78
|
+
|
79
|
+
#sidebar::before {
|
80
|
+
top: 200px !important;
|
81
|
+
}
|
82
|
+
|
83
|
+
#filters_sidebar_section {
|
84
|
+
height: 100vh;
|
85
|
+
overflow: auto;
|
86
|
+
}
|
87
|
+
|
88
|
+
// Fix for invisible datepicker calendar
|
89
|
+
#ui-datepicker-div {
|
90
|
+
z-index: 11 !important;
|
91
|
+
}
|
92
|
+
|
93
|
+
// Fix for backwards date range input
|
94
|
+
#sidebar .sidebar_section .filter_date_range input:nth-child(2) {
|
95
|
+
float: none;
|
96
|
+
}
|
97
|
+
|
98
|
+
#sidebar .sidebar_section .filter_date_range {
|
99
|
+
display: flex;
|
100
|
+
flex-flow: row wrap;
|
101
|
+
justify-content: space-between
|
102
|
+
}
|
103
|
+
|
104
|
+
#sidebar .sidebar_section .filter_date_range label {
|
105
|
+
width: 100%;
|
106
|
+
}
|
107
|
+
HERE
|
70
108
|
)
|
71
109
|
|
72
110
|
aa_js = "app/javascript/packs/active_admin.js"
|
@@ -5,7 +5,7 @@ class Recipes::FrontEnd < Rails::AppBuilder
|
|
5
5
|
POSTCSS_VERSION = Potassium::POSTCSS_VERSION
|
6
6
|
TAILWINDCSS_VERSION = Potassium::TAILWINDCSS_VERSION
|
7
7
|
AUTOPREFIXER_VERSION = Potassium::AUTOPREFIXER_VERSION
|
8
|
-
|
8
|
+
JEST_VERSION = Potassium::JEST_VERSION
|
9
9
|
|
10
10
|
def ask
|
11
11
|
frameworks = {
|
@@ -35,6 +35,7 @@ class Recipes::FrontEnd < Rails::AppBuilder
|
|
35
35
|
recipe.setup_vue if value == :vue
|
36
36
|
recipe.add_responsive_meta_tag
|
37
37
|
recipe.setup_tailwind
|
38
|
+
recipe.setup_api_client
|
38
39
|
add_readme_header :webpack
|
39
40
|
end
|
40
41
|
end
|
@@ -107,8 +108,10 @@ class Recipes::FrontEnd < Rails::AppBuilder
|
|
107
108
|
end
|
108
109
|
|
109
110
|
def setup_jest
|
110
|
-
run "bin/yarn add jest @vue/vue3-jest@#{
|
111
|
-
"@vue/test-utils@#{VUE_TEST_UTILS_VERSION} ts-jest"
|
111
|
+
run "bin/yarn add jest@#{JEST_VERSION} @vue/vue3-jest@#{JEST_VERSION} "\
|
112
|
+
"babel-jest@#{JEST_VERSION} @vue/test-utils@#{VUE_TEST_UTILS_VERSION} ts-jest@#{JEST_VERSION} "\
|
113
|
+
"jest-environment-jsdom@#{JEST_VERSION} --dev"
|
114
|
+
run "bin/yarn add @types/jest@#{JEST_VERSION}"
|
112
115
|
json_file = File.read(Pathname.new("package.json"))
|
113
116
|
js_package = JSON.parse(json_file)
|
114
117
|
js_package = js_package.merge(jest_config)
|
@@ -121,7 +124,8 @@ class Recipes::FrontEnd < Rails::AppBuilder
|
|
121
124
|
|
122
125
|
def setup_vue
|
123
126
|
run "bin/yarn add vue@#{VUE_VERSION} vue-loader@#{VUE_LOADER_VERSION} "\
|
124
|
-
"babel-preset-typescript-vue3"
|
127
|
+
"babel-preset-typescript-vue3 @types/humps"
|
128
|
+
run "bin/yarn add vue-tsc --dev"
|
125
129
|
gsub_file(
|
126
130
|
'config/webpack/webpack.config.js',
|
127
131
|
' merge(typescriptConfig, cssConfig, jQueryConfig, webpackConfig);',
|
@@ -136,6 +140,13 @@ class Recipes::FrontEnd < Rails::AppBuilder
|
|
136
140
|
end
|
137
141
|
end
|
138
142
|
|
143
|
+
def setup_api_client
|
144
|
+
run "bin/yarn add axios humps"
|
145
|
+
copy_file '../assets/app/javascript/api/index.ts', 'app/javascript/api/index.ts'
|
146
|
+
copy_file '../assets/app/javascript/utils/case-converter.ts',
|
147
|
+
'app/javascript/utils/case-converter.ts'
|
148
|
+
end
|
149
|
+
|
139
150
|
private
|
140
151
|
|
141
152
|
def frameworks(framework)
|
@@ -239,6 +250,9 @@ class Recipes::FrontEnd < Rails::AppBuilder
|
|
239
250
|
"moduleNameMapper": {
|
240
251
|
"^@/(.*)$": "app/javascript/$1"
|
241
252
|
},
|
253
|
+
"testEnvironmentOptions": {
|
254
|
+
"customExportConditions": ["node", "node-addons"]
|
255
|
+
},
|
242
256
|
"moduleFileExtensions": [
|
243
257
|
"js",
|
244
258
|
"ts",
|
@@ -22,7 +22,8 @@ class Recipes::Style < Rails::AppBuilder
|
|
22
22
|
|
23
23
|
after(:webpacker_install) do
|
24
24
|
run "yarn add --dev stylelint eslint eslint-plugin-import "\
|
25
|
-
"@typescript-eslint/eslint-plugin @types/jest @typescript-eslint/parser
|
25
|
+
"@typescript-eslint/eslint-plugin @types/jest @typescript-eslint/parser "\
|
26
|
+
"eslint-plugin-jest eslint-plugin-platanus"
|
26
27
|
if selected?(:front_end, :vue)
|
27
28
|
run 'yarn add --dev eslint-plugin-vue @vue/eslint-config-typescript'
|
28
29
|
end
|
data/lib/potassium/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Potassium
|
2
|
-
VERSION = "6.
|
2
|
+
VERSION = "6.7.0"
|
3
3
|
RUBY_VERSION = "2.7.0"
|
4
4
|
RAILS_VERSION = "~> 6.1.4.4"
|
5
5
|
RUBOCOP_VERSION = "~> 1.9"
|
@@ -10,8 +10,8 @@ module Potassium
|
|
10
10
|
TAILWINDCSS_VERSION = "^3"
|
11
11
|
POSTCSS_VERSION = "^8"
|
12
12
|
AUTOPREFIXER_VERSION = "^10"
|
13
|
-
VUE_VERSION = "^3"
|
14
|
-
VUE_LOADER_VERSION = "^16"
|
15
|
-
VUE_TEST_UTILS_VERSION = "^2.0.
|
16
|
-
|
13
|
+
VUE_VERSION = "^3.2.33"
|
14
|
+
VUE_LOADER_VERSION = "^16.8.3"
|
15
|
+
VUE_TEST_UTILS_VERSION = "^2.0.2"
|
16
|
+
JEST_VERSION = "^28.0.1"
|
17
17
|
end
|
@@ -67,5 +67,10 @@ RSpec.describe "Front end" do
|
|
67
67
|
it 'includes correct version of vue-loader in package' do
|
68
68
|
expect(node_modules_file).to include("\"vue-loader\": \"#{Potassium::VUE_LOADER_VERSION}\"")
|
69
69
|
end
|
70
|
+
|
71
|
+
it 'includes correct packages for basic api client' do
|
72
|
+
expect(node_modules_file).to include("\"axios\"")
|
73
|
+
expect(node_modules_file).to include("\"humps\"")
|
74
|
+
end
|
70
75
|
end
|
71
76
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: potassium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- juliogarciag
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -281,9 +281,11 @@ files:
|
|
281
281
|
- lib/potassium/assets/active_admin/policies/comment_policy.rb
|
282
282
|
- lib/potassium/assets/active_admin/policies/default_policy.rb
|
283
283
|
- lib/potassium/assets/active_admin/policies/page_policy.rb
|
284
|
+
- lib/potassium/assets/app/javascript/api/index.ts
|
284
285
|
- lib/potassium/assets/app/javascript/components/app.spec.ts
|
285
286
|
- lib/potassium/assets/app/javascript/components/app.vue
|
286
287
|
- lib/potassium/assets/app/javascript/types/vue.d.ts
|
288
|
+
- lib/potassium/assets/app/javascript/utils/case-converter.ts
|
287
289
|
- lib/potassium/assets/app/jobs/shrine_promote_job.rb
|
288
290
|
- lib/potassium/assets/app/mailers/application_mailer.rb
|
289
291
|
- lib/potassium/assets/app/mailers/example_mailer.rb
|