specforge-cli 0.1.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 (105) hide show
  1. package/dist/commands/access.d.ts +3 -0
  2. package/dist/commands/access.d.ts.map +1 -0
  3. package/dist/commands/access.js +98 -0
  4. package/dist/commands/access.js.map +1 -0
  5. package/dist/commands/amendments.d.ts +3 -0
  6. package/dist/commands/amendments.d.ts.map +1 -0
  7. package/dist/commands/amendments.js +61 -0
  8. package/dist/commands/amendments.js.map +1 -0
  9. package/dist/commands/audit.d.ts +3 -0
  10. package/dist/commands/audit.d.ts.map +1 -0
  11. package/dist/commands/audit.js +73 -0
  12. package/dist/commands/audit.js.map +1 -0
  13. package/dist/commands/auth.d.ts +3 -0
  14. package/dist/commands/auth.d.ts.map +1 -0
  15. package/dist/commands/auth.js +275 -0
  16. package/dist/commands/auth.js.map +1 -0
  17. package/dist/commands/config.d.ts +3 -0
  18. package/dist/commands/config.d.ts.map +1 -0
  19. package/dist/commands/config.js +66 -0
  20. package/dist/commands/config.js.map +1 -0
  21. package/dist/commands/diff.d.ts +3 -0
  22. package/dist/commands/diff.d.ts.map +1 -0
  23. package/dist/commands/diff.js +85 -0
  24. package/dist/commands/diff.js.map +1 -0
  25. package/dist/commands/export.d.ts +3 -0
  26. package/dist/commands/export.d.ts.map +1 -0
  27. package/dist/commands/export.js +162 -0
  28. package/dist/commands/export.js.map +1 -0
  29. package/dist/commands/features.d.ts +3 -0
  30. package/dist/commands/features.d.ts.map +1 -0
  31. package/dist/commands/features.js +134 -0
  32. package/dist/commands/features.js.map +1 -0
  33. package/dist/commands/media.d.ts +3 -0
  34. package/dist/commands/media.d.ts.map +1 -0
  35. package/dist/commands/media.js +142 -0
  36. package/dist/commands/media.js.map +1 -0
  37. package/dist/commands/notifications.d.ts +3 -0
  38. package/dist/commands/notifications.d.ts.map +1 -0
  39. package/dist/commands/notifications.js +75 -0
  40. package/dist/commands/notifications.js.map +1 -0
  41. package/dist/commands/org.d.ts +3 -0
  42. package/dist/commands/org.d.ts.map +1 -0
  43. package/dist/commands/org.js +145 -0
  44. package/dist/commands/org.js.map +1 -0
  45. package/dist/commands/project.d.ts +3 -0
  46. package/dist/commands/project.d.ts.map +1 -0
  47. package/dist/commands/project.js +205 -0
  48. package/dist/commands/project.js.map +1 -0
  49. package/dist/commands/review.d.ts +3 -0
  50. package/dist/commands/review.d.ts.map +1 -0
  51. package/dist/commands/review.js +102 -0
  52. package/dist/commands/review.js.map +1 -0
  53. package/dist/commands/sign.d.ts +3 -0
  54. package/dist/commands/sign.d.ts.map +1 -0
  55. package/dist/commands/sign.js +152 -0
  56. package/dist/commands/sign.js.map +1 -0
  57. package/dist/commands/spec.d.ts +3 -0
  58. package/dist/commands/spec.d.ts.map +1 -0
  59. package/dist/commands/spec.js +157 -0
  60. package/dist/commands/spec.js.map +1 -0
  61. package/dist/commands/user.d.ts +3 -0
  62. package/dist/commands/user.d.ts.map +1 -0
  63. package/dist/commands/user.js +117 -0
  64. package/dist/commands/user.js.map +1 -0
  65. package/dist/commands/verify.d.ts +3 -0
  66. package/dist/commands/verify.d.ts.map +1 -0
  67. package/dist/commands/verify.js +59 -0
  68. package/dist/commands/verify.js.map +1 -0
  69. package/dist/commands/version.d.ts +3 -0
  70. package/dist/commands/version.d.ts.map +1 -0
  71. package/dist/commands/version.js +167 -0
  72. package/dist/commands/version.js.map +1 -0
  73. package/dist/commands/webhook.d.ts +3 -0
  74. package/dist/commands/webhook.d.ts.map +1 -0
  75. package/dist/commands/webhook.js +201 -0
  76. package/dist/commands/webhook.js.map +1 -0
  77. package/dist/index.d.ts +24 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +82 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/lib/auth.d.ts +24 -0
  82. package/dist/lib/auth.d.ts.map +1 -0
  83. package/dist/lib/auth.js +92 -0
  84. package/dist/lib/auth.js.map +1 -0
  85. package/dist/lib/client.d.ts +6 -0
  86. package/dist/lib/client.d.ts.map +1 -0
  87. package/dist/lib/client.js +8 -0
  88. package/dist/lib/client.js.map +1 -0
  89. package/dist/lib/config.d.ts +15 -0
  90. package/dist/lib/config.d.ts.map +1 -0
  91. package/dist/lib/config.js +41 -0
  92. package/dist/lib/config.js.map +1 -0
  93. package/dist/lib/errors.d.ts +21 -0
  94. package/dist/lib/errors.d.ts.map +1 -0
  95. package/dist/lib/errors.js +41 -0
  96. package/dist/lib/errors.js.map +1 -0
  97. package/dist/lib/exit-codes.d.ts +30 -0
  98. package/dist/lib/exit-codes.d.ts.map +1 -0
  99. package/dist/lib/exit-codes.js +41 -0
  100. package/dist/lib/exit-codes.js.map +1 -0
  101. package/dist/lib/output.d.ts +7 -0
  102. package/dist/lib/output.d.ts.map +1 -0
  103. package/dist/lib/output.js +60 -0
  104. package/dist/lib/output.js.map +1 -0
  105. package/package.json +42 -0
@@ -0,0 +1,3 @@
1
+ declare const _default: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ export default _default;
3
+ //# sourceMappingURL=access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/commands/access.ts"],"names":[],"mappings":";AAYA,wBA4FG"}
@@ -0,0 +1,98 @@
1
+ import { defineCommand } from "citty";
2
+ import { createClient } from "specforge-sdk";
3
+ import { loadConfig, requireAuth } from "../lib/config";
4
+ import { handleApiResult, handleError } from "../lib/errors";
5
+ import { outputResult } from "../lib/output";
6
+ function getClient() {
7
+ const config = loadConfig();
8
+ const token = requireAuth(config);
9
+ return createClient({ baseUrl: config.baseUrl, auth: { accessToken: token } });
10
+ }
11
+ export default defineCommand({
12
+ meta: { name: "access", description: "Specification access control" },
13
+ subCommands: {
14
+ list: defineCommand({
15
+ meta: { name: "list", description: "List access entries for a specification" },
16
+ args: {
17
+ "spec-id": { type: "string", description: "Specification ID", required: true },
18
+ format: {
19
+ type: "string",
20
+ description: "Output format (json, table, yaml)",
21
+ default: "table",
22
+ },
23
+ json: { type: "boolean", description: "Output as JSON", default: false },
24
+ },
25
+ async run({ args }) {
26
+ try {
27
+ const client = getClient();
28
+ const result = await client.access.list(args["spec-id"]);
29
+ const isJson = args.json || args.format === "json";
30
+ outputResult(handleApiResult(result), isJson, ["id", "userId", "role"]);
31
+ }
32
+ catch (error) {
33
+ handleError(error);
34
+ }
35
+ },
36
+ }),
37
+ grant: defineCommand({
38
+ meta: { name: "grant", description: "Grant access to a specification" },
39
+ args: {
40
+ "spec-id": { type: "string", description: "Specification ID", required: true },
41
+ "user-id": { type: "string", description: "User ID", required: true },
42
+ role: { type: "string", description: "Access role", required: true },
43
+ json: { type: "boolean", description: "Output as JSON", default: false },
44
+ },
45
+ async run({ args }) {
46
+ try {
47
+ const client = getClient();
48
+ const result = await client.access.grant(args["spec-id"], {
49
+ userId: args["user-id"],
50
+ role: args.role,
51
+ });
52
+ outputResult(handleApiResult(result), args.json);
53
+ }
54
+ catch (error) {
55
+ handleError(error);
56
+ }
57
+ },
58
+ }),
59
+ update: defineCommand({
60
+ meta: { name: "update", description: "Update access role" },
61
+ args: {
62
+ "spec-id": { type: "string", description: "Specification ID", required: true },
63
+ "access-id": { type: "string", description: "Access entry ID", required: true },
64
+ role: { type: "string", description: "New role", required: true },
65
+ json: { type: "boolean", description: "Output as JSON", default: false },
66
+ },
67
+ async run({ args }) {
68
+ try {
69
+ const client = getClient();
70
+ const result = await client.access.update(args["spec-id"], args["access-id"], { role: args.role });
71
+ outputResult(handleApiResult(result), args.json);
72
+ }
73
+ catch (error) {
74
+ handleError(error);
75
+ }
76
+ },
77
+ }),
78
+ revoke: defineCommand({
79
+ meta: { name: "revoke", description: "Revoke access from a specification" },
80
+ args: {
81
+ "spec-id": { type: "string", description: "Specification ID", required: true },
82
+ "access-id": { type: "string", description: "Access entry ID", required: true },
83
+ json: { type: "boolean", description: "Output as JSON", default: false },
84
+ },
85
+ async run({ args }) {
86
+ try {
87
+ const client = getClient();
88
+ const result = await client.access.revoke(args["spec-id"], args["access-id"]);
89
+ outputResult(handleApiResult(result), args.json);
90
+ }
91
+ catch (error) {
92
+ handleError(error);
93
+ }
94
+ },
95
+ }),
96
+ },
97
+ });
98
+ //# sourceMappingURL=access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/commands/access.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ export default _default;
3
+ //# sourceMappingURL=amendments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amendments.d.ts","sourceRoot":"","sources":["../../src/commands/amendments.ts"],"names":[],"mappings":";AAYA,wBAgDG"}
@@ -0,0 +1,61 @@
1
+ import { defineCommand } from "citty";
2
+ import { createClient } from "specforge-sdk";
3
+ import { loadConfig, requireAuth } from "../lib/config";
4
+ import { handleApiResult, handleError } from "../lib/errors";
5
+ import { outputResult } from "../lib/output";
6
+ function getClient() {
7
+ const config = loadConfig();
8
+ const token = requireAuth(config);
9
+ return createClient({ baseUrl: config.baseUrl, auth: { accessToken: token } });
10
+ }
11
+ export default defineCommand({
12
+ meta: { name: "amendments", description: "Specification amendment management" },
13
+ subCommands: {
14
+ create: defineCommand({
15
+ meta: { name: "create", description: "Create an amendment" },
16
+ args: {
17
+ "spec-id": { type: "string", description: "Specification ID", required: true },
18
+ title: { type: "string", description: "Amendment title", required: true },
19
+ content: { type: "string", description: "Amendment content", required: true },
20
+ json: { type: "boolean", description: "Output as JSON", default: false },
21
+ },
22
+ async run({ args }) {
23
+ try {
24
+ const client = getClient();
25
+ const result = await client.amendments.create(args["spec-id"], {
26
+ title: args.title,
27
+ content: args.content,
28
+ });
29
+ outputResult(handleApiResult(result), args.json);
30
+ }
31
+ catch (error) {
32
+ handleError(error);
33
+ }
34
+ },
35
+ }),
36
+ list: defineCommand({
37
+ meta: { name: "list", description: "List amendments for a specification" },
38
+ args: {
39
+ "spec-id": { type: "string", description: "Specification ID", required: true },
40
+ format: {
41
+ type: "string",
42
+ description: "Output format (json, table, yaml)",
43
+ default: "table",
44
+ },
45
+ json: { type: "boolean", description: "Output as JSON", default: false },
46
+ },
47
+ async run({ args }) {
48
+ try {
49
+ const client = getClient();
50
+ const result = await client.amendments.list(args["spec-id"]);
51
+ const isJson = args.json || args.format === "json";
52
+ outputResult(handleApiResult(result), isJson, ["id", "title", "createdAt"]);
53
+ }
54
+ catch (error) {
55
+ handleError(error);
56
+ }
57
+ },
58
+ }),
59
+ },
60
+ });
61
+ //# sourceMappingURL=amendments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amendments.js","sourceRoot":"","sources":["../../src/commands/amendments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ export default _default;
3
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":";AAYA,wBA4DG"}
@@ -0,0 +1,73 @@
1
+ import { defineCommand } from "citty";
2
+ import { createClient } from "specforge-sdk";
3
+ import { loadConfig, requireAuth } from "../lib/config";
4
+ import { handleApiResult, handleError } from "../lib/errors";
5
+ import { outputResult } from "../lib/output";
6
+ function getClient() {
7
+ const config = loadConfig();
8
+ const token = requireAuth(config);
9
+ return createClient({ baseUrl: config.baseUrl, auth: { accessToken: token } });
10
+ }
11
+ export default defineCommand({
12
+ meta: { name: "audit", description: "Audit event management" },
13
+ subCommands: {
14
+ list: defineCommand({
15
+ meta: { name: "list", description: "List audit events" },
16
+ args: {
17
+ "resource-type": { type: "string", description: "Filter by resource type" },
18
+ "actor-id": { type: "string", description: "Filter by actor ID" },
19
+ from: { type: "string", description: "From date (ISO 8601)" },
20
+ to: { type: "string", description: "To date (ISO 8601)" },
21
+ page: { type: "string", description: "Page number" },
22
+ format: {
23
+ type: "string",
24
+ description: "Output format (json, table, yaml)",
25
+ default: "table",
26
+ },
27
+ json: { type: "boolean", description: "Output as JSON", default: false },
28
+ },
29
+ async run({ args }) {
30
+ try {
31
+ const client = getClient();
32
+ const pageStr = args.page;
33
+ const result = await client.audit.list({
34
+ resourceType: args["resource-type"],
35
+ actorId: args["actor-id"],
36
+ from: args.from,
37
+ to: args.to,
38
+ page: pageStr ? Number(pageStr) : undefined,
39
+ });
40
+ const isJson = args.json || args.format === "json";
41
+ outputResult(handleApiResult(result), isJson, [
42
+ "id",
43
+ "action",
44
+ "resourceType",
45
+ "actorName",
46
+ "createdAt",
47
+ ]);
48
+ }
49
+ catch (error) {
50
+ handleError(error);
51
+ }
52
+ },
53
+ }),
54
+ show: defineCommand({
55
+ meta: { name: "show", description: "Show audit event details" },
56
+ args: {
57
+ id: { type: "string", description: "Audit event ID", required: true },
58
+ json: { type: "boolean", description: "Output as JSON", default: false },
59
+ },
60
+ async run({ args }) {
61
+ try {
62
+ const client = getClient();
63
+ const result = await client.audit.get(args.id);
64
+ outputResult(handleApiResult(result), args.json);
65
+ }
66
+ catch (error) {
67
+ handleError(error);
68
+ }
69
+ },
70
+ }),
71
+ },
72
+ });
73
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ export default _default;
3
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":";AAOA,wBAkRG"}
@@ -0,0 +1,275 @@
1
+ import { defineCommand } from "citty";
2
+ import { createClient } from "specforge-sdk";
3
+ import { loadConfig, requireAuth, saveConfig } from "../lib/config";
4
+ import { handleApiResult, handleError } from "../lib/errors";
5
+ import { ExitCode } from "../lib/exit-codes";
6
+ import { outputResult } from "../lib/output";
7
+ export default defineCommand({
8
+ meta: { name: "auth", description: "Authentication commands" },
9
+ subCommands: {
10
+ login: defineCommand({
11
+ meta: { name: "login", description: "Login via magic link (opens browser)" },
12
+ args: {
13
+ email: { type: "string", description: "Email address", required: true },
14
+ json: { type: "boolean", description: "Output as JSON", default: false },
15
+ },
16
+ async run({ args }) {
17
+ try {
18
+ const config = loadConfig();
19
+ const client = createClient({ baseUrl: config.baseUrl });
20
+ const result = await client.auth.requestMagicLink(args.email);
21
+ if (result.error) {
22
+ const err = result.error.error;
23
+ console.error(`Error: ${err?.message ?? "Failed to send magic link"}`);
24
+ process.exit(ExitCode.AUTH_ERROR);
25
+ }
26
+ outputResult({ message: "Magic link sent. Check your email to complete login." }, args.json);
27
+ }
28
+ catch (error) {
29
+ handleError(error);
30
+ }
31
+ },
32
+ }),
33
+ "verify-token": defineCommand({
34
+ meta: {
35
+ name: "verify-token",
36
+ description: "Verify a magic link token and save credentials",
37
+ },
38
+ args: {
39
+ token: { type: "string", description: "Magic link token from email", required: true },
40
+ json: { type: "boolean", description: "Output as JSON", default: false },
41
+ },
42
+ async run({ args }) {
43
+ try {
44
+ const config = loadConfig();
45
+ const client = createClient({ baseUrl: config.baseUrl });
46
+ const result = await client.auth.verifyMagicLink(args.token);
47
+ if (result.error) {
48
+ const err = result.error.error;
49
+ console.error(`Error: ${err?.message ?? "Invalid token"}`);
50
+ process.exit(ExitCode.AUTH_ERROR);
51
+ }
52
+ const data = result.data;
53
+ if (data?.accessToken) {
54
+ config.accessToken = data.accessToken;
55
+ saveConfig(config);
56
+ }
57
+ outputResult({ message: "Authenticated successfully." }, args.json);
58
+ }
59
+ catch (error) {
60
+ handleError(error);
61
+ }
62
+ },
63
+ }),
64
+ logout: defineCommand({
65
+ meta: { name: "logout", description: "Clear saved credentials" },
66
+ args: {
67
+ json: { type: "boolean", description: "Output as JSON", default: false },
68
+ },
69
+ run({ args }) {
70
+ const config = loadConfig();
71
+ delete config.accessToken;
72
+ saveConfig(config);
73
+ outputResult({ message: "Logged out." }, args.json);
74
+ },
75
+ }),
76
+ status: defineCommand({
77
+ meta: { name: "status", description: "Show current authentication status" },
78
+ args: {
79
+ json: { type: "boolean", description: "Output as JSON", default: false },
80
+ },
81
+ async run({ args }) {
82
+ try {
83
+ const config = loadConfig();
84
+ const json = args.json;
85
+ if (!config.accessToken) {
86
+ outputResult({ authenticated: false, message: "Not authenticated." }, json);
87
+ return;
88
+ }
89
+ const client = createClient({
90
+ baseUrl: config.baseUrl,
91
+ auth: { accessToken: config.accessToken },
92
+ });
93
+ const result = await client.user.getMe();
94
+ if (result.error) {
95
+ outputResult({ authenticated: false, message: "Token is invalid or expired." }, json);
96
+ return;
97
+ }
98
+ outputResult({ authenticated: true, ...result.data }, json);
99
+ }
100
+ catch (error) {
101
+ handleError(error);
102
+ }
103
+ },
104
+ }),
105
+ token: defineCommand({
106
+ meta: { name: "token", description: "Display the current access token" },
107
+ args: {
108
+ json: { type: "boolean", description: "Output as JSON", default: false },
109
+ },
110
+ run({ args }) {
111
+ const config = loadConfig();
112
+ const token = requireAuth(config);
113
+ outputResult({ accessToken: token }, args.json);
114
+ },
115
+ }),
116
+ "oauth-create": defineCommand({
117
+ meta: { name: "oauth-create", description: "Create an OAuth application" },
118
+ args: {
119
+ name: { type: "string", description: "App name", required: true },
120
+ "redirect-uris": {
121
+ type: "string",
122
+ description: "Comma-separated redirect URIs",
123
+ required: true,
124
+ },
125
+ scopes: {
126
+ type: "string",
127
+ description: "Comma-separated scopes",
128
+ required: true,
129
+ },
130
+ description: { type: "string", description: "App description" },
131
+ json: { type: "boolean", description: "Output as JSON", default: false },
132
+ },
133
+ async run({ args }) {
134
+ try {
135
+ const config = loadConfig();
136
+ const token = requireAuth(config);
137
+ const client = createClient({
138
+ baseUrl: config.baseUrl,
139
+ auth: { accessToken: token },
140
+ });
141
+ const result = await client.auth.createOAuthApp({
142
+ name: args.name,
143
+ redirectUris: args["redirect-uris"].split(","),
144
+ scopes: args.scopes.split(","),
145
+ description: args.description,
146
+ });
147
+ outputResult(handleApiResult(result), args.json);
148
+ }
149
+ catch (error) {
150
+ handleError(error);
151
+ }
152
+ },
153
+ }),
154
+ "oauth-list": defineCommand({
155
+ meta: { name: "oauth-list", description: "List OAuth applications" },
156
+ args: {
157
+ format: {
158
+ type: "string",
159
+ description: "Output format (json, table, yaml)",
160
+ default: "table",
161
+ },
162
+ json: { type: "boolean", description: "Output as JSON", default: false },
163
+ },
164
+ async run({ args }) {
165
+ try {
166
+ const config = loadConfig();
167
+ const token = requireAuth(config);
168
+ const client = createClient({
169
+ baseUrl: config.baseUrl,
170
+ auth: { accessToken: token },
171
+ });
172
+ const result = await client.auth.listOAuthApps();
173
+ const isJson = args.json || args.format === "json";
174
+ outputResult(handleApiResult(result), isJson, ["id", "name", "createdAt"]);
175
+ }
176
+ catch (error) {
177
+ handleError(error);
178
+ }
179
+ },
180
+ }),
181
+ "oauth-delete": defineCommand({
182
+ meta: { name: "oauth-delete", description: "Delete an OAuth application" },
183
+ args: {
184
+ id: { type: "string", description: "OAuth app ID", required: true },
185
+ json: { type: "boolean", description: "Output as JSON", default: false },
186
+ },
187
+ async run({ args }) {
188
+ try {
189
+ const config = loadConfig();
190
+ const token = requireAuth(config);
191
+ const client = createClient({
192
+ baseUrl: config.baseUrl,
193
+ auth: { accessToken: token },
194
+ });
195
+ const result = await client.auth.deleteOAuthApp(args.id);
196
+ outputResult(handleApiResult(result), args.json);
197
+ }
198
+ catch (error) {
199
+ handleError(error);
200
+ }
201
+ },
202
+ }),
203
+ "oauth-rotate-secret": defineCommand({
204
+ meta: { name: "oauth-rotate-secret", description: "Rotate an OAuth app secret" },
205
+ args: {
206
+ id: { type: "string", description: "OAuth app ID", required: true },
207
+ json: { type: "boolean", description: "Output as JSON", default: false },
208
+ },
209
+ async run({ args }) {
210
+ try {
211
+ const config = loadConfig();
212
+ const token = requireAuth(config);
213
+ const client = createClient({
214
+ baseUrl: config.baseUrl,
215
+ auth: { accessToken: token },
216
+ });
217
+ const result = await client.auth.rotateSecret(args.id);
218
+ outputResult(handleApiResult(result), args.json);
219
+ }
220
+ catch (error) {
221
+ handleError(error);
222
+ }
223
+ },
224
+ }),
225
+ "oauth-get-token": defineCommand({
226
+ meta: { name: "oauth-get-token", description: "Get an OAuth token" },
227
+ args: {
228
+ "grant-type": { type: "string", description: "Grant type", required: true },
229
+ "client-id": { type: "string", description: "Client ID", required: true },
230
+ "client-secret": { type: "string", description: "Client secret" },
231
+ code: { type: "string", description: "Authorization code" },
232
+ "refresh-token": { type: "string", description: "Refresh token" },
233
+ "redirect-uri": { type: "string", description: "Redirect URI" },
234
+ json: { type: "boolean", description: "Output as JSON", default: false },
235
+ },
236
+ async run({ args }) {
237
+ try {
238
+ const config = loadConfig();
239
+ const client = createClient({ baseUrl: config.baseUrl });
240
+ const result = await client.auth.getToken({
241
+ grantType: args["grant-type"],
242
+ clientId: args["client-id"],
243
+ clientSecret: args["client-secret"],
244
+ code: args.code,
245
+ refreshToken: args["refresh-token"],
246
+ redirectUri: args["redirect-uri"],
247
+ });
248
+ outputResult(handleApiResult(result), args.json);
249
+ }
250
+ catch (error) {
251
+ handleError(error);
252
+ }
253
+ },
254
+ }),
255
+ "oauth-revoke": defineCommand({
256
+ meta: { name: "oauth-revoke", description: "Revoke an OAuth token" },
257
+ args: {
258
+ token: { type: "string", description: "Token to revoke", required: true },
259
+ json: { type: "boolean", description: "Output as JSON", default: false },
260
+ },
261
+ async run({ args }) {
262
+ try {
263
+ const config = loadConfig();
264
+ const client = createClient({ baseUrl: config.baseUrl });
265
+ const result = await client.auth.revokeToken(args.token);
266
+ outputResult(handleApiResult(result), args.json);
267
+ }
268
+ catch (error) {
269
+ handleError(error);
270
+ }
271
+ },
272
+ }),
273
+ },
274
+ });
275
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,aAAa,CAAC;IAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE;IAC9D,WAAW,EAAE;QACZ,KAAK,EAAE,aAAa,CAAC;YACpB,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sCAAsC,EAAE;YAC5E,IAAI,EAAE;gBACL,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACvE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;gBACjB,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;oBACxE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBAClB,MAAM,GAAG,GAAI,MAAM,CAAC,KAA0C,CAAC,KAAK,CAAC;wBACrE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,2BAA2B,EAAE,CAAC,CAAC;wBACvE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBACnC,CAAC;oBACD,YAAY,CACX,EAAE,OAAO,EAAE,sDAAsD,EAAE,EACnE,IAAI,CAAC,IAAe,CACpB,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;SACD,CAAC;QAEF,cAAc,EAAE,aAAa,CAAC;YAC7B,IAAI,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,gDAAgD;aAC7D;YACD,IAAI,EAAE;gBACL,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACrF,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;gBACjB,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;oBACvE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBAClB,MAAM,GAAG,GAAI,MAAM,CAAC,KAA0C,CAAC,KAAK,CAAC;wBACrE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;wBAC3D,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBACnC,CAAC;oBACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAgC,CAAC;oBACrD,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC;wBACvB,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;wBACtC,UAAU,CAAC,MAAM,CAAC,CAAC;oBACpB,CAAC;oBACD,YAAY,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,EAAE,IAAI,CAAC,IAAe,CAAC,CAAC;gBAChF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;SACD,CAAC;QAEF,MAAM,EAAE,aAAa,CAAC;YACrB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;YAChE,IAAI,EAAE;gBACL,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,GAAG,CAAC,EAAE,IAAI,EAAE;gBACX,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC5B,OAAO,MAAM,CAAC,WAAW,CAAC;gBAC1B,UAAU,CAAC,MAAM,CAAC,CAAC;gBACnB,YAAY,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,IAAe,CAAC,CAAC;YAChE,CAAC;SACD,CAAC;QAEF,MAAM,EAAE,aAAa,CAAC;YACrB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;YAC3E,IAAI,EAAE;gBACL,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;gBACjB,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAe,CAAC;oBAClC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;wBACzB,YAAY,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;wBAC5E,OAAO;oBACR,CAAC;oBACD,MAAM,MAAM,GAAG,YAAY,CAAC;wBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;qBACzC,CAAC,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACzC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBAClB,YAAY,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,EAAE,EAAE,IAAI,CAAC,CAAC;wBACtF,OAAO;oBACR,CAAC;oBACD,YAAY,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,GAAI,MAAM,CAAC,IAAgC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC1F,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;SACD,CAAC;QAEF,KAAK,EAAE,aAAa,CAAC;YACpB,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kCAAkC,EAAE;YACxE,IAAI,EAAE;gBACL,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,GAAG,CAAC,EAAE,IAAI,EAAE;gBACX,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClC,YAAY,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,IAAe,CAAC,CAAC;YAC5D,CAAC;SACD,CAAC;QAEF,cAAc,EAAE,aAAa,CAAC;YAC7B,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,6BAA6B,EAAE;YAC1E,IAAI,EAAE;gBACL,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACjE,eAAe,EAAE;oBAChB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+BAA+B;oBAC5C,QAAQ,EAAE,IAAI;iBACd;gBACD,MAAM,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wBAAwB;oBACrC,QAAQ,EAAE,IAAI;iBACd;gBACD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;gBAC/D,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;gBACjB,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;oBAClC,MAAM,MAAM,GAAG,YAAY,CAAC;wBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;qBAC5B,CAAC,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;wBAC/C,IAAI,EAAE,IAAI,CAAC,IAAc;wBACzB,YAAY,EAAG,IAAI,CAAC,eAAe,CAAY,CAAC,KAAK,CAAC,GAAG,CAAC;wBAC1D,MAAM,EAAG,IAAI,CAAC,MAAiB,CAAC,KAAK,CAAC,GAAG,CAAC;wBAC1C,WAAW,EAAE,IAAI,CAAC,WAAiC;qBACnD,CAAC,CAAC;oBACH,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAe,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;SACD,CAAC;QAEF,YAAY,EAAE,aAAa,CAAC;YAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,yBAAyB,EAAE;YACpE,IAAI,EAAE;gBACL,MAAM,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mCAAmC;oBAChD,OAAO,EAAE,OAAO;iBAChB;gBACD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;gBACjB,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;oBAClC,MAAM,MAAM,GAAG,YAAY,CAAC;wBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;qBAC5B,CAAC,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACjD,MAAM,MAAM,GAAI,IAAI,CAAC,IAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;oBAChE,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;gBAC5E,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;SACD,CAAC;QAEF,cAAc,EAAE,aAAa,CAAC;YAC7B,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,6BAA6B,EAAE;YAC1E,IAAI,EAAE;gBACL,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACnE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;gBACjB,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;oBAClC,MAAM,MAAM,GAAG,YAAY,CAAC;wBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;qBAC5B,CAAC,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAY,CAAC,CAAC;oBACnE,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAe,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;SACD,CAAC;QAEF,qBAAqB,EAAE,aAAa,CAAC;YACpC,IAAI,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,4BAA4B,EAAE;YAChF,IAAI,EAAE;gBACL,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACnE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;gBACjB,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;oBAClC,MAAM,MAAM,GAAG,YAAY,CAAC;wBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;qBAC5B,CAAC,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAY,CAAC,CAAC;oBACjE,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAe,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;SACD,CAAC;QAEF,iBAAiB,EAAE,aAAa,CAAC;YAChC,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE;YACpE,IAAI,EAAE;gBACL,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC3E,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACzE,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;gBACjE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBAC3D,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;gBACjE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;gBAC/D,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;gBACjB,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;wBACzC,SAAS,EAAE,IAAI,CAAC,YAAY,CAGV;wBAClB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAW;wBACrC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAuB;wBACzD,IAAI,EAAE,IAAI,CAAC,IAA0B;wBACrC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAuB;wBACzD,WAAW,EAAE,IAAI,CAAC,cAAc,CAAuB;qBACvD,CAAC,CAAC;oBACH,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAe,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;SACD,CAAC;QAEF,cAAc,EAAE,aAAa,CAAC;YAC7B,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,uBAAuB,EAAE;YACpE,IAAI,EAAE;gBACL,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACzE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;aACxE;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;gBACjB,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;oBACnE,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAe,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;SACD,CAAC;KACF;CACD,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ export default _default;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":";AAKA,wBAiEG"}