grape-swagger-rails 1.0.0 → 1.0.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.
- checksums.yaml +4 -4
- data/.github/workflows/frontend.yml +11 -3
- data/.github/workflows/rubocop.yml +1 -1
- data/.github/workflows/swagger-ui-update.yml +61 -0
- data/.github/workflows/test.yml +6 -2
- data/.pnp.cjs +272 -1
- data/CHANGELOG.md +14 -0
- data/CLAUDE.md +5 -3
- data/README.md +21 -13
- data/app/assets/javascripts/grape_swagger_rails/index.js +102 -29
- data/app/assets/javascripts/grape_swagger_rails/index.min.js +2 -0
- data/app/assets/javascripts/grape_swagger_rails/index.min.js.map +7 -0
- data/app/assets/javascripts/grape_swagger_rails/swagger-ui-bundle.js +1 -1
- data/app/assets/stylesheets/grape_swagger_rails/index.css +42 -1
- data/app/helpers/grape_swagger_rails/application_helper.rb +4 -0
- data/app/views/grape_swagger_rails/application/index.html.haml +1 -1
- data/frontend/grape_swagger_rails/index.ts +99 -16
- data/lib/grape-swagger-rails/engine.rb +1 -0
- data/lib/grape-swagger-rails/version.rb +2 -2
- data/lib/grape-swagger-rails.rb +2 -1
- data/lib/tasks/swagger_ui.rake +20 -3
- data/package.json +4 -1
- data/spec/features/swagger_spec.rb +69 -0
- data/yarn.lock +272 -0
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5bd45e9462ec3fceba7a6b3b75fc6fee6ad6ce11349b52378ee7aaad8fc429f3
|
|
4
|
+
data.tar.gz: 7d531ce1a74556e0ef0ff17c14bf5515ed255916ccd27f63a1a1ec9ec6d0cadb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fe07aff0e76be3d93a2e4cd62b1effb5517a17f1d79452ba764166a03d1afa5010de6e04d6789dec767536f5cef004c2c6e431bf3ebe5b166fbb784e56ad133e
|
|
7
|
+
data.tar.gz: 04defb6acca696ffc3c24e3f577091afe5f0829ebf8a0c2c7aea11689b256125a9307483ec3582442210d93adf116893b8cb9871892712a6a3ffdc2cc9fe5e17
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
name: Frontend
|
|
2
|
-
on:
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- master
|
|
6
|
+
pull_request:
|
|
3
7
|
jobs:
|
|
4
8
|
frontend:
|
|
5
9
|
runs-on: ubuntu-latest
|
|
6
10
|
steps:
|
|
7
|
-
- uses: actions/checkout@
|
|
11
|
+
- uses: actions/checkout@v6
|
|
8
12
|
- name: Set up Node
|
|
9
13
|
uses: actions/setup-node@v4
|
|
10
14
|
with:
|
|
@@ -18,4 +22,8 @@ jobs:
|
|
|
18
22
|
- name: Build frontend
|
|
19
23
|
run: yarn build:frontend
|
|
20
24
|
- name: Check compiled output is committed
|
|
21
|
-
run:
|
|
25
|
+
run: |
|
|
26
|
+
git diff --exit-code \
|
|
27
|
+
app/assets/javascripts/grape_swagger_rails/index.js \
|
|
28
|
+
app/assets/javascripts/grape_swagger_rails/index.min.js \
|
|
29
|
+
app/assets/javascripts/grape_swagger_rails/index.min.js.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
name: Swagger UI Update
|
|
2
|
+
|
|
3
|
+
"on":
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: "0 8 * * 1"
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
pull-requests: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
update:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v6
|
|
17
|
+
|
|
18
|
+
- name: Set up Ruby
|
|
19
|
+
uses: ruby/setup-ruby@v1
|
|
20
|
+
with:
|
|
21
|
+
ruby-version: "3.4"
|
|
22
|
+
bundler-cache: true
|
|
23
|
+
|
|
24
|
+
- name: Check latest Swagger UI release
|
|
25
|
+
id: swagger-ui
|
|
26
|
+
env:
|
|
27
|
+
GH_TOKEN: ${{ github.token }}
|
|
28
|
+
run: |
|
|
29
|
+
current_version="$(ruby -r ./lib/grape-swagger-rails/version -e 'print GrapeSwaggerRails::SWAGGER_UI_VERSION')"
|
|
30
|
+
latest_tag="$(gh api repos/swagger-api/swagger-ui/releases/latest --jq .tag_name)"
|
|
31
|
+
latest_version="${latest_tag#v}"
|
|
32
|
+
|
|
33
|
+
echo "current-version=${current_version}" >> "$GITHUB_OUTPUT"
|
|
34
|
+
echo "latest-tag=${latest_tag}" >> "$GITHUB_OUTPUT"
|
|
35
|
+
echo "latest-version=${latest_version}" >> "$GITHUB_OUTPUT"
|
|
36
|
+
|
|
37
|
+
if [ "$current_version" != "$latest_version" ]; then
|
|
38
|
+
echo "update-needed=true" >> "$GITHUB_OUTPUT"
|
|
39
|
+
else
|
|
40
|
+
echo "update-needed=false" >> "$GITHUB_OUTPUT"
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
- name: Update Swagger UI assets
|
|
44
|
+
if: steps.swagger-ui.outputs.update-needed == 'true'
|
|
45
|
+
env:
|
|
46
|
+
SWAGGER_UI_VERSION: ${{ steps.swagger-ui.outputs.latest-tag }}
|
|
47
|
+
run: bundle exec rake swagger_ui:dist:update
|
|
48
|
+
|
|
49
|
+
- name: Create pull request
|
|
50
|
+
if: steps.swagger-ui.outputs.update-needed == 'true'
|
|
51
|
+
uses: peter-evans/create-pull-request@v7
|
|
52
|
+
with:
|
|
53
|
+
token: ${{ github.token }}
|
|
54
|
+
branch: update-swagger-ui-${{ steps.swagger-ui.outputs.latest-version }}
|
|
55
|
+
delete-branch: true
|
|
56
|
+
commit-message: Bump Swagger UI to ${{ steps.swagger-ui.outputs.latest-version }}
|
|
57
|
+
title: Bump Swagger UI to ${{ steps.swagger-ui.outputs.latest-version }}
|
|
58
|
+
body: |
|
|
59
|
+
Updates bundled Swagger UI assets from swagger-api/swagger-ui `${{ steps.swagger-ui.outputs.latest-tag }}`.
|
|
60
|
+
|
|
61
|
+
Generated by the scheduled Swagger UI update workflow.
|
data/.github/workflows/test.yml
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
name: Tests
|
|
2
|
-
on:
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- master
|
|
6
|
+
pull_request:
|
|
3
7
|
jobs:
|
|
4
8
|
test:
|
|
5
9
|
runs-on: ubuntu-latest
|
|
@@ -40,7 +44,7 @@ jobs:
|
|
|
40
44
|
GRAPE_SWAGGER_VERSION: ${{ matrix.grape-swagger }}
|
|
41
45
|
RAILS_VERSION: ${{ matrix.rails }}
|
|
42
46
|
steps:
|
|
43
|
-
- uses: actions/checkout@
|
|
47
|
+
- uses: actions/checkout@v6
|
|
44
48
|
- name: Set up Ruby
|
|
45
49
|
uses: ruby/setup-ruby@v1
|
|
46
50
|
with:
|
data/.pnp.cjs
CHANGED
|
@@ -28,16 +28,287 @@ const RAW_RUNTIME_STATE =
|
|
|
28
28
|
[null, {\
|
|
29
29
|
"packageLocation": "./",\
|
|
30
30
|
"packageDependencies": [\
|
|
31
|
+
["esbuild", "npm:0.25.12"],\
|
|
31
32
|
["grape-swagger-rails", "workspace:."],\
|
|
32
33
|
["typescript", "patch:typescript@npm%3A5.9.3#optional!builtin<compat/typescript>::version=5.9.3&hash=5786d5"]\
|
|
33
34
|
],\
|
|
34
35
|
"linkType": "SOFT"\
|
|
35
36
|
}]\
|
|
36
37
|
]],\
|
|
38
|
+
["@esbuild/aix-ppc64", [\
|
|
39
|
+
["npm:0.25.12", {\
|
|
40
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-aix-ppc64-npm-0.25.12-8c22abd617/node_modules/@esbuild/aix-ppc64/",\
|
|
41
|
+
"packageDependencies": [\
|
|
42
|
+
["@esbuild/aix-ppc64", "npm:0.25.12"]\
|
|
43
|
+
],\
|
|
44
|
+
"linkType": "HARD"\
|
|
45
|
+
}]\
|
|
46
|
+
]],\
|
|
47
|
+
["@esbuild/android-arm", [\
|
|
48
|
+
["npm:0.25.12", {\
|
|
49
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-android-arm-npm-0.25.12-30cfcd9e3d/node_modules/@esbuild/android-arm/",\
|
|
50
|
+
"packageDependencies": [\
|
|
51
|
+
["@esbuild/android-arm", "npm:0.25.12"]\
|
|
52
|
+
],\
|
|
53
|
+
"linkType": "HARD"\
|
|
54
|
+
}]\
|
|
55
|
+
]],\
|
|
56
|
+
["@esbuild/android-arm64", [\
|
|
57
|
+
["npm:0.25.12", {\
|
|
58
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-android-arm64-npm-0.25.12-00cec8936f/node_modules/@esbuild/android-arm64/",\
|
|
59
|
+
"packageDependencies": [\
|
|
60
|
+
["@esbuild/android-arm64", "npm:0.25.12"]\
|
|
61
|
+
],\
|
|
62
|
+
"linkType": "HARD"\
|
|
63
|
+
}]\
|
|
64
|
+
]],\
|
|
65
|
+
["@esbuild/android-x64", [\
|
|
66
|
+
["npm:0.25.12", {\
|
|
67
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-android-x64-npm-0.25.12-f0cc7556ec/node_modules/@esbuild/android-x64/",\
|
|
68
|
+
"packageDependencies": [\
|
|
69
|
+
["@esbuild/android-x64", "npm:0.25.12"]\
|
|
70
|
+
],\
|
|
71
|
+
"linkType": "HARD"\
|
|
72
|
+
}]\
|
|
73
|
+
]],\
|
|
74
|
+
["@esbuild/darwin-arm64", [\
|
|
75
|
+
["npm:0.25.12", {\
|
|
76
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-darwin-arm64-npm-0.25.12-2a5a9f9710/node_modules/@esbuild/darwin-arm64/",\
|
|
77
|
+
"packageDependencies": [\
|
|
78
|
+
["@esbuild/darwin-arm64", "npm:0.25.12"]\
|
|
79
|
+
],\
|
|
80
|
+
"linkType": "HARD"\
|
|
81
|
+
}]\
|
|
82
|
+
]],\
|
|
83
|
+
["@esbuild/darwin-x64", [\
|
|
84
|
+
["npm:0.25.12", {\
|
|
85
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-darwin-x64-npm-0.25.12-157b2f4f8a/node_modules/@esbuild/darwin-x64/",\
|
|
86
|
+
"packageDependencies": [\
|
|
87
|
+
["@esbuild/darwin-x64", "npm:0.25.12"]\
|
|
88
|
+
],\
|
|
89
|
+
"linkType": "HARD"\
|
|
90
|
+
}]\
|
|
91
|
+
]],\
|
|
92
|
+
["@esbuild/freebsd-arm64", [\
|
|
93
|
+
["npm:0.25.12", {\
|
|
94
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-freebsd-arm64-npm-0.25.12-82171eee7e/node_modules/@esbuild/freebsd-arm64/",\
|
|
95
|
+
"packageDependencies": [\
|
|
96
|
+
["@esbuild/freebsd-arm64", "npm:0.25.12"]\
|
|
97
|
+
],\
|
|
98
|
+
"linkType": "HARD"\
|
|
99
|
+
}]\
|
|
100
|
+
]],\
|
|
101
|
+
["@esbuild/freebsd-x64", [\
|
|
102
|
+
["npm:0.25.12", {\
|
|
103
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-freebsd-x64-npm-0.25.12-464a938fa1/node_modules/@esbuild/freebsd-x64/",\
|
|
104
|
+
"packageDependencies": [\
|
|
105
|
+
["@esbuild/freebsd-x64", "npm:0.25.12"]\
|
|
106
|
+
],\
|
|
107
|
+
"linkType": "HARD"\
|
|
108
|
+
}]\
|
|
109
|
+
]],\
|
|
110
|
+
["@esbuild/linux-arm", [\
|
|
111
|
+
["npm:0.25.12", {\
|
|
112
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-linux-arm-npm-0.25.12-dd07033e1a/node_modules/@esbuild/linux-arm/",\
|
|
113
|
+
"packageDependencies": [\
|
|
114
|
+
["@esbuild/linux-arm", "npm:0.25.12"]\
|
|
115
|
+
],\
|
|
116
|
+
"linkType": "HARD"\
|
|
117
|
+
}]\
|
|
118
|
+
]],\
|
|
119
|
+
["@esbuild/linux-arm64", [\
|
|
120
|
+
["npm:0.25.12", {\
|
|
121
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-linux-arm64-npm-0.25.12-a5aaa0e70e/node_modules/@esbuild/linux-arm64/",\
|
|
122
|
+
"packageDependencies": [\
|
|
123
|
+
["@esbuild/linux-arm64", "npm:0.25.12"]\
|
|
124
|
+
],\
|
|
125
|
+
"linkType": "HARD"\
|
|
126
|
+
}]\
|
|
127
|
+
]],\
|
|
128
|
+
["@esbuild/linux-ia32", [\
|
|
129
|
+
["npm:0.25.12", {\
|
|
130
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-linux-ia32-npm-0.25.12-3b5addbfbb/node_modules/@esbuild/linux-ia32/",\
|
|
131
|
+
"packageDependencies": [\
|
|
132
|
+
["@esbuild/linux-ia32", "npm:0.25.12"]\
|
|
133
|
+
],\
|
|
134
|
+
"linkType": "HARD"\
|
|
135
|
+
}]\
|
|
136
|
+
]],\
|
|
137
|
+
["@esbuild/linux-loong64", [\
|
|
138
|
+
["npm:0.25.12", {\
|
|
139
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-linux-loong64-npm-0.25.12-4fec31ffb2/node_modules/@esbuild/linux-loong64/",\
|
|
140
|
+
"packageDependencies": [\
|
|
141
|
+
["@esbuild/linux-loong64", "npm:0.25.12"]\
|
|
142
|
+
],\
|
|
143
|
+
"linkType": "HARD"\
|
|
144
|
+
}]\
|
|
145
|
+
]],\
|
|
146
|
+
["@esbuild/linux-mips64el", [\
|
|
147
|
+
["npm:0.25.12", {\
|
|
148
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-linux-mips64el-npm-0.25.12-827ebfd4ef/node_modules/@esbuild/linux-mips64el/",\
|
|
149
|
+
"packageDependencies": [\
|
|
150
|
+
["@esbuild/linux-mips64el", "npm:0.25.12"]\
|
|
151
|
+
],\
|
|
152
|
+
"linkType": "HARD"\
|
|
153
|
+
}]\
|
|
154
|
+
]],\
|
|
155
|
+
["@esbuild/linux-ppc64", [\
|
|
156
|
+
["npm:0.25.12", {\
|
|
157
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-linux-ppc64-npm-0.25.12-02e9c28638/node_modules/@esbuild/linux-ppc64/",\
|
|
158
|
+
"packageDependencies": [\
|
|
159
|
+
["@esbuild/linux-ppc64", "npm:0.25.12"]\
|
|
160
|
+
],\
|
|
161
|
+
"linkType": "HARD"\
|
|
162
|
+
}]\
|
|
163
|
+
]],\
|
|
164
|
+
["@esbuild/linux-riscv64", [\
|
|
165
|
+
["npm:0.25.12", {\
|
|
166
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-linux-riscv64-npm-0.25.12-3c5f314835/node_modules/@esbuild/linux-riscv64/",\
|
|
167
|
+
"packageDependencies": [\
|
|
168
|
+
["@esbuild/linux-riscv64", "npm:0.25.12"]\
|
|
169
|
+
],\
|
|
170
|
+
"linkType": "HARD"\
|
|
171
|
+
}]\
|
|
172
|
+
]],\
|
|
173
|
+
["@esbuild/linux-s390x", [\
|
|
174
|
+
["npm:0.25.12", {\
|
|
175
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-linux-s390x-npm-0.25.12-2106b3ddcb/node_modules/@esbuild/linux-s390x/",\
|
|
176
|
+
"packageDependencies": [\
|
|
177
|
+
["@esbuild/linux-s390x", "npm:0.25.12"]\
|
|
178
|
+
],\
|
|
179
|
+
"linkType": "HARD"\
|
|
180
|
+
}]\
|
|
181
|
+
]],\
|
|
182
|
+
["@esbuild/linux-x64", [\
|
|
183
|
+
["npm:0.25.12", {\
|
|
184
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-linux-x64-npm-0.25.12-07c7c22cce/node_modules/@esbuild/linux-x64/",\
|
|
185
|
+
"packageDependencies": [\
|
|
186
|
+
["@esbuild/linux-x64", "npm:0.25.12"]\
|
|
187
|
+
],\
|
|
188
|
+
"linkType": "HARD"\
|
|
189
|
+
}]\
|
|
190
|
+
]],\
|
|
191
|
+
["@esbuild/netbsd-arm64", [\
|
|
192
|
+
["npm:0.25.12", {\
|
|
193
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-netbsd-arm64-npm-0.25.12-bd2cdd7715/node_modules/@esbuild/netbsd-arm64/",\
|
|
194
|
+
"packageDependencies": [\
|
|
195
|
+
["@esbuild/netbsd-arm64", "npm:0.25.12"]\
|
|
196
|
+
],\
|
|
197
|
+
"linkType": "HARD"\
|
|
198
|
+
}]\
|
|
199
|
+
]],\
|
|
200
|
+
["@esbuild/netbsd-x64", [\
|
|
201
|
+
["npm:0.25.12", {\
|
|
202
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-netbsd-x64-npm-0.25.12-1f5039ae72/node_modules/@esbuild/netbsd-x64/",\
|
|
203
|
+
"packageDependencies": [\
|
|
204
|
+
["@esbuild/netbsd-x64", "npm:0.25.12"]\
|
|
205
|
+
],\
|
|
206
|
+
"linkType": "HARD"\
|
|
207
|
+
}]\
|
|
208
|
+
]],\
|
|
209
|
+
["@esbuild/openbsd-arm64", [\
|
|
210
|
+
["npm:0.25.12", {\
|
|
211
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-openbsd-arm64-npm-0.25.12-33119801dd/node_modules/@esbuild/openbsd-arm64/",\
|
|
212
|
+
"packageDependencies": [\
|
|
213
|
+
["@esbuild/openbsd-arm64", "npm:0.25.12"]\
|
|
214
|
+
],\
|
|
215
|
+
"linkType": "HARD"\
|
|
216
|
+
}]\
|
|
217
|
+
]],\
|
|
218
|
+
["@esbuild/openbsd-x64", [\
|
|
219
|
+
["npm:0.25.12", {\
|
|
220
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-openbsd-x64-npm-0.25.12-e97e4dea2a/node_modules/@esbuild/openbsd-x64/",\
|
|
221
|
+
"packageDependencies": [\
|
|
222
|
+
["@esbuild/openbsd-x64", "npm:0.25.12"]\
|
|
223
|
+
],\
|
|
224
|
+
"linkType": "HARD"\
|
|
225
|
+
}]\
|
|
226
|
+
]],\
|
|
227
|
+
["@esbuild/openharmony-arm64", [\
|
|
228
|
+
["npm:0.25.12", {\
|
|
229
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-openharmony-arm64-npm-0.25.12-b6855e9fc4/node_modules/@esbuild/openharmony-arm64/",\
|
|
230
|
+
"packageDependencies": [\
|
|
231
|
+
["@esbuild/openharmony-arm64", "npm:0.25.12"]\
|
|
232
|
+
],\
|
|
233
|
+
"linkType": "HARD"\
|
|
234
|
+
}]\
|
|
235
|
+
]],\
|
|
236
|
+
["@esbuild/sunos-x64", [\
|
|
237
|
+
["npm:0.25.12", {\
|
|
238
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-sunos-x64-npm-0.25.12-21a61a61f1/node_modules/@esbuild/sunos-x64/",\
|
|
239
|
+
"packageDependencies": [\
|
|
240
|
+
["@esbuild/sunos-x64", "npm:0.25.12"]\
|
|
241
|
+
],\
|
|
242
|
+
"linkType": "HARD"\
|
|
243
|
+
}]\
|
|
244
|
+
]],\
|
|
245
|
+
["@esbuild/win32-arm64", [\
|
|
246
|
+
["npm:0.25.12", {\
|
|
247
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-win32-arm64-npm-0.25.12-daf31eb7a1/node_modules/@esbuild/win32-arm64/",\
|
|
248
|
+
"packageDependencies": [\
|
|
249
|
+
["@esbuild/win32-arm64", "npm:0.25.12"]\
|
|
250
|
+
],\
|
|
251
|
+
"linkType": "HARD"\
|
|
252
|
+
}]\
|
|
253
|
+
]],\
|
|
254
|
+
["@esbuild/win32-ia32", [\
|
|
255
|
+
["npm:0.25.12", {\
|
|
256
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-win32-ia32-npm-0.25.12-7915b5b56e/node_modules/@esbuild/win32-ia32/",\
|
|
257
|
+
"packageDependencies": [\
|
|
258
|
+
["@esbuild/win32-ia32", "npm:0.25.12"]\
|
|
259
|
+
],\
|
|
260
|
+
"linkType": "HARD"\
|
|
261
|
+
}]\
|
|
262
|
+
]],\
|
|
263
|
+
["@esbuild/win32-x64", [\
|
|
264
|
+
["npm:0.25.12", {\
|
|
265
|
+
"packageLocation": "./.yarn/unplugged/@esbuild-win32-x64-npm-0.25.12-2425a2e173/node_modules/@esbuild/win32-x64/",\
|
|
266
|
+
"packageDependencies": [\
|
|
267
|
+
["@esbuild/win32-x64", "npm:0.25.12"]\
|
|
268
|
+
],\
|
|
269
|
+
"linkType": "HARD"\
|
|
270
|
+
}]\
|
|
271
|
+
]],\
|
|
272
|
+
["esbuild", [\
|
|
273
|
+
["npm:0.25.12", {\
|
|
274
|
+
"packageLocation": "../../.yarn/berry/cache/esbuild-npm-0.25.12-352393c4bd-10c0.zip/node_modules/esbuild/",\
|
|
275
|
+
"packageDependencies": [\
|
|
276
|
+
["@esbuild/aix-ppc64", "npm:0.25.12"],\
|
|
277
|
+
["@esbuild/android-arm", "npm:0.25.12"],\
|
|
278
|
+
["@esbuild/android-arm64", "npm:0.25.12"],\
|
|
279
|
+
["@esbuild/android-x64", "npm:0.25.12"],\
|
|
280
|
+
["@esbuild/darwin-arm64", "npm:0.25.12"],\
|
|
281
|
+
["@esbuild/darwin-x64", "npm:0.25.12"],\
|
|
282
|
+
["@esbuild/freebsd-arm64", "npm:0.25.12"],\
|
|
283
|
+
["@esbuild/freebsd-x64", "npm:0.25.12"],\
|
|
284
|
+
["@esbuild/linux-arm", "npm:0.25.12"],\
|
|
285
|
+
["@esbuild/linux-arm64", "npm:0.25.12"],\
|
|
286
|
+
["@esbuild/linux-ia32", "npm:0.25.12"],\
|
|
287
|
+
["@esbuild/linux-loong64", "npm:0.25.12"],\
|
|
288
|
+
["@esbuild/linux-mips64el", "npm:0.25.12"],\
|
|
289
|
+
["@esbuild/linux-ppc64", "npm:0.25.12"],\
|
|
290
|
+
["@esbuild/linux-riscv64", "npm:0.25.12"],\
|
|
291
|
+
["@esbuild/linux-s390x", "npm:0.25.12"],\
|
|
292
|
+
["@esbuild/linux-x64", "npm:0.25.12"],\
|
|
293
|
+
["@esbuild/netbsd-arm64", "npm:0.25.12"],\
|
|
294
|
+
["@esbuild/netbsd-x64", "npm:0.25.12"],\
|
|
295
|
+
["@esbuild/openbsd-arm64", "npm:0.25.12"],\
|
|
296
|
+
["@esbuild/openbsd-x64", "npm:0.25.12"],\
|
|
297
|
+
["@esbuild/openharmony-arm64", "npm:0.25.12"],\
|
|
298
|
+
["@esbuild/sunos-x64", "npm:0.25.12"],\
|
|
299
|
+
["@esbuild/win32-arm64", "npm:0.25.12"],\
|
|
300
|
+
["@esbuild/win32-ia32", "npm:0.25.12"],\
|
|
301
|
+
["@esbuild/win32-x64", "npm:0.25.12"],\
|
|
302
|
+
["esbuild", "npm:0.25.12"]\
|
|
303
|
+
],\
|
|
304
|
+
"linkType": "HARD"\
|
|
305
|
+
}]\
|
|
306
|
+
]],\
|
|
37
307
|
["grape-swagger-rails", [\
|
|
38
308
|
["workspace:.", {\
|
|
39
309
|
"packageLocation": "./",\
|
|
40
310
|
"packageDependencies": [\
|
|
311
|
+
["esbuild", "npm:0.25.12"],\
|
|
41
312
|
["grape-swagger-rails", "workspace:."],\
|
|
42
313
|
["typescript", "patch:typescript@npm%3A5.9.3#optional!builtin<compat/typescript>::version=5.9.3&hash=5786d5"]\
|
|
43
314
|
],\
|
|
@@ -46,7 +317,7 @@ const RAW_RUNTIME_STATE =
|
|
|
46
317
|
]],\
|
|
47
318
|
["typescript", [\
|
|
48
319
|
["patch:typescript@npm%3A5.9.3#optional!builtin<compat/typescript>::version=5.9.3&hash=5786d5", {\
|
|
49
|
-
"packageLocation": "
|
|
320
|
+
"packageLocation": "../../.yarn/berry/cache/typescript-patch-6fda4d02cf-10c0.zip/node_modules/typescript/",\
|
|
50
321
|
"packageDependencies": [\
|
|
51
322
|
["typescript", "patch:typescript@npm%3A5.9.3#optional!builtin<compat/typescript>::version=5.9.3&hash=5786d5"]\
|
|
52
323
|
],\
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
* Your contribution here.
|
|
4
4
|
|
|
5
|
+
### 1.0.2 (2026/05/26)
|
|
6
|
+
|
|
7
|
+
* [#162](https://github.com/ruby-grape/grape-swagger-rails/pull/162): Fix vertical alignment for property rows in swagger ui model box - [@moskvin](https://github.com/moskvin).
|
|
8
|
+
* [#160](https://github.com/ruby-grape/grape-swagger-rails/pull/160): Hide Swagger UI's confusing "Clear" button by default; expose `display[:clear_button]` to opt back in - [@moskvin](https://github.com/moskvin).
|
|
9
|
+
* [#159](https://github.com/ruby-grape/grape-swagger-rails/pull/159): Added github action update swagger ui version - [@moskvin](https://github.com/moskvin).
|
|
10
|
+
|
|
11
|
+
### 1.0.1 (2026/05/17)
|
|
12
|
+
|
|
13
|
+
* [#155](https://github.com/ruby-grape/grape-swagger-rails/pull/155): Fix: autoload default spec and restyle version dropdown - [@moskvin](https://github.com/moskvin).
|
|
14
|
+
* [#154](https://github.com/ruby-grape/grape-swagger-rails/pull/154): Add minified and sourcemap assets for swagger ui integration - [@moskvin](https://github.com/moskvin).
|
|
15
|
+
* [#153](https://github.com/ruby-grape/grape-swagger-rails/pull/153): Fix same-session deep link navigation not expanding operations - [@moskvin](https://github.com/moskvin).
|
|
16
|
+
* [#156](https://github.com/ruby-grape/grape-swagger-rails/pull/156): Bump esbuild from 0.24.2 to 0.25.0 - [@moskvin](https://github.com/moskvin).
|
|
17
|
+
* [#157](https://github.com/ruby-grape/grape-swagger-rails/pull/157): Bump swagger ui version to 5.32.6 - [@moskvin](https://github.com/moskvin).
|
|
18
|
+
|
|
5
19
|
### 1.0.0 (2026/05/09)
|
|
6
20
|
|
|
7
21
|
* [#138](https://github.com/ruby-grape/grape-swagger-rails/pull/138): Migrate Danger to use danger-pr-comment workflow - [@dblock](https://github.com/dblock).
|
data/CLAUDE.md
CHANGED
|
@@ -14,7 +14,9 @@ bundle exec rake spec # Run all RSpec tests only
|
|
|
14
14
|
bundle exec rake rubocop # Run RuboCop linting only
|
|
15
15
|
bundle exec rspec spec/features/swagger_spec.rb # Run a single spec file
|
|
16
16
|
|
|
17
|
-
yarn build:frontend #
|
|
17
|
+
yarn build:frontend # tsc → index.js, then esbuild → index.min.js (+ .map)
|
|
18
|
+
yarn build:frontend:js # Just tsc (readable bundle)
|
|
19
|
+
yarn build:frontend:min # Just esbuild (minified bundle, consumes index.js)
|
|
18
20
|
yarn typecheck # Type-check TypeScript without emitting
|
|
19
21
|
|
|
20
22
|
bundle exec rake swagger_ui:dist:update # Update bundled Swagger UI assets
|
|
@@ -23,7 +25,7 @@ SWAGGER_UI_VERSION=v5.32.5 bundle exec rake swagger_ui:dist:update # Pin to a v
|
|
|
23
25
|
|
|
24
26
|
Tests use Capybara + Selenium with Firefox. Firefox and geckodriver must be installed locally. On macOS, `xvfb` is not needed (unlike CI). Tests launch a real browser to validate UI behavior.
|
|
25
27
|
|
|
26
|
-
**After editing TypeScript**, run `yarn build:frontend` before running specs — the specs exercise `app/assets/javascripts/grape_swagger_rails/index.js`, which is the compiled output. Never edit the compiled JS directly.
|
|
28
|
+
**After editing TypeScript**, run `yarn build:frontend` before running specs — the specs exercise `app/assets/javascripts/grape_swagger_rails/index.js`, which is the compiled output. Never edit the compiled JS directly. The build also emits `index.min.js` (+ sourcemap); the view picks the minified bundle in production (`Rails.env.production?`) via `grape_swagger_rails_runtime_asset` and the readable one everywhere else.
|
|
27
29
|
|
|
28
30
|
## Architecture
|
|
29
31
|
|
|
@@ -33,7 +35,7 @@ The gem has minimal moving parts:
|
|
|
33
35
|
- **`lib/grape-swagger-rails/engine.rb`** — Rails Engine. Configures asset precompilation for both Sprockets and Propshaft pipelines.
|
|
34
36
|
- **`app/controllers/grape_swagger_rails/application_controller.rb`** — Single `index` action. Runs `options.before_action_proc` in controller context for authorization.
|
|
35
37
|
- **`app/views/grape_swagger_rails/application/index.html.haml`** — The entire UI. Serializes `GrapeSwaggerRails.options` as JSON into `data-swagger-options`, then JavaScript parses it to initialize SwaggerUIBundle. Handles theme toggling and auth injection via Swagger UI's `requestInterceptor`.
|
|
36
|
-
- **`frontend/grape_swagger_rails/index.ts`** — TypeScript source for the browser runtime.
|
|
38
|
+
- **`frontend/grape_swagger_rails/index.ts`** — TypeScript source for the browser runtime. `tsc` compiles it to `app/assets/javascripts/grape_swagger_rails/index.js` (readable, ES5); `esbuild` then minifies that into `index.min.js` (+ `.map`). Both files are checked in so they ship with the gem. The TypeScript interface `SwaggerPageOptions` is the authoritative schema for options consumed by JS.
|
|
37
39
|
- **`config/routes.rb`** — Single root route → `ApplicationController#index`.
|
|
38
40
|
- **`lib/tasks/swagger_ui.rake`** — Rake task that clones `swagger-api/swagger-ui` and copies dist files into `app/assets/`.
|
|
39
41
|
|
data/README.md
CHANGED
|
@@ -17,7 +17,7 @@ Swagger UI as Rails Engine for grape-swagger gem.
|
|
|
17
17
|
- [API Token Authentication](#api-token-authentication)
|
|
18
18
|
- [Swagger UI Authorization](#swagger-ui-authorization)
|
|
19
19
|
- [Integration with DoorKeeper](#integration-with-doorkeeper)
|
|
20
|
-
- [
|
|
20
|
+
- [Show or Hide Swagger UI Elements](#show-or-hide-swagger-ui-elements)
|
|
21
21
|
- [Updating Swagger UI from Dist](#updating-swagger-ui-from-dist)
|
|
22
22
|
- [Contributors](#contributors)
|
|
23
23
|
- [AI Agents](#ai-agents)
|
|
@@ -46,9 +46,9 @@ This gem is continuously tested against the following stack:
|
|
|
46
46
|
|
|
47
47
|
| Ruby | Rails | Grape | grape-swagger | Swagger UI |
|
|
48
48
|
|-----:|--------:|--------:|--------------:|-----------:|
|
|
49
|
-
| 3.4 | 7.2.2.2 | 1.8.x | 1.6.1 | 5.32.
|
|
50
|
-
| 3.2+ | 7.2.2.2 | 3.1.x | 2.1.4 | 5.32.
|
|
51
|
-
| 3.2+ | 8.1.x | 3.1.x | 2.1.4 | 5.32.
|
|
49
|
+
| 3.4 | 7.2.2.2 | 1.8.x | 1.6.1 | 5.32.6 |
|
|
50
|
+
| 3.2+ | 7.2.2.2 | 3.1.x | 2.1.4 | 5.32.6 |
|
|
51
|
+
| 3.2+ | 8.1.x | 3.1.x | 2.1.4 | 5.32.6 |
|
|
52
52
|
|
|
53
53
|
The dummy app and CI also exercise both supported Rails asset pipelines: Sprockets and Propshaft.
|
|
54
54
|
|
|
@@ -258,25 +258,33 @@ In your User model (user.rb) add:
|
|
|
258
258
|
has_one :token, -> { order 'created_at DESC' }, class_name: Doorkeeper::AccessToken, foreign_key: :resource_owner_id
|
|
259
259
|
```
|
|
260
260
|
|
|
261
|
-
###
|
|
261
|
+
### Show or Hide Swagger UI Elements
|
|
262
262
|
|
|
263
|
-
|
|
263
|
+
Use `display` to control visibility of the built-in Swagger UI header elements:
|
|
264
264
|
|
|
265
265
|
```ruby
|
|
266
|
-
GrapeSwaggerRails.options.
|
|
266
|
+
GrapeSwaggerRails.options.display = {
|
|
267
|
+
api_key_input: false,
|
|
268
|
+
info_url: false,
|
|
269
|
+
doc_version: false,
|
|
270
|
+
version_stamp: false,
|
|
271
|
+
clear_button: true
|
|
272
|
+
}
|
|
267
273
|
```
|
|
268
274
|
|
|
269
|
-
|
|
275
|
+
Supported keys:
|
|
270
276
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
277
|
+
- `api_key_input`: show or hide the authentication input box
|
|
278
|
+
- `info_url`: show or hide the API document URL link
|
|
279
|
+
- `doc_version`: show or hide the API document version label
|
|
280
|
+
- `version_stamp`: show or hide the `OAS 2.0` version stamp
|
|
281
|
+
- `clear_button`: show or hide Swagger UI's "Clear" button that appears next to "Execute" after "Try it out". Hidden by default because the upstream button only resets internal request/response state and leaves user-typed input values on screen, which is confusing (see [swagger-api/swagger-ui#5283](https://github.com/swagger-api/swagger-ui/issues/5283)).
|
|
274
282
|
|
|
275
|
-
By default, these options are false
|
|
283
|
+
By default, all of these options are `true` except `clear_button`, which defaults to `false`.
|
|
276
284
|
|
|
277
285
|
### Updating Swagger UI from Dist
|
|
278
286
|
|
|
279
|
-
To update Swagger UI from its [distribution](https://github.com/
|
|
287
|
+
To update Swagger UI from its [distribution](https://github.com/swagger-api/swagger-ui), run `bundle exec rake swagger_ui:dist:update`. Examine the changes carefully.
|
|
280
288
|
|
|
281
289
|
NOTE: This action should be run part of this gem (not your application). In case if you want to
|
|
282
290
|
make it up-to-date, clone the repo, run the rake task, examine the diff, fix any bugs, make sure
|