@quonfig/cli 0.0.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 (142) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +707 -0
  3. package/bin/dev.cmd +3 -0
  4. package/bin/dev.js +9 -0
  5. package/bin/run.cmd +3 -0
  6. package/bin/run.js +8 -0
  7. package/dist/api/get-environments.d.ts +10 -0
  8. package/dist/api/get-environments.js +11 -0
  9. package/dist/codegen/code-generators/base-generator.d.ts +11 -0
  10. package/dist/codegen/code-generators/base-generator.js +8 -0
  11. package/dist/codegen/code-generators/base-typescript-generator.d.ts +17 -0
  12. package/dist/codegen/code-generators/base-typescript-generator.js +35 -0
  13. package/dist/codegen/code-generators/node-typescript-generator.d.ts +8 -0
  14. package/dist/codegen/code-generators/node-typescript-generator.js +96 -0
  15. package/dist/codegen/code-generators/react-typescript-generator.d.ts +11 -0
  16. package/dist/codegen/code-generators/react-typescript-generator.js +116 -0
  17. package/dist/codegen/config-downloader.d.ts +7 -0
  18. package/dist/codegen/config-downloader.js +26 -0
  19. package/dist/codegen/json-schema-to-zod.d.ts +3 -0
  20. package/dist/codegen/json-schema-to-zod.js +170 -0
  21. package/dist/codegen/language-mappers/json-to-zod-mapper.d.ts +4 -0
  22. package/dist/codegen/language-mappers/json-to-zod-mapper.js +55 -0
  23. package/dist/codegen/language-mappers/zod-base-mapper.d.ts +35 -0
  24. package/dist/codegen/language-mappers/zod-base-mapper.js +111 -0
  25. package/dist/codegen/language-mappers/zod-to-string-mapper.d.ts +25 -0
  26. package/dist/codegen/language-mappers/zod-to-string-mapper.js +87 -0
  27. package/dist/codegen/language-mappers/zod-to-typescript-mapper.d.ts +35 -0
  28. package/dist/codegen/language-mappers/zod-to-typescript-mapper.js +133 -0
  29. package/dist/codegen/language-mappers/zod-to-typescript-return-value-mapper.d.ts +36 -0
  30. package/dist/codegen/language-mappers/zod-to-typescript-return-value-mapper.js +150 -0
  31. package/dist/codegen/mustache-extractor.d.ts +6 -0
  32. package/dist/codegen/mustache-extractor.js +83 -0
  33. package/dist/codegen/schema-evaluator.d.ts +37 -0
  34. package/dist/codegen/schema-evaluator.js +283 -0
  35. package/dist/codegen/schema-extractor.d.ts +24 -0
  36. package/dist/codegen/schema-extractor.js +265 -0
  37. package/dist/codegen/types.d.ts +44 -0
  38. package/dist/codegen/types.js +5 -0
  39. package/dist/codegen/zod-introspection.d.ts +85 -0
  40. package/dist/codegen/zod-introspection.js +205 -0
  41. package/dist/commands/create.d.ts +19 -0
  42. package/dist/commands/create.js +175 -0
  43. package/dist/commands/download.d.ts +13 -0
  44. package/dist/commands/download.js +63 -0
  45. package/dist/commands/generate-new-hex-key.d.ts +7 -0
  46. package/dist/commands/generate-new-hex-key.js +10 -0
  47. package/dist/commands/generate.d.ts +16 -0
  48. package/dist/commands/generate.js +220 -0
  49. package/dist/commands/get.d.ts +13 -0
  50. package/dist/commands/get.js +141 -0
  51. package/dist/commands/info.d.ts +21 -0
  52. package/dist/commands/info.js +464 -0
  53. package/dist/commands/interactive.d.ts +5 -0
  54. package/dist/commands/interactive.js +8 -0
  55. package/dist/commands/list.d.ts +13 -0
  56. package/dist/commands/list.js +61 -0
  57. package/dist/commands/login.d.ts +10 -0
  58. package/dist/commands/login.js +124 -0
  59. package/dist/commands/logout.d.ts +7 -0
  60. package/dist/commands/logout.js +12 -0
  61. package/dist/commands/mcp.d.ts +13 -0
  62. package/dist/commands/mcp.js +145 -0
  63. package/dist/commands/override.d.ts +17 -0
  64. package/dist/commands/override.js +170 -0
  65. package/dist/commands/profile.d.ts +7 -0
  66. package/dist/commands/profile.js +47 -0
  67. package/dist/commands/schema.d.ts +21 -0
  68. package/dist/commands/schema.js +168 -0
  69. package/dist/commands/serve.d.ts +13 -0
  70. package/dist/commands/serve.js +99 -0
  71. package/dist/commands/set-default.d.ts +20 -0
  72. package/dist/commands/set-default.js +273 -0
  73. package/dist/commands/verify.d.ts +12 -0
  74. package/dist/commands/verify.js +48 -0
  75. package/dist/commands/whoami.d.ts +7 -0
  76. package/dist/commands/whoami.js +52 -0
  77. package/dist/commands/workspace.d.ts +7 -0
  78. package/dist/commands/workspace.js +38 -0
  79. package/dist/constants.d.ts +2 -0
  80. package/dist/constants.js +2 -0
  81. package/dist/help.d.ts +4 -0
  82. package/dist/help.js +10 -0
  83. package/dist/index.d.ts +40 -0
  84. package/dist/index.js +112 -0
  85. package/dist/interactive-prompt.d.ts +2 -0
  86. package/dist/interactive-prompt.js +162 -0
  87. package/dist/quonfig.d.ts +15 -0
  88. package/dist/quonfig.js +75 -0
  89. package/dist/result.d.ts +35 -0
  90. package/dist/result.js +9 -0
  91. package/dist/services/mcp.d.ts +15 -0
  92. package/dist/services/mcp.js +59 -0
  93. package/dist/ui/get-confirmation.d.ts +10 -0
  94. package/dist/ui/get-confirmation.js +4 -0
  95. package/dist/ui/get-environment.d.ts +11 -0
  96. package/dist/ui/get-environment.js +42 -0
  97. package/dist/ui/get-key.d.ts +27 -0
  98. package/dist/ui/get-key.js +15 -0
  99. package/dist/ui/get-string.d.ts +5 -0
  100. package/dist/ui/get-string.js +8 -0
  101. package/dist/ui/get-value.d.ts +18 -0
  102. package/dist/ui/get-value.js +46 -0
  103. package/dist/util/autocomplete.d.ts +6 -0
  104. package/dist/util/autocomplete.js +25 -0
  105. package/dist/util/coerce.d.ts +7 -0
  106. package/dist/util/coerce.js +62 -0
  107. package/dist/util/color.d.ts +3 -0
  108. package/dist/util/color.js +4 -0
  109. package/dist/util/config-value-dto.d.ts +16 -0
  110. package/dist/util/config-value-dto.js +82 -0
  111. package/dist/util/context.d.ts +18 -0
  112. package/dist/util/context.js +10 -0
  113. package/dist/util/domain-urls.d.ts +3 -0
  114. package/dist/util/domain-urls.js +18 -0
  115. package/dist/util/encryption.d.ts +20 -0
  116. package/dist/util/encryption.js +153 -0
  117. package/dist/util/file-manager.d.ts +12 -0
  118. package/dist/util/file-manager.js +16 -0
  119. package/dist/util/get-client.d.ts +7 -0
  120. package/dist/util/get-client.js +127 -0
  121. package/dist/util/is-interactive.d.ts +5 -0
  122. package/dist/util/is-interactive.js +7 -0
  123. package/dist/util/json-maybe.d.ts +3 -0
  124. package/dist/util/json-maybe.js +14 -0
  125. package/dist/util/name-arg.d.ts +4 -0
  126. package/dist/util/name-arg.js +3 -0
  127. package/dist/util/oauth-client.d.ts +30 -0
  128. package/dist/util/oauth-client.js +99 -0
  129. package/dist/util/secret-flags.d.ts +13 -0
  130. package/dist/util/secret-flags.js +13 -0
  131. package/dist/util/token-storage.d.ts +25 -0
  132. package/dist/util/token-storage.js +90 -0
  133. package/dist/validations/value.d.ts +4 -0
  134. package/dist/validations/value.js +11 -0
  135. package/dist/verify/standalone.d.ts +14 -0
  136. package/dist/verify/standalone.js +133 -0
  137. package/dist/verify/validate.d.ts +43 -0
  138. package/dist/verify/validate.js +756 -0
  139. package/dist/version.d.ts +2 -0
  140. package/dist/version.js +2 -0
  141. package/oclif.manifest.json +1429 -0
  142. package/package.json +104 -0
package/README.md ADDED
@@ -0,0 +1,707 @@
1
+ # Quonfig CLI
2
+
3
+ <!-- toc -->
4
+ * [Quonfig CLI](#quonfig-cli)
5
+ * [Usage](#usage)
6
+ * [Commands](#commands)
7
+ <!-- tocstop -->
8
+
9
+ # Usage
10
+
11
+ <!-- usage -->
12
+ ```sh-session
13
+ $ npm install -g @quonfig/cli
14
+ $ qfg COMMAND
15
+ running command...
16
+ $ qfg (--version)
17
+ @quonfig/cli/0.0.1 darwin-arm64 node-v24.4.1
18
+ $ qfg --help [COMMAND]
19
+ USAGE
20
+ $ qfg COMMAND
21
+ ...
22
+ ```
23
+ <!-- usagestop -->
24
+
25
+ # Commands
26
+
27
+ <!-- commands -->
28
+ * [`qfg create NAME`](#qfg-create-name)
29
+ * [`qfg download`](#qfg-download)
30
+ * [`qfg generate`](#qfg-generate)
31
+ * [`qfg generate-new-hex-key`](#qfg-generate-new-hex-key)
32
+ * [`qfg get [NAME]`](#qfg-get-name)
33
+ * [`qfg info [NAME]`](#qfg-info-name)
34
+ * [`qfg interactive`](#qfg-interactive)
35
+ * [`qfg list`](#qfg-list)
36
+ * [`qfg login`](#qfg-login)
37
+ * [`qfg logout`](#qfg-logout)
38
+ * [`qfg mcp`](#qfg-mcp)
39
+ * [`qfg override [NAME]`](#qfg-override-name)
40
+ * [`qfg profile`](#qfg-profile)
41
+ * [`qfg schema NAME`](#qfg-schema-name)
42
+ * [`qfg serve DATA-FILE`](#qfg-serve-data-file)
43
+ * [`qfg set-default [NAME]`](#qfg-set-default-name)
44
+ * [`qfg verify [PATH]`](#qfg-verify-path)
45
+ * [`qfg whoami`](#qfg-whoami)
46
+ * [`qfg workspace`](#qfg-workspace)
47
+
48
+ ## `qfg create NAME`
49
+
50
+ Create a new item in Quonfig
51
+
52
+ ```
53
+ USAGE
54
+ $ qfg create NAME --type boolean-flag|boolean|string|double|int|string-list|json [--json] [--interactive]
55
+ [--no-color] [--verbose] [-p <value>] [--confidential] [--env-var <value>] [--value <value>] [--secret]
56
+ [--secret-key-name <value>]
57
+
58
+ ARGUMENTS
59
+ NAME name for your new item (e.g. my.new.flag)
60
+
61
+ FLAGS
62
+ --confidential mark the value as confidential
63
+ --env-var=<value> environment variable to get value from
64
+ --secret encrypt the value of this item
65
+ --secret-key-name=<value> [default: quonfig.secrets.encryption.key] name of the secret key to use for
66
+ encryption/decryption
67
+ --type=<option> (required)
68
+ <options: boolean-flag|boolean|string|double|int|string-list|json>
69
+ --value=<value> default value for your new item
70
+
71
+ GLOBAL FLAGS
72
+ -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
73
+ --[no-]interactive Force interactive mode
74
+ --json Format output as json.
75
+ --no-color Do not colorize output
76
+ --verbose Verbose output
77
+
78
+ DESCRIPTION
79
+ Create a new item in Quonfig
80
+
81
+ EXAMPLES
82
+ $ qfg create my.new.flag --type boolean-flag
83
+
84
+ $ qfg create my.new.flag --type boolean-flag --value=true
85
+
86
+ $ qfg create my.new.string --type string --value="hello world"
87
+
88
+ $ qfg create my.new.string --type string --value="hello world" --secret
89
+
90
+ $ qfg create my.new.string --type string --env-var=MY_ENV_VAR_NAME
91
+
92
+ $ qfg create my.new.string --type json --value="{\"key\": \"value\"}"
93
+ ```
94
+
95
+ _See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/create.ts)_
96
+
97
+ ## `qfg download`
98
+
99
+ Download a Datafile for a given environment
100
+
101
+ ```
102
+ USAGE
103
+ $ qfg download [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
104
+ [--sdk-key <value>]
105
+
106
+ FLAGS
107
+ --environment=<value> environment to download
108
+ --sdk-key=<value> SDK key for authentication (uses legacy download endpoint)
109
+
110
+ GLOBAL FLAGS
111
+ -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
112
+ --[no-]interactive Force interactive mode
113
+ --json Format output as json.
114
+ --no-color Do not colorize output
115
+ --verbose Verbose output
116
+
117
+ DESCRIPTION
118
+ Download a Datafile for a given environment
119
+
120
+ You can serve a datafile using the `serve` command.
121
+
122
+ EXAMPLES
123
+ $ qfg download --environment=test
124
+
125
+ $ qfg download --environment=test --sdk-key=YOUR_SDK_KEY
126
+ ```
127
+
128
+ _See code: [src/commands/download.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/download.ts)_
129
+
130
+ ## `qfg generate`
131
+
132
+ Generate type definitions for your Quonfig configuration
133
+
134
+ ```
135
+ USAGE
136
+ $ qfg generate [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [-o <value>] [--targets
137
+ <value>]
138
+
139
+ FLAGS
140
+ -o, --output-directory=<value> Override the output directory for generated files
141
+ --targets=<value> [default: react-ts] Determines for language/framework to generate code for (node-ts,
142
+ react-ts)
143
+
144
+ GLOBAL FLAGS
145
+ -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
146
+ --[no-]interactive Force interactive mode
147
+ --json Format output as json.
148
+ --no-color Do not colorize output
149
+ --verbose Verbose output
150
+
151
+ DESCRIPTION
152
+ Generate type definitions for your Quonfig configuration
153
+
154
+ You can use the default type-generation configuration, or by provide your own via a quonfig.config.json file:
155
+
156
+ Format:
157
+ {
158
+ ​ outputDirectory?: string;
159
+ ​ targets?: {
160
+ ​ <language key>?: {
161
+ ​ outputDirectory?: string;
162
+ ​ outputFileName?: string;
163
+ ​ }
164
+ ​ }
165
+ };
166
+
167
+ Example quonfig.config.json:
168
+ ```json
169
+ {
170
+ ​ "outputDirectory": "path/to/your/directory",
171
+ ​ "targets": {
172
+ ​ "react-ts": {
173
+ ​ "outputDirectory": "diff/path/to/your/directory",
174
+ ​ "declarationFileName": "quonfig-client-types.d.ts",
175
+ ​ "clientFileName": "quonfig-client.ts",
176
+ ​ },
177
+ ​ "node-ts": {
178
+ ​ "declarationFileName": "quonfig-server-types.d.ts",
179
+ ​ "clientFileName": "quonfig-server.ts",
180
+ ​ }
181
+ ​ }
182
+ }
183
+ ```
184
+
185
+
186
+ EXAMPLES
187
+ $ qfg generate # react-ts only by default
188
+
189
+ $ qfg generate --targets node-ts # node-ts only
190
+
191
+ $ qfg generate --targets react-ts,node-ts # both node + react-ts
192
+
193
+ $ qfg generate -o ./src/generated # specify output directory
194
+
195
+ $ qfg generate --targets node-ts -o ./dist # combine with targets
196
+ ```
197
+
198
+ _See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/generate.ts)_
199
+
200
+ ## `qfg generate-new-hex-key`
201
+
202
+ Generate a new hex key suitable for secrets
203
+
204
+ ```
205
+ USAGE
206
+ $ qfg generate-new-hex-key [--json] [--interactive] [--no-color] [--verbose]
207
+
208
+ GLOBAL FLAGS
209
+ --[no-]interactive Force interactive mode
210
+ --json Format output as json.
211
+ --no-color Do not colorize output
212
+ --verbose Verbose output
213
+
214
+ DESCRIPTION
215
+ Generate a new hex key suitable for secrets
216
+
217
+ EXAMPLES
218
+ $ qfg generate-new-hex-key
219
+ ```
220
+
221
+ _See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/generate-new-hex-key.ts)_
222
+
223
+ ## `qfg get [NAME]`
224
+
225
+ Get the value of a config/feature-flag/etc.
226
+
227
+ ```
228
+ USAGE
229
+ $ qfg get [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
230
+
231
+ ARGUMENTS
232
+ NAME config/feature-flag/etc. name
233
+
234
+ FLAGS
235
+ --environment=<value> environment to evaluate in
236
+
237
+ GLOBAL FLAGS
238
+ -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
239
+ --[no-]interactive Force interactive mode
240
+ --json Format output as json.
241
+ --no-color Do not colorize output
242
+ --verbose Verbose output
243
+
244
+ DESCRIPTION
245
+ Get the value of a config/feature-flag/etc.
246
+
247
+ EXAMPLES
248
+ $ qfg get my.config.name
249
+
250
+ $ qfg get my.config.name --environment=production
251
+ ```
252
+
253
+ _See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/get.ts)_
254
+
255
+ ## `qfg info [NAME]`
256
+
257
+ Show details about the provided config/feature-flag/etc.
258
+
259
+ ```
260
+ USAGE
261
+ $ qfg info [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--exclude-evaluations]
262
+
263
+ ARGUMENTS
264
+ NAME config/feature-flag/etc. name
265
+
266
+ FLAGS
267
+ --exclude-evaluations Exclude evaluation data
268
+
269
+ GLOBAL FLAGS
270
+ -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
271
+ --[no-]interactive Force interactive mode
272
+ --json Format output as json.
273
+ --no-color Do not colorize output
274
+ --verbose Verbose output
275
+
276
+ DESCRIPTION
277
+ Show details about the provided config/feature-flag/etc.
278
+
279
+ EXAMPLES
280
+ $ qfg info my.config.name
281
+ ```
282
+
283
+ _See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/info.ts)_
284
+
285
+ ## `qfg interactive`
286
+
287
+ ```
288
+ USAGE
289
+ $ qfg interactive [--json] [--interactive] [--no-color] [--verbose]
290
+
291
+ GLOBAL FLAGS
292
+ --[no-]interactive Force interactive mode
293
+ --json Format output as json.
294
+ --no-color Do not colorize output
295
+ --verbose Verbose output
296
+
297
+ EXAMPLES
298
+ $ qfg
299
+ ```
300
+
301
+ _See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/interactive.ts)_
302
+
303
+ ## `qfg list`
304
+
305
+ Show keys for your config/feature flags/etc.
306
+
307
+ ```
308
+ USAGE
309
+ $ qfg list [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--configs] [--feature-flags]
310
+ [--log-levels] [--schemas] [--segments]
311
+
312
+ FLAGS
313
+ --configs include configs
314
+ --feature-flags include flags
315
+ --log-levels include log levels
316
+ --schemas include schemas
317
+ --segments include segments
318
+
319
+ GLOBAL FLAGS
320
+ -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
321
+ --[no-]interactive Force interactive mode
322
+ --json Format output as json.
323
+ --no-color Do not colorize output
324
+ --verbose Verbose output
325
+
326
+ DESCRIPTION
327
+ Show keys for your config/feature flags/etc.
328
+
329
+ All types are returned by default. If you pass one or more type flags (e.g. --configs), only those types will be
330
+ returned
331
+
332
+ EXAMPLES
333
+ $ qfg list
334
+
335
+ $ qfg list --feature-flags
336
+ ```
337
+
338
+ _See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/list.ts)_
339
+
340
+ ## `qfg login`
341
+
342
+ Log in to Quonfig via WorkOS device authorization
343
+
344
+ ```
345
+ USAGE
346
+ $ qfg login [--json] [--interactive] [--no-color] [--verbose] [-p <value>]
347
+
348
+ FLAGS
349
+ -p, --profile=<value> Profile name to create or update (defaults to "default")
350
+
351
+ GLOBAL FLAGS
352
+ --[no-]interactive Force interactive mode
353
+ --json Format output as json.
354
+ --no-color Do not colorize output
355
+ --verbose Verbose output
356
+
357
+ DESCRIPTION
358
+ Log in to Quonfig via WorkOS device authorization
359
+
360
+ EXAMPLES
361
+ $ qfg login
362
+
363
+ $ qfg login --profile myprofile
364
+ ```
365
+
366
+ _See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/login.ts)_
367
+
368
+ ## `qfg logout`
369
+
370
+ Log out and clear stored authentication tokens
371
+
372
+ ```
373
+ USAGE
374
+ $ qfg logout [--json] [--interactive] [--no-color] [--verbose]
375
+
376
+ GLOBAL FLAGS
377
+ --[no-]interactive Force interactive mode
378
+ --json Format output as json.
379
+ --no-color Do not colorize output
380
+ --verbose Verbose output
381
+
382
+ DESCRIPTION
383
+ Log out and clear stored authentication tokens
384
+
385
+ EXAMPLES
386
+ $ qfg logout
387
+ ```
388
+
389
+ _See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/logout.ts)_
390
+
391
+ ## `qfg mcp`
392
+
393
+ Configure Quonfig MCP server for your AI assistant
394
+
395
+ ```
396
+ USAGE
397
+ $ qfg mcp [--json] [--interactive] [--no-color] [--verbose] [--editor claude-code|codeium] [--url
398
+ <value>]
399
+
400
+ FLAGS
401
+ --editor=<option> Editor to configure (cursor, vscode, claude, windsurf)
402
+ <options: claude-code|codeium>
403
+ --url=<value> Internal URL for testing (defaults to https://app.quonfig.com/api/v1/mcp)
404
+
405
+ GLOBAL FLAGS
406
+ --[no-]interactive Force interactive mode
407
+ --json Format output as json.
408
+ --no-color Do not colorize output
409
+ --verbose Verbose output
410
+
411
+ DESCRIPTION
412
+ Configure Quonfig MCP server for your AI assistant
413
+
414
+ EXAMPLES
415
+ $ qfg mcp
416
+
417
+ $ qfg mcp --editor cursor
418
+
419
+ $ qfg mcp --url http://local-app.goatsofquonfig.com:3003/api/v1/mcp
420
+ ```
421
+
422
+ _See code: [src/commands/mcp.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/mcp.ts)_
423
+
424
+ ## `qfg override [NAME]`
425
+
426
+ Override the value of an item for your user/SDK key combo
427
+
428
+ ```
429
+ USAGE
430
+ $ qfg override [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
431
+ [--remove] [--value <value>]
432
+
433
+ ARGUMENTS
434
+ NAME config/feature-flag/etc. name
435
+
436
+ FLAGS
437
+ --environment=<value> environment to override in
438
+ --remove remove your override (if present)
439
+ --value=<value> value to use for your override
440
+
441
+ GLOBAL FLAGS
442
+ -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
443
+ --[no-]interactive Force interactive mode
444
+ --json Format output as json.
445
+ --no-color Do not colorize output
446
+ --verbose Verbose output
447
+
448
+ DESCRIPTION
449
+ Override the value of an item for your user/SDK key combo
450
+
451
+ EXAMPLES
452
+ $ qfg override # will prompt for name and value
453
+
454
+ $ qfg override my.flag.name --value=true
455
+
456
+ $ qfg override my.flag.name --remove
457
+
458
+ $ qfg override my.double.config --value=3.14159
459
+ ```
460
+
461
+ _See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/override.ts)_
462
+
463
+ ## `qfg profile`
464
+
465
+ Manage profiles and set default profile
466
+
467
+ ```
468
+ USAGE
469
+ $ qfg profile [--json] [--interactive] [--no-color] [--verbose]
470
+
471
+ GLOBAL FLAGS
472
+ --[no-]interactive Force interactive mode
473
+ --json Format output as json.
474
+ --no-color Do not colorize output
475
+ --verbose Verbose output
476
+
477
+ DESCRIPTION
478
+ Manage profiles and set default profile
479
+
480
+ EXAMPLES
481
+ $ qfg profile
482
+ ```
483
+
484
+ _See code: [src/commands/profile.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/profile.ts)_
485
+
486
+ ## `qfg schema NAME`
487
+
488
+ Get or update first-class schema documents
489
+
490
+ ```
491
+ USAGE
492
+ $ qfg schema NAME [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--get] [--protected]
493
+ [--set-json-schema <value>] [--set-zod <value>]
494
+
495
+ ARGUMENTS
496
+ NAME schema key
497
+
498
+ FLAGS
499
+ --get get the schema document
500
+ --protected store the schema in protected storage
501
+ --set-json-schema=<value> set a plain JSON Schema document (inline JSON or @file path)
502
+ --set-zod=<value> compatibility alias for --set-json-schema; now expects plain JSON Schema
503
+
504
+ GLOBAL FLAGS
505
+ -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
506
+ --[no-]interactive Force interactive mode
507
+ --json Format output as json.
508
+ --no-color Do not colorize output
509
+ --verbose Verbose output
510
+
511
+ DESCRIPTION
512
+ Get or update first-class schema documents
513
+
514
+ EXAMPLES
515
+ $ qfg schema my-schema --get
516
+
517
+ $ qfg schema my-schema --set-json-schema='{"type":"object","properties":{}}'
518
+
519
+ $ qfg schema my-schema --set-json-schema=@schemas/my-schema.json --protected
520
+ ```
521
+
522
+ _See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/schema.ts)_
523
+
524
+ ## `qfg serve DATA-FILE`
525
+
526
+ Serve a datafile on a local port
527
+
528
+ ```
529
+ USAGE
530
+ $ qfg serve DATA-FILE [--json] [--interactive] [--no-color] [--verbose] [--port <value>]
531
+
532
+ ARGUMENTS
533
+ DATA-FILE file to read
534
+
535
+ FLAGS
536
+ --port=<value> [default: 3099] port to serve on
537
+
538
+ GLOBAL FLAGS
539
+ --[no-]interactive Force interactive mode
540
+ --json Format output as json.
541
+ --no-color Do not colorize output
542
+ --verbose Verbose output
543
+
544
+ DESCRIPTION
545
+ Serve a datafile on a local port
546
+
547
+ You can download a datafile using the `download` command.
548
+
549
+ You'll need to update your JavaScript (or React) client to point to this server.
550
+
551
+ e.g. `endpoints: ["http://localhost:3099"],`
552
+
553
+
554
+ EXAMPLES
555
+ $ qfg serve ./quonfig.test.588.config.json --port=3099
556
+ ```
557
+
558
+ _See code: [src/commands/serve.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/serve.ts)_
559
+
560
+ ## `qfg set-default [NAME]`
561
+
562
+ Set/update the default value for an environment (other rules still apply)
563
+
564
+ ```
565
+ USAGE
566
+ $ qfg set-default [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--confidential]
567
+ [--env-var <value>] [--environment <value>] [--value <value>] [--confirm] [--secret] [--secret-key-name <value>]
568
+
569
+ ARGUMENTS
570
+ NAME config/feature-flag/etc. name
571
+
572
+ FLAGS
573
+ --confidential mark the value as confidential
574
+ --confirm confirm without prompt
575
+ --env-var=<value> environment variable to use as default value
576
+ --environment=<value> environment to change
577
+ --secret encrypt the value of this item
578
+ --secret-key-name=<value> [default: quonfig.secrets.encryption.key] name of the secret key to use for
579
+ encryption/decryption
580
+ --value=<value> new default value
581
+
582
+ GLOBAL FLAGS
583
+ -p, --profile=<value> Profile to use (defaults to ENV var QUONFIG_PROFILE or "default")
584
+ --[no-]interactive Force interactive mode
585
+ --json Format output as json.
586
+ --no-color Do not colorize output
587
+ --verbose Verbose output
588
+
589
+ DESCRIPTION
590
+ Set/update the default value for an environment (other rules still apply)
591
+
592
+ EXAMPLES
593
+ $ qfg set-default my.flag.name # will prompt for value and env
594
+
595
+ $ qfg set-default my.flag.name --value=true --environment=staging
596
+
597
+ $ qfg set-default my.flag.name --value=true --secret
598
+
599
+ $ qfg set-default my.config.name --env-var=MY_ENV_VAR_NAME --environment=production
600
+ ```
601
+
602
+ _See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/set-default.ts)_
603
+
604
+ ## `qfg verify [PATH]`
605
+
606
+ Validate a Quonfig workspace directory
607
+
608
+ ```
609
+ USAGE
610
+ $ qfg verify [PATH] [--json] [--interactive] [--no-color] [--verbose] [--strict]
611
+
612
+ ARGUMENTS
613
+ PATH [default: .] Path to workspace directory
614
+
615
+ FLAGS
616
+ --strict Treat warnings as errors
617
+
618
+ GLOBAL FLAGS
619
+ --[no-]interactive Force interactive mode
620
+ --json Format output as json.
621
+ --no-color Do not colorize output
622
+ --verbose Verbose output
623
+
624
+ DESCRIPTION
625
+ Validate a Quonfig workspace directory
626
+
627
+ EXAMPLES
628
+ $ qfg verify
629
+
630
+ $ qfg verify ./my-workspace
631
+
632
+ $ qfg verify --json
633
+ ```
634
+
635
+ _See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/verify.ts)_
636
+
637
+ ## `qfg whoami`
638
+
639
+ Display information about the currently logged in user
640
+
641
+ ```
642
+ USAGE
643
+ $ qfg whoami [--json] [--interactive] [--no-color] [--verbose]
644
+
645
+ GLOBAL FLAGS
646
+ --[no-]interactive Force interactive mode
647
+ --json Format output as json.
648
+ --no-color Do not colorize output
649
+ --verbose Verbose output
650
+
651
+ DESCRIPTION
652
+ Display information about the currently logged in user
653
+
654
+ EXAMPLES
655
+ $ qfg whoami
656
+ ```
657
+
658
+ _See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/whoami.ts)_
659
+
660
+ ## `qfg workspace`
661
+
662
+ Display current workspace. To switch workspaces, run `qfg login --profile <name>`.
663
+
664
+ ```
665
+ USAGE
666
+ $ qfg workspace [--json] [--interactive] [--no-color] [--verbose]
667
+
668
+ GLOBAL FLAGS
669
+ --[no-]interactive Force interactive mode
670
+ --json Format output as json.
671
+ --no-color Do not colorize output
672
+ --verbose Verbose output
673
+
674
+ DESCRIPTION
675
+ Display current workspace. To switch workspaces, run `qfg login --profile <name>`.
676
+
677
+ EXAMPLES
678
+ $ qfg workspace
679
+ ```
680
+
681
+ _See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.1/src/commands/workspace.ts)_
682
+ <!-- commandsstop -->
683
+
684
+ ## Local Development
685
+
686
+ ```
687
+ mise install
688
+ git submodule init
689
+ git submodule update
690
+ yarn install
691
+ yarn build
692
+ bin/dev.js
693
+ fish -c "cd ../../quonfig/cli;bin/dev.js"
694
+ ```
695
+
696
+ ## Releasing
697
+
698
+ ```
699
+ yarn version
700
+ npm publish --access public
701
+ ```
702
+
703
+ ## Contributing
704
+
705
+ Contributions are what make the open source community such an amazing place to learn, inspire, and
706
+ create. Any contributions you make are **greatly appreciated**. For detailed contributing
707
+ guidelines, please see [CONTRIBUTING.md](CONTRIBUTING.md)
package/bin/dev.cmd ADDED
@@ -0,0 +1,3 @@
1
+ @echo off
2
+
3
+ node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %*
package/bin/dev.js ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env -S node --loader ts-node/esm --no-warnings=ExperimentalWarning
2
+
3
+ // eslint-disable-next-line node/shebang
4
+ async function main() {
5
+ const {execute} = await import('@oclif/core')
6
+ await execute({development: true, dir: import.meta.url})
7
+ }
8
+
9
+ await main()