sitevision-cli 1.0.0-beta.8 → 1.0.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.
Files changed (100) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/LICENSE +21 -0
  3. package/dist/cli.js +194 -70
  4. package/dist/commands/TaskScreen.js +32 -0
  5. package/dist/commands/build.js +6 -185
  6. package/dist/commands/deploy.js +95 -212
  7. package/dist/commands/dev.js +87 -416
  8. package/dist/commands/info.js +1 -1
  9. package/dist/commands/setup-signing.js +50 -33
  10. package/dist/commands/sign.js +9 -86
  11. package/dist/commands/use-finish.js +17 -0
  12. package/dist/commands/watch.js +5 -31
  13. package/dist/components/AnimatedLogo.js +8 -2
  14. package/dist/components/AuthLoginScreen.js +33 -15
  15. package/dist/components/PasswordInput.js +2 -1
  16. package/dist/scaffold/inquirer-stub.js +119 -0
  17. package/dist/scaffold/register.js +15 -0
  18. package/dist/shell/AddonPicker.js +54 -0
  19. package/dist/shell/Changelog.js +44 -0
  20. package/dist/shell/CommandPalette.js +63 -0
  21. package/dist/shell/ConfigForm.js +703 -0
  22. package/dist/shell/Frame.js +138 -0
  23. package/dist/shell/Help.js +96 -0
  24. package/dist/shell/Popover.js +15 -0
  25. package/dist/shell/Settings.js +149 -0
  26. package/dist/shell/Shell.js +953 -0
  27. package/dist/shell/Tabs.js +96 -0
  28. package/dist/shell/actions.js +493 -0
  29. package/dist/utils/config.js +62 -2
  30. package/dist/utils/create-app.js +231 -0
  31. package/dist/utils/debug.js +32 -0
  32. package/dist/utils/environments.js +74 -0
  33. package/dist/utils/i18n.js +369 -0
  34. package/dist/utils/jsonc.js +2 -1
  35. package/dist/utils/keychain.js +54 -6
  36. package/dist/utils/oauth2-auth.js +146 -43
  37. package/dist/utils/password-prompt.js +37 -3
  38. package/dist/utils/process-runner.js +77 -38
  39. package/dist/utils/project-detection.js +457 -112
  40. package/dist/utils/session-cookie-auth.js +10 -6
  41. package/dist/utils/sitevision-api.js +162 -32
  42. package/dist/utils/sitevision-scripts-runner.js +50 -22
  43. package/dist/utils/tasks.js +510 -0
  44. package/dist/utils/version-check.js +3 -3
  45. package/dist/utils/webpack-runner.js +9 -5
  46. package/dist/utils/workspace.js +105 -0
  47. package/dist/utils/zip.js +18 -19
  48. package/package.json +27 -4
  49. package/readme.md +113 -141
  50. package/dist/app.d.ts +0 -6
  51. package/dist/app.js +0 -307
  52. package/dist/cli.d.ts +0 -2
  53. package/dist/commands/build.d.ts +0 -12
  54. package/dist/commands/deploy.d.ts +0 -16
  55. package/dist/commands/dev.d.ts +0 -16
  56. package/dist/commands/index.d.ts +0 -4
  57. package/dist/commands/info.d.ts +0 -2
  58. package/dist/commands/setup-signing.d.ts +0 -2
  59. package/dist/commands/sign.d.ts +0 -14
  60. package/dist/commands/types.d.ts +0 -18
  61. package/dist/commands/watch.d.ts +0 -2
  62. package/dist/components/AnimatedLogo.d.ts +0 -10
  63. package/dist/components/AuthLoginScreen.d.ts +0 -21
  64. package/dist/components/DevPropertiesForm.d.ts +0 -10
  65. package/dist/components/DevPropertiesForm.js +0 -210
  66. package/dist/components/InfoScreen.d.ts +0 -7
  67. package/dist/components/InfoScreen.js +0 -14
  68. package/dist/components/KeychainPasswordChoice.d.ts +0 -8
  69. package/dist/components/KeychainPasswordChoice.js +0 -30
  70. package/dist/components/MainMenu.d.ts +0 -7
  71. package/dist/components/MainMenu.js +0 -83
  72. package/dist/components/PasswordInput.d.ts +0 -10
  73. package/dist/components/ProcessOutput.d.ts +0 -6
  74. package/dist/components/ProcessOutput.js +0 -30
  75. package/dist/components/SetupFlow.d.ts +0 -8
  76. package/dist/components/SetupFlow.js +0 -233
  77. package/dist/components/SigningPropertiesForm.d.ts +0 -7
  78. package/dist/components/SigningPropertiesForm.js +0 -38
  79. package/dist/components/StatusIndicator.d.ts +0 -8
  80. package/dist/components/TextInput.d.ts +0 -10
  81. package/dist/components/TextInput.js +0 -29
  82. package/dist/components/WelcomeScreen.d.ts +0 -14
  83. package/dist/types/index.d.ts +0 -284
  84. package/dist/utils/branding.d.ts +0 -28
  85. package/dist/utils/config.d.ts +0 -17
  86. package/dist/utils/jsonc.d.ts +0 -19
  87. package/dist/utils/keychain.d.ts +0 -15
  88. package/dist/utils/oauth2-auth.d.ts +0 -27
  89. package/dist/utils/password-prompt.d.ts +0 -14
  90. package/dist/utils/process-runner.d.ts +0 -22
  91. package/dist/utils/project-detection.d.ts +0 -151
  92. package/dist/utils/session-cookie-auth.d.ts +0 -34
  93. package/dist/utils/signing-password.d.ts +0 -12
  94. package/dist/utils/signing-step.d.ts +0 -15
  95. package/dist/utils/signing-step.js +0 -16
  96. package/dist/utils/sitevision-api.d.ts +0 -112
  97. package/dist/utils/sitevision-scripts-runner.d.ts +0 -83
  98. package/dist/utils/version-check.d.ts +0 -9
  99. package/dist/utils/webpack-runner.d.ts +0 -76
  100. package/dist/utils/zip.d.ts +0 -71
package/dist/app.js DELETED
@@ -1,307 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useCallback, useMemo, useState } from 'react';
3
- import { detectProject } from './utils/project-detection.js';
4
- import { MainMenu } from './components/MainMenu.js';
5
- import { InfoScreen } from './components/InfoScreen.js';
6
- import { SetupFlow } from './components/SetupFlow.js';
7
- import { PasswordInput } from './components/PasswordInput.js';
8
- import { KeychainPasswordChoice } from './components/KeychainPasswordChoice.js';
9
- import { decideSigningStep } from './utils/signing-step.js';
10
- import { DevScreen } from './commands/dev.js';
11
- import { BuildScreen } from './commands/build.js';
12
- import { DeployScreen } from './commands/deploy.js';
13
- import { SignScreen } from './commands/sign.js';
14
- import { SigningPropertiesForm } from './components/SigningPropertiesForm.js';
15
- import { getSigningPassword, setDeployPassword as saveDeployPassword, setSigningPassword as saveSigningPassword, } from './utils/keychain.js';
16
- const NONBASIC_DEV_UNSUPPORTED = '\x1b[33mdev/watch support only basic auth. Use `svc deploy` for OAuth2/cookie.\x1b[0m';
17
- export default function App({ project: initialProject }) {
18
- // The project is loaded once at startup, but setup flows write new values to
19
- // disk and the OS keychain. Hold it in state so we can re-detect after setup
20
- // and pick up those changes (e.g. saved passwords) without restarting the CLI.
21
- const [project, setProject] = useState(initialProject);
22
- const reloadProject = useCallback(() => {
23
- try {
24
- const refreshed = detectProject(initialProject.root);
25
- if (refreshed)
26
- setProject(refreshed);
27
- }
28
- catch {
29
- // Re-detection failed (e.g. manifest became unparseable mid-session) —
30
- // keep the existing in-memory project rather than crashing.
31
- }
32
- }, [initialProject.root]);
33
- const [state, setState] = useState('setup');
34
- const [currentCommand, setCurrentCommand] = useState('');
35
- const [signingPassword, setSigningPassword] = useState('');
36
- const [devPassword, setDevPassword] = useState('');
37
- // When true, skip the keychain "use saved / enter new" choice and go straight
38
- // to manual entry (e.g. the saved password just failed and we're retrying).
39
- const [signingRetry, setSigningRetry] = useState(false);
40
- // Read the saved signing password from the keychain once (keychain access is
41
- // slow and this component re-renders frequently).
42
- const signingUsername = project.devProperties?.signingUsername;
43
- const storedSigningPassword = useMemo(() => (signingUsername ? getSigningPassword(signingUsername) : null), [signingUsername]);
44
- // Map a signing-capable command to the screen it lands on once the signing
45
- // password is resolved.
46
- const signedDestination = (command = currentCommand) => {
47
- if (command === 'dev-signed')
48
- return 'dev';
49
- if (command === 'watch-signed')
50
- return 'watch';
51
- return 'sign';
52
- };
53
- // Decide the next step once a signing password is needed: proceed if we already
54
- // have one this session, offer the keychain choice if one is saved, otherwise
55
- // prompt for manual entry.
56
- const routeToSigningStep = (command = currentCommand) => {
57
- const step = decideSigningStep({
58
- hasSessionPassword: Boolean(signingPassword),
59
- hasStoredPassword: Boolean(storedSigningPassword),
60
- isRetry: signingRetry,
61
- });
62
- if (step === 'proceed') {
63
- setState(signedDestination(command));
64
- }
65
- else if (step === 'choice') {
66
- setState('signing-password-choice');
67
- }
68
- else {
69
- setState('signing-password-input');
70
- }
71
- };
72
- // Check if dev password is available (either from file or session)
73
- const hasDevPassword = Boolean(project.devProperties?.password || devPassword);
74
- // OAuth2 / cookie configs authenticate with a token or session resolved at
75
- // deploy time, so they need no basic password. `svc dev`/`watch` stay basic.
76
- const authMethod = project.devProperties?.authMethod ?? 'basic';
77
- const isTokenAuth = authMethod === 'oauth2' || authMethod === 'cookie';
78
- const deployAuthReady = isTokenAuth || hasDevPassword;
79
- // Get effective dev properties with session password if needed
80
- const getEffectiveDevProperties = () => {
81
- if (!project.devProperties)
82
- return undefined;
83
- // Non-basic configs authenticate by token/cookie — never graft a password.
84
- if (isTokenAuth)
85
- return project.devProperties;
86
- if (project.devProperties.password)
87
- return project.devProperties;
88
- return { ...project.devProperties, password: devPassword };
89
- };
90
- const handleDevPasswordSubmit = (password, remember) => {
91
- setDevPassword(password);
92
- if (remember &&
93
- project.devProperties?.domain &&
94
- project.devProperties.username &&
95
- password) {
96
- saveDeployPassword(project.devProperties.domain, project.devProperties.username, password);
97
- }
98
- // Continue to the intended command
99
- if (currentCommand === 'dev' || currentCommand === 'dev-signed') {
100
- if (currentCommand === 'dev-signed') {
101
- routeToSigningStep();
102
- }
103
- else {
104
- setState('dev');
105
- }
106
- }
107
- else if (currentCommand.startsWith('deploy')) {
108
- setState('deploy');
109
- }
110
- };
111
- const handleUseSavedSigning = () => {
112
- if (storedSigningPassword) {
113
- setSigningPassword(storedSigningPassword);
114
- }
115
- setState(signedDestination());
116
- };
117
- const handleEnterNewSigning = () => {
118
- setState('signing-password-input');
119
- };
120
- const handleSigningPasswordSubmit = (password, remember) => {
121
- setSigningPassword(password);
122
- if (remember && project.devProperties?.signingUsername && password) {
123
- saveSigningPassword(project.devProperties.signingUsername, password);
124
- }
125
- setState(signedDestination());
126
- };
127
- const handleCommandSelect = (command) => {
128
- setCurrentCommand(command);
129
- // Fresh selection from the menu — re-offer the saved keychain password.
130
- setSigningRetry(false);
131
- switch (command) {
132
- case 'info':
133
- setState('info');
134
- break;
135
- case 'setup-signing':
136
- setState('setup-signing');
137
- break;
138
- case 'dev':
139
- if (!project.hasDevProperties || !project.devProperties) {
140
- console.log('\x1b[31mDevelopment properties not configured. Create a .dev_properties.json file first.\x1b[0m');
141
- return;
142
- }
143
- if (isTokenAuth) {
144
- console.log(NONBASIC_DEV_UNSUPPORTED);
145
- return;
146
- }
147
- if (!hasDevPassword) {
148
- setState('dev-password-input');
149
- }
150
- else {
151
- setState('dev');
152
- }
153
- break;
154
- case 'dev-signed':
155
- if (!project.hasDevProperties || !project.devProperties) {
156
- console.log('\x1b[31mDevelopment properties not configured. Create a .dev_properties.json file first.\x1b[0m');
157
- return;
158
- }
159
- if (!project.hasSigningProperties) {
160
- console.log('\x1b[31mSigning credentials not configured. Run svc setup-signing first.\x1b[0m');
161
- return;
162
- }
163
- if (isTokenAuth) {
164
- console.log(NONBASIC_DEV_UNSUPPORTED);
165
- return;
166
- }
167
- // Need both dev password and signing password
168
- if (!hasDevPassword) {
169
- setState('dev-password-input');
170
- }
171
- else {
172
- routeToSigningStep(command);
173
- }
174
- break;
175
- case 'watch':
176
- // Build/sign-only: no deploy and no signing, so no credentials needed.
177
- setState('watch');
178
- break;
179
- case 'watch-signed':
180
- if (!project.hasDevProperties || !project.devProperties) {
181
- console.log('\x1b[31mDevelopment properties not configured. Create a .dev_properties.json file first.\x1b[0m');
182
- return;
183
- }
184
- if (!project.hasSigningProperties) {
185
- console.log('\x1b[31mSigning credentials not configured. Run svc setup-signing first.\x1b[0m');
186
- return;
187
- }
188
- if (isTokenAuth) {
189
- console.log(NONBASIC_DEV_UNSUPPORTED);
190
- return;
191
- }
192
- routeToSigningStep(command);
193
- break;
194
- case 'sign':
195
- if (!project.hasDevProperties || !project.devProperties) {
196
- console.log('\x1b[31mDevelopment properties not configured. Create a .dev_properties.json file first.\x1b[0m');
197
- return;
198
- }
199
- if (!project.hasSigningProperties) {
200
- console.log('\x1b[31mSigning credentials not configured. Run svc setup-signing first.\x1b[0m');
201
- return;
202
- }
203
- routeToSigningStep(command);
204
- break;
205
- case 'build':
206
- setState('build');
207
- break;
208
- case 'deploy':
209
- case 'deploy-force':
210
- case 'deploy-production':
211
- if (!project.hasDevProperties || !project.devProperties) {
212
- console.log('\x1b[31mDevelopment properties not configured. Create a .dev_properties.json file first.\x1b[0m');
213
- return;
214
- }
215
- if (!deployAuthReady) {
216
- setState('dev-password-input');
217
- }
218
- else {
219
- setState('deploy');
220
- }
221
- break;
222
- }
223
- };
224
- if (state === 'setup') {
225
- return (_jsx(SetupFlow, { project: project, onReload: reloadProject, onComplete: () => setState('menu') }));
226
- }
227
- if (state === 'menu') {
228
- return _jsx(MainMenu, { project: project, onSelect: handleCommandSelect });
229
- }
230
- if (state === 'info') {
231
- return _jsx(InfoScreen, { project: project, onBack: () => setState('menu') });
232
- }
233
- if (state === 'dev-password-input') {
234
- return (_jsx(PasswordInput, { label: "Enter Development Password (usually Sitevision Cloud Password)", showRememberOption: Boolean(project.devProperties?.domain && project.devProperties?.username), onSubmit: handleDevPasswordSubmit, onCancel: () => setState('menu') }, "dev-password"));
235
- }
236
- if (state === 'signing-password-choice') {
237
- return (_jsx(KeychainPasswordChoice, { onUseSaved: handleUseSavedSigning, onEnterNew: handleEnterNewSigning, onCancel: () => setState('menu') }, "signing-password-choice"));
238
- }
239
- if (state === 'signing-password-input') {
240
- return (_jsx(PasswordInput, { label: "Enter Signing Password (developer.sitevision.se)", showRememberOption: Boolean(project.devProperties?.signingUsername), defaultRemember: Boolean(storedSigningPassword), rememberLabel: storedSigningPassword
241
- ? 'Update saved password in OS keychain: '
242
- : 'Save to OS keychain: ', onSubmit: handleSigningPasswordSubmit, onCancel: () => setState('menu') }, "signing-password"));
243
- }
244
- if (state === 'dev') {
245
- return (_jsx(DevScreen, { projectRoot: project.root, manifest: project.manifest, devProperties: getEffectiveDevProperties(), signed: currentCommand === 'dev-signed', onBack: () => setState('menu'), onRetryCredentials: () => {
246
- setDevPassword('');
247
- if (project.devProperties)
248
- project.devProperties.password = undefined;
249
- if (currentCommand === 'dev-signed') {
250
- setSigningPassword('');
251
- // The saved password may be what failed — don't re-offer it.
252
- setSigningRetry(true);
253
- }
254
- setState('dev-password-input');
255
- }, signingCredentials: currentCommand === 'dev-signed' &&
256
- project.devProperties?.signingUsername
257
- ? {
258
- username: project.devProperties.signingUsername,
259
- password: signingPassword,
260
- certificateName: project.devProperties.certificateName,
261
- }
262
- : undefined }));
263
- }
264
- if (state === 'watch') {
265
- const watchSigned = currentCommand === 'watch-signed';
266
- return (_jsx(DevScreen, { projectRoot: project.root, manifest: project.manifest, devProperties: project.devProperties, signed: watchSigned, deploy: false, onBack: () => setState('menu'), onRetryCredentials: watchSigned
267
- ? () => {
268
- setSigningPassword('');
269
- // The saved password may be what failed — don't re-offer it.
270
- setSigningRetry(true);
271
- routeToSigningStep('watch-signed');
272
- }
273
- : undefined, signingCredentials: watchSigned && project.devProperties?.signingUsername
274
- ? {
275
- username: project.devProperties.signingUsername,
276
- password: signingPassword,
277
- certificateName: project.devProperties.certificateName,
278
- }
279
- : undefined }));
280
- }
281
- if (state === 'build') {
282
- return (_jsx(BuildScreen, { projectRoot: project.root, manifest: project.manifest, createZip: true, onBack: () => setState('menu') }));
283
- }
284
- if (state === 'sign') {
285
- return (_jsx(SignScreen, { projectRoot: project.root, manifest: project.manifest, devProperties: project.devProperties, password: signingPassword, onBack: () => setState('menu'), onRetryCredentials: () => {
286
- setSigningPassword('');
287
- setState('signing-password-input');
288
- } }));
289
- }
290
- if (state === 'deploy') {
291
- return (_jsx(DeployScreen, { projectRoot: project.root, manifest: project.manifest, devProperties: getEffectiveDevProperties(), force: currentCommand === 'deploy-force', production: currentCommand === 'deploy-production', activate: currentCommand === 'deploy-production', onBack: () => setState('menu'), onRetryCredentials: () => {
292
- setDevPassword('');
293
- if (project.devProperties)
294
- project.devProperties.password = undefined;
295
- setState('dev-password-input');
296
- } }));
297
- }
298
- if (state === 'setup-signing') {
299
- return (_jsx(SigningPropertiesForm, { projectRoot: project.root, onComplete: () => {
300
- // Re-detect so the newly written signing credentials are reflected
301
- // in memory (hasSigningProperties, keychain password) without a restart.
302
- reloadProject();
303
- setState('menu');
304
- }, onCancel: () => setState('menu') }));
305
- }
306
- return null;
307
- }
package/dist/cli.d.ts DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import { type Command } from './types.js';
3
- import type { SitevisionManifest } from '../types/index.js';
4
- interface BuildScreenProps {
5
- projectRoot: string;
6
- manifest: SitevisionManifest;
7
- createZip?: boolean;
8
- onBack?: () => void;
9
- }
10
- export declare function BuildScreen({ projectRoot, manifest, createZip, onBack, }: BuildScreenProps): React.JSX.Element;
11
- export declare const buildCommand: Command;
12
- export {};
@@ -1,16 +0,0 @@
1
- import React from 'react';
2
- import { type Command } from './types.js';
3
- import type { SitevisionManifest, DevProperties } from '../types/index.js';
4
- interface DeployScreenProps {
5
- projectRoot: string;
6
- manifest: SitevisionManifest;
7
- devProperties: DevProperties;
8
- force: boolean;
9
- production: boolean;
10
- activate: boolean;
11
- onBack?: () => void;
12
- onRetryCredentials?: () => void;
13
- }
14
- export declare function DeployScreen({ projectRoot, manifest, devProperties, force, production, activate, onBack, onRetryCredentials, }: DeployScreenProps): React.JSX.Element;
15
- export declare const deployCommand: Command;
16
- export {};
@@ -1,16 +0,0 @@
1
- import React from 'react';
2
- import { type Command } from './types.js';
3
- import type { SitevisionManifest, DevProperties, SigningCredentials } from '../types/index.js';
4
- interface DevScreenProps {
5
- projectRoot: string;
6
- manifest: SitevisionManifest;
7
- devProperties?: DevProperties;
8
- signed: boolean;
9
- deploy?: boolean;
10
- signingCredentials?: SigningCredentials;
11
- onBack?: () => void;
12
- onRetryCredentials?: () => void;
13
- }
14
- export declare function DevScreen({ projectRoot, manifest, devProperties, signed, deploy, signingCredentials, onBack, onRetryCredentials, }: DevScreenProps): React.JSX.Element;
15
- export declare const devCommand: Command;
16
- export {};
@@ -1,4 +0,0 @@
1
- import { type Command } from './types.js';
2
- export declare const commands: Command[];
3
- export declare function getCommand(name: string): Command | undefined;
4
- export declare function getAllCommands(): Command[];
@@ -1,2 +0,0 @@
1
- import { type Command } from './types.js';
2
- export declare const infoCommand: Command;
@@ -1,2 +0,0 @@
1
- import { type Command } from './types.js';
2
- export declare const setupSigningCommand: Command;
@@ -1,14 +0,0 @@
1
- import React from 'react';
2
- import { type Command } from './types.js';
3
- import type { SitevisionManifest, DevProperties } from '../types/index.js';
4
- interface SignScreenProps {
5
- projectRoot: string;
6
- manifest: SitevisionManifest;
7
- devProperties: DevProperties;
8
- password: string;
9
- onBack?: () => void;
10
- onRetryCredentials?: () => void;
11
- }
12
- export declare function SignScreen({ projectRoot, manifest, devProperties, password, onBack, onRetryCredentials, }: SignScreenProps): React.JSX.Element;
13
- export declare const signCommand: Command;
14
- export {};
@@ -1,18 +0,0 @@
1
- import { type ProjectInfo } from '../utils/project-detection.js';
2
- export interface CommandContext {
3
- project: ProjectInfo;
4
- flags: Record<string, any>;
5
- args: string[];
6
- }
7
- export interface Command {
8
- name: string;
9
- description: string;
10
- requiresProject: boolean;
11
- flags?: Record<string, {
12
- type: 'string' | 'boolean';
13
- description: string;
14
- alias?: string;
15
- default?: any;
16
- }>;
17
- execute: (context: CommandContext) => Promise<void>;
18
- }
@@ -1,2 +0,0 @@
1
- import { type Command } from './types.js';
2
- export declare const watchCommand: Command;
@@ -1,10 +0,0 @@
1
- interface Props {
2
- art?: string[];
3
- onDone: () => void;
4
- }
5
- /**
6
- * One-shot startup flair: wipes the big wordmark in left-to-right while a
7
- * rainbow gradient drifts across it, then calls `onDone`. Purely decorative.
8
- */
9
- export declare function AnimatedLogo({ art, onDone }: Props): import("react").JSX.Element;
10
- export {};
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
- import type { DevProperties } from '../types/index.js';
3
- interface Credential {
4
- accessToken?: string;
5
- sessionCookie?: string;
6
- }
7
- interface Props {
8
- method: 'oauth2' | 'cookie';
9
- devProperties: DevProperties;
10
- onComplete: (credential: Credential) => void;
11
- onError: (message: string) => void;
12
- onCancel: () => void;
13
- }
14
- /**
15
- * Ink-native interactive login for OAuth2 and session-cookie auth. Drives the
16
- * browser and (for cookie) the "press Enter to capture" handoff through Ink's
17
- * own input, so it works inside the TUI as well as the standalone command —
18
- * neither needs to own raw stdin the way the old console prompt did.
19
- */
20
- export declare function AuthLoginScreen({ method, devProperties, onComplete, onError, onCancel, }: Props): React.JSX.Element;
21
- export {};
@@ -1,10 +0,0 @@
1
- import type { DevProperties, PackageJson } from '../types/index.js';
2
- interface Props {
3
- projectRoot: string;
4
- initialProperties?: DevProperties;
5
- packageJson: PackageJson;
6
- onComplete: () => void;
7
- onCancel: () => void;
8
- }
9
- export declare function DevPropertiesForm({ projectRoot, initialProperties, packageJson, onComplete, onCancel, }: Props): import("react").JSX.Element;
10
- export {};