@hatchway/cli 0.50.53
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 +274 -0
- package/bin/hatchway.js +31 -0
- package/dist/chunks/Banner-DL1Fpz_g.js +115 -0
- package/dist/chunks/Banner-DL1Fpz_g.js.map +1 -0
- package/dist/chunks/auto-update-Ddo5Ntt7.js +264 -0
- package/dist/chunks/auto-update-Ddo5Ntt7.js.map +1 -0
- package/dist/chunks/build-V8_D-JHF.js +116 -0
- package/dist/chunks/build-V8_D-JHF.js.map +1 -0
- package/dist/chunks/cleanup-BNuJNSve.js +141 -0
- package/dist/chunks/cleanup-BNuJNSve.js.map +1 -0
- package/dist/chunks/cli-auth-B4Do-N8Y.js +340 -0
- package/dist/chunks/cli-auth-B4Do-N8Y.js.map +1 -0
- package/dist/chunks/cli-error-1drkrXNn.js +140 -0
- package/dist/chunks/cli-error-1drkrXNn.js.map +1 -0
- package/dist/chunks/config-hFJA7z5y.js +167 -0
- package/dist/chunks/config-hFJA7z5y.js.map +1 -0
- package/dist/chunks/config-manager-DST6RbP8.js +133 -0
- package/dist/chunks/config-manager-DST6RbP8.js.map +1 -0
- package/dist/chunks/database-YGb1Lzim.js +68 -0
- package/dist/chunks/database-YGb1Lzim.js.map +1 -0
- package/dist/chunks/database-setup-U31oEs90.js +253 -0
- package/dist/chunks/database-setup-U31oEs90.js.map +1 -0
- package/dist/chunks/devtools-CPruVlOo.js +75 -0
- package/dist/chunks/devtools-CPruVlOo.js.map +1 -0
- package/dist/chunks/index-DCC6HGdr.js +119 -0
- package/dist/chunks/index-DCC6HGdr.js.map +1 -0
- package/dist/chunks/init-DkXJVFFx.js +472 -0
- package/dist/chunks/init-DkXJVFFx.js.map +1 -0
- package/dist/chunks/init-tui-D2VOVdeK.js +1131 -0
- package/dist/chunks/init-tui-D2VOVdeK.js.map +1 -0
- package/dist/chunks/logger-6V5cBxba.js +38 -0
- package/dist/chunks/logger-6V5cBxba.js.map +1 -0
- package/dist/chunks/login-CA1XWUEM.js +63 -0
- package/dist/chunks/login-CA1XWUEM.js.map +1 -0
- package/dist/chunks/logout-BC4VFt8f.js +40 -0
- package/dist/chunks/logout-BC4VFt8f.js.map +1 -0
- package/dist/chunks/main-tui-D8KkJRd_.js +648 -0
- package/dist/chunks/main-tui-D8KkJRd_.js.map +1 -0
- package/dist/chunks/manager-DjVI7erc.js +1161 -0
- package/dist/chunks/manager-DjVI7erc.js.map +1 -0
- package/dist/chunks/port-allocator-BENntRMG.js +864 -0
- package/dist/chunks/port-allocator-BENntRMG.js.map +1 -0
- package/dist/chunks/process-killer-ChXAqhfm.js +87 -0
- package/dist/chunks/process-killer-ChXAqhfm.js.map +1 -0
- package/dist/chunks/prompts-Beijr8dm.js +128 -0
- package/dist/chunks/prompts-Beijr8dm.js.map +1 -0
- package/dist/chunks/repo-cloner-UY3L2X7h.js +219 -0
- package/dist/chunks/repo-cloner-UY3L2X7h.js.map +1 -0
- package/dist/chunks/repo-detector-36VydrlB.js +66 -0
- package/dist/chunks/repo-detector-36VydrlB.js.map +1 -0
- package/dist/chunks/run-Du6dvTJL.js +697 -0
- package/dist/chunks/run-Du6dvTJL.js.map +1 -0
- package/dist/chunks/runner-logger-instance-Dj_JMznn.js +899 -0
- package/dist/chunks/runner-logger-instance-Dj_JMznn.js.map +1 -0
- package/dist/chunks/spinner-DTH0QZQw.js +53 -0
- package/dist/chunks/spinner-DTH0QZQw.js.map +1 -0
- package/dist/chunks/start-Dkuro1jp.js +1713 -0
- package/dist/chunks/start-Dkuro1jp.js.map +1 -0
- package/dist/chunks/start-traditional-7wlD2f2H.js +255 -0
- package/dist/chunks/start-traditional-7wlD2f2H.js.map +1 -0
- package/dist/chunks/status-BU3cFJm1.js +97 -0
- package/dist/chunks/status-BU3cFJm1.js.map +1 -0
- package/dist/chunks/theme-NAQBkisB.js +40222 -0
- package/dist/chunks/theme-NAQBkisB.js.map +1 -0
- package/dist/chunks/upgrade-BBpJirEu.js +455 -0
- package/dist/chunks/upgrade-BBpJirEu.js.map +1 -0
- package/dist/chunks/use-app-Ct3w2jLI.js +10 -0
- package/dist/chunks/use-app-Ct3w2jLI.js.map +1 -0
- package/dist/chunks/useBuildState-Dy7pRR8Z.js +330 -0
- package/dist/chunks/useBuildState-Dy7pRR8Z.js.map +1 -0
- package/dist/cli/index.js +712 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.js +13625 -0
- package/dist/index.js.map +1 -0
- package/dist/instrument.js +45 -0
- package/dist/instrument.js.map +1 -0
- package/dist/templates.json +295 -0
- package/package.json +87 -0
- package/templates/config.template.json +18 -0
- package/templates.json +295 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-setup-U31oEs90.js","sources":["../../src/cli/utils/database-setup.ts"],"sourcesContent":["import { spawn, execFileSync } from 'node:child_process';\nimport { readFile, writeFile } from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { logger } from './logger.js';\nimport { spinner } from './spinner.js';\nimport { prompts } from './prompts.js';\n\n/**\n * Read DATABASE_URL from .env file in monorepo root\n */\nexport async function readDatabaseUrlFromEnv(monorepoPath: string): Promise<string | null> {\n const envPath = join(monorepoPath, '.env');\n\n if (!existsSync(envPath)) {\n return null;\n }\n\n try {\n const content = await readFile(envPath, 'utf-8');\n const match = content.match(/^DATABASE_URL\\s*=\\s*['\"]?([^'\"\\n]+)['\"]?/m);\n return match ? match[1] : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Clear DATABASE_URL from .env file (removes stale value)\n */\nexport async function clearDatabaseUrlFromEnv(monorepoPath: string): Promise<void> {\n const envPath = join(monorepoPath, '.env');\n\n if (!existsSync(envPath)) {\n return;\n }\n\n try {\n const content = await readFile(envPath, 'utf-8');\n const updated = content\n .split('\\n')\n .filter(line => !line.trim().startsWith('DATABASE_URL'))\n .join('\\n');\n await writeFile(envPath, updated, 'utf-8');\n } catch (error) {\n logger.warn('Could not clear DATABASE_URL from .env');\n }\n}\n\n/**\n * Run neondb setup to create a database and get the connection string\n * Returns the DATABASE_URL if successful\n */\nexport async function setupDatabase(monorepoPath: string, silent: boolean = false): Promise<string | null> {\n // Clear any stale DATABASE_URL first\n await clearDatabaseUrlFromEnv(monorepoPath);\n\n if (!silent) {\n spinner.start('Setting up Neon PostgreSQL database...');\n }\n\n return new Promise((resolve) => {\n const proc = spawn('npx', ['neondb', '-y'], {\n cwd: monorepoPath, // Run in monorepo root so .env is created there\n stdio: ['ignore', 'pipe', 'pipe'],\n shell: true,\n });\n\n let databaseUrl: string | null = null;\n let output = '';\n\n proc.stdout?.on('data', (data) => {\n const text = data.toString();\n output += text;\n\n // Look for DATABASE_URL in the output\n const match = text.match(/DATABASE_URL[=:]?\\s*['\"]?([^'\"\\s]+)['\"]?/);\n if (match && match[1]) {\n databaseUrl = match[1];\n }\n\n // Also check for postgres:// connection strings\n const connMatch = text.match(/(postgres(?:ql)?:\\/\\/[^\\s'\"]+)/);\n if (connMatch && connMatch[1]) {\n databaseUrl = connMatch[1];\n }\n });\n\n proc.stderr?.on('data', (data) => {\n const text = data.toString();\n // Only log actual errors (and only if not silent)\n if (!silent && (text.includes('error') || text.includes('Error'))) {\n logger.debug(text.trim());\n }\n });\n\n proc.on('exit', async (code) => {\n if (code === 0) {\n // Try to read DATABASE_URL from .env file (neondb writes it there)\n const urlFromEnv = await readDatabaseUrlFromEnv(monorepoPath);\n\n if (urlFromEnv) {\n databaseUrl = urlFromEnv;\n if (!silent) {\n spinner.succeed('Database created successfully');\n }\n resolve(databaseUrl);\n } else if (databaseUrl) {\n // Fallback to what we parsed from output\n if (!silent) {\n spinner.succeed('Database created successfully');\n }\n resolve(databaseUrl);\n } else {\n if (!silent) {\n spinner.warn('Database command completed but DATABASE_URL not found');\n logger.info('Check .env file in monorepo root for DATABASE_URL');\n }\n resolve(null);\n }\n } else {\n if (!silent) {\n spinner.fail('Failed to create database');\n }\n resolve(null);\n }\n });\n\n proc.on('error', (error) => {\n if (!silent) {\n spinner.fail('Failed to run neondb');\n logger.error(`Error: ${error.message}`);\n }\n resolve(null);\n });\n });\n}\n\n/**\n * Check if neondb is available\n */\nexport async function isNeondbAvailable(): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn('npx', ['neondb', '--version'], {\n stdio: 'ignore',\n shell: true,\n });\n\n proc.on('exit', (code) => {\n resolve(code === 0);\n });\n\n proc.on('error', () => {\n resolve(false);\n });\n });\n}\n\n/**\n * Push database schema using drizzle-kit\n */\nexport async function pushDatabaseSchema(monorepoPath: string, databaseUrl: string, silent: boolean = false): Promise<boolean> {\n const { join } = await import('path');\n const { existsSync } = await import('fs');\n\n const hatchwayAppPath = join(monorepoPath, 'apps/hatchway');\n const configPath = join(hatchwayAppPath, 'drizzle.config.ts');\n\n // Verify paths exist\n if (!existsSync(hatchwayAppPath)) {\n if (!silent) {\n logger.error(`Directory not found: ${hatchwayAppPath}`);\n }\n return false;\n }\n\n if (!existsSync(configPath)) {\n if (!silent) {\n logger.error(`Drizzle config not found: ${configPath}`);\n }\n return false;\n }\n\n if (!silent) {\n spinner.start('Ensuring hatchway dependencies are installed...');\n }\n\n try {\n execFileSync('pnpm', ['install'], {\n cwd: hatchwayAppPath,\n stdio: 'pipe',\n });\n execFileSync('pnpm', ['--filter', '@hatchway/agent-core', 'build'], {\n cwd: monorepoPath,\n stdio: 'pipe',\n });\n if (!silent) {\n spinner.succeed('Dependencies ready');\n }\n } catch (error) {\n if (!silent) {\n spinner.warn('Dependency installation failed, trying schema push anyway');\n }\n }\n\n if (!silent) {\n spinner.start('Initializing database schema (this may take a moment)...');\n }\n\n return new Promise((resolve) => {\n const proc = spawn('npx', ['drizzle-kit', 'push', '--config=drizzle.config.ts'], {\n cwd: hatchwayAppPath,\n stdio: ['ignore', 'pipe', 'pipe'],\n shell: true,\n env: {\n ...process.env,\n DATABASE_URL: databaseUrl, // Ensure drizzle-kit has access\n },\n });\n\n let allOutput = '';\n\n // Capture all output for debugging\n proc.stdout?.on('data', (data) => {\n allOutput += data.toString();\n });\n\n proc.stderr?.on('data', (data) => {\n allOutput += data.toString();\n });\n\n proc.on('exit', (code) => {\n if (code === 0) {\n if (!silent) {\n spinner.succeed('Database schema initialized successfully');\n }\n resolve(true);\n } else {\n if (!silent) {\n spinner.fail('Failed to push database schema');\n // Show all output when it fails so user can see what went wrong\n if (allOutput.trim()) {\n logger.log(''); // Blank line\n logger.log('Output from drizzle-kit push:');\n logger.log(allOutput.trim());\n logger.log(''); // Blank line\n }\n }\n resolve(false);\n }\n });\n\n proc.on('error', (error) => {\n if (!silent) {\n spinner.fail('Failed to run drizzle-kit');\n logger.error(`Error: ${error.message}`);\n }\n resolve(false);\n });\n });\n}\n\n/**\n * Connect to an existing database manually by prompting for connection string\n */\nexport async function connectManualDatabase(): Promise<string | null> {\n logger.log('');\n\n // Ask user what type of connection they want\n const connectionType = await prompts.select(\n 'How would you like to connect your database?',\n [\n 'Connect an existing Hatchway database',\n 'Provide a connection string directly',\n ]\n );\n\n logger.log('');\n\n // Prompt for the connection string\n let message: string;\n if (connectionType === 'Connect an existing Hatchway database') {\n message = 'Enter your Hatchway database connection string:';\n } else {\n message = 'Enter your PostgreSQL connection string:';\n }\n\n const connectionString = await prompts.input(message);\n\n // Basic validation\n if (!connectionString || connectionString.trim() === '') {\n logger.error('Connection string cannot be empty');\n return null;\n }\n\n // Validate it looks like a PostgreSQL connection string\n if (!connectionString.match(/^postgres(?:ql)?:\\/\\//)) {\n logger.error('Connection string must start with postgres:// or postgresql://');\n return null;\n }\n\n return connectionString.trim();\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// Hatchway CLI - Built with Rollup
|
|
2
|
+
import WebSocket from 'ws';
|
|
3
|
+
import devtools from 'react-devtools-core';
|
|
4
|
+
|
|
5
|
+
// Ignoring missing types error to avoid adding another dependency for this hack to work
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
7
|
+
const customGlobal = global;
|
|
8
|
+
// These things must exist before importing `react-devtools-core`
|
|
9
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
10
|
+
customGlobal.WebSocket ||= WebSocket;
|
|
11
|
+
customGlobal.window ||= global;
|
|
12
|
+
customGlobal.self ||= global;
|
|
13
|
+
// Filter out Ink's internal components from devtools for a cleaner view.
|
|
14
|
+
// Also, ince `react-devtools-shared` package isn't published on npm, we can't
|
|
15
|
+
// use its types, that's why there are hard-coded values in `type` fields below.
|
|
16
|
+
// See https://github.com/facebook/react/blob/edf6eac8a181860fd8a2d076a43806f1237495a1/packages/react-devtools-shared/src/types.js#L24
|
|
17
|
+
customGlobal.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = [
|
|
18
|
+
{
|
|
19
|
+
// ComponentFilterElementType
|
|
20
|
+
type: 1,
|
|
21
|
+
// ElementTypeHostComponent
|
|
22
|
+
value: 7,
|
|
23
|
+
isEnabled: true,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
// ComponentFilterDisplayName
|
|
27
|
+
type: 2,
|
|
28
|
+
value: 'InternalApp',
|
|
29
|
+
isEnabled: true,
|
|
30
|
+
isValid: true,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
// ComponentFilterDisplayName
|
|
34
|
+
type: 2,
|
|
35
|
+
value: 'InternalAppContext',
|
|
36
|
+
isEnabled: true,
|
|
37
|
+
isValid: true,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
// ComponentFilterDisplayName
|
|
41
|
+
type: 2,
|
|
42
|
+
value: 'InternalStdoutContext',
|
|
43
|
+
isEnabled: true,
|
|
44
|
+
isValid: true,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
// ComponentFilterDisplayName
|
|
48
|
+
type: 2,
|
|
49
|
+
value: 'InternalStderrContext',
|
|
50
|
+
isEnabled: true,
|
|
51
|
+
isValid: true,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
// ComponentFilterDisplayName
|
|
55
|
+
type: 2,
|
|
56
|
+
value: 'InternalStdinContext',
|
|
57
|
+
isEnabled: true,
|
|
58
|
+
isValid: true,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
// ComponentFilterDisplayName
|
|
62
|
+
type: 2,
|
|
63
|
+
value: 'InternalFocusContext',
|
|
64
|
+
isEnabled: true,
|
|
65
|
+
isValid: true,
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
/* eslint-disable import/order */
|
|
70
|
+
// eslint-disable-next-line import/no-unassigned-import
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
72
|
+
devtools.initialize();
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
74
|
+
devtools.connectToDevTools();
|
|
75
|
+
//# sourceMappingURL=devtools-CPruVlOo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtools-CPruVlOo.js","sources":["../../../../node_modules/.pnpm/ink@6.5.1_@types+react@19.2.7_react@19.1.0/node_modules/ink/build/devtools-window-polyfill.js","../../../../node_modules/.pnpm/ink@6.5.1_@types+react@19.2.7_react@19.1.0/node_modules/ink/build/devtools.js"],"sourcesContent":["// Ignoring missing types error to avoid adding another dependency for this hack to work\nimport ws from 'ws';\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\nconst customGlobal = global;\n// These things must exist before importing `react-devtools-core`\n// eslint-disable-next-line n/no-unsupported-features/node-builtins\ncustomGlobal.WebSocket ||= ws;\ncustomGlobal.window ||= global;\ncustomGlobal.self ||= global;\n// Filter out Ink's internal components from devtools for a cleaner view.\n// Also, ince `react-devtools-shared` package isn't published on npm, we can't\n// use its types, that's why there are hard-coded values in `type` fields below.\n// See https://github.com/facebook/react/blob/edf6eac8a181860fd8a2d076a43806f1237495a1/packages/react-devtools-shared/src/types.js#L24\ncustomGlobal.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = [\n {\n // ComponentFilterElementType\n type: 1,\n // ElementTypeHostComponent\n value: 7,\n isEnabled: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'InternalApp',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'InternalAppContext',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'InternalStdoutContext',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'InternalStderrContext',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'InternalStdinContext',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'InternalFocusContext',\n isEnabled: true,\n isValid: true,\n },\n];\n//# sourceMappingURL=devtools-window-polyfill.js.map","/* eslint-disable import/order */\n// eslint-disable-next-line import/no-unassigned-import\nimport './devtools-window-polyfill.js';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-expect-error\nimport devtools from 'react-devtools-core';\n// eslint-disable-next-line @typescript-eslint/no-unsafe-call\ndevtools.initialize();\n// eslint-disable-next-line @typescript-eslint/no-unsafe-call\ndevtools.connectToDevTools();\n//# sourceMappingURL=devtools.js.map"],"names":["ws"],"mappings":";;;;AAAA;AAEA;AACA,MAAM,YAAY,GAAG,MAAM;AAC3B;AACA;AACA,YAAY,CAAC,SAAS,KAAKA,SAAE;AAC7B,YAAY,CAAC,MAAM,KAAK,MAAM;AAC9B,YAAY,CAAC,IAAI,KAAK,MAAM;AAC5B;AACA;AACA;AACA;AACA,YAAY,CAAC,MAAM,CAAC,oCAAoC,GAAG;AAC3D,IAAI;AACJ;AACA,QAAQ,IAAI,EAAE,CAAC;AACf;AACA,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,SAAS,EAAE,IAAI;AACvB,KAAK;AACL,IAAI;AACJ;AACA,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,KAAK,EAAE,aAAa;AAC5B,QAAQ,SAAS,EAAE,IAAI;AACvB,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK;AACL,IAAI;AACJ;AACA,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,KAAK,EAAE,oBAAoB;AACnC,QAAQ,SAAS,EAAE,IAAI;AACvB,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK;AACL,IAAI;AACJ;AACA,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,KAAK,EAAE,uBAAuB;AACtC,QAAQ,SAAS,EAAE,IAAI;AACvB,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK;AACL,IAAI;AACJ;AACA,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,KAAK,EAAE,uBAAuB;AACtC,QAAQ,SAAS,EAAE,IAAI;AACvB,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK;AACL,IAAI;AACJ;AACA,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,KAAK,EAAE,sBAAsB;AACrC,QAAQ,SAAS,EAAE,IAAI;AACvB,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK;AACL,IAAI;AACJ;AACA,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,KAAK,EAAE,sBAAsB;AACrC,QAAQ,SAAS,EAAE,IAAI;AACvB,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK;AACL,CAAC;;AC/DD;AACA;AAKA;AACA,QAAQ,CAAC,UAAU,EAAE;AACrB;AACA,QAAQ,CAAC,iBAAiB,EAAE","x_google_ignoreList":[0,1]}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// Hatchway CLI - Built with Rollup
|
|
2
|
+
import { r as reactExports, u as useInput, R as React, T as Text } from './theme-NAQBkisB.js';
|
|
3
|
+
import 'node:stream';
|
|
4
|
+
import 'node:process';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import 'node:events';
|
|
7
|
+
|
|
8
|
+
function TextInput({ value: originalValue, placeholder = '', focus = true, mask, highlightPastedText = false, showCursor = true, onChange, onSubmit, }) {
|
|
9
|
+
const [state, setState] = reactExports.useState({
|
|
10
|
+
cursorOffset: (originalValue || '').length,
|
|
11
|
+
cursorWidth: 0,
|
|
12
|
+
});
|
|
13
|
+
const { cursorOffset, cursorWidth } = state;
|
|
14
|
+
reactExports.useEffect(() => {
|
|
15
|
+
setState(previousState => {
|
|
16
|
+
if (!focus || !showCursor) {
|
|
17
|
+
return previousState;
|
|
18
|
+
}
|
|
19
|
+
const newValue = originalValue || '';
|
|
20
|
+
if (previousState.cursorOffset > newValue.length - 1) {
|
|
21
|
+
return {
|
|
22
|
+
cursorOffset: newValue.length,
|
|
23
|
+
cursorWidth: 0,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return previousState;
|
|
27
|
+
});
|
|
28
|
+
}, [originalValue, focus, showCursor]);
|
|
29
|
+
const cursorActualWidth = highlightPastedText ? cursorWidth : 0;
|
|
30
|
+
const value = mask ? mask.repeat(originalValue.length) : originalValue;
|
|
31
|
+
let renderedValue = value;
|
|
32
|
+
let renderedPlaceholder = placeholder ? chalk.grey(placeholder) : undefined;
|
|
33
|
+
// Fake mouse cursor, because it's too inconvenient to deal with actual cursor and ansi escapes
|
|
34
|
+
if (showCursor && focus) {
|
|
35
|
+
renderedPlaceholder =
|
|
36
|
+
placeholder.length > 0
|
|
37
|
+
? chalk.inverse(placeholder[0]) + chalk.grey(placeholder.slice(1))
|
|
38
|
+
: chalk.inverse(' ');
|
|
39
|
+
renderedValue = value.length > 0 ? '' : chalk.inverse(' ');
|
|
40
|
+
let i = 0;
|
|
41
|
+
for (const char of value) {
|
|
42
|
+
renderedValue +=
|
|
43
|
+
i >= cursorOffset - cursorActualWidth && i <= cursorOffset
|
|
44
|
+
? chalk.inverse(char)
|
|
45
|
+
: char;
|
|
46
|
+
i++;
|
|
47
|
+
}
|
|
48
|
+
if (value.length > 0 && cursorOffset === value.length) {
|
|
49
|
+
renderedValue += chalk.inverse(' ');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
useInput((input, key) => {
|
|
53
|
+
if (key.upArrow ||
|
|
54
|
+
key.downArrow ||
|
|
55
|
+
(key.ctrl && input === 'c') ||
|
|
56
|
+
key.tab ||
|
|
57
|
+
(key.shift && key.tab)) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (key.return) {
|
|
61
|
+
if (onSubmit) {
|
|
62
|
+
onSubmit(originalValue);
|
|
63
|
+
}
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
let nextCursorOffset = cursorOffset;
|
|
67
|
+
let nextValue = originalValue;
|
|
68
|
+
let nextCursorWidth = 0;
|
|
69
|
+
if (key.leftArrow) {
|
|
70
|
+
if (showCursor) {
|
|
71
|
+
nextCursorOffset--;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else if (key.rightArrow) {
|
|
75
|
+
if (showCursor) {
|
|
76
|
+
nextCursorOffset++;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else if (key.backspace || key.delete) {
|
|
80
|
+
if (cursorOffset > 0) {
|
|
81
|
+
nextValue =
|
|
82
|
+
originalValue.slice(0, cursorOffset - 1) +
|
|
83
|
+
originalValue.slice(cursorOffset, originalValue.length);
|
|
84
|
+
nextCursorOffset--;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
nextValue =
|
|
89
|
+
originalValue.slice(0, cursorOffset) +
|
|
90
|
+
input +
|
|
91
|
+
originalValue.slice(cursorOffset, originalValue.length);
|
|
92
|
+
nextCursorOffset += input.length;
|
|
93
|
+
if (input.length > 1) {
|
|
94
|
+
nextCursorWidth = input.length;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (cursorOffset < 0) {
|
|
98
|
+
nextCursorOffset = 0;
|
|
99
|
+
}
|
|
100
|
+
if (cursorOffset > originalValue.length) {
|
|
101
|
+
nextCursorOffset = originalValue.length;
|
|
102
|
+
}
|
|
103
|
+
setState({
|
|
104
|
+
cursorOffset: nextCursorOffset,
|
|
105
|
+
cursorWidth: nextCursorWidth,
|
|
106
|
+
});
|
|
107
|
+
if (nextValue !== originalValue) {
|
|
108
|
+
onChange(nextValue);
|
|
109
|
+
}
|
|
110
|
+
}, { isActive: focus });
|
|
111
|
+
return (React.createElement(Text, null, placeholder
|
|
112
|
+
? value.length > 0
|
|
113
|
+
? renderedValue
|
|
114
|
+
: renderedPlaceholder
|
|
115
|
+
: renderedValue));
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export { TextInput as T };
|
|
119
|
+
//# sourceMappingURL=index-DCC6HGdr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DCC6HGdr.js","sources":["../../../../node_modules/.pnpm/ink-text-input@6.0.0_ink@6.5.1_@types+react@19.2.7_react@19.1.0__react@19.1.0/node_modules/ink-text-input/build/index.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Text, useInput } from 'ink';\nimport chalk from 'chalk';\nfunction TextInput({ value: originalValue, placeholder = '', focus = true, mask, highlightPastedText = false, showCursor = true, onChange, onSubmit, }) {\n const [state, setState] = useState({\n cursorOffset: (originalValue || '').length,\n cursorWidth: 0,\n });\n const { cursorOffset, cursorWidth } = state;\n useEffect(() => {\n setState(previousState => {\n if (!focus || !showCursor) {\n return previousState;\n }\n const newValue = originalValue || '';\n if (previousState.cursorOffset > newValue.length - 1) {\n return {\n cursorOffset: newValue.length,\n cursorWidth: 0,\n };\n }\n return previousState;\n });\n }, [originalValue, focus, showCursor]);\n const cursorActualWidth = highlightPastedText ? cursorWidth : 0;\n const value = mask ? mask.repeat(originalValue.length) : originalValue;\n let renderedValue = value;\n let renderedPlaceholder = placeholder ? chalk.grey(placeholder) : undefined;\n // Fake mouse cursor, because it's too inconvenient to deal with actual cursor and ansi escapes\n if (showCursor && focus) {\n renderedPlaceholder =\n placeholder.length > 0\n ? chalk.inverse(placeholder[0]) + chalk.grey(placeholder.slice(1))\n : chalk.inverse(' ');\n renderedValue = value.length > 0 ? '' : chalk.inverse(' ');\n let i = 0;\n for (const char of value) {\n renderedValue +=\n i >= cursorOffset - cursorActualWidth && i <= cursorOffset\n ? chalk.inverse(char)\n : char;\n i++;\n }\n if (value.length > 0 && cursorOffset === value.length) {\n renderedValue += chalk.inverse(' ');\n }\n }\n useInput((input, key) => {\n if (key.upArrow ||\n key.downArrow ||\n (key.ctrl && input === 'c') ||\n key.tab ||\n (key.shift && key.tab)) {\n return;\n }\n if (key.return) {\n if (onSubmit) {\n onSubmit(originalValue);\n }\n return;\n }\n let nextCursorOffset = cursorOffset;\n let nextValue = originalValue;\n let nextCursorWidth = 0;\n if (key.leftArrow) {\n if (showCursor) {\n nextCursorOffset--;\n }\n }\n else if (key.rightArrow) {\n if (showCursor) {\n nextCursorOffset++;\n }\n }\n else if (key.backspace || key.delete) {\n if (cursorOffset > 0) {\n nextValue =\n originalValue.slice(0, cursorOffset - 1) +\n originalValue.slice(cursorOffset, originalValue.length);\n nextCursorOffset--;\n }\n }\n else {\n nextValue =\n originalValue.slice(0, cursorOffset) +\n input +\n originalValue.slice(cursorOffset, originalValue.length);\n nextCursorOffset += input.length;\n if (input.length > 1) {\n nextCursorWidth = input.length;\n }\n }\n if (cursorOffset < 0) {\n nextCursorOffset = 0;\n }\n if (cursorOffset > originalValue.length) {\n nextCursorOffset = originalValue.length;\n }\n setState({\n cursorOffset: nextCursorOffset,\n cursorWidth: nextCursorWidth,\n });\n if (nextValue !== originalValue) {\n onChange(nextValue);\n }\n }, { isActive: focus });\n return (React.createElement(Text, null, placeholder\n ? value.length > 0\n ? renderedValue\n : renderedPlaceholder\n : renderedValue));\n}\nexport default TextInput;\nexport function UncontrolledTextInput({ initialValue = '', ...props }) {\n const [value, setValue] = useState(initialValue);\n return React.createElement(TextInput, { ...props, value: value, onChange: setValue });\n}\n//# sourceMappingURL=index.js.map"],"names":["useState","useEffect"],"mappings":"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","x_google_ignoreList":[0]}
|