@quonfig/cli 0.0.30 → 0.0.31
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/README.md +35 -35
- package/dist/commands/whoami.js +50 -3
- package/dist/commands/workspace/create.js +9 -3
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ $ npm install -g @quonfig/cli
|
|
|
14
14
|
$ qfg COMMAND
|
|
15
15
|
running command...
|
|
16
16
|
$ qfg (--version)
|
|
17
|
-
@quonfig/cli/0.0.
|
|
17
|
+
@quonfig/cli/0.0.31 linux-x64 node-v24.4.1
|
|
18
18
|
$ qfg --help [COMMAND]
|
|
19
19
|
USAGE
|
|
20
20
|
$ qfg COMMAND
|
|
@@ -91,7 +91,7 @@ EXAMPLES
|
|
|
91
91
|
$ qfg config-schema --json-schema # full JSON Schema document (copy into your editor)
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
-
_See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
94
|
+
_See code: [src/commands/config-schema.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/config-schema.ts)_
|
|
95
95
|
|
|
96
96
|
## `qfg create NAME`
|
|
97
97
|
|
|
@@ -176,7 +176,7 @@ EXAMPLES
|
|
|
176
176
|
$ qfg set-rollout my.new.flag --environment production --true-percent 20
|
|
177
177
|
```
|
|
178
178
|
|
|
179
|
-
_See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
179
|
+
_See code: [src/commands/create.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/create.ts)_
|
|
180
180
|
|
|
181
181
|
## `qfg delete NAME`
|
|
182
182
|
|
|
@@ -222,7 +222,7 @@ EXAMPLES
|
|
|
222
222
|
$ qfg delete my.config --yes
|
|
223
223
|
```
|
|
224
224
|
|
|
225
|
-
_See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
225
|
+
_See code: [src/commands/delete.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/delete.ts)_
|
|
226
226
|
|
|
227
227
|
## `qfg flag info [NAME]`
|
|
228
228
|
|
|
@@ -425,7 +425,7 @@ EXAMPLES
|
|
|
425
425
|
$ qfg generate --targets node-ts -o ./dist # combine with targets
|
|
426
426
|
```
|
|
427
427
|
|
|
428
|
-
_See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
428
|
+
_See code: [src/commands/generate.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/generate.ts)_
|
|
429
429
|
|
|
430
430
|
## `qfg generate-new-hex-key`
|
|
431
431
|
|
|
@@ -448,7 +448,7 @@ EXAMPLES
|
|
|
448
448
|
$ qfg generate-new-hex-key
|
|
449
449
|
```
|
|
450
450
|
|
|
451
|
-
_See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
451
|
+
_See code: [src/commands/generate-new-hex-key.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/generate-new-hex-key.ts)_
|
|
452
452
|
|
|
453
453
|
## `qfg get [NAME]`
|
|
454
454
|
|
|
@@ -480,7 +480,7 @@ EXAMPLES
|
|
|
480
480
|
$ qfg get my.config.name --environment=production
|
|
481
481
|
```
|
|
482
482
|
|
|
483
|
-
_See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
483
|
+
_See code: [src/commands/get.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/get.ts)_
|
|
484
484
|
|
|
485
485
|
## `qfg info [NAME]`
|
|
486
486
|
|
|
@@ -528,7 +528,7 @@ EXAMPLES
|
|
|
528
528
|
$ qfg info my.config.name --exclude-evaluations # skip 24h stats
|
|
529
529
|
```
|
|
530
530
|
|
|
531
|
-
_See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
531
|
+
_See code: [src/commands/info.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/info.ts)_
|
|
532
532
|
|
|
533
533
|
## `qfg init [DIRECTORY]`
|
|
534
534
|
|
|
@@ -568,7 +568,7 @@ EXAMPLES
|
|
|
568
568
|
$ qfg init --dry-run
|
|
569
569
|
```
|
|
570
570
|
|
|
571
|
-
_See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
571
|
+
_See code: [src/commands/init.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/init.ts)_
|
|
572
572
|
|
|
573
573
|
## `qfg interactive`
|
|
574
574
|
|
|
@@ -598,7 +598,7 @@ EXAMPLES
|
|
|
598
598
|
$ qfg
|
|
599
599
|
```
|
|
600
600
|
|
|
601
|
-
_See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
601
|
+
_See code: [src/commands/interactive.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/interactive.ts)_
|
|
602
602
|
|
|
603
603
|
## `qfg list`
|
|
604
604
|
|
|
@@ -638,7 +638,7 @@ EXAMPLES
|
|
|
638
638
|
$ qfg list --feature-flags
|
|
639
639
|
```
|
|
640
640
|
|
|
641
|
-
_See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
641
|
+
_See code: [src/commands/list.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/list.ts)_
|
|
642
642
|
|
|
643
643
|
## `qfg log-level NAME`
|
|
644
644
|
|
|
@@ -703,7 +703,7 @@ EXAMPLES
|
|
|
703
703
|
$ qfg log-level log-level.my-app --target=Chatty --value=INFO --environment=production
|
|
704
704
|
```
|
|
705
705
|
|
|
706
|
-
_See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
706
|
+
_See code: [src/commands/log-level.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/log-level.ts)_
|
|
707
707
|
|
|
708
708
|
## `qfg login`
|
|
709
709
|
|
|
@@ -728,7 +728,7 @@ EXAMPLES
|
|
|
728
728
|
$ qfg login --profile myprofile
|
|
729
729
|
```
|
|
730
730
|
|
|
731
|
-
_See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
731
|
+
_See code: [src/commands/login.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/login.ts)_
|
|
732
732
|
|
|
733
733
|
## `qfg logout`
|
|
734
734
|
|
|
@@ -751,7 +751,7 @@ EXAMPLES
|
|
|
751
751
|
$ qfg logout
|
|
752
752
|
```
|
|
753
753
|
|
|
754
|
-
_See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
754
|
+
_See code: [src/commands/logout.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/logout.ts)_
|
|
755
755
|
|
|
756
756
|
## `qfg migrate`
|
|
757
757
|
|
|
@@ -805,7 +805,7 @@ EXAMPLES
|
|
|
805
805
|
$ qfg migrate --from launch --api-key $LAUNCH_API_KEY --dir ./quonfig-config --staging
|
|
806
806
|
```
|
|
807
807
|
|
|
808
|
-
_See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
808
|
+
_See code: [src/commands/migrate.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/migrate.ts)_
|
|
809
809
|
|
|
810
810
|
## `qfg migrate doctor`
|
|
811
811
|
|
|
@@ -843,7 +843,7 @@ EXAMPLES
|
|
|
843
843
|
$ qfg migrate doctor --json
|
|
844
844
|
```
|
|
845
845
|
|
|
846
|
-
_See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
846
|
+
_See code: [src/commands/migrate/doctor.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/migrate/doctor.ts)_
|
|
847
847
|
|
|
848
848
|
## `qfg migrate my-code`
|
|
849
849
|
|
|
@@ -875,7 +875,7 @@ EXAMPLES
|
|
|
875
875
|
$ qfg migrate my-code --dry-run
|
|
876
876
|
```
|
|
877
877
|
|
|
878
|
-
_See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
878
|
+
_See code: [src/commands/migrate/my-code.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/migrate/my-code.ts)_
|
|
879
879
|
|
|
880
880
|
## `qfg migrate status`
|
|
881
881
|
|
|
@@ -906,7 +906,7 @@ EXAMPLES
|
|
|
906
906
|
$ qfg migrate status --json
|
|
907
907
|
```
|
|
908
908
|
|
|
909
|
-
_See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
909
|
+
_See code: [src/commands/migrate/status.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/migrate/status.ts)_
|
|
910
910
|
|
|
911
911
|
## `qfg override [NAME] [VALUE]`
|
|
912
912
|
|
|
@@ -961,7 +961,7 @@ EXAMPLES
|
|
|
961
961
|
$ qfg override my.flag true --env=staging
|
|
962
962
|
```
|
|
963
963
|
|
|
964
|
-
_See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
964
|
+
_See code: [src/commands/override.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/override.ts)_
|
|
965
965
|
|
|
966
966
|
## `qfg pull`
|
|
967
967
|
|
|
@@ -1005,7 +1005,7 @@ EXAMPLES
|
|
|
1005
1005
|
$ qfg pull # uses QUONFIG_DIR env var
|
|
1006
1006
|
```
|
|
1007
1007
|
|
|
1008
|
-
_See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1008
|
+
_See code: [src/commands/pull.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/pull.ts)_
|
|
1009
1009
|
|
|
1010
1010
|
## `qfg push`
|
|
1011
1011
|
|
|
@@ -1053,7 +1053,7 @@ EXAMPLES
|
|
|
1053
1053
|
$ qfg push --dir ./our-config --yes
|
|
1054
1054
|
```
|
|
1055
1055
|
|
|
1056
|
-
_See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1056
|
+
_See code: [src/commands/push.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/push.ts)_
|
|
1057
1057
|
|
|
1058
1058
|
## `qfg schema NAME`
|
|
1059
1059
|
|
|
@@ -1091,7 +1091,7 @@ EXAMPLES
|
|
|
1091
1091
|
$ qfg schema my-schema --set-json-schema=@schemas/my-schema.json --protected
|
|
1092
1092
|
```
|
|
1093
1093
|
|
|
1094
|
-
_See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1094
|
+
_See code: [src/commands/schema.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/schema.ts)_
|
|
1095
1095
|
|
|
1096
1096
|
## `qfg sdk-key`
|
|
1097
1097
|
|
|
@@ -1118,7 +1118,7 @@ EXAMPLES
|
|
|
1118
1118
|
$ qfg sdk-key revoke <key-id>
|
|
1119
1119
|
```
|
|
1120
1120
|
|
|
1121
|
-
_See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1121
|
+
_See code: [src/commands/sdk-key.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/sdk-key.ts)_
|
|
1122
1122
|
|
|
1123
1123
|
## `qfg sdk-key create`
|
|
1124
1124
|
|
|
@@ -1150,7 +1150,7 @@ EXAMPLES
|
|
|
1150
1150
|
$ qfg sdk-key create --environment staging --type browser
|
|
1151
1151
|
```
|
|
1152
1152
|
|
|
1153
|
-
_See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1153
|
+
_See code: [src/commands/sdk-key/create.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/sdk-key/create.ts)_
|
|
1154
1154
|
|
|
1155
1155
|
## `qfg sdk-key list`
|
|
1156
1156
|
|
|
@@ -1179,7 +1179,7 @@ EXAMPLES
|
|
|
1179
1179
|
$ qfg sdk-key list --environment production
|
|
1180
1180
|
```
|
|
1181
1181
|
|
|
1182
|
-
_See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1182
|
+
_See code: [src/commands/sdk-key/list.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/sdk-key/list.ts)_
|
|
1183
1183
|
|
|
1184
1184
|
## `qfg sdk-key revoke KEYID`
|
|
1185
1185
|
|
|
@@ -1206,7 +1206,7 @@ EXAMPLES
|
|
|
1206
1206
|
$ qfg sdk-key revoke a1b2c3d4-e5f6-7890-abcd-ef1234567890
|
|
1207
1207
|
```
|
|
1208
1208
|
|
|
1209
|
-
_See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1209
|
+
_See code: [src/commands/sdk-key/revoke.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/sdk-key/revoke.ts)_
|
|
1210
1210
|
|
|
1211
1211
|
## `qfg set-default [NAME]`
|
|
1212
1212
|
|
|
@@ -1277,7 +1277,7 @@ EXAMPLES
|
|
|
1277
1277
|
$ qfg pull && qfg config-schema
|
|
1278
1278
|
```
|
|
1279
1279
|
|
|
1280
|
-
_See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1280
|
+
_See code: [src/commands/set-default.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/set-default.ts)_
|
|
1281
1281
|
|
|
1282
1282
|
## `qfg set-rollout [NAME]`
|
|
1283
1283
|
|
|
@@ -1354,7 +1354,7 @@ EXAMPLES
|
|
|
1354
1354
|
$ qfg set-rollout my.variant.flag --environment production --weights "a:33,b:33,c:34" --hash-by user.id
|
|
1355
1355
|
```
|
|
1356
1356
|
|
|
1357
|
-
_See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1357
|
+
_See code: [src/commands/set-rollout.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/set-rollout.ts)_
|
|
1358
1358
|
|
|
1359
1359
|
## `qfg sync`
|
|
1360
1360
|
|
|
@@ -1386,7 +1386,7 @@ EXAMPLES
|
|
|
1386
1386
|
$ qfg sync --watch --dir ./our-config --interval 30
|
|
1387
1387
|
```
|
|
1388
1388
|
|
|
1389
|
-
_See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1389
|
+
_See code: [src/commands/sync.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/sync.ts)_
|
|
1390
1390
|
|
|
1391
1391
|
## `qfg toggle [NAME]`
|
|
1392
1392
|
|
|
@@ -1488,7 +1488,7 @@ EXAMPLES
|
|
|
1488
1488
|
$ qfg verify --json
|
|
1489
1489
|
```
|
|
1490
1490
|
|
|
1491
|
-
_See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1491
|
+
_See code: [src/commands/verify.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/verify.ts)_
|
|
1492
1492
|
|
|
1493
1493
|
## `qfg whoami`
|
|
1494
1494
|
|
|
@@ -1511,7 +1511,7 @@ EXAMPLES
|
|
|
1511
1511
|
$ qfg whoami
|
|
1512
1512
|
```
|
|
1513
1513
|
|
|
1514
|
-
_See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1514
|
+
_See code: [src/commands/whoami.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/whoami.ts)_
|
|
1515
1515
|
|
|
1516
1516
|
## `qfg workspace`
|
|
1517
1517
|
|
|
@@ -1534,7 +1534,7 @@ EXAMPLES
|
|
|
1534
1534
|
$ qfg workspace
|
|
1535
1535
|
```
|
|
1536
1536
|
|
|
1537
|
-
_See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1537
|
+
_See code: [src/commands/workspace.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/workspace.ts)_
|
|
1538
1538
|
|
|
1539
1539
|
## `qfg workspace bootstrap`
|
|
1540
1540
|
|
|
@@ -1567,7 +1567,7 @@ EXAMPLES
|
|
|
1567
1567
|
$ qfg workspace bootstrap --dir ./our-config --skip-validate
|
|
1568
1568
|
```
|
|
1569
1569
|
|
|
1570
|
-
_See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1570
|
+
_See code: [src/commands/workspace/bootstrap.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/workspace/bootstrap.ts)_
|
|
1571
1571
|
|
|
1572
1572
|
## `qfg workspace create SLUG`
|
|
1573
1573
|
|
|
@@ -1601,7 +1601,7 @@ EXAMPLES
|
|
|
1601
1601
|
$ qfg workspace create my-team --org 11111111-1111-1111-1111-111111111111
|
|
1602
1602
|
```
|
|
1603
1603
|
|
|
1604
|
-
_See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1604
|
+
_See code: [src/commands/workspace/create.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/workspace/create.ts)_
|
|
1605
1605
|
|
|
1606
1606
|
## `qfg workspace switch [SLUG]`
|
|
1607
1607
|
|
|
@@ -1629,7 +1629,7 @@ EXAMPLES
|
|
|
1629
1629
|
$ qfg workspace switch acme/production
|
|
1630
1630
|
```
|
|
1631
1631
|
|
|
1632
|
-
_See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.
|
|
1632
|
+
_See code: [src/commands/workspace/switch.ts](https://github.com/quonfig/cli/blob/v0.0.31/src/commands/workspace/switch.ts)_
|
|
1633
1633
|
<!-- commandsstop -->
|
|
1634
1634
|
|
|
1635
1635
|
## Local Development
|
package/dist/commands/whoami.js
CHANGED
|
@@ -31,6 +31,7 @@ export default class Whoami extends BaseCommand {
|
|
|
31
31
|
slug: t.org_slug ?? orgId,
|
|
32
32
|
name: t.org_name ?? t.org_slug ?? orgId,
|
|
33
33
|
role: '—',
|
|
34
|
+
sessionStatus: sessionStatusFor(t),
|
|
34
35
|
}));
|
|
35
36
|
const merged = mergeMemberships(localOrgs, memberships);
|
|
36
37
|
this.log(`Logged in as: ${userEmail || 'Unknown'}`);
|
|
@@ -44,7 +45,13 @@ export default class Whoami extends BaseCommand {
|
|
|
44
45
|
const marker = org.workosOrgId === activeOrgId ? '*' : ' ';
|
|
45
46
|
const label = `${org.slug}${org.workosOrgId === activeOrgId ? ' (active)' : ''}`;
|
|
46
47
|
const padded = label.padEnd(labelWidth, ' ');
|
|
47
|
-
|
|
48
|
+
const statusSuffix = org.sessionStatus ? ` (${org.sessionStatus.description})` : '';
|
|
49
|
+
this.log(` ${marker} ${padded}— ${org.role}${statusSuffix}`);
|
|
50
|
+
}
|
|
51
|
+
const expiredCount = merged.filter((o) => o.sessionStatus?.expired).length;
|
|
52
|
+
if (expiredCount > 0) {
|
|
53
|
+
this.log('');
|
|
54
|
+
this.log(`${expiredCount} of ${merged.length} session(s) expired. Run \`qfg login\` to refresh.`);
|
|
48
55
|
}
|
|
49
56
|
}
|
|
50
57
|
return {
|
|
@@ -58,6 +65,7 @@ export default class Whoami extends BaseCommand {
|
|
|
58
65
|
name: o.name,
|
|
59
66
|
role: o.role,
|
|
60
67
|
active: o.workosOrgId === activeOrgId,
|
|
68
|
+
sessionExpired: o.sessionStatus?.expired ?? null,
|
|
61
69
|
})),
|
|
62
70
|
};
|
|
63
71
|
}
|
|
@@ -139,10 +147,49 @@ function mergeMemberships(local, server) {
|
|
|
139
147
|
const merged = new Map();
|
|
140
148
|
for (const o of local)
|
|
141
149
|
merged.set(o.workosOrgId, o);
|
|
142
|
-
for (const o of server)
|
|
143
|
-
|
|
150
|
+
for (const o of server) {
|
|
151
|
+
// Server data wins for slug/name/role but lacks sessionStatus — that's
|
|
152
|
+
// a property of the locally-cached token, so preserve it.
|
|
153
|
+
const existing = merged.get(o.workosOrgId);
|
|
154
|
+
merged.set(o.workosOrgId, { ...o, sessionStatus: existing?.sessionStatus });
|
|
155
|
+
}
|
|
144
156
|
return [...merged.values()].sort((a, b) => a.slug.localeCompare(b.slug));
|
|
145
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Read-only check of a TokenSet's expiry. Prefers the JWT's `exp` claim
|
|
160
|
+
* (matches getValidAccessToken's logic), falls back to the stored
|
|
161
|
+
* `expires_at` timestamp if the JWT can't be decoded. No network calls —
|
|
162
|
+
* whoami stays fast even with many cached orgs.
|
|
163
|
+
*/
|
|
164
|
+
function sessionStatusFor(tokens) {
|
|
165
|
+
let expMs = tokens.expires_at;
|
|
166
|
+
try {
|
|
167
|
+
const payload = decodeJWT(tokens.access_token);
|
|
168
|
+
if (typeof payload.exp === 'number')
|
|
169
|
+
expMs = payload.exp * 1000;
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
/* keep stored expires_at */
|
|
173
|
+
}
|
|
174
|
+
const delta = expMs - Date.now();
|
|
175
|
+
if (delta <= 0)
|
|
176
|
+
return { expired: true, description: 'expired — run `qfg login`' };
|
|
177
|
+
return { expired: false, description: `expires in ${formatRelative(delta)}` };
|
|
178
|
+
}
|
|
179
|
+
function formatRelative(deltaMs) {
|
|
180
|
+
const minutes = Math.round(deltaMs / 60_000);
|
|
181
|
+
if (minutes < 1)
|
|
182
|
+
return '<1m';
|
|
183
|
+
if (minutes < 60)
|
|
184
|
+
return `${minutes}m`;
|
|
185
|
+
const hours = Math.floor(minutes / 60);
|
|
186
|
+
const remMin = minutes % 60;
|
|
187
|
+
if (hours < 24)
|
|
188
|
+
return remMin > 0 ? `${hours}h ${remMin}m` : `${hours}h`;
|
|
189
|
+
const days = Math.floor(hours / 24);
|
|
190
|
+
const remHours = hours % 24;
|
|
191
|
+
return remHours > 0 ? `${days}d ${remHours}h` : `${days}d`;
|
|
192
|
+
}
|
|
146
193
|
function pickAnyOrgId(store) {
|
|
147
194
|
if (store.defaultOrgId && store.tokensByOrg[store.defaultOrgId])
|
|
148
195
|
return store.defaultOrgId;
|
|
@@ -55,10 +55,16 @@ export default class WorkspaceCreate extends BaseCommand {
|
|
|
55
55
|
const { workosOrgId, orgSlug } = orgResolution;
|
|
56
56
|
let accessToken;
|
|
57
57
|
try {
|
|
58
|
-
accessToken = await getValidAccessToken(workosOrgId);
|
|
58
|
+
accessToken = await getValidAccessToken(workosOrgId, this.verboseLog);
|
|
59
59
|
}
|
|
60
|
-
catch {
|
|
61
|
-
|
|
60
|
+
catch (error) {
|
|
61
|
+
// Surface the underlying token error (e.g. "Token refresh failed for
|
|
62
|
+
// org X: invalid_grant — Refresh token already exchanged") so users
|
|
63
|
+
// and agents can distinguish "never logged in" from "session went
|
|
64
|
+
// stale and refresh was rejected" — both used to read "Not logged in".
|
|
65
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
66
|
+
const hint = detail.includes('qfg login') ? '' : ' Run `qfg login` to re-authenticate.';
|
|
67
|
+
return this.err(`${detail}${hint}`);
|
|
62
68
|
}
|
|
63
69
|
const apiUrl = getApiUrl();
|
|
64
70
|
// The server expects organizationSlug (it resolves to the local org
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: "0.0.
|
|
1
|
+
declare const _default: "0.0.31";
|
|
2
2
|
export default _default;
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// AUTO-GENERATED from package.json by scripts/generate-version.mjs — do not edit.
|
|
2
|
-
export default '0.0.
|
|
2
|
+
export default '0.0.31';
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"packageManager": "yarn@4.11.0+sha512.4e54aeace9141df2f0177c266b05ec50dc044638157dae128c471ba65994ac802122d7ab35bcd9e81641228b7dcf24867d28e750e0bcae8a05277d600008ad54",
|
|
3
3
|
"name": "@quonfig/cli",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.31",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/quonfig/cli/issues"
|
|
7
7
|
},
|