@oauth2-cli/qui-cli 0.6.5 → 0.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.
- package/CHANGELOG.md +71 -80
- package/dist/Export.d.ts +1 -0
- package/dist/Export.js +1 -0
- package/dist/Extend.d.ts +3 -0
- package/dist/Extend.js +3 -0
- package/dist/OAuth2.d.ts +8 -6
- package/dist/OAuth2.js +13 -5
- package/dist/OAuth2Plugin.d.ts +28 -16
- package/dist/OAuth2Plugin.js +75 -75
- package/dist/Token/EnvironmentStorage.d.ts +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -4
- package/package.json +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,259 +2,250 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
-
## [0.
|
|
5
|
+
## [0.7.0](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.6.6...qui-cli-plugin/0.7.0) (2026-02-17)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
### ⚠ BREAKING CHANGES
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
- clarify subclass groupings and extensibility
|
|
10
|
+
- simplify credentials structure
|
|
11
|
+
- rename Token.TokenStorage to less redundant Token.Storage
|
|
12
|
+
- simplify namespacing of Injection and Scope
|
|
13
|
+
- improved clarity of errors and causes
|
|
14
|
+
- remove option args for secrets
|
|
10
15
|
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
- add base_url for API requests (but still fall back to issuer, if not present) ([324b071](https://github.com/battis/oauth2-cli/commit/324b0718f6a86b8d29465802a5add7a21cc49192))
|
|
19
|
+
- clarify subclass groupings and extensibility ([4fec372](https://github.com/battis/oauth2-cli/commit/4fec372019603c4bfada0e26d1813b3c196db536))
|
|
20
|
+
- remove option args for secrets ([eaf55ea](https://github.com/battis/oauth2-cli/commit/eaf55ea7f5f1b2ee1fb3f037b9393a4be95bc19a))
|
|
21
|
+
- rename Token.TokenStorage to less redundant Token.Storage ([149d65a](https://github.com/battis/oauth2-cli/commit/149d65ac218a2c230ed8bca76963e44a5a6ff441))
|
|
22
|
+
- simplify credentials structure ([0e95439](https://github.com/battis/oauth2-cli/commit/0e95439a30f78268ddf7363dc4feeb0b1ff0edba))
|
|
23
|
+
- simplify namespacing of Injection and Scope ([b5db750](https://github.com/battis/oauth2-cli/commit/b5db7503f557a0c2092d327742b1bdd82be0edbb))
|
|
11
24
|
|
|
12
25
|
### Bug Fixes
|
|
13
26
|
|
|
14
|
-
|
|
27
|
+
- improved clarity of errors and causes ([9f1ddce](https://github.com/battis/oauth2-cli/commit/9f1ddcec82c3295e39fc8857784634da072e7570))
|
|
28
|
+
- make oauth2-cli peer to allow patches to propogate ([395dfb0](https://github.com/battis/oauth2-cli/commit/395dfb0b89d504dfc1ca92ac23a1ca5722045dda))
|
|
29
|
+
- pass configured views (and base_url) to client ([af8b15f](https://github.com/battis/oauth2-cli/commit/af8b15f359299746cfe4e08c70b28fbd04eabe37))
|
|
30
|
+
- use configured base_url, not just environment variable ([5f82f9d](https://github.com/battis/oauth2-cli/commit/5f82f9d134353bcd54c661189c0666ccc16a040e))
|
|
15
31
|
|
|
16
|
-
## [0.6.
|
|
32
|
+
## [0.6.3](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.6.2...qui-cli-plugin/0.6.3) (2026-02-16)
|
|
33
|
+
|
|
34
|
+
### Bug Fixes
|
|
17
35
|
|
|
36
|
+
- export Request ([bad6d04](https://github.com/battis/oauth2-cli/commit/bad6d0479c6c8481c3ad56aa7b141a73dc04f729))
|
|
37
|
+
|
|
38
|
+
## [0.6.2](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.6.1...qui-cli-plugin/0.6.2) (2026-02-16)
|
|
18
39
|
|
|
19
40
|
### Bug Fixes
|
|
20
41
|
|
|
21
|
-
|
|
42
|
+
- export ClientOptions for instantiateClient implementation ([23eefbf](https://github.com/battis/oauth2-cli/commit/23eefbfa7a29d59e66463922b731183804c7eb62))
|
|
22
43
|
|
|
23
44
|
## [0.6.1](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.6.0...qui-cli-plugin/0.6.1) (2026-02-16)
|
|
24
45
|
|
|
25
|
-
|
|
26
46
|
### Bug Fixes
|
|
27
47
|
|
|
28
|
-
|
|
48
|
+
- fix accidental regression and re-export unregistered components from OAuth2 ([b5b62bb](https://github.com/battis/oauth2-cli/commit/b5b62bb1735f0e899bf84c83b39e61499ee8da44))
|
|
29
49
|
|
|
30
50
|
## [0.6.0](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.11...qui-cli-plugin/0.6.0) (2026-02-15)
|
|
31
51
|
|
|
32
|
-
|
|
33
52
|
### ⚠ BREAKING CHANGES
|
|
34
53
|
|
|
35
|
-
|
|
36
|
-
|
|
54
|
+
- limit TokenStorage to storing _only_ refresh_tokens
|
|
55
|
+
- rewritten from scratch to be more easily maintainable
|
|
37
56
|
|
|
38
57
|
### Features
|
|
39
58
|
|
|
40
|
-
|
|
41
|
-
|
|
59
|
+
- limit TokenStorage to storing _only_ refresh_tokens ([3de9c96](https://github.com/battis/oauth2-cli/commit/3de9c96510d15eebd51a0be7d8df278614541f95))
|
|
60
|
+
- rewritten from scratch to be more easily maintainable ([0f764d3](https://github.com/battis/oauth2-cli/commit/0f764d333135ae70bd9b3c4433b7c4a2ef757979))
|
|
42
61
|
|
|
43
62
|
## [0.5.11](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.10...qui-cli-plugin/0.5.11) (2026-01-20)
|
|
44
63
|
|
|
45
|
-
|
|
46
64
|
### Bug Fixes
|
|
47
65
|
|
|
48
|
-
|
|
66
|
+
- further token managment debugging output ([fda83da](https://github.com/battis/oauth2-cli/commit/fda83da8794d2f7b7221224619b34148ae0a8fe1))
|
|
49
67
|
|
|
50
68
|
## [0.5.10](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.9...qui-cli-plugin/0.5.10) (2026-01-18)
|
|
51
69
|
|
|
52
|
-
|
|
53
70
|
### Bug Fixes
|
|
54
71
|
|
|
55
|
-
|
|
72
|
+
- include @qui-cli/log as peer ([422eb25](https://github.com/battis/oauth2-cli/commit/422eb252fb778e8e12c9fe2ecc0d889ed8e82a0a))
|
|
56
73
|
|
|
57
74
|
## [0.5.9](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.8...qui-cli-plugin/0.5.9) (2026-01-17)
|
|
58
75
|
|
|
59
|
-
|
|
60
76
|
### Bug Fixes
|
|
61
77
|
|
|
62
|
-
|
|
78
|
+
- debug request/response/JSON from Client rather than plugin ([2ed73e1](https://github.com/battis/oauth2-cli/commit/2ed73e18089ffed4fe75d717d523fc86e2ae7f91))
|
|
63
79
|
|
|
64
80
|
## [0.5.8](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.7...qui-cli-plugin/0.5.8) (2026-01-17)
|
|
65
81
|
|
|
66
|
-
|
|
67
82
|
### Features
|
|
68
83
|
|
|
69
|
-
|
|
84
|
+
- add debugging output for requests ([8066cab](https://github.com/battis/oauth2-cli/commit/8066cabf56521f43ff90af21edabd9c20997e4cb))
|
|
70
85
|
|
|
71
86
|
## [0.5.7](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.6...qui-cli-plugin/0.5.7) (2026-01-17)
|
|
72
87
|
|
|
73
|
-
|
|
74
88
|
### Bug Fixes
|
|
75
89
|
|
|
76
|
-
|
|
90
|
+
- include scope param ([abf53c1](https://github.com/battis/oauth2-cli/commit/abf53c156a226e51c771a405058640a380407813))
|
|
77
91
|
|
|
78
92
|
## [0.5.6](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.5...qui-cli-plugin/0.5.6) (2026-01-15)
|
|
79
93
|
|
|
80
|
-
|
|
81
94
|
### Bug Fixes
|
|
82
95
|
|
|
83
|
-
|
|
96
|
+
- correctly implement template Client type ([ed6ac1c](https://github.com/battis/oauth2-cli/commit/ed6ac1cc63b1c41eceb93311105a1f61890a07c8))
|
|
84
97
|
|
|
85
98
|
## [0.5.5](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.4...qui-cli-plugin/0.5.5) (2026-01-15)
|
|
86
99
|
|
|
87
|
-
|
|
88
100
|
### Bug Fixes
|
|
89
101
|
|
|
90
|
-
|
|
102
|
+
- getClient() should return the type instantiated by instiateClient() ([46a4507](https://github.com/battis/oauth2-cli/commit/46a450707954917e1f55595fb3e35f0a62f475fc))
|
|
91
103
|
|
|
92
104
|
## [0.5.4](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.3...qui-cli-plugin/0.5.4) (2026-01-15)
|
|
93
105
|
|
|
94
|
-
|
|
95
106
|
### Bug Fixes
|
|
96
107
|
|
|
97
|
-
|
|
108
|
+
- export EnvironmentStorage from class as well as module ([01cb4ea](https://github.com/battis/oauth2-cli/commit/01cb4eaf54beebd16870adbb1b2664b4e585b14f))
|
|
98
109
|
|
|
99
110
|
## [0.5.3](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.2...qui-cli-plugin/0.5.3) (2026-01-15)
|
|
100
111
|
|
|
101
|
-
|
|
102
112
|
### Bug Fixes
|
|
103
113
|
|
|
104
|
-
|
|
114
|
+
- instantiateClient() _returns_ the client ([a302fdb](https://github.com/battis/oauth2-cli/commit/a302fdba916f68756b24319d432cc6adce09a1ba))
|
|
105
115
|
|
|
106
116
|
## [0.5.2](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.1...qui-cli-plugin/0.5.2) (2026-01-15)
|
|
107
117
|
|
|
108
|
-
|
|
109
118
|
### Features
|
|
110
119
|
|
|
111
|
-
|
|
112
|
-
|
|
120
|
+
- allow injection of custom oauth2-cli Client implementations via instantiateClient() ([cb1b94f](https://github.com/battis/oauth2-cli/commit/cb1b94fb1891343f00b5793fd6f7db33e6489c14))
|
|
121
|
+
- re-export all of oauth2-cli under the plugin module/class namespaces ([0cbdafc](https://github.com/battis/oauth2-cli/commit/0cbdafc84853f4a904e33640b65e4f0300f00b4a))
|
|
113
122
|
|
|
114
123
|
## [0.5.1](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.5.0...qui-cli-plugin/0.5.1) (2026-01-15)
|
|
115
124
|
|
|
116
|
-
|
|
117
125
|
### Bug Fixes
|
|
118
126
|
|
|
119
|
-
|
|
127
|
+
- implement convenience methods as methods, not properties ([a3f67fe](https://github.com/battis/oauth2-cli/commit/a3f67fecde50ae19d8cf960fe6828623e745126b))
|
|
120
128
|
|
|
121
129
|
## [0.5.0](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.4.3...qui-cli-plugin/0.5.0) (2026-01-14)
|
|
122
130
|
|
|
123
|
-
|
|
124
131
|
### ⚠ BREAKING CHANGES
|
|
125
132
|
|
|
126
|
-
|
|
127
|
-
|
|
133
|
+
- move to currently active Node.js v24
|
|
134
|
+
- consistent parameter names and URL support links
|
|
128
135
|
|
|
129
136
|
### Features
|
|
130
137
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
138
|
+
- add configurable hints for CLI option parameters ([b78ab2b](https://github.com/battis/oauth2-cli/commit/b78ab2b894a7807e2fced4531930c648fe275304))
|
|
139
|
+
- configurable opt names to avoid collision with multiple APIs ([d147e3e](https://github.com/battis/oauth2-cli/commit/d147e3e9dfce1f0f4629d5a0e7f649258b7e9487))
|
|
140
|
+
- consistent parameter names and URL support links ([671c371](https://github.com/battis/oauth2-cli/commit/671c3715c7218ab3b92e84a6da69835c5148462a))
|
|
135
141
|
|
|
136
142
|
### Bug Fixes
|
|
137
143
|
|
|
138
|
-
|
|
139
|
-
|
|
144
|
+
- export pre-registered plugin as an EJS module ([19b232e](https://github.com/battis/oauth2-cli/commit/19b232e5c65de4fd43fa604c8a3c38718d4a7ab9))
|
|
145
|
+
- move to currently active Node.js v24 ([a651159](https://github.com/battis/oauth2-cli/commit/a6511594460c7fbc9f59e8a86c6b2f17bfb3564e))
|
|
140
146
|
|
|
141
147
|
## [0.4.3](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.4.2...qui-cli-plugin/0.4.3) (2026-01-12)
|
|
142
148
|
|
|
143
|
-
|
|
144
149
|
### Bug Fixes
|
|
145
150
|
|
|
146
|
-
|
|
151
|
+
- more generous peer dependencies ([38cbed2](https://github.com/battis/oauth2-cli/commit/38cbed28d1046fafe73c9458f3a2f3a3799afaa9))
|
|
147
152
|
|
|
148
153
|
## [0.4.2](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.4.1...qui-cli-plugin/0.4.2) (2026-01-04)
|
|
149
154
|
|
|
150
|
-
|
|
151
155
|
### Bug Fixes
|
|
152
156
|
|
|
153
|
-
|
|
157
|
+
- typo in fetchJSON name ([a19ba97](https://github.com/battis/oauth2-cli/commit/a19ba9700e32a69f7714a428b3c5c60739a11c16))
|
|
154
158
|
|
|
155
159
|
## [0.4.1](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.4.0...qui-cli-plugin/0.4.1) (2026-01-04)
|
|
156
160
|
|
|
157
161
|
## [0.4.0](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.3.4...qui-cli-plugin/0.4.0) (2026-01-04)
|
|
158
162
|
|
|
159
|
-
|
|
160
163
|
### ⚠ BREAKING CHANGES
|
|
161
164
|
|
|
162
|
-
|
|
165
|
+
- rename for simplicity
|
|
163
166
|
|
|
164
167
|
### Features
|
|
165
168
|
|
|
166
|
-
|
|
169
|
+
- rename for simplicity ([110c415](https://github.com/battis/oauth2-cli/commit/110c415d03ef06c0d777ffea5c4cdd9d04a068eb))
|
|
167
170
|
|
|
168
171
|
## [0.3.4](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.3.3...qui-cli-plugin/0.3.4) (2026-01-03)
|
|
169
172
|
|
|
170
|
-
|
|
171
173
|
### Bug Fixes
|
|
172
174
|
|
|
173
|
-
|
|
175
|
+
- export ConfigurationProposal ([3c558c2](https://github.com/battis/oauth2-cli/commit/3c558c2dda012872747cf74fb76dcdd2740f04c6))
|
|
174
176
|
|
|
175
177
|
## [0.3.3](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.3.2...qui-cli-plugin/0.3.3) (2026-01-03)
|
|
176
178
|
|
|
177
|
-
|
|
178
179
|
### Bug Fixes
|
|
179
180
|
|
|
180
|
-
|
|
181
|
+
- export request param types ([244f588](https://github.com/battis/oauth2-cli/commit/244f5886148721f2be06c5da5b3a659fa17391da))
|
|
181
182
|
|
|
182
183
|
## [0.3.2](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.3.1...qui-cli-plugin/0.3.2) (2026-01-03)
|
|
183
184
|
|
|
184
|
-
|
|
185
185
|
### Bug Fixes
|
|
186
186
|
|
|
187
|
-
|
|
187
|
+
- export Credentials ([a175394](https://github.com/battis/oauth2-cli/commit/a1753947d1119e2810d22275c6fbca27b0b19db5))
|
|
188
188
|
|
|
189
189
|
## [0.3.1](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.3.0...qui-cli-plugin/0.3.1) (2026-01-03)
|
|
190
190
|
|
|
191
|
-
|
|
192
191
|
### Features
|
|
193
192
|
|
|
194
|
-
|
|
193
|
+
- extend @oauth2-cli/qui-cli-plugin by instantiating new versions ([14713c5](https://github.com/battis/oauth2-cli/commit/14713c5d1c884c9a1d62ca34d0e5c364ffd8f19b))
|
|
195
194
|
|
|
196
195
|
## [0.3.0](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.2.7...qui-cli-plugin/0.3.0) (2025-12-24)
|
|
197
196
|
|
|
198
|
-
|
|
199
197
|
### ⚠ BREAKING CHANGES
|
|
200
198
|
|
|
201
|
-
|
|
199
|
+
- resolve 1Password secret references successfully
|
|
202
200
|
|
|
203
201
|
### Bug Fixes
|
|
204
202
|
|
|
205
|
-
|
|
203
|
+
- resolve 1Password secret references successfully ([c4446e1](https://github.com/battis/oauth2-cli/commit/c4446e197a66271dac3ea8d58ff44725cc6be1db))
|
|
206
204
|
|
|
207
205
|
## [0.2.7](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.2.6...qui-cli-plugin/0.2.7) (2025-12-23)
|
|
208
206
|
|
|
209
|
-
|
|
210
207
|
### Bug Fixes
|
|
211
208
|
|
|
212
|
-
|
|
209
|
+
- remove overriding default redirect_uri ([2268428](https://github.com/battis/oauth2-cli/commit/2268428bf461b3b92301dde9767558ba3ab5f2f5))
|
|
213
210
|
|
|
214
211
|
## [0.2.6](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.2.5...qui-cli-plugin/0.2.6) (2025-12-23)
|
|
215
212
|
|
|
216
213
|
## [0.2.5](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.2.4...qui-cli-plugin/0.2.5) (2025-12-23)
|
|
217
214
|
|
|
218
|
-
|
|
219
215
|
### Bug Fixes
|
|
220
216
|
|
|
221
|
-
|
|
217
|
+
- expose headers configuration ([bac6bcb](https://github.com/battis/oauth2-cli/commit/bac6bcbf351155472494b82ad620f6b4bc19a1e6))
|
|
222
218
|
|
|
223
219
|
## [0.2.4](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.2.3...qui-cli-plugin/0.2.4) (2025-12-23)
|
|
224
220
|
|
|
225
|
-
|
|
226
221
|
### Bug Fixes
|
|
227
222
|
|
|
228
|
-
|
|
223
|
+
- more aggressively fix typing for partial configuration ([97f7e0c](https://github.com/battis/oauth2-cli/commit/97f7e0c034202fb26654677b5a3a836ff989b116))
|
|
229
224
|
|
|
230
225
|
## [0.2.3](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.2.2...qui-cli-plugin/0.2.3) (2025-12-23)
|
|
231
226
|
|
|
232
|
-
|
|
233
227
|
### Bug Fixes
|
|
234
228
|
|
|
235
|
-
|
|
229
|
+
- allow partial override of environment variable names and suppressed opt args ([c8a118b](https://github.com/battis/oauth2-cli/commit/c8a118ba6dae62f29549ef272448a4a6adea553c))
|
|
236
230
|
|
|
237
231
|
## [0.2.2](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.2.1...qui-cli-plugin/0.2.2) (2025-12-23)
|
|
238
232
|
|
|
239
|
-
|
|
240
233
|
### Features
|
|
241
234
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
235
|
+
- add optional typing to requestJSON() ([5f7cf39](https://github.com/battis/oauth2-cli/commit/5f7cf39d8dc0ca86cbe3df7e8493d3273e630573))
|
|
236
|
+
- configurable options and usage ([aadbc4b](https://github.com/battis/oauth2-cli/commit/aadbc4bffc9eda241763ecd9f134963517250e5f))
|
|
237
|
+
- default suppress token path storage ([9df7f4f](https://github.com/battis/oauth2-cli/commit/9df7f4f6312713e2086366350f0c546a975b2c31))
|
|
238
|
+
- provide EnvironmentStorage implementation ([55fc676](https://github.com/battis/oauth2-cli/commit/55fc676716fa1e4830a6a890b6d0bf5cecf0f57f))
|
|
247
239
|
|
|
248
240
|
### Bug Fixes
|
|
249
241
|
|
|
250
|
-
|
|
242
|
+
- update to current [@qui-cli](https://github.com/qui-cli) versions ([d54c521](https://github.com/battis/oauth2-cli/commit/d54c5210e55586ed688afa42840ec2b9e1cffeb0))
|
|
251
243
|
|
|
252
244
|
## [0.2.1](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.2.0...qui-cli-plugin/0.2.1) (2025-09-11)
|
|
253
245
|
|
|
254
|
-
|
|
255
246
|
### Bug Fixes
|
|
256
247
|
|
|
257
|
-
|
|
248
|
+
- update dependencies to address transient openid-client config error ([f0ca9a8](https://github.com/battis/oauth2-cli/commit/f0ca9a8d2bb4551b80a49e48aa43df5ba66a5a9b))
|
|
258
249
|
|
|
259
250
|
## [0.2.0](https://github.com/battis/oauth2-cli/compare/qui-cli-plugin/0.1.1...qui-cli-plugin/0.2.0) (2025-03-09)
|
|
260
251
|
|
package/dist/Export.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ClientOptions, Credentials, Injection, Scope, WebServer } from 'oauth2-cli';
|
package/dist/Export.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Scope, WebServer } from 'oauth2-cli';
|
package/dist/Extend.d.ts
ADDED
package/dist/Extend.js
ADDED
package/dist/OAuth2.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export declare const
|
|
1
|
+
export declare const configure: (proposal?: import("./OAuth2Plugin.js").Configuration) => void;
|
|
2
|
+
export declare const options: () => import("@qui-cli/plugin").Options;
|
|
3
|
+
export declare const init: () => import("@qui-cli/plugin").Options;
|
|
4
|
+
export declare const client: () => import("./Client.js").Client;
|
|
5
|
+
export declare const request: (url: import("requestish/dist/URL.js").ish, method?: string | undefined, body?: import("openid-client").FetchBody, headers?: import("requestish/dist/Headers.js").ish | undefined, dPoPOptions?: import("openid-client").DPoPOptions | undefined) => Promise<Response>;
|
|
6
|
+
export declare const requestJSON: <T extends import("@battis/typescript-tricks").JSONValue>(url: import("requestish/dist/URL.js").ish, method?: string | undefined, body?: import("openid-client").FetchBody, headers?: import("requestish/dist/Headers.js").ish | undefined, dPoPOptions?: import("openid-client").DPoPOptions | undefined) => Promise<T>;
|
|
7
|
+
export declare const fetch: (input: import("requestish/dist/URL.js").ish, init?: RequestInit | undefined, dPoPOptions?: import("openid-client").DPoPOptions | undefined) => Promise<Response>;
|
|
8
|
+
export declare const fetchJSON: <T extends import("@battis/typescript-tricks").JSONValue>(input: import("requestish/dist/URL.js").ish, init?: RequestInit | undefined, dPoPOptions?: import("openid-client").DPoPOptions | undefined) => Promise<T>;
|
package/dist/OAuth2.js
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import { register } from '@qui-cli/plugin';
|
|
1
2
|
import { OAuth2Plugin } from './OAuth2Plugin.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export const
|
|
3
|
+
const plugin = new OAuth2Plugin();
|
|
4
|
+
// @qui-cli/plugin convenience methods
|
|
5
|
+
export const configure = plugin.configure.bind(plugin);
|
|
6
|
+
export const options = plugin.options.bind(plugin);
|
|
7
|
+
export const init = plugin.options.bind(plugin);
|
|
8
|
+
// oauth2-cli convenience methods
|
|
9
|
+
export const client = () => plugin.client;
|
|
10
|
+
export const request = plugin.request.bind(plugin);
|
|
11
|
+
export const requestJSON = plugin.requestJSON.bind(plugin);
|
|
12
|
+
export const fetch = plugin.fetch.bind(plugin);
|
|
13
|
+
export const fetchJSON = plugin.fetchJSON.bind(plugin);
|
|
14
|
+
await register(plugin);
|
package/dist/OAuth2Plugin.d.ts
CHANGED
|
@@ -1,48 +1,60 @@
|
|
|
1
|
-
import { URLString } from '@battis/descriptive-types';
|
|
1
|
+
import { PathString, URLString } from '@battis/descriptive-types';
|
|
2
2
|
import { JSONValue } from '@battis/typescript-tricks';
|
|
3
3
|
import * as Plugin from '@qui-cli/plugin';
|
|
4
4
|
import * as OAuth2CLI from 'oauth2-cli';
|
|
5
|
+
import * as requestish from 'requestish';
|
|
5
6
|
import { Client } from './Client.js';
|
|
6
|
-
type CredentialKey = 'issuer' | 'client_id' | 'client_secret' | 'redirect_uri' | 'authorization_endpoint' | 'token_endpoint' | 'scope';
|
|
7
|
+
type CredentialKey = 'issuer' | 'client_id' | 'client_secret' | 'redirect_uri' | 'authorization_endpoint' | 'token_endpoint' | 'scope' | 'base_url';
|
|
7
8
|
type EnvironmentVars = Record<CredentialKey, string>;
|
|
8
9
|
type SupportUrls = Record<CredentialKey, URLString>;
|
|
9
10
|
type Hints = Record<CredentialKey, string>;
|
|
10
|
-
type
|
|
11
|
-
type OptionSuppression = Record<CredentialKey, boolean>;
|
|
11
|
+
type EnvVarSuppression = Record<CredentialKey, boolean>;
|
|
12
12
|
type Usage = {
|
|
13
13
|
heading: string;
|
|
14
14
|
text?: string[];
|
|
15
15
|
};
|
|
16
16
|
export type Configuration = Plugin.Configuration & {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
/** OAuth 2.0/OpenID Connect credential set */
|
|
18
|
+
credentials?: Partial<OAuth2CLI.Credentials>;
|
|
19
|
+
/** Base URL for all non-absolute requests */
|
|
20
|
+
base_url?: requestish.URL.ish;
|
|
21
|
+
/** Request components to inject into server requests */
|
|
22
|
+
inject?: OAuth2CLI.Injection;
|
|
23
|
+
/** Refresh token storage service */
|
|
24
|
+
storage?: OAuth2CLI.Token.Storage;
|
|
25
|
+
/** CLI usage section header and text */
|
|
20
26
|
man?: Usage;
|
|
21
|
-
|
|
27
|
+
/** Reference URLs for particular credential values */
|
|
22
28
|
url?: Partial<SupportUrls>;
|
|
29
|
+
/** Hint values for particular credential values */
|
|
23
30
|
hint?: Partial<Hints>;
|
|
31
|
+
/** Actual environment variable names for each credential value */
|
|
24
32
|
env?: Partial<EnvironmentVars>;
|
|
25
|
-
|
|
33
|
+
/** Should a particular credential value _not_ be loaded from the environment? */
|
|
34
|
+
suppress?: Partial<EnvVarSuppression>;
|
|
35
|
+
/** Optional absolute path to EJS view templates directory */
|
|
36
|
+
views?: PathString;
|
|
26
37
|
};
|
|
27
38
|
export declare class OAuth2Plugin<C extends Client = Client> {
|
|
28
39
|
readonly name: string;
|
|
29
40
|
[key: string]: unknown;
|
|
30
41
|
private static names;
|
|
31
|
-
private static
|
|
42
|
+
private static registeredPorts;
|
|
32
43
|
constructor(name?: string);
|
|
33
44
|
private credentials?;
|
|
45
|
+
private base_url?;
|
|
34
46
|
private man;
|
|
35
|
-
private
|
|
36
|
-
private url;
|
|
47
|
+
private url?;
|
|
37
48
|
private hint;
|
|
38
49
|
private env;
|
|
39
|
-
private suppress
|
|
40
|
-
private inject
|
|
50
|
+
private suppress?;
|
|
51
|
+
private inject?;
|
|
52
|
+
private views?;
|
|
41
53
|
private storage?;
|
|
42
|
-
private _client
|
|
54
|
+
private _client?;
|
|
43
55
|
configure(proposal?: Configuration): void;
|
|
44
56
|
options(): Plugin.Options;
|
|
45
|
-
init(
|
|
57
|
+
init(_: Plugin.ExpectedArguments<typeof this.options>): Promise<void>;
|
|
46
58
|
protected instantiateClient(options: OAuth2CLI.ClientOptions): C;
|
|
47
59
|
get client(): C;
|
|
48
60
|
request(...args: Parameters<OAuth2CLI.Client['request']>): Promise<Response>;
|
package/dist/OAuth2Plugin.js
CHANGED
|
@@ -7,7 +7,7 @@ import * as requestish from 'requestish';
|
|
|
7
7
|
export class OAuth2Plugin {
|
|
8
8
|
name;
|
|
9
9
|
static names = [];
|
|
10
|
-
static
|
|
10
|
+
static registeredPorts = {};
|
|
11
11
|
constructor(name = '@oauth2-cli/qui-cli') {
|
|
12
12
|
this.name = name;
|
|
13
13
|
if (OAuth2Plugin.names.includes(name)) {
|
|
@@ -15,17 +15,9 @@ export class OAuth2Plugin {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
credentials;
|
|
18
|
+
base_url;
|
|
18
19
|
man = {
|
|
19
|
-
heading: 'OAuth 2.0 client options'
|
|
20
|
-
};
|
|
21
|
-
opt = {
|
|
22
|
-
issuer: 'issuer',
|
|
23
|
-
client_id: 'clientId',
|
|
24
|
-
client_secret: 'clientSecret',
|
|
25
|
-
scope: 'scope',
|
|
26
|
-
redirect_uri: 'redirectUri',
|
|
27
|
-
authorization_endpoint: 'authorizationEndpoint',
|
|
28
|
-
token_endpoint: 'tokenEndpoint'
|
|
20
|
+
heading: 'OAuth 2.0 / Open ID Connect client options'
|
|
29
21
|
};
|
|
30
22
|
url = undefined;
|
|
31
23
|
hint = {
|
|
@@ -35,13 +27,17 @@ export class OAuth2Plugin {
|
|
|
35
27
|
issuer: 'ISSUER',
|
|
36
28
|
client_id: 'CLIENT_ID',
|
|
37
29
|
client_secret: 'CLIENT_SECRET',
|
|
38
|
-
scope: 'SCOPE',
|
|
39
30
|
redirect_uri: 'REDIRECT_URI',
|
|
40
31
|
authorization_endpoint: 'AUTHORIZATION_ENDPOINT',
|
|
41
|
-
token_endpoint: 'TOKEN_ENDPOINT'
|
|
32
|
+
token_endpoint: 'TOKEN_ENDPOINT',
|
|
33
|
+
base_url: 'BASE_URL',
|
|
34
|
+
scope: 'SCOPE'
|
|
35
|
+
};
|
|
36
|
+
suppress = {
|
|
37
|
+
scope: true
|
|
42
38
|
};
|
|
43
|
-
suppress = undefined;
|
|
44
39
|
inject = undefined;
|
|
40
|
+
views = undefined;
|
|
45
41
|
storage = undefined;
|
|
46
42
|
_client = undefined;
|
|
47
43
|
configure(proposal = {}) {
|
|
@@ -59,10 +55,10 @@ export class OAuth2Plugin {
|
|
|
59
55
|
return c;
|
|
60
56
|
}
|
|
61
57
|
this.credentials = hydrate(proposal.credentials, this.credentials);
|
|
58
|
+
this.base_url = Plugin.hydrate(proposal.base_url, this.base_url);
|
|
62
59
|
this.storage = Plugin.hydrate(proposal.storage, this.storage);
|
|
63
60
|
this.inject = hydrate(proposal.inject, this.inject);
|
|
64
61
|
this.man = Plugin.hydrate(proposal.man, this.man);
|
|
65
|
-
this.opt = hydrate(proposal.opt, this.opt);
|
|
66
62
|
this.url = hydrate(proposal.url, this.url);
|
|
67
63
|
this.hint = hydrate(proposal.hint, this.hint);
|
|
68
64
|
this.env = hydrate(proposal.env, this.env);
|
|
@@ -71,7 +67,7 @@ export class OAuth2Plugin {
|
|
|
71
67
|
const url = requestish.URL.from(this.credentials.redirect_uri);
|
|
72
68
|
if (url.hostname !== 'localhost' &&
|
|
73
69
|
!/^\/https?\/localhost(:\d+)?\//.test(url.pathname)) {
|
|
74
|
-
Log.warning(`The ${Colors.
|
|
70
|
+
Log.warning(`The ${Colors.varName(this.env.redirect_uri)} value ${Colors.url(this.credentials.redirect_uri)} may not work: it ${Colors.keyword('must')} redirect to ${Colors.url('localhost')}`);
|
|
75
71
|
}
|
|
76
72
|
if (url.protocol !== 'http:' &&
|
|
77
73
|
!/^\/http\/localhost(:\d+)?\//.test(url.pathname)) {
|
|
@@ -79,10 +75,10 @@ export class OAuth2Plugin {
|
|
|
79
75
|
`server listening for the redirect is not automatically ` +
|
|
80
76
|
`provisioned with an SSL certificate`);
|
|
81
77
|
}
|
|
82
|
-
if (OAuth2Plugin.
|
|
83
|
-
OAuth2Plugin.
|
|
78
|
+
if (OAuth2Plugin.registeredPorts[url.port] &&
|
|
79
|
+
OAuth2Plugin.registeredPorts[url.port] !== this.name) {
|
|
84
80
|
Log.warning(`The port ${Colors.value(url.port)} has already been registered to another instance of this plugin ` +
|
|
85
|
-
`named ${Colors.value(OAuth2Plugin.
|
|
81
|
+
`named ${Colors.value(OAuth2Plugin.registeredPorts[url.port])}. This will likely cause a failure if both instances of the ` +
|
|
86
82
|
`plugin are listening for redirects at relatively proximate ` +
|
|
87
83
|
`moments in time.`);
|
|
88
84
|
}
|
|
@@ -90,65 +86,67 @@ export class OAuth2Plugin {
|
|
|
90
86
|
}
|
|
91
87
|
options() {
|
|
92
88
|
const descriptions = {
|
|
93
|
-
issuer: `OpenID issuer URL
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
`
|
|
103
|
-
|
|
104
|
-
|
|
89
|
+
issuer: `The OpenID ${Colors.keyword('issuer')} URL is set from the ` +
|
|
90
|
+
`environment variable ${Colors.varName(this.env.issuer)}, if present. ` +
|
|
91
|
+
`The ${Colors.varName(this.env.issuer)} is also used as a base URL for ` +
|
|
92
|
+
`any relative URL in API requests, unless ` +
|
|
93
|
+
`${Colors.varName(this.env.base_url)} is defined.`,
|
|
94
|
+
client_id: `The OAuth 2.0 ${Colors.keyword('client_id')} is set from the ` +
|
|
95
|
+
`environment variable ${Colors.varName(this.env.client_id)}, if ` +
|
|
96
|
+
`present.`,
|
|
97
|
+
client_secret: `The OAuth 2.0 ${Colors.keyword('client_secret')} is set from the ` +
|
|
98
|
+
`environment variable ${Colors.varName(this.env.client_secret)}, if ` +
|
|
99
|
+
`present.`,
|
|
100
|
+
scope: `The OAuth 2.0 ${Colors.keyword('scope')} is set from the environment ` +
|
|
101
|
+
`variable ${Colors.varName(this.env.scope)}, if present.`,
|
|
102
|
+
redirect_uri: `The OAuth 2.0 ${Colors.keyword('redirect_uri')}, which must at least ` +
|
|
103
|
+
`redirect to ${Colors.url('localhost')}, is set from the environment ` +
|
|
104
|
+
`variable ${Colors.varName(this.env.redirect_uri)}, if present.`,
|
|
105
|
+
authorization_endpoint: `The OAuth 2.0 ${Colors.keyword('authorization_endpoint')} is set ` +
|
|
106
|
+
`from the environment variable ` +
|
|
105
107
|
`${Colors.varName(this.env.authorization_endpoint)}, if present.`,
|
|
106
|
-
token_endpoint: `OAuth 2.0
|
|
107
|
-
|
|
108
|
-
`
|
|
109
|
-
`${Colors.varName(this.env.
|
|
108
|
+
token_endpoint: `The OAuth 2.0 ${Colors.keyword('token_endpoint')} is set from the ` +
|
|
109
|
+
`environment variable ${Colors.varName(this.env.token_endpoint)}, if ` +
|
|
110
|
+
`present and will fall back to ` +
|
|
111
|
+
`${Colors.varName(this.env.authorization_endpoint)} if not provided.`,
|
|
112
|
+
base_url: `The base URL to use for API requests is set from the ` +
|
|
113
|
+
`environment variable ${Colors.varName(this.env.base_url)}, if ` +
|
|
114
|
+
`present. If ${Colors.varName(this.env.base_url)} is not defined, ` +
|
|
115
|
+
`${Colors.varName(this.env.issuer)} will be used as a base URL for ` +
|
|
116
|
+
`relative URL requests.`
|
|
110
117
|
};
|
|
111
|
-
const opt = {};
|
|
112
|
-
for (const paramName of Object.keys(descriptions)) {
|
|
113
|
-
if (!this.suppress || !this.suppress[paramName]) {
|
|
114
|
-
const option = { description: descriptions[paramName] };
|
|
115
|
-
if (this.url && this.url[paramName]) {
|
|
116
|
-
option.description = `${option.description} See ${Colors.url(this.url[paramName])} for more information.`;
|
|
117
|
-
}
|
|
118
|
-
if (this.hint[paramName]) {
|
|
119
|
-
option.hint = this.hint[paramName];
|
|
120
|
-
}
|
|
121
|
-
switch (paramName) {
|
|
122
|
-
case 'client_id':
|
|
123
|
-
case 'client_secret':
|
|
124
|
-
option.secret = true;
|
|
125
|
-
}
|
|
126
|
-
const param = this.credentials
|
|
127
|
-
? this.credentials[paramName]
|
|
128
|
-
: undefined;
|
|
129
|
-
if (typeof param === 'string') {
|
|
130
|
-
option.default = param;
|
|
131
|
-
}
|
|
132
|
-
opt[this.opt[paramName]] = option;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
118
|
return {
|
|
136
119
|
man: [
|
|
137
120
|
{ level: 1, text: this.man.heading },
|
|
138
|
-
...(this.man.text || []).map((t) => ({ text: t }))
|
|
139
|
-
|
|
140
|
-
|
|
121
|
+
...(this.man.text || []).map((t) => ({ text: t })),
|
|
122
|
+
...Object.keys(descriptions)
|
|
123
|
+
.filter((key) => !this.suppress || !this.suppress[key])
|
|
124
|
+
.map((key) => ({
|
|
125
|
+
text: descriptions[key] +
|
|
126
|
+
(this.hint[key] ? ` (e.g. ${this.hint[key]})` : '') +
|
|
127
|
+
(this.url && this.url[key]
|
|
128
|
+
? ` See ${Colors.url(this.url[key])} for more information.`
|
|
129
|
+
: '')
|
|
130
|
+
}))
|
|
131
|
+
]
|
|
141
132
|
};
|
|
142
133
|
}
|
|
143
|
-
async init(
|
|
134
|
+
async init(_) {
|
|
144
135
|
const credentials = {};
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
136
|
+
const base_url = this.base_url ||
|
|
137
|
+
(await Env.get({
|
|
138
|
+
key: this.env.base_url
|
|
139
|
+
}));
|
|
140
|
+
for (const key of Object.keys(this.env)) {
|
|
141
|
+
if (key !== 'base_url') {
|
|
142
|
+
// FIXME better typing
|
|
143
|
+
// @ts-expect-error 2322
|
|
144
|
+
credentials[key] =
|
|
148
145
|
(this.credentials ? this.credentials[key] : undefined) ||
|
|
149
|
-
|
|
146
|
+
(await Env.get({ key: this.env[key] }));
|
|
147
|
+
}
|
|
150
148
|
}
|
|
151
|
-
this.configure({ credentials });
|
|
149
|
+
this.configure({ credentials, base_url });
|
|
152
150
|
}
|
|
153
151
|
instantiateClient(options) {
|
|
154
152
|
return new OAuth2CLI.Client(options);
|
|
@@ -156,29 +154,31 @@ export class OAuth2Plugin {
|
|
|
156
154
|
get client() {
|
|
157
155
|
if (!this._client) {
|
|
158
156
|
if (!this.credentials?.client_id) {
|
|
159
|
-
throw new Error(`A ${Colors.
|
|
157
|
+
throw new Error(`A ${Colors.varName(this.env.client_id)} ${Colors.keyword('must')} be configured.`);
|
|
160
158
|
}
|
|
161
159
|
if (!this.credentials?.client_secret) {
|
|
162
|
-
throw new Error(`A ${Colors.
|
|
160
|
+
throw new Error(`A ${Colors.varName(this.env.client_secret)} ${Colors.keyword('must')} be configured.`);
|
|
163
161
|
}
|
|
164
162
|
if (!this.credentials?.redirect_uri) {
|
|
165
|
-
throw new Error(`A ${Colors.
|
|
163
|
+
throw new Error(`A ${Colors.varName(this.env.redirect_uri)} ${Colors.keyword('must')} be configured.`);
|
|
166
164
|
}
|
|
167
165
|
if (!this.credentials?.issuer) {
|
|
168
166
|
if (!this.credentials?.authorization_endpoint) {
|
|
169
|
-
throw new Error(`Either an ${Colors.
|
|
170
|
-
`${Colors.
|
|
167
|
+
throw new Error(`Either an ${Colors.varName(this.env.issuer)} or ` +
|
|
168
|
+
`${Colors.varName(this.env.authorization_endpoint)} ` +
|
|
171
169
|
`${Colors.keyword('must')} be configured.`);
|
|
172
170
|
}
|
|
173
171
|
if (!this.credentials?.token_endpoint) {
|
|
174
|
-
throw new Error(`Either an ${Colors.
|
|
175
|
-
`${Colors.
|
|
172
|
+
throw new Error(`Either an ${Colors.varName(this.env.issuer)} or ` +
|
|
173
|
+
`${Colors.varName(this.env.token_endpoint)} ` +
|
|
176
174
|
`${Colors.keyword('must')} be configured.`);
|
|
177
175
|
}
|
|
178
176
|
}
|
|
179
177
|
this._client = this.instantiateClient({
|
|
180
178
|
credentials: this.credentials,
|
|
179
|
+
base_url: this.base_url,
|
|
181
180
|
inject: this.inject,
|
|
181
|
+
views: this.views,
|
|
182
182
|
storage: this.storage
|
|
183
183
|
});
|
|
184
184
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Token } from 'oauth2-cli';
|
|
2
|
-
export declare class EnvironmentStorage implements Token.
|
|
2
|
+
export declare class EnvironmentStorage implements Token.Storage {
|
|
3
3
|
private tokenEnvVar;
|
|
4
4
|
constructor(tokenEnvVar?: string);
|
|
5
5
|
load(): Promise<string | undefined>;
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export * from './
|
|
4
|
-
await register(plugin);
|
|
1
|
+
export * as OAuth2 from './OAuth2.js';
|
|
2
|
+
export * from './Export.js';
|
|
3
|
+
export * from './Extend.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oauth2-cli/qui-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "@qui-cli/plugin wrapper for oauth2-cli",
|
|
5
5
|
"homepage": "https://github.com/battis/oauth2-cli/tree/main/packages/qui-cli#readme",
|
|
6
6
|
"repository": {
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
"types": "./dist/index.d.ts",
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@qui-cli/colors": "^3.2.3",
|
|
20
|
-
"oauth2-cli": "0.7.2",
|
|
21
20
|
"requestish": "0.1.1"
|
|
22
21
|
},
|
|
23
22
|
"devDependencies": {
|
|
@@ -31,12 +30,14 @@
|
|
|
31
30
|
"del-cli": "^7.0.0",
|
|
32
31
|
"npm-run-all": "^4.1.5",
|
|
33
32
|
"openid-client": "^6.8.2",
|
|
34
|
-
"typescript": "^5.9.3"
|
|
33
|
+
"typescript": "^5.9.3",
|
|
34
|
+
"oauth2-cli": "0.8.0"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"@qui-cli/env-1password": ">=1",
|
|
38
38
|
"@qui-cli/log": ">=3",
|
|
39
|
-
"@qui-cli/plugin": ">=3"
|
|
39
|
+
"@qui-cli/plugin": ">=3",
|
|
40
|
+
"oauth2-cli": "0.8.x"
|
|
40
41
|
},
|
|
41
42
|
"scripts": {
|
|
42
43
|
"clean": "del ./dist",
|