instant-cli 0.22.99 → 0.22.100-experimental.track-import-front.20838024522.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.
- package/.turbo/turbo-build.log +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +4 -3
- package/dist/ui/index.js.map +1 -1
- package/package.json +4 -4
- package/src/index.js +20 -0
- package/src/ui/index.ts +4 -3
package/.turbo/turbo-build.log
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AA2+DA,8EAQC;AA+ED;;;;;EAKE"}
|
package/dist/index.js
CHANGED
|
@@ -771,6 +771,9 @@ async function promptImportAppOrCreateApp() {
|
|
|
771
771
|
createApp,
|
|
772
772
|
},
|
|
773
773
|
}));
|
|
774
|
+
if (result.approach === 'import') {
|
|
775
|
+
trackAppImport(result.appId);
|
|
776
|
+
}
|
|
774
777
|
return {
|
|
775
778
|
ok: true,
|
|
776
779
|
appId: result.appId,
|
|
@@ -799,11 +802,26 @@ async function createEphemeralApp(title) {
|
|
|
799
802
|
const { app } = await api.createTemporaryApp({ title });
|
|
800
803
|
return { appId: app.id, adminToken: app.adminToken };
|
|
801
804
|
}
|
|
805
|
+
/**
|
|
806
|
+
* Fire-and-forget tracking for when a user imports/links an existing app.
|
|
807
|
+
* Captures user info if authenticated.
|
|
808
|
+
*/
|
|
809
|
+
function trackAppImport(appId) {
|
|
810
|
+
fetchJson({
|
|
811
|
+
method: 'POST',
|
|
812
|
+
path: `/dash/apps/${appId}/track-import`,
|
|
813
|
+
debugName: 'Track import',
|
|
814
|
+
errorMessage: '',
|
|
815
|
+
noLogError: true,
|
|
816
|
+
command: 'init',
|
|
817
|
+
}).catch(() => { });
|
|
818
|
+
}
|
|
802
819
|
async function detectAppWithErrorLogging(opts) {
|
|
803
820
|
const fromOpts = await detectAppIdFromOptsWithErrorLogging(opts);
|
|
804
821
|
if (!fromOpts.ok)
|
|
805
822
|
return fromOpts;
|
|
806
823
|
if (fromOpts.appId) {
|
|
824
|
+
trackAppImport(fromOpts.appId);
|
|
807
825
|
return { ok: true, appId: fromOpts.appId, source: 'opts' };
|
|
808
826
|
}
|
|
809
827
|
const fromEnv = detectAppIdFromEnvWithErrorLogging();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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","sourcesContent":["// @ts-check\nimport {\n generatePermsTypescriptFile,\n apiSchemaToInstantSchemaDef,\n generateSchemaTypescriptFile,\n diffSchemas,\n convertTxSteps,\n validateSchema,\n SchemaValidationError,\n PlatformApi,\n} from '@instantdb/platform';\nimport version from './version.js';\nimport { existsSync } from 'fs';\nimport { mkdir, writeFile, readFile, unlink } from 'fs/promises';\nimport path, { join } from 'path';\nimport { randomUUID } from 'crypto';\nimport jsonDiff from 'json-diff';\nimport chalk from 'chalk';\nimport { program, Option } from 'commander';\nimport boxen from 'boxen';\nimport { loadConfig } from './util/loadConfig.js';\nimport { findProjectDir } from './util/projectDir.js';\nimport openInBrowser from 'open';\nimport terminalLink from 'terminal-link';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport {\n detectPackageManager,\n getInstallCommand,\n} from './util/packageManager.js';\nimport { pathExists, readJsonFile } from './util/fs.js';\nimport prettier from 'prettier';\nimport {\n CancelSchemaError,\n groupSteps,\n renderSchemaPlan,\n} from './renderSchemaPlan.js';\nimport { getAuthPaths } from './util/getAuthPaths.js';\nimport { renderUnwrap } from './ui/lib.js';\nimport { UI } from './ui/index.js';\nimport { deferred } from './ui/lib.js';\nimport { promptOk } from './util/promptOk.js';\nimport { ResolveRenamePrompt } from './util/renamePrompt.js';\nimport { buildAutoRenameSelector } from './rename.js';\nimport { loadEnv } from './util/loadEnv.js';\nimport { isHeadlessEnvironment } from './util/isHeadlessEnvironment.js';\nimport {\n getSchemaReadCandidates,\n getPermsReadCandidates,\n getSchemaPathToWrite,\n getPermsPathToWrite,\n} from './util/findConfigCandidates.js';\nimport { mergeSchema } from './util/mergeSchema.js';\n\nconst execAsync = promisify(exec);\n\nloadEnv();\n\nconst dev = Boolean(process.env.INSTANT_CLI_DEV);\nconst verbose = Boolean(process.env.INSTANT_CLI_VERBOSE);\n\n// logs\n\nfunction warn(firstArg, ...rest) {\n console.warn(chalk.yellow('[warning]') + ' ' + firstArg, ...rest);\n}\n\nfunction error(firstArg, ...rest) {\n console.error(chalk.red('[error]') + ' ' + firstArg, ...rest);\n}\n\n// json response\n\nconst toJson = (data) => JSON.stringify(data, null, 2);\n\n// consts\n\nconst potentialEnvs = {\n catchall: 'INSTANT_APP_ID',\n next: 'NEXT_PUBLIC_INSTANT_APP_ID',\n svelte: 'PUBLIC_INSTANT_APP_ID',\n vite: 'VITE_INSTANT_APP_ID',\n expo: 'EXPO_PUBLIC_INSTANT_APP_ID',\n nuxt: 'NUXT_PUBLIC_INSTANT_APP_ID',\n};\n\nconst potentialAdminTokenEnvs = {\n default: 'INSTANT_APP_ADMIN_TOKEN',\n short: 'INSTANT_ADMIN_TOKEN',\n};\n\nasync function detectEnvType({ pkgDir }) {\n const packageJSON = await getPackageJson(pkgDir);\n if (!packageJSON) {\n return 'catchall';\n }\n if (packageJSON.dependencies?.next) {\n return 'next';\n }\n if (packageJSON.devDependencies?.svelte) {\n return 'svelte';\n }\n if (packageJSON.devDependencies?.vite) {\n return 'vite';\n }\n if (packageJSON.dependencies?.expo) {\n return 'expo';\n }\n if (packageJSON.dependencies?.nuxt) {\n return 'nuxt';\n }\n return 'catchall';\n}\n\nconst instantDashOrigin = dev\n ? 'http://localhost:3000'\n : 'https://instantdb.com';\n\nconst instantBackendOrigin =\n process.env.INSTANT_CLI_API_URI ||\n (dev ? 'http://localhost:8888' : 'https://api.instantdb.com');\n\nconst PUSH_PULL_OPTIONS = new Set(['schema', 'perms', 'all']);\n\nfunction convertArgToBagWithErrorLogging(arg) {\n if (!arg) {\n return { ok: true, bag: 'all' };\n } else if (PUSH_PULL_OPTIONS.has(arg.trim().toLowerCase())) {\n return { ok: true, bag: arg };\n } else {\n error(\n `${chalk.red(arg)} is not valid. Must be one of ${chalk.green(Array.from(PUSH_PULL_OPTIONS).join(', '))}`,\n );\n return { ok: false };\n }\n}\n\nfunction convertPushPullToCurrentFormat(arg, opts) {\n const { ok, bag } = convertArgToBagWithErrorLogging(arg);\n if (!ok) return { ok: false };\n return { ok: true, bag, opts };\n}\n\nasync function packageDirectoryWithErrorLogging() {\n const projectInfo = await findProjectDir();\n if (!projectInfo) {\n error(\n \"Couldn't find your root directory. Is there a package.json or deno.json file?\",\n );\n return;\n }\n return projectInfo;\n}\n\n// cli\n\n// Header -- this shows up in every command\nconst logoChalk = chalk.bold('instant-cli');\nconst versionChalk = chalk.dim(`${version.trim()}`);\nconst headerChalk = `${logoChalk} ${versionChalk} ` + '\\n';\n\n// Help Footer -- this only shows up in help commands\nconst helpFooterChalk =\n '\\n' +\n chalk.dim.bold('Want to learn more?') +\n '\\n' +\n `Check out the docs: ${chalk.blueBright.underline('https://instantdb.com/docs')}\nJoin the Discord: ${chalk.blueBright.underline('https://discord.com/invite/VU53p7uQcE')}\n`.trim();\n\nprogram.addHelpText('after', helpFooterChalk);\n\nprogram.addHelpText('beforeAll', headerChalk);\n\nfunction getLocalAndGlobalOptions(cmd, helper) {\n const mixOfLocalAndGlobal = helper.visibleOptions(cmd);\n const localOptionsFromMix = mixOfLocalAndGlobal.filter(\n (option) => !option.__global,\n );\n const globalOptionsFromMix = mixOfLocalAndGlobal.filter(\n (option) => option.__global,\n );\n const globalOptions = helper.visibleGlobalOptions(cmd);\n\n return [localOptionsFromMix, globalOptionsFromMix.concat(globalOptions)];\n}\n\n// custom `formatHelp`\n// original: https://github.com/tj/commander.js/blob/master/lib/help.js\nfunction formatHelp(cmd, helper) {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth || 80;\n const itemIndentWidth = 2;\n const itemSeparatorWidth = 2; // between term and description\n function formatItem(term, description) {\n if (description) {\n const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;\n return helper.wrap(\n fullText,\n helpWidth - itemIndentWidth,\n termWidth + itemSeparatorWidth,\n );\n }\n return term;\n }\n function formatList(textArray) {\n return textArray.join('\\n').replace(/^/gm, ' '.repeat(itemIndentWidth));\n }\n\n // Usage\n let output = [`${helper.commandUsage(cmd)}`, ''];\n\n // Description\n const commandDescription = helper.commandDescription(cmd);\n if (commandDescription.length > 0) {\n output = output.concat([helper.wrap(commandDescription, helpWidth, 0), '']);\n }\n\n // Arguments\n const argumentList = helper.visibleArguments(cmd).map((argument) => {\n return formatItem(\n helper.argumentTerm(argument),\n helper.argumentDescription(argument),\n );\n });\n if (argumentList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Arguments'),\n formatList(argumentList),\n '',\n ]);\n }\n const [visibleOptions, visibleGlobalOptions] = getLocalAndGlobalOptions(\n cmd,\n helper,\n );\n\n // Options\n const optionList = visibleOptions.map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (optionList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Options'),\n formatList(optionList),\n '',\n ]);\n }\n // Commands\n const commandList = helper.visibleCommands(cmd).map((cmd) => {\n return formatItem(\n helper.subcommandTerm(cmd),\n helper.subcommandDescription(cmd),\n );\n });\n if (commandList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Commands'),\n formatList(commandList),\n '',\n ]);\n }\n\n if (this.showGlobalOptions) {\n const globalOptionList = visibleGlobalOptions.map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (globalOptionList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Global Options'),\n formatList(globalOptionList),\n '',\n ]);\n }\n }\n\n return output.join('\\n');\n}\n\nprogram.configureHelp({\n showGlobalOptions: true,\n formatHelp,\n});\n\nfunction globalOption(flags, description, argParser) {\n const opt = new Option(flags, description);\n if (argParser) {\n opt.argParser(argParser);\n }\n // @ts-ignore\n // __global does not exist on `Option`,\n // but we use it in `getLocalAndGlobalOptions`, to produce\n // our own custom list of local and global options.\n // For more info, see the original PR:\n // https://github.com/instantdb/instant/pull/505\n opt.__global = true;\n return opt;\n}\n\nfunction warnDeprecation(oldCmd, newCmd) {\n warn(\n chalk.yellow('`instant-cli ' + oldCmd + '` is deprecated.') +\n ' Use ' +\n chalk.green('`instant-cli ' + newCmd + '`') +\n ' instead.' +\n '\\n',\n );\n}\n\nprogram\n .name('instant-cli')\n .addOption(globalOption('-t --token <token>', 'Auth token override'))\n .addOption(globalOption('-y --yes', \"Answer 'yes' to all prompts\"))\n .addOption(globalOption('--env <file>', 'Use a specific .env file'))\n .addOption(\n globalOption('-v --version', 'Print the version number', () => {\n console.log(version);\n process.exit(0);\n }),\n )\n .addHelpOption(globalOption('-h --help', 'Print the help text for a command'))\n .usage(`<command> ${chalk.dim('[options] [args]')}`);\n\nprogram\n .command('login')\n .description('Log into your account')\n .option('-p --print', 'Prints the auth token into the console.')\n .option(\n '--headless',\n 'Print the login URL instead of trying to open the browser',\n )\n .action(async (opts) => {\n console.log(\"Let's log you in!\");\n await login(opts);\n });\n\nprogram\n .command('logout')\n .description('Log out of your Instant account')\n .action(async () => {\n await logout();\n });\n\nprogram\n .command('init')\n .description('Set up a new project.')\n .option(\n '-a --app <app-id>',\n 'If you have an existing app ID, we can pull schema and perms from there.',\n )\n .option(\n '-p --package <react|react-native|core|admin>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .option('--title <title>', 'Title for the created app')\n .action(handleInit);\n\nprogram\n .command('init-without-files')\n .description('Generate a new app id and admin token pair without any files.')\n .option('--title <title>', 'Title for the created app.')\n .option(\n '--org-id <org-id>',\n 'Organization id for app. Cannot be used with --temp flag.',\n )\n .option(\n '--temp',\n 'Create a temporary app which will automatically delete itself after >24 hours.',\n )\n .action(handleInitWithoutFiles);\n\n// Note: Nov 20, 2024\n// We can eventually delete this,\n// once we know most people use the new pull and push commands\nprogram\n .command('push-schema', { hidden: true })\n .argument('[app-id]')\n .description('Push schema to production.')\n .option(\n '--skip-check-types',\n \"Don't check types on the server when pushing schema\",\n )\n .action(async (appIdOrName, opts) => {\n warnDeprecation('push-schema', 'push schema');\n await handlePush('schema', { app: appIdOrName, ...opts });\n });\n\n// Note: Nov 20, 2024\n// We can eventually delete this,\n// once we know most people use the new pull and push commands\nprogram\n .command('push-perms', { hidden: true })\n .argument('[app-id]')\n .description('Push perms to production.')\n .action(async (appIdOrName) => {\n warnDeprecation('push-perms', 'push perms');\n await handlePush('perms', { app: appIdOrName });\n });\n\nprogram\n .command('push')\n .argument(\n '[schema|perms|all]',\n 'Which configuration to push. Defaults to `all`',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to push too. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option(\n '--skip-check-types',\n \"Don't check types on the server when pushing schema\",\n )\n .option(\n '--rename [renames...]',\n 'List of full attribute names separated by a \":\"\\n Example:`push --rename posts.author:posts.creator stores.owner:stores.manager`',\n )\n .option(\n '-p --package <react|react-native|core|admin>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .description('Push schema and perm files to production.')\n .addHelpText(\n 'after',\n `\nEnvironment Variables:\n INSTANT_SCHEMA_FILE_PATH Override schema file location (default: instant.schema.ts)\n INSTANT_PERMS_FILE_PATH Override perms file location (default: instant.perms.ts)\n`,\n )\n .action(async function (arg, inputOpts) {\n const ret = convertPushPullToCurrentFormat(arg, inputOpts);\n if (!ret.ok) return process.exit(1);\n const { bag, opts } = ret;\n await handlePush(bag, opts);\n });\n\n// Note: Nov 20, 2024\n// We can eventually delete this,\n// once we know most people use the new pull and push commands\nprogram\n .command('pull-schema', { hidden: true })\n .argument('[app-id]')\n .description('Generate instant.schema.ts from production')\n .action(async (appIdOrName) => {\n warnDeprecation('pull-schema', 'pull schema');\n await handlePull('schema', { app: appIdOrName });\n });\n\n// Note: Nov 20, 2024\n// We can eventually delete this,\n// once we know most people use the new pull and push commands\nprogram\n .command('pull-perms', { hidden: true })\n .argument('[app-id]')\n .description('Generate instant.perms.ts from production.')\n .action(async (appIdOrName) => {\n warnDeprecation('pull-perms', 'pull perms');\n await handlePull('perms', { app: appIdOrName });\n });\n\nprogram\n .command('pull')\n .argument(\n '[schema|perms|all]',\n 'Which configuration to push. Defaults to `all`',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to push to. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option(\n '-p --package <react|react-native|core|admin>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .option(\n '--experimental-type-preservation',\n \"[Experimental] Preserve manual type changes like `status: i.json<'online' | 'offline'>()` when doing `instant-cli pull schema`\",\n )\n .description('Pull schema and perm files from production.')\n .addHelpText(\n 'after',\n `\nEnvironment Variables:\n INSTANT_SCHEMA_FILE_PATH Override schema file location (default: instant.schema.ts)\n INSTANT_PERMS_FILE_PATH Override perms file location (default: instant.perms.ts)\n`,\n )\n .action(async function (arg, inputOpts) {\n const ret = convertPushPullToCurrentFormat(arg, inputOpts);\n if (!ret.ok) return process.exit(1);\n const { bag, opts } = ret;\n await handlePull(bag, opts);\n });\n\nprogram\n .command('claim')\n .description('Transfer a tempoary app into your Instant account')\n .action(async function () {\n const token = await readConfigAuthToken(false);\n if (!token) {\n console.error(\n `Please log in first with ${chalk.bgGray.white('instant-cli login')} to claim an app`,\n );\n process.exit(1);\n }\n\n const envResult = detectAppIdAndAdminTokenFromEnvWithErrorLogging();\n if (!envResult.ok) return process.exit(1);\n\n if (!envResult.appId) {\n error('No app ID found in environment variables.');\n return process.exit(1);\n }\n\n if (!envResult.adminToken) {\n error('No admin token found in environment variables.');\n return process.exit(1);\n }\n\n const appId = envResult.appId.value;\n const adminToken = envResult.adminToken.value;\n\n console.log(`Found ${chalk.green(envResult.appId.envName)}: ${appId}`);\n\n await claimEphemeralApp(appId, adminToken);\n });\n\nprogram.parse(process.argv);\n\nasync function handleInit(opts) {\n const pkgAndAuthInfo =\n await getOrPromptPackageAndAuthInfoWithErrorLogging(opts);\n if (!pkgAndAuthInfo) return process.exit(1);\n const { ok, appId } = await getOrCreateAppAndWriteToEnv(pkgAndAuthInfo, opts);\n if (!ok) {\n return process.exit(1);\n }\n\n // Create schema file if it doesn't exist\n // or ask to push if local schema exists\n const localSchemaExists = await readLocalSchemaFile();\n if (!localSchemaExists) {\n await pull('schema', appId, pkgAndAuthInfo);\n } else {\n const doSchemaPush = await promptOk(\n {\n promptText: 'Found local schema. Push it to the new app?',\n inline: true,\n },\n program.opts(),\n );\n if (doSchemaPush) {\n await push('schema', appId, opts);\n }\n }\n\n // Create perms file if it doesn't exist\n // or ask to push if local perms exists\n const localPermsExists = await readLocalPermsFile();\n if (!localPermsExists) {\n await pull('perms', appId, pkgAndAuthInfo);\n } else {\n const doPermsPush = await promptOk(\n {\n promptText: 'Found local perms. Push it to the new app?',\n inline: true,\n },\n program.opts(),\n );\n if (doPermsPush) {\n await push('perms', appId, opts);\n }\n }\n}\n\nasync function handleInitWithoutFiles(opts) {\n try {\n const authToken = await readConfigAuthToken(false);\n if (!authToken) {\n throw new Error(\n `Please log in first with 'instant-cli login' before running this command.`,\n );\n }\n\n if (!opts?.title) {\n throw new Error(\n 'Title is required for creating a new app without local files.',\n );\n }\n\n if (opts.title.startsWith('-')) {\n throw new Error(\n `Invalid title: \"${opts.title}\". Title cannot be a flag.`,\n );\n }\n\n if (opts?.temp && opts?.orgId) {\n throw new Error('Cannot use --temp and --org-id flags together.');\n }\n\n let result;\n if (opts?.temp) {\n result = await createEphemeralApp(opts.title);\n } else {\n result = await createApp(opts.title, opts.orgId);\n }\n\n console.error(`${chalk.green('Successfully created new app!')}\\n`);\n\n console.log(\n toJson({\n app: result,\n error: null,\n }),\n );\n } catch (error) {\n console.error(`${chalk.red('Failed to create app.')}\\n`);\n\n console.log(\n toJson({\n app: null,\n error: { message: error.message },\n }),\n );\n process.exit(1);\n }\n}\n\nasync function handlePush(bag, opts) {\n const pkgAndAuthInfo = await enforcePackageAndAuthInfoWithErrorLogging(opts);\n if (!pkgAndAuthInfo) return process.exit(1);\n const { ok, appId } = await detectAppWithErrorLogging(opts);\n if (!ok) return process.exit(1);\n if (!appId) {\n error(\n 'No app ID detected. Please specify one with --app or set up with `instant-cli init`',\n );\n return;\n }\n await push(bag, appId, opts);\n}\n\nasync function handlePull(bag, opts) {\n const pkgAndAuthInfo = await enforcePackageAndAuthInfoWithErrorLogging(opts);\n if (!pkgAndAuthInfo) return process.exit(1);\n const { ok, appId } = await detectAppWithErrorLogging(opts);\n if (!ok) {\n return process.exit(1);\n }\n if (!appId) {\n error(\n 'No app ID detected. Please specify one with --app or set up with `instant-cli init`',\n );\n return;\n }\n await pull(bag, appId, { ...pkgAndAuthInfo, ...opts });\n}\n\nasync function push(bag, appId, opts) {\n if (bag === 'schema' || bag === 'all') {\n const { ok } = await pushSchema(appId, opts);\n if (!ok) return process.exit(1);\n }\n if (bag === 'perms' || bag === 'all') {\n const { ok } = await pushPerms(appId);\n if (!ok) return process.exit(1);\n }\n}\n\nfunction printDotEnvInfo(envType, appId) {\n console.log(`\\nPicked app ${chalk.green(appId)}!\\n`);\n console.log(\n `To use this app automatically from now on, update your ${chalk.green('`.env`')} file:`,\n );\n const picked = potentialEnvs[envType];\n const rest = { ...potentialEnvs };\n delete rest[envType];\n console.log(` ${chalk.green(picked)}=${appId}`);\n const otherEnvs = Object.values(rest);\n otherEnvs.sort();\n const otherEnvStr = otherEnvs.map((x) => ' ' + chalk.green(x)).join('\\n');\n console.log(`Alternative names: \\n${otherEnvStr} \\n`);\n console.log(terminalLink('Dashboard:', appDashUrl(appId)) + '\\n');\n}\n\nasync function handleEnvFile(pkgAndAuthInfo, { appId, appToken }) {\n const { pkgDir } = pkgAndAuthInfo;\n const envType = await detectEnvType(pkgAndAuthInfo);\n const envName = potentialEnvs[envType];\n\n const envFile = program.optsWithGlobals().env ?? '.env';\n const hasEnvFile = await pathExists(join(pkgDir, envFile));\n if (hasEnvFile) {\n printDotEnvInfo(envType, appId);\n return;\n }\n console.log(\n `\\nLooks like you don't have a ${chalk.green(`\\`${envFile}\\``)} file yet.`,\n );\n console.log(\n `If we set ${chalk.green(envName)} & ${chalk.green('INSTANT_APP_ADMIN_TOKEN')}, we can remember the app that you chose for all future commands.`,\n );\n\n const saveExtraInfo =\n envFile !== '.env' ? chalk.green(' (will create `' + envFile + '`)') : '';\n\n const ok = await promptOk(\n {\n inline: true,\n promptText: 'Want us to create this env file for you?' + saveExtraInfo,\n modifyOutput: (a) => a,\n },\n program.opts(),\n true,\n );\n if (!ok) {\n console.log(\n `No .env file created. You can always set ${chalk.green('`' + envName + '`')} later. \\n`,\n );\n return;\n }\n const content =\n [\n [envName, appId],\n ['INSTANT_APP_ADMIN_TOKEN', appToken],\n ]\n .map(([k, v]) => `${k}=${v}`)\n .join('\\n') + '\\n';\n await writeFile(join(pkgDir, envFile), content, 'utf-8');\n if (envFile !== '.env') {\n console.log(`Created ${chalk.green(envFile)}!`);\n } else {\n console.log(`Created ${chalk.green('.env')} file!`);\n }\n}\n\nasync function getOrCreateAppAndWriteToEnv(pkgAndAuthInfo, opts) {\n const ret = await detectOrCreateAppWithErrorLogging(opts);\n if (!ret.ok) return ret;\n const { appId, appToken, source } = ret;\n if (source === 'created' || source === 'imported') {\n await handleEnvFile(pkgAndAuthInfo, { appId, appToken });\n }\n return ret;\n}\n\nasync function pull(bag, appId, pkgAndAuthInfo) {\n if (bag === 'schema' || bag === 'all') {\n const { ok } = await pullSchema(appId, pkgAndAuthInfo);\n if (!ok) return process.exit(1);\n }\n if (bag === 'perms' || bag === 'all') {\n const { ok } = await pullPerms(appId, pkgAndAuthInfo);\n if (!ok) return process.exit(1);\n }\n}\n\nasync function login(options) {\n const registerRes = await fetchJson({\n method: 'POST',\n path: '/dash/cli/auth/register',\n debugName: 'Login register',\n errorMessage: 'Failed to register login.',\n noAuth: true,\n command: 'login',\n });\n\n if (!registerRes.ok) {\n return process.exit(1);\n }\n\n const { secret, ticket } = registerRes.data;\n\n console.log();\n\n if (isHeadlessEnvironment(options)) {\n console.log(\n `Open this URL in a browser to log in:\\n ${instantDashOrigin}/dash?ticket=${ticket}\\n`,\n );\n } else {\n const ok = await promptOk(\n {\n promptText: `This will open instantdb.com in your browser, OK to proceed?`,\n },\n program.opts(),\n /*defaultAnswer=*/ true,\n );\n\n if (!ok) return;\n openInBrowser(`${instantDashOrigin}/dash?ticket=${ticket}`);\n }\n\n console.log('Waiting for authentication...');\n const authTokenRes = await waitForAuthToken({ secret });\n if (!authTokenRes) {\n return process.exit(1);\n }\n\n const { token, email } = authTokenRes;\n\n if (options.print) {\n console.log(chalk.red('[Do not share] Your Instant auth token:', token));\n } else {\n await saveConfigAuthToken(token);\n console.log(chalk.green(`Successfully logged in as ${email}!`));\n }\n return token;\n}\n\nasync function logout() {\n const { authConfigFilePath } = getAuthPaths();\n\n try {\n await unlink(authConfigFilePath);\n console.log(chalk.green('Successfully logged out from Instant!'));\n return true;\n } catch (error) {\n if (error.code === 'ENOENT') {\n console.log(chalk.green('You were already logged out!'));\n } else {\n error('Failed to logout: ' + error.message);\n }\n return false;\n }\n}\n\nconst packageAliasAndFullNames = {\n react: '@instantdb/react',\n 'react-native': '@instantdb/react-native',\n core: '@instantdb/core',\n admin: '@instantdb/admin',\n};\n\nasync function getOrInstallInstantModuleWithErrorLogging(pkgDir, opts) {\n const pkgJson = await getPackageJSONWithErrorLogging(pkgDir);\n if (!pkgJson) {\n return;\n }\n console.log('Checking for an Instant SDK...');\n const instantModuleName = await getInstantModuleName(pkgJson);\n if (instantModuleName) {\n console.log(\n `Found ${chalk.green(instantModuleName)} in your package.json.`,\n );\n return instantModuleName;\n }\n console.log(\n \"Couldn't find an Instant SDK in your package.json, let's install one!\",\n );\n\n let moduleName;\n if (opts.package) {\n moduleName = packageAliasAndFullNames[opts.package];\n } else {\n if (program.optsWithGlobals()?.yes) {\n console.error(\n '--yes was provided without a package specificaion and no Instant SDK was found',\n );\n process.exit(1);\n }\n moduleName = await renderUnwrap(\n new UI.Select({\n promptText: 'Which package would you like to use?',\n options: [\n { label: '@instantdb/react', value: '@instantdb/react' },\n {\n label: '@instantdb/react-native',\n value: '@instantdb/react-native',\n },\n { label: '@instantdb/core', value: '@instantdb/core' },\n { label: '@instantdb/admin', value: '@instantdb/admin' },\n ],\n }),\n );\n }\n\n const packageManager = await detectPackageManager(pkgDir);\n\n const packagesToInstall = [moduleName];\n if (moduleName === '@instantdb/react-native') {\n packagesToInstall.push(\n 'react-native-get-random-values',\n '@react-native-async-storage/async-storage',\n );\n }\n\n const installCommand = getInstallCommand(\n packageManager,\n packagesToInstall.join(' '),\n );\n\n await renderUnwrap(\n new UI.Spinner({\n promise: execAsync(installCommand, pkgDir),\n workingText: `Installing ${packagesToInstall.join(', ')} using ${packageManager}...`,\n doneText: `Installed ${packagesToInstall.join(', ')} using ${packageManager}.`,\n }),\n );\n\n return moduleName;\n}\n\nasync function promptCreateApp(opts) {\n const id = randomUUID();\n const token = randomUUID();\n\n let _title;\n if (opts?.title) {\n _title = opts.title;\n } else {\n _title = await renderUnwrap(\n new UI.TextInput({\n prompt: 'What would you like to call it?',\n placeholder: 'My cool app',\n }),\n ).catch(() => null);\n }\n\n const title = _title?.trim();\n\n if (!title) {\n error('No name provided.');\n return { ok: false };\n }\n\n const res = await fetchJson({\n debugName: 'Fetching orgs',\n method: 'GET',\n path: '/dash',\n errorMessage: 'Failed to fetch apps.',\n command: 'init',\n });\n if (!res.ok) {\n return { ok: false };\n }\n\n const allowedOrgs = res.data.orgs.filter((org) => org.role !== 'app-member');\n\n let org_id = opts.org;\n\n if (!org_id && allowedOrgs.length) {\n const choices = [{ label: '(No organization)', value: null }];\n for (const org of allowedOrgs) {\n choices.push({ label: org.title, value: org.id });\n }\n const choice = await renderUnwrap(\n new UI.Select({\n promptText: 'Would you like to create the app in an organization?',\n options: choices,\n }),\n );\n if (choice) {\n org_id = choice;\n }\n }\n\n const app = { id, title, admin_token: token, org_id };\n const appRes = await fetchJson({\n method: 'POST',\n path: '/dash/apps',\n debugName: 'App create',\n errorMessage: 'Failed to create app.',\n body: app,\n command: 'init',\n });\n\n if (!appRes.ok) return { ok: false };\n return {\n ok: true,\n appId: id,\n appTitle: title,\n appToken: token,\n source: 'created',\n };\n}\n\nasync function promptImportAppOrCreateApp() {\n const res = await fetchJson({\n debugName: 'Fetching apps',\n method: 'GET',\n path: '/dash',\n errorMessage: 'Failed to fetch apps.',\n command: 'init',\n });\n if (!res.ok) {\n return { ok: false };\n }\n\n const result = await renderUnwrap(\n new UI.AppSelector({\n allowEphemeral: true,\n allowCreate: true,\n startingMenuIndex: 2,\n api: {\n getDash: () => res.data,\n createEphemeralApp,\n getAppsForOrg: async (orgId) => {\n const orgsRes = await fetchJson({\n debugName: 'Fetching org apps',\n method: 'GET',\n path: `/dash/orgs/${orgId}`,\n errorMessage: 'Failed to fetch apps.',\n command: 'init',\n });\n if (!orgsRes.ok) {\n throw new Error('Failed to fetch org apps');\n }\n return { apps: orgsRes.data.apps };\n },\n createApp,\n },\n }),\n );\n\n return {\n ok: true,\n appId: result.appId,\n appToken: result.adminToken,\n source: result.approach === 'import' ? 'imported' : 'created',\n };\n}\n\nasync function createApp(title, orgId) {\n const id = randomUUID();\n const token = randomUUID();\n const app = { id, title, admin_token: token, org_id: orgId };\n const appRes = await fetchJson({\n method: 'POST',\n path: '/dash/apps',\n debugName: 'App create',\n errorMessage: 'Failed to create app.',\n body: app,\n command: 'init',\n });\n if (!appRes.ok) throw new Error('Failed to create app');\n return { appId: id, adminToken: token };\n}\n\nasync function createEphemeralApp(title) {\n const api = new PlatformApi({ apiURI: instantBackendOrigin });\n const { app } = await api.createTemporaryApp({ title });\n return { appId: app.id, adminToken: app.adminToken };\n}\n\nasync function detectAppWithErrorLogging(opts) {\n const fromOpts = await detectAppIdFromOptsWithErrorLogging(opts);\n if (!fromOpts.ok) return fromOpts;\n if (fromOpts.appId) {\n return { ok: true, appId: fromOpts.appId, source: 'opts' };\n }\n const fromEnv = detectAppIdFromEnvWithErrorLogging();\n if (!fromEnv.ok) return fromEnv;\n if (fromEnv.found) {\n const { envName, value } = fromEnv.found;\n console.log(`Found ${chalk.green(envName)}: ${value}`);\n return { ok: true, appId: value, source: 'env' };\n }\n return { ok: true };\n}\n\nasync function detectOrCreateAppWithErrorLogging(opts) {\n const detected = await detectAppWithErrorLogging(opts);\n if (!detected.ok) return detected;\n if (detected.appId) {\n return detected;\n }\n let action;\n if (program.optsWithGlobals().yes) {\n action = 'create';\n if (!opts?.title) {\n console.error(\n chalk.red(`Title is required when using --yes and no app is linked`),\n );\n process.exit(1);\n }\n const app = await createApp(opts.title);\n\n return { ok: true, appId: app.appId, source: 'created' };\n } else {\n console.log();\n return await promptImportAppOrCreateApp();\n }\n}\n\nasync function writeTypescript(path, content, encoding) {\n const prettierConfig = await prettier.resolveConfig(path);\n const formattedCode = await prettier.format(content, {\n ...prettierConfig,\n parser: 'typescript',\n });\n return await writeFile(path, formattedCode, encoding);\n}\n\nasync function getInstantModuleName(pkgJson) {\n const deps = pkgJson.dependencies || {};\n const devDeps = pkgJson.devDependencies || {};\n const instantModuleName = [\n '@instantdb/react',\n '@instantdb/react-native',\n '@instantdb/core',\n '@instantdb/admin',\n ].find((name) => deps[name] || devDeps[name]);\n return instantModuleName;\n}\n\nasync function getPackageJson(pkgDir) {\n return await readJsonFile(join(pkgDir, 'package.json'));\n}\n\nasync function getPackageJSONWithErrorLogging(pkgDir) {\n const pkgJson = await getPackageJson(pkgDir);\n if (!pkgJson) {\n error(`Couldn't find a packge.json file in: ${pkgDir}. Please add one.`);\n return;\n }\n return pkgJson;\n}\n\nasync function enforcePackageAndAuthInfoWithErrorLogging(_opts) {\n const projectInfo = await packageDirectoryWithErrorLogging();\n if (!projectInfo) {\n return;\n }\n const { dir: pkgDir, type: projectType } = projectInfo;\n\n // Deno projects don't have package.json or node_modules\n if (projectType === 'deno') {\n const authToken = await readConfigAuthTokenWithErrorLogging();\n if (!authToken) {\n return;\n }\n return {\n pkgDir,\n projectType,\n instantModuleName: '@instantdb/core',\n authToken,\n };\n }\n\n const pkgJson = await getPackageJSONWithErrorLogging(pkgDir);\n if (!pkgJson) {\n return;\n }\n const instantModuleName = await getInstantModuleName(pkgJson);\n if (!instantModuleName) {\n error(\"We couldn't find an Instant SDK. Install one, or run `init`\");\n }\n const authToken = await readConfigAuthTokenWithErrorLogging();\n if (!authToken) {\n return;\n }\n return { pkgDir, projectType, instantModuleName, authToken };\n}\n\nasync function getOrPromptPackageAndAuthInfoWithErrorLogging(opts) {\n const projectInfo = await packageDirectoryWithErrorLogging();\n if (!projectInfo) {\n return;\n }\n const { dir: pkgDir, type: projectType } = projectInfo;\n\n // Deno projects don't have package.json or node_modules\n if (projectType === 'deno') {\n const authToken = await readAuthTokenOrLoginWithErrorLogging();\n if (!authToken) {\n return;\n }\n return {\n pkgDir,\n projectType,\n instantModuleName: '@instantdb/core',\n authToken,\n };\n }\n\n const instantModuleName = await getOrInstallInstantModuleWithErrorLogging(\n pkgDir,\n opts,\n );\n if (!instantModuleName) {\n return;\n }\n const authToken = await readAuthTokenOrLoginWithErrorLogging();\n if (!authToken) {\n return;\n }\n return { pkgDir, projectType, instantModuleName, authToken };\n}\n\nasync function pullSchema(\n appId,\n { pkgDir, instantModuleName, experimentalTypePreservation },\n) {\n console.log('Pulling schema...');\n\n const pullRes = await fetchJson({\n path: `/dash/apps/${appId}/schema/pull`,\n debugName: 'Schema pull',\n errorMessage: 'Failed to pull schema.',\n command: 'pull',\n });\n\n if (!pullRes.ok) return pullRes;\n\n if (\n !countEntities(pullRes.data.schema.refs) &&\n !countEntities(pullRes.data.schema.blobs)\n ) {\n console.log('Schema is empty. Skipping.');\n return { ok: true };\n }\n\n const prev = await readLocalSchemaFile();\n if (prev) {\n const shouldContinue = await promptOk(\n {\n promptText:\n 'This will overwrite your local instant.schema.ts file, OK to proceed?',\n modifyOutput: UI.modifiers.yPadding,\n inline: true,\n },\n program.opts(),\n );\n console.log();\n\n if (!shouldContinue) return { ok: true };\n }\n\n const shortSchemaPath = getSchemaPathToWrite(prev?.path);\n const schemaPath = join(pkgDir, shortSchemaPath);\n\n let newSchemaContent = generateSchemaTypescriptFile(\n prev?.schema,\n apiSchemaToInstantSchemaDef(pullRes.data.schema),\n instantModuleName,\n );\n\n if (prev && experimentalTypePreservation) {\n try {\n const oldSchemaContent = await readFile(prev.path, 'utf-8');\n newSchemaContent = mergeSchema(oldSchemaContent, newSchemaContent);\n } catch (e) {\n warn(\n 'Failed to merge schema with existing file. Overwriting instead.',\n e,\n );\n }\n }\n\n await writeTypescript(schemaPath, newSchemaContent, 'utf-8');\n\n console.log('✅ Wrote schema to ' + shortSchemaPath);\n\n return { ok: true };\n}\n\nasync function pullPerms(appId, { pkgDir, instantModuleName }) {\n console.log('Pulling perms...');\n\n const pullRes = await fetchJson({\n path: `/dash/apps/${appId}/perms/pull`,\n debugName: 'Perms pull',\n errorMessage: 'Failed to pull perms.',\n command: 'pull',\n });\n\n if (!pullRes.ok) return pullRes;\n const prev = await readLocalPermsFile();\n if (prev) {\n const shouldContinue = await promptOk(\n {\n promptText:\n 'This will overwrite your local instant.perms.ts file, OK to proceed?',\n modifyOutput: UI.modifiers.yPadding,\n inline: true,\n },\n program.opts(),\n );\n console.log();\n\n if (!shouldContinue) return { ok: true };\n }\n\n const shortPermsPath = getPermsPathToWrite(prev?.path);\n const permsPath = join(pkgDir, shortPermsPath);\n await writeTypescript(\n permsPath,\n generatePermsTypescriptFile(pullRes.data.perms || {}, instantModuleName),\n 'utf-8',\n );\n\n console.log('✅ Wrote permissions to ' + shortPermsPath);\n\n return { ok: true };\n}\n\nfunction indexingJobCompletedActionMessage(job) {\n if (job.job_type === 'check-data-type') {\n return `setting type of ${job.attr_name} to ${job.checked_data_type}`;\n }\n if (job.job_type === 'remove-data-type') {\n return `removing type from ${job.attr_name}`;\n }\n if (job.job_type === 'index') {\n return `adding index to ${job.attr_name}`;\n }\n if (job.job_type === 'remove-index') {\n return `removing index from ${job.attr_name}`;\n }\n if (job.job_type === 'unique') {\n return `adding uniqueness constraint to ${job.attr_name}`;\n }\n if (job.job_type === 'remove-unique') {\n return `removing uniqueness constraint from ${job.attr_name}`;\n }\n if (job.job_type === 'required') {\n return `adding required constraint to ${job.attr_name}`;\n }\n if (job.job_type === 'remove-required') {\n return `removing required constraint from ${job.attr_name}`;\n }\n return `unexpected job type ${job.job_type} - please ping us on discord with this job id (${job.id})`;\n}\n\nfunction truncate(s, maxLen) {\n if (s.length > maxLen) {\n return `${s.substr(0, maxLen - 3)}...`;\n }\n return s;\n}\n\nfunction formatSamples(triples_samples) {\n return triples_samples.slice(0, 3).map((t) => {\n return { ...t, value: truncate(JSON.stringify(t.value), 32) };\n });\n}\n\nfunction createUrl(triple, job) {\n const urlParams = new URLSearchParams({\n s: 'main',\n app: job.app_id,\n t: 'explorer',\n ns: job.attr_name.split('.')[0],\n where: JSON.stringify(['id', triple.entity_id]),\n });\n const url = new URL(instantDashOrigin);\n url.pathname = '/dash';\n url.search = urlParams.toString();\n return url;\n}\n\nfunction padCell(value, width) {\n const trimmed = value.length > width ? value.substring(0, width) : value;\n return trimmed + ' '.repeat(width - trimmed.length);\n}\n\nfunction indexingJobCompletedMessage(job) {\n const actionMessage = indexingJobCompletedActionMessage(job);\n if (job.job_status === 'canceled') {\n return `Canceled ${actionMessage} before it could finish.`;\n }\n if (job.job_status === 'completed') {\n return `Finished ${actionMessage}.`;\n }\n if (job.job_status === 'errored') {\n if (job.invalid_triples_sample?.length) {\n const [etype, label] = job.attr_name.split('.');\n const samples = formatSamples(job.invalid_triples_sample);\n const longestValue = samples.reduce(\n (acc, { value }) => Math.max(acc, value.length),\n label.length,\n );\n\n const columns = [\n { header: 'namespace', width: 15, getValue: () => etype },\n {\n header: 'id',\n width: 37,\n getValue: (triple) =>\n terminalLink(triple.entity_id, createUrl(triple, job).toString(), {\n fallback: () => triple.entity_id,\n }),\n },\n {\n header: label,\n width: longestValue + 2,\n getValue: (triple) => triple.value,\n },\n { header: 'type', width: 8, getValue: (triple) => triple.json_type },\n ];\n\n let msg = `${chalk.red('INVALID DATA')} ${actionMessage}.\\n`;\n if (job.invalid_unique_value) {\n msg += ` Found multiple entities with value ${truncate(JSON.stringify(job.invalid_unique_value), 64)}.\\n`;\n }\n if (job.error === 'triple-too-large-error') {\n msg += ` Some of the existing data is too large to index.\\n`;\n }\n\n msg += ` First few examples:\\n`;\n msg += ` ${columns.map((col) => chalk.bold(padCell(col.header, col.width))).join(' | ')}\\n`;\n msg += ` ${columns.map((col) => '-'.repeat(col.width)).join('-|-')}\\n`;\n\n for (const triple of samples) {\n const cells = columns.map((col) =>\n padCell(col.getValue(triple), col.width),\n );\n msg += ` ${cells.join(' | ')}\\n`;\n }\n return msg;\n }\n return `Error ${actionMessage}.`;\n }\n}\n\nfunction joinInSentence(items) {\n if (items.length === 0) {\n return '';\n }\n if (items.length === 1) {\n return items[0];\n }\n if (items.length === 2) {\n return `${items[0]} and ${items[1]}`;\n }\n return `${items.slice(0, -1).join(', ')}, and ${items[items.length - 1]}`;\n}\n\nfunction jobGroupDescription(jobs) {\n const actions = new Set();\n const jobActions = {\n 'check-data-type': 'updating types',\n 'remove-data-type': 'updating types',\n index: 'updating indexes',\n 'remove-index': 'updating indexes',\n unique: 'updating uniqueness constraints',\n 'remove-unique': 'updating uniqueness constraints',\n required: 'making attributes required',\n 'remove-required': 'making attributes optional',\n };\n for (const job of jobs) {\n actions.add(jobActions[job.job_type]);\n }\n return joinInSentence([...actions].sort()) || 'updating schema';\n}\n\nasync function waitForIndexingJobsToFinish(appId, data) {\n const spinnerDefferedPromise = deferred();\n const spinner = new UI.Spinner({\n promise: spinnerDefferedPromise.promise,\n });\n const spinnerRenderPromise = renderUnwrap(spinner);\n\n const groupId = data['group-id'];\n let jobs = data.jobs;\n let waitMs = 20;\n let lastUpdatedAt = new Date(0);\n\n const completedIds = new Set();\n\n const errorMessages = [];\n\n while (true) {\n let stillRunning = false;\n let updated = false;\n let workEstimateTotal = 0;\n let workCompletedTotal = 0;\n\n for (const job of jobs) {\n const updatedAt = new Date(job.updated_at);\n if (updatedAt > lastUpdatedAt) {\n updated = true;\n lastUpdatedAt = updatedAt;\n }\n if (job.job_status === 'waiting' || job.job_status === 'processing') {\n stillRunning = true;\n // Default estimate to high value to prevent % from jumping around\n workEstimateTotal += job.work_estimate ?? 50000;\n workCompletedTotal += job.work_completed ?? 0;\n } else {\n if (!completedIds.has(job.id)) {\n completedIds.add(job.id);\n const msg = indexingJobCompletedMessage(job);\n if (msg) {\n if (job.job_status === 'errored') {\n spinner.addMessage(msg);\n errorMessages.push(msg);\n } else {\n spinner.addMessage(msg);\n }\n }\n }\n }\n }\n if (!stillRunning) {\n break;\n }\n if (workEstimateTotal) {\n const percent = Math.floor(\n (workCompletedTotal / workEstimateTotal) * 100,\n );\n spinner.updateText(`${jobGroupDescription(jobs)} ${percent}%`);\n }\n waitMs = updated ? 1 : Math.min(10000, waitMs * 2);\n await sleep(waitMs);\n const res = await fetchJson({\n debugName: 'Check indexing status',\n method: 'GET',\n path: `/dash/apps/${appId}/indexing-jobs/group/${groupId}`,\n errorMessage: 'Failed to check indexing status.',\n command: 'push',\n });\n if (!res.ok) {\n break;\n }\n jobs = res.data.jobs;\n }\n\n spinnerDefferedPromise.resolve(null);\n\n await spinnerRenderPromise;\n\n // Log errors at the end so that they're easier to see.\n if (errorMessages.length) {\n for (const msg of errorMessages) {\n console.log(msg);\n }\n console.log(chalk.red('Some steps failed while updating schema.'));\n process.exit(1);\n }\n}\n\nconst resolveRenames = async (created, promptData, extraInfo) => {\n const answer = await renderUnwrap(\n new ResolveRenamePrompt(\n created,\n promptData,\n extraInfo,\n UI.modifiers.piped([\n (out) =>\n boxen(out, {\n dimBorder: true,\n padding: {\n left: 1,\n right: 1,\n },\n }),\n UI.modifiers.vanishOnComplete,\n ]),\n ),\n );\n return answer;\n};\n\nfunction collectSystemCatalogIdentNames(currentAttrs) {\n const allSystemIdents = currentAttrs\n .filter((attr) => attr.catalog === 'system')\n .flatMap((attr) =>\n [attr['forward-identity'], attr['reverse-identity']].filter(Boolean),\n );\n\n /** @type {Record<string, Set<string>>} */\n let res = {};\n for (const [_, etype, label] of allSystemIdents) {\n res[etype] = res[etype] || new Set();\n res[etype].add(label);\n }\n return res;\n}\n\nasync function pushSchema(appId, opts) {\n const res = await readLocalSchemaFileWithErrorLogging();\n if (!res) return { ok: false };\n const { schema } = res;\n\n const pulledSchemaResponse = await fetchJson({\n method: 'GET',\n path: `/dash/apps/${appId}/schema/pull`,\n debugName: 'Schema plan',\n errorMessage: 'Failed to get old schema.',\n command: 'push',\n });\n\n if (!pulledSchemaResponse.ok) return pulledSchemaResponse;\n\n const currentAttrs = pulledSchemaResponse.data['attrs'];\n const currentApiSchema = pulledSchemaResponse.data['schema'];\n const oldSchema = apiSchemaToInstantSchemaDef(currentApiSchema, {\n disableTypeInference: true,\n });\n const systemCatalogIdentNames = collectSystemCatalogIdentNames(currentAttrs);\n\n try {\n validateSchema(schema, systemCatalogIdentNames);\n } catch (error) {\n if (error instanceof SchemaValidationError) {\n console.error(chalk.red('Invalid schema:', error.message));\n } else {\n console.error('Unexpected error:', error);\n }\n return { ok: false };\n }\n\n const renameSelector = program.optsWithGlobals().yes\n ? buildAutoRenameSelector(opts)\n : resolveRenames;\n\n const diffResult = await diffSchemas(\n oldSchema,\n schema,\n renameSelector,\n systemCatalogIdentNames,\n );\n\n if (currentAttrs === undefined) {\n throw new Error(\"Couldn't get current schema from server\");\n }\n\n const txSteps = convertTxSteps(diffResult, currentAttrs);\n\n if (txSteps.length === 0) {\n console.log(chalk.bgGray('No schema changes to apply!'));\n return { ok: true };\n }\n\n let wantsToPush = false;\n try {\n const groupedSteps = groupSteps(diffResult);\n const lines = renderSchemaPlan(groupedSteps, currentAttrs);\n if (program.optsWithGlobals().yes) {\n console.log('Applying schema changes...');\n console.log(lines.join('\\n'));\n }\n wantsToPush = await promptOk(\n {\n promptText: 'Push these changes?',\n yesText: 'Push',\n noText: 'Cancel',\n modifyOutput: (output) => {\n let both = lines.join('\\n') + '\\n\\n' + output;\n return boxen(both, {\n dimBorder: true,\n padding: {\n left: 1,\n right: 1,\n },\n });\n },\n },\n program.opts(),\n );\n } catch (error) {\n if (error instanceof CancelSchemaError) {\n console.info('Schema migration cancelled!');\n }\n return { ok: false };\n }\n\n if (verbose) {\n console.log(txSteps);\n }\n\n if (wantsToPush) {\n const applyRes = await fetchJson({\n method: 'POST',\n path: `/dash/apps/${appId}/schema/steps/apply`,\n debugName: 'Schema apply',\n errorMessage: 'Failed to update schema.',\n body: {\n steps: txSteps,\n },\n command: 'push',\n });\n console.log(chalk.green('Schema updated!'));\n if (!applyRes.ok) return applyRes;\n\n if (applyRes.data['indexing-jobs']) {\n await waitForIndexingJobsToFinish(appId, applyRes.data['indexing-jobs']);\n }\n } else {\n console.info('Schema migration cancelled!');\n }\n\n return { ok: true };\n}\n\nasync function claimEphemeralApp(appId, adminToken) {\n const res = await fetchJson({\n method: 'POST',\n body: {\n app_id: appId,\n token: adminToken,\n },\n path: `/dash/apps/ephemeral/${appId}/claim`,\n debugName: 'Claim ephemeral app',\n errorMessage: 'Failed to claim ephemeral app.',\n command: 'claim',\n });\n\n if (!res.ok) return res;\n\n console.log(chalk.green('App claimed!'));\n return { ok: true };\n}\n\nasync function pushPerms(appId) {\n const res = await readLocalPermsFileWithErrorLogging();\n if (!res) {\n return { ok: true };\n }\n\n console.log('Planning perms...');\n\n const prodPerms = await fetchJson({\n path: `/dash/apps/${appId}/perms/pull`,\n debugName: 'Perms pull',\n errorMessage: 'Failed to pull perms.',\n command: 'push',\n });\n\n if (!prodPerms.ok) return prodPerms;\n\n const diffedStr = jsonDiff.diffString(\n prodPerms.data.perms || {},\n res.perms || {},\n );\n if (!diffedStr.length) {\n console.log('No perms changes detected. Skipping.');\n return { ok: true };\n }\n\n const okPush = await promptOk(\n {\n promptText: 'Push these changes to your perms?',\n modifyOutput: (output) => {\n let both = diffedStr + '\\n' + output;\n return boxen(both, {\n dimBorder: true,\n padding: {\n left: 1,\n right: 1,\n },\n });\n },\n },\n program.opts(),\n );\n if (!okPush) return { ok: true };\n\n const permsRes = await fetchJson({\n method: 'POST',\n path: `/dash/apps/${appId}/rules`,\n debugName: 'Schema apply',\n errorMessage: 'Failed to update schema.',\n body: {\n code: res.perms,\n },\n command: 'push',\n });\n\n if (!permsRes.ok) return permsRes;\n\n console.log(chalk.green('Permissions updated!'));\n\n return { ok: true };\n}\n\nasync function waitForAuthToken({ secret }) {\n for (let i = 1; i <= 120; i++) {\n await sleep(1000);\n const authCheckRes = await fetchJson({\n method: 'POST',\n debugName: 'Auth check',\n errorMessage: 'Failed to check auth status.',\n path: '/dash/cli/auth/check',\n body: { secret },\n noAuth: true,\n noLogError: true,\n command: 'login',\n });\n if (authCheckRes.ok) {\n return authCheckRes.data;\n }\n if (authCheckRes.data?.hint.errors?.[0]?.issue === 'waiting-for-user') {\n continue;\n }\n error('Failed to authenticate ');\n prettyPrintJSONErr(authCheckRes.data);\n return;\n }\n error('Timed out waiting for authentication');\n return null;\n}\n\n// resources\n\n/**\n * Fetches JSON data from a specified path using the POST method.\n *\n * @param {Object} options\n * @param {string} options.debugName\n * @param {string} options.errorMessage\n * @param {string} options.path\n * @param {'POST' | 'GET'} [options.method]\n * @param {Object} [options.body=undefined]\n * @param {boolean} [options.noAuth]\n * @param {boolean} [options.noLogError]\n * @param {string} [options.command] - The CLI command being executed (e.g., 'push', 'pull', 'login')\n * @returns {Promise<{ ok: boolean; data: any }>}\n */\nasync function fetchJson({\n debugName,\n errorMessage,\n path,\n body,\n method,\n noAuth,\n noLogError,\n command,\n}) {\n const withAuth = !noAuth;\n const withErrorLogging = !noLogError;\n let authToken = null;\n if (withAuth) {\n authToken = await readConfigAuthTokenWithErrorLogging();\n if (!authToken) {\n return { ok: false, data: undefined };\n }\n }\n const timeoutMs = 1000 * 60 * 5; // 5 minutes\n\n try {\n const res = await fetch(`${instantBackendOrigin}${path}`, {\n method: method ?? 'GET',\n headers: {\n ...(withAuth ? { Authorization: `Bearer ${authToken}` } : {}),\n 'Content-Type': 'application/json',\n 'X-Instant-Source': 'instant-cli',\n 'X-Instant-Version': version,\n ...(command ? { 'X-Instant-Command': command } : {}),\n },\n body: body ? JSON.stringify(body) : undefined,\n signal: AbortSignal.timeout(timeoutMs),\n });\n\n if (verbose) {\n console.log(debugName, 'response:', res.status, res.statusText);\n }\n\n let data;\n try {\n data = await res.json();\n } catch {\n data = null;\n }\n if (verbose && data) {\n console.log(debugName, 'json:', JSON.stringify(data, null, 2));\n }\n if (!res.ok) {\n if (withErrorLogging) {\n error(errorMessage);\n prettyPrintJSONErr(data);\n }\n return { ok: false, data };\n }\n\n return { ok: true, data };\n } catch (err) {\n if (withErrorLogging) {\n if (err.name === 'AbortError') {\n error(\n `Timeout: It took more than ${timeoutMs / 60000} minutes to get the result.`,\n );\n } else {\n error(`Error: type: ${err.name}, message: ${err.message}`);\n }\n }\n return { ok: false, data: null };\n }\n}\n\nfunction prettyPrintJSONErr(data) {\n if (data?.message) {\n error(data.message);\n }\n if (Array.isArray(data?.hint?.errors)) {\n for (const err of data.hint.errors) {\n error(`${err.in ? err.in.join('->') + ': ' : ''}${err.message}`);\n }\n }\n if (!data) {\n error('Failed to parse error response');\n }\n}\n\nasync function readLocalPermsFile() {\n const readCandidates = getPermsReadCandidates();\n const res = await loadConfig({\n sources: readCandidates,\n merge: false,\n });\n if (!res.config) return;\n const relativePath = path.relative(process.cwd(), res.sources[0]);\n return { path: relativePath, perms: res.config };\n}\n\nasync function readLocalPermsFileWithErrorLogging() {\n const res = await readLocalPermsFile();\n if (!res) {\n error(\n `We couldn't find your ${chalk.yellow('`instant.perms.ts`')} file. Make sure it's in the root directory. (Hint: You can use an INSTANT_PERMS_FILE_PATH environment variable to specify it.)`,\n );\n }\n return res;\n}\n\nasync function readLocalSchemaFile() {\n const readCandidates = getSchemaReadCandidates();\n const res = await loadConfig({\n sources: readCandidates,\n merge: false,\n });\n if (!res.config) return;\n const relativePath = path.relative(process.cwd(), res.sources[0]);\n return { path: relativePath, schema: res.config };\n}\n\nasync function readInstantConfigFile() {\n return (\n await loadConfig({\n sources: [\n // load from `instant.config.xx`\n {\n files: 'instant.config',\n extensions: ['ts', 'mts', 'cts', 'js', 'mjs', 'cjs', 'json'],\n },\n ],\n // if false, the only the first matched will be loaded\n // if true, all matched will be loaded and deep merged\n merge: false,\n })\n ).config;\n}\n\nasync function readLocalSchemaFileWithErrorLogging() {\n const res = await readLocalSchemaFile();\n\n if (!res) {\n error(\n `We couldn't find your ${chalk.yellow('`instant.schema.ts`')} file. Make sure it's in the root directory. (Hint: You can use an INSTANT_SCHEMA_FILE_PATH environment variable to specify it.)`,\n );\n return;\n }\n\n if (res.schema?.constructor?.name !== 'InstantSchemaDef') {\n error(\"We couldn't find your schema export.\");\n error(\n 'In your ' +\n chalk.green('`instant.schema.ts`') +\n ' file, make sure you ' +\n chalk.green('`export default schema`'),\n );\n return;\n }\n\n return res;\n}\n\nasync function readConfigAuthToken(allowAdminToken = true) {\n const options = program.opts();\n if (typeof options.token === 'string') {\n return options.token;\n }\n\n if (process.env.INSTANT_CLI_AUTH_TOKEN) {\n return process.env.INSTANT_CLI_AUTH_TOKEN;\n }\n\n if (allowAdminToken) {\n const adminTokenNames = Object.values(potentialAdminTokenEnvs);\n for (const envName of adminTokenNames) {\n const token = process.env[envName];\n if (token) {\n return token;\n }\n }\n }\n\n const authToken = await readFile(\n getAuthPaths().authConfigFilePath,\n 'utf-8',\n ).catch(() => null);\n\n if (authToken) {\n return authToken;\n }\n\n return null;\n}\n\nexport async function readConfigAuthTokenWithErrorLogging() {\n const token = await readConfigAuthToken();\n if (!token) {\n error(\n `Looks like you are not logged in. Please log in with ${chalk.green('`instant-cli login`')}`,\n );\n }\n return token;\n}\n\nasync function readAuthTokenOrLoginWithErrorLogging() {\n const token = await readConfigAuthToken();\n if (token) return token;\n console.log(`Looks like you are not logged in...`);\n console.log(`Let's log in!`);\n return await login({});\n}\n\nasync function saveConfigAuthToken(authToken) {\n const authPaths = getAuthPaths();\n\n await mkdir(authPaths.appConfigDirPath, {\n recursive: true,\n });\n\n return writeFile(authPaths.authConfigFilePath, authToken, 'utf-8');\n}\n\n// utils\n\nfunction sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction countEntities(o) {\n return Object.keys(o).length;\n}\n\nfunction sortedEntries(o) {\n return Object.entries(o).sort(([a], [b]) => a.localeCompare(b));\n}\n\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n// attr helpers\nfunction identEtype(ident) {\n return ident[1];\n}\n\nfunction identLabel(ident) {\n return ident[2];\n}\n\nfunction identName(ident) {\n return `${identEtype(ident)}.${identLabel(ident)}`;\n}\n\nfunction attrFwdLabel(attr) {\n return attr['forward-identity']?.[2];\n}\n\nfunction attrFwdEtype(attr) {\n return attr['forward-identity']?.[1];\n}\n\nfunction attrRevLabel(attr) {\n return attr['reverse-identity']?.[2];\n}\n\nfunction attrRevEtype(attr) {\n return attr['reverse-identity']?.[1];\n}\n\nfunction attrFwdName(attr) {\n return `${attrFwdEtype(attr)}.${attrFwdLabel(attr)}`;\n}\n\nfunction attrRevName(attr) {\n if (attr['reverse-identity']) {\n return `${attrRevEtype(attr)}.${attrRevLabel(attr)}`;\n }\n}\n\n// templates and constants\n\nexport const rels = {\n 'many-false': ['many', 'many'],\n 'one-true': ['one', 'one'],\n 'many-true': ['many', 'one'],\n 'one-false': ['one', 'many'],\n};\n\nfunction isUUID(uuid) {\n const uuidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n return uuidRegex.test(uuid);\n}\n\nasync function detectAppIdFromOptsWithErrorLogging(opts) {\n if (!opts.app) return { ok: true };\n const appId = opts.app;\n const config = await readInstantConfigFile();\n const nameMatch = config?.apps?.[appId];\n const namedAppId = nameMatch?.id && isUUID(nameMatch.id) ? nameMatch : null;\n const uuidAppId = appId && isUUID(appId) ? appId : null;\n\n if (nameMatch && !namedAppId) {\n error(`Expected \\`${appId}\\` to point to a UUID, but got ${nameMatch.id}.`);\n return { ok: false };\n }\n if (!namedAppId && !uuidAppId) {\n error(`Expected App ID to be a UUID, but got: ${chalk.red(appId)}`);\n return { ok: false };\n }\n return { ok: true, appId: namedAppId || uuidAppId };\n}\n\nfunction detectAppIdFromEnvWithErrorLogging() {\n const found = Object.keys(potentialEnvs)\n .map((type) => {\n const envName = potentialEnvs[type];\n const value = process.env[envName];\n return { type, envName, value };\n })\n .find(({ value }) => !!value);\n if (found && !isUUID(found.value)) {\n error(\n `Found ${chalk.green('`' + found.envName + '`')} but it's not a valid UUID.`,\n );\n return { ok: false, found };\n }\n return { ok: true, found };\n}\n\nfunction detectAppIdAndAdminTokenFromEnvWithErrorLogging() {\n const appIdResult = Object.keys(potentialEnvs)\n .map((type) => {\n const envName = potentialEnvs[type];\n const value = process.env[envName];\n return { type, envName, value };\n })\n .find(({ value }) => !!value);\n\n const adminTokenResult = Object.keys(potentialAdminTokenEnvs)\n .map((type) => {\n const envName = potentialAdminTokenEnvs[type];\n const value = process.env[envName];\n return { type, envName, value };\n })\n .find(({ value }) => !!value);\n\n if (appIdResult && !isUUID(appIdResult.value)) {\n error(\n `Found ${chalk.green('`' + appIdResult.envName + '`')} but it's not a valid UUID.`,\n );\n return { ok: false, appId: appIdResult, adminToken: adminTokenResult };\n }\n\n return { ok: true, appId: appIdResult, adminToken: adminTokenResult };\n}\n\nfunction appDashUrl(id) {\n return `${instantDashOrigin}/dash?s=main&t=home&app=${id}`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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","sourcesContent":["// @ts-check\nimport {\n generatePermsTypescriptFile,\n apiSchemaToInstantSchemaDef,\n generateSchemaTypescriptFile,\n diffSchemas,\n convertTxSteps,\n validateSchema,\n SchemaValidationError,\n PlatformApi,\n} from '@instantdb/platform';\nimport version from './version.js';\nimport { existsSync } from 'fs';\nimport { mkdir, writeFile, readFile, unlink } from 'fs/promises';\nimport path, { join } from 'path';\nimport { randomUUID } from 'crypto';\nimport jsonDiff from 'json-diff';\nimport chalk from 'chalk';\nimport { program, Option } from 'commander';\nimport boxen from 'boxen';\nimport { loadConfig } from './util/loadConfig.js';\nimport { findProjectDir } from './util/projectDir.js';\nimport openInBrowser from 'open';\nimport terminalLink from 'terminal-link';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport {\n detectPackageManager,\n getInstallCommand,\n} from './util/packageManager.js';\nimport { pathExists, readJsonFile } from './util/fs.js';\nimport prettier from 'prettier';\nimport {\n CancelSchemaError,\n groupSteps,\n renderSchemaPlan,\n} from './renderSchemaPlan.js';\nimport { getAuthPaths } from './util/getAuthPaths.js';\nimport { renderUnwrap } from './ui/lib.js';\nimport { UI } from './ui/index.js';\nimport { deferred } from './ui/lib.js';\nimport { promptOk } from './util/promptOk.js';\nimport { ResolveRenamePrompt } from './util/renamePrompt.js';\nimport { buildAutoRenameSelector } from './rename.js';\nimport { loadEnv } from './util/loadEnv.js';\nimport { isHeadlessEnvironment } from './util/isHeadlessEnvironment.js';\nimport {\n getSchemaReadCandidates,\n getPermsReadCandidates,\n getSchemaPathToWrite,\n getPermsPathToWrite,\n} from './util/findConfigCandidates.js';\nimport { mergeSchema } from './util/mergeSchema.js';\n\nconst execAsync = promisify(exec);\n\nloadEnv();\n\nconst dev = Boolean(process.env.INSTANT_CLI_DEV);\nconst verbose = Boolean(process.env.INSTANT_CLI_VERBOSE);\n\n// logs\n\nfunction warn(firstArg, ...rest) {\n console.warn(chalk.yellow('[warning]') + ' ' + firstArg, ...rest);\n}\n\nfunction error(firstArg, ...rest) {\n console.error(chalk.red('[error]') + ' ' + firstArg, ...rest);\n}\n\n// json response\n\nconst toJson = (data) => JSON.stringify(data, null, 2);\n\n// consts\n\nconst potentialEnvs = {\n catchall: 'INSTANT_APP_ID',\n next: 'NEXT_PUBLIC_INSTANT_APP_ID',\n svelte: 'PUBLIC_INSTANT_APP_ID',\n vite: 'VITE_INSTANT_APP_ID',\n expo: 'EXPO_PUBLIC_INSTANT_APP_ID',\n nuxt: 'NUXT_PUBLIC_INSTANT_APP_ID',\n};\n\nconst potentialAdminTokenEnvs = {\n default: 'INSTANT_APP_ADMIN_TOKEN',\n short: 'INSTANT_ADMIN_TOKEN',\n};\n\nasync function detectEnvType({ pkgDir }) {\n const packageJSON = await getPackageJson(pkgDir);\n if (!packageJSON) {\n return 'catchall';\n }\n if (packageJSON.dependencies?.next) {\n return 'next';\n }\n if (packageJSON.devDependencies?.svelte) {\n return 'svelte';\n }\n if (packageJSON.devDependencies?.vite) {\n return 'vite';\n }\n if (packageJSON.dependencies?.expo) {\n return 'expo';\n }\n if (packageJSON.dependencies?.nuxt) {\n return 'nuxt';\n }\n return 'catchall';\n}\n\nconst instantDashOrigin = dev\n ? 'http://localhost:3000'\n : 'https://instantdb.com';\n\nconst instantBackendOrigin =\n process.env.INSTANT_CLI_API_URI ||\n (dev ? 'http://localhost:8888' : 'https://api.instantdb.com');\n\nconst PUSH_PULL_OPTIONS = new Set(['schema', 'perms', 'all']);\n\nfunction convertArgToBagWithErrorLogging(arg) {\n if (!arg) {\n return { ok: true, bag: 'all' };\n } else if (PUSH_PULL_OPTIONS.has(arg.trim().toLowerCase())) {\n return { ok: true, bag: arg };\n } else {\n error(\n `${chalk.red(arg)} is not valid. Must be one of ${chalk.green(Array.from(PUSH_PULL_OPTIONS).join(', '))}`,\n );\n return { ok: false };\n }\n}\n\nfunction convertPushPullToCurrentFormat(arg, opts) {\n const { ok, bag } = convertArgToBagWithErrorLogging(arg);\n if (!ok) return { ok: false };\n return { ok: true, bag, opts };\n}\n\nasync function packageDirectoryWithErrorLogging() {\n const projectInfo = await findProjectDir();\n if (!projectInfo) {\n error(\n \"Couldn't find your root directory. Is there a package.json or deno.json file?\",\n );\n return;\n }\n return projectInfo;\n}\n\n// cli\n\n// Header -- this shows up in every command\nconst logoChalk = chalk.bold('instant-cli');\nconst versionChalk = chalk.dim(`${version.trim()}`);\nconst headerChalk = `${logoChalk} ${versionChalk} ` + '\\n';\n\n// Help Footer -- this only shows up in help commands\nconst helpFooterChalk =\n '\\n' +\n chalk.dim.bold('Want to learn more?') +\n '\\n' +\n `Check out the docs: ${chalk.blueBright.underline('https://instantdb.com/docs')}\nJoin the Discord: ${chalk.blueBright.underline('https://discord.com/invite/VU53p7uQcE')}\n`.trim();\n\nprogram.addHelpText('after', helpFooterChalk);\n\nprogram.addHelpText('beforeAll', headerChalk);\n\nfunction getLocalAndGlobalOptions(cmd, helper) {\n const mixOfLocalAndGlobal = helper.visibleOptions(cmd);\n const localOptionsFromMix = mixOfLocalAndGlobal.filter(\n (option) => !option.__global,\n );\n const globalOptionsFromMix = mixOfLocalAndGlobal.filter(\n (option) => option.__global,\n );\n const globalOptions = helper.visibleGlobalOptions(cmd);\n\n return [localOptionsFromMix, globalOptionsFromMix.concat(globalOptions)];\n}\n\n// custom `formatHelp`\n// original: https://github.com/tj/commander.js/blob/master/lib/help.js\nfunction formatHelp(cmd, helper) {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth || 80;\n const itemIndentWidth = 2;\n const itemSeparatorWidth = 2; // between term and description\n function formatItem(term, description) {\n if (description) {\n const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;\n return helper.wrap(\n fullText,\n helpWidth - itemIndentWidth,\n termWidth + itemSeparatorWidth,\n );\n }\n return term;\n }\n function formatList(textArray) {\n return textArray.join('\\n').replace(/^/gm, ' '.repeat(itemIndentWidth));\n }\n\n // Usage\n let output = [`${helper.commandUsage(cmd)}`, ''];\n\n // Description\n const commandDescription = helper.commandDescription(cmd);\n if (commandDescription.length > 0) {\n output = output.concat([helper.wrap(commandDescription, helpWidth, 0), '']);\n }\n\n // Arguments\n const argumentList = helper.visibleArguments(cmd).map((argument) => {\n return formatItem(\n helper.argumentTerm(argument),\n helper.argumentDescription(argument),\n );\n });\n if (argumentList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Arguments'),\n formatList(argumentList),\n '',\n ]);\n }\n const [visibleOptions, visibleGlobalOptions] = getLocalAndGlobalOptions(\n cmd,\n helper,\n );\n\n // Options\n const optionList = visibleOptions.map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (optionList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Options'),\n formatList(optionList),\n '',\n ]);\n }\n // Commands\n const commandList = helper.visibleCommands(cmd).map((cmd) => {\n return formatItem(\n helper.subcommandTerm(cmd),\n helper.subcommandDescription(cmd),\n );\n });\n if (commandList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Commands'),\n formatList(commandList),\n '',\n ]);\n }\n\n if (this.showGlobalOptions) {\n const globalOptionList = visibleGlobalOptions.map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (globalOptionList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Global Options'),\n formatList(globalOptionList),\n '',\n ]);\n }\n }\n\n return output.join('\\n');\n}\n\nprogram.configureHelp({\n showGlobalOptions: true,\n formatHelp,\n});\n\nfunction globalOption(flags, description, argParser) {\n const opt = new Option(flags, description);\n if (argParser) {\n opt.argParser(argParser);\n }\n // @ts-ignore\n // __global does not exist on `Option`,\n // but we use it in `getLocalAndGlobalOptions`, to produce\n // our own custom list of local and global options.\n // For more info, see the original PR:\n // https://github.com/instantdb/instant/pull/505\n opt.__global = true;\n return opt;\n}\n\nfunction warnDeprecation(oldCmd, newCmd) {\n warn(\n chalk.yellow('`instant-cli ' + oldCmd + '` is deprecated.') +\n ' Use ' +\n chalk.green('`instant-cli ' + newCmd + '`') +\n ' instead.' +\n '\\n',\n );\n}\n\nprogram\n .name('instant-cli')\n .addOption(globalOption('-t --token <token>', 'Auth token override'))\n .addOption(globalOption('-y --yes', \"Answer 'yes' to all prompts\"))\n .addOption(globalOption('--env <file>', 'Use a specific .env file'))\n .addOption(\n globalOption('-v --version', 'Print the version number', () => {\n console.log(version);\n process.exit(0);\n }),\n )\n .addHelpOption(globalOption('-h --help', 'Print the help text for a command'))\n .usage(`<command> ${chalk.dim('[options] [args]')}`);\n\nprogram\n .command('login')\n .description('Log into your account')\n .option('-p --print', 'Prints the auth token into the console.')\n .option(\n '--headless',\n 'Print the login URL instead of trying to open the browser',\n )\n .action(async (opts) => {\n console.log(\"Let's log you in!\");\n await login(opts);\n });\n\nprogram\n .command('logout')\n .description('Log out of your Instant account')\n .action(async () => {\n await logout();\n });\n\nprogram\n .command('init')\n .description('Set up a new project.')\n .option(\n '-a --app <app-id>',\n 'If you have an existing app ID, we can pull schema and perms from there.',\n )\n .option(\n '-p --package <react|react-native|core|admin>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .option('--title <title>', 'Title for the created app')\n .action(handleInit);\n\nprogram\n .command('init-without-files')\n .description('Generate a new app id and admin token pair without any files.')\n .option('--title <title>', 'Title for the created app.')\n .option(\n '--org-id <org-id>',\n 'Organization id for app. Cannot be used with --temp flag.',\n )\n .option(\n '--temp',\n 'Create a temporary app which will automatically delete itself after >24 hours.',\n )\n .action(handleInitWithoutFiles);\n\n// Note: Nov 20, 2024\n// We can eventually delete this,\n// once we know most people use the new pull and push commands\nprogram\n .command('push-schema', { hidden: true })\n .argument('[app-id]')\n .description('Push schema to production.')\n .option(\n '--skip-check-types',\n \"Don't check types on the server when pushing schema\",\n )\n .action(async (appIdOrName, opts) => {\n warnDeprecation('push-schema', 'push schema');\n await handlePush('schema', { app: appIdOrName, ...opts });\n });\n\n// Note: Nov 20, 2024\n// We can eventually delete this,\n// once we know most people use the new pull and push commands\nprogram\n .command('push-perms', { hidden: true })\n .argument('[app-id]')\n .description('Push perms to production.')\n .action(async (appIdOrName) => {\n warnDeprecation('push-perms', 'push perms');\n await handlePush('perms', { app: appIdOrName });\n });\n\nprogram\n .command('push')\n .argument(\n '[schema|perms|all]',\n 'Which configuration to push. Defaults to `all`',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to push too. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option(\n '--skip-check-types',\n \"Don't check types on the server when pushing schema\",\n )\n .option(\n '--rename [renames...]',\n 'List of full attribute names separated by a \":\"\\n Example:`push --rename posts.author:posts.creator stores.owner:stores.manager`',\n )\n .option(\n '-p --package <react|react-native|core|admin>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .description('Push schema and perm files to production.')\n .addHelpText(\n 'after',\n `\nEnvironment Variables:\n INSTANT_SCHEMA_FILE_PATH Override schema file location (default: instant.schema.ts)\n INSTANT_PERMS_FILE_PATH Override perms file location (default: instant.perms.ts)\n`,\n )\n .action(async function (arg, inputOpts) {\n const ret = convertPushPullToCurrentFormat(arg, inputOpts);\n if (!ret.ok) return process.exit(1);\n const { bag, opts } = ret;\n await handlePush(bag, opts);\n });\n\n// Note: Nov 20, 2024\n// We can eventually delete this,\n// once we know most people use the new pull and push commands\nprogram\n .command('pull-schema', { hidden: true })\n .argument('[app-id]')\n .description('Generate instant.schema.ts from production')\n .action(async (appIdOrName) => {\n warnDeprecation('pull-schema', 'pull schema');\n await handlePull('schema', { app: appIdOrName });\n });\n\n// Note: Nov 20, 2024\n// We can eventually delete this,\n// once we know most people use the new pull and push commands\nprogram\n .command('pull-perms', { hidden: true })\n .argument('[app-id]')\n .description('Generate instant.perms.ts from production.')\n .action(async (appIdOrName) => {\n warnDeprecation('pull-perms', 'pull perms');\n await handlePull('perms', { app: appIdOrName });\n });\n\nprogram\n .command('pull')\n .argument(\n '[schema|perms|all]',\n 'Which configuration to push. Defaults to `all`',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to push to. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option(\n '-p --package <react|react-native|core|admin>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .option(\n '--experimental-type-preservation',\n \"[Experimental] Preserve manual type changes like `status: i.json<'online' | 'offline'>()` when doing `instant-cli pull schema`\",\n )\n .description('Pull schema and perm files from production.')\n .addHelpText(\n 'after',\n `\nEnvironment Variables:\n INSTANT_SCHEMA_FILE_PATH Override schema file location (default: instant.schema.ts)\n INSTANT_PERMS_FILE_PATH Override perms file location (default: instant.perms.ts)\n`,\n )\n .action(async function (arg, inputOpts) {\n const ret = convertPushPullToCurrentFormat(arg, inputOpts);\n if (!ret.ok) return process.exit(1);\n const { bag, opts } = ret;\n await handlePull(bag, opts);\n });\n\nprogram\n .command('claim')\n .description('Transfer a tempoary app into your Instant account')\n .action(async function () {\n const token = await readConfigAuthToken(false);\n if (!token) {\n console.error(\n `Please log in first with ${chalk.bgGray.white('instant-cli login')} to claim an app`,\n );\n process.exit(1);\n }\n\n const envResult = detectAppIdAndAdminTokenFromEnvWithErrorLogging();\n if (!envResult.ok) return process.exit(1);\n\n if (!envResult.appId) {\n error('No app ID found in environment variables.');\n return process.exit(1);\n }\n\n if (!envResult.adminToken) {\n error('No admin token found in environment variables.');\n return process.exit(1);\n }\n\n const appId = envResult.appId.value;\n const adminToken = envResult.adminToken.value;\n\n console.log(`Found ${chalk.green(envResult.appId.envName)}: ${appId}`);\n\n await claimEphemeralApp(appId, adminToken);\n });\n\nprogram.parse(process.argv);\n\nasync function handleInit(opts) {\n const pkgAndAuthInfo =\n await getOrPromptPackageAndAuthInfoWithErrorLogging(opts);\n if (!pkgAndAuthInfo) return process.exit(1);\n const { ok, appId } = await getOrCreateAppAndWriteToEnv(pkgAndAuthInfo, opts);\n if (!ok) {\n return process.exit(1);\n }\n\n // Create schema file if it doesn't exist\n // or ask to push if local schema exists\n const localSchemaExists = await readLocalSchemaFile();\n if (!localSchemaExists) {\n await pull('schema', appId, pkgAndAuthInfo);\n } else {\n const doSchemaPush = await promptOk(\n {\n promptText: 'Found local schema. Push it to the new app?',\n inline: true,\n },\n program.opts(),\n );\n if (doSchemaPush) {\n await push('schema', appId, opts);\n }\n }\n\n // Create perms file if it doesn't exist\n // or ask to push if local perms exists\n const localPermsExists = await readLocalPermsFile();\n if (!localPermsExists) {\n await pull('perms', appId, pkgAndAuthInfo);\n } else {\n const doPermsPush = await promptOk(\n {\n promptText: 'Found local perms. Push it to the new app?',\n inline: true,\n },\n program.opts(),\n );\n if (doPermsPush) {\n await push('perms', appId, opts);\n }\n }\n}\n\nasync function handleInitWithoutFiles(opts) {\n try {\n const authToken = await readConfigAuthToken(false);\n if (!authToken) {\n throw new Error(\n `Please log in first with 'instant-cli login' before running this command.`,\n );\n }\n\n if (!opts?.title) {\n throw new Error(\n 'Title is required for creating a new app without local files.',\n );\n }\n\n if (opts.title.startsWith('-')) {\n throw new Error(\n `Invalid title: \"${opts.title}\". Title cannot be a flag.`,\n );\n }\n\n if (opts?.temp && opts?.orgId) {\n throw new Error('Cannot use --temp and --org-id flags together.');\n }\n\n let result;\n if (opts?.temp) {\n result = await createEphemeralApp(opts.title);\n } else {\n result = await createApp(opts.title, opts.orgId);\n }\n\n console.error(`${chalk.green('Successfully created new app!')}\\n`);\n\n console.log(\n toJson({\n app: result,\n error: null,\n }),\n );\n } catch (error) {\n console.error(`${chalk.red('Failed to create app.')}\\n`);\n\n console.log(\n toJson({\n app: null,\n error: { message: error.message },\n }),\n );\n process.exit(1);\n }\n}\n\nasync function handlePush(bag, opts) {\n const pkgAndAuthInfo = await enforcePackageAndAuthInfoWithErrorLogging(opts);\n if (!pkgAndAuthInfo) return process.exit(1);\n const { ok, appId } = await detectAppWithErrorLogging(opts);\n if (!ok) return process.exit(1);\n if (!appId) {\n error(\n 'No app ID detected. Please specify one with --app or set up with `instant-cli init`',\n );\n return;\n }\n await push(bag, appId, opts);\n}\n\nasync function handlePull(bag, opts) {\n const pkgAndAuthInfo = await enforcePackageAndAuthInfoWithErrorLogging(opts);\n if (!pkgAndAuthInfo) return process.exit(1);\n const { ok, appId } = await detectAppWithErrorLogging(opts);\n if (!ok) {\n return process.exit(1);\n }\n if (!appId) {\n error(\n 'No app ID detected. Please specify one with --app or set up with `instant-cli init`',\n );\n return;\n }\n await pull(bag, appId, { ...pkgAndAuthInfo, ...opts });\n}\n\nasync function push(bag, appId, opts) {\n if (bag === 'schema' || bag === 'all') {\n const { ok } = await pushSchema(appId, opts);\n if (!ok) return process.exit(1);\n }\n if (bag === 'perms' || bag === 'all') {\n const { ok } = await pushPerms(appId);\n if (!ok) return process.exit(1);\n }\n}\n\nfunction printDotEnvInfo(envType, appId) {\n console.log(`\\nPicked app ${chalk.green(appId)}!\\n`);\n console.log(\n `To use this app automatically from now on, update your ${chalk.green('`.env`')} file:`,\n );\n const picked = potentialEnvs[envType];\n const rest = { ...potentialEnvs };\n delete rest[envType];\n console.log(` ${chalk.green(picked)}=${appId}`);\n const otherEnvs = Object.values(rest);\n otherEnvs.sort();\n const otherEnvStr = otherEnvs.map((x) => ' ' + chalk.green(x)).join('\\n');\n console.log(`Alternative names: \\n${otherEnvStr} \\n`);\n console.log(terminalLink('Dashboard:', appDashUrl(appId)) + '\\n');\n}\n\nasync function handleEnvFile(pkgAndAuthInfo, { appId, appToken }) {\n const { pkgDir } = pkgAndAuthInfo;\n const envType = await detectEnvType(pkgAndAuthInfo);\n const envName = potentialEnvs[envType];\n\n const envFile = program.optsWithGlobals().env ?? '.env';\n const hasEnvFile = await pathExists(join(pkgDir, envFile));\n if (hasEnvFile) {\n printDotEnvInfo(envType, appId);\n return;\n }\n console.log(\n `\\nLooks like you don't have a ${chalk.green(`\\`${envFile}\\``)} file yet.`,\n );\n console.log(\n `If we set ${chalk.green(envName)} & ${chalk.green('INSTANT_APP_ADMIN_TOKEN')}, we can remember the app that you chose for all future commands.`,\n );\n\n const saveExtraInfo =\n envFile !== '.env' ? chalk.green(' (will create `' + envFile + '`)') : '';\n\n const ok = await promptOk(\n {\n inline: true,\n promptText: 'Want us to create this env file for you?' + saveExtraInfo,\n modifyOutput: (a) => a,\n },\n program.opts(),\n true,\n );\n if (!ok) {\n console.log(\n `No .env file created. You can always set ${chalk.green('`' + envName + '`')} later. \\n`,\n );\n return;\n }\n const content =\n [\n [envName, appId],\n ['INSTANT_APP_ADMIN_TOKEN', appToken],\n ]\n .map(([k, v]) => `${k}=${v}`)\n .join('\\n') + '\\n';\n await writeFile(join(pkgDir, envFile), content, 'utf-8');\n if (envFile !== '.env') {\n console.log(`Created ${chalk.green(envFile)}!`);\n } else {\n console.log(`Created ${chalk.green('.env')} file!`);\n }\n}\n\nasync function getOrCreateAppAndWriteToEnv(pkgAndAuthInfo, opts) {\n const ret = await detectOrCreateAppWithErrorLogging(opts);\n if (!ret.ok) return ret;\n const { appId, appToken, source } = ret;\n if (source === 'created' || source === 'imported') {\n await handleEnvFile(pkgAndAuthInfo, { appId, appToken });\n }\n return ret;\n}\n\nasync function pull(bag, appId, pkgAndAuthInfo) {\n if (bag === 'schema' || bag === 'all') {\n const { ok } = await pullSchema(appId, pkgAndAuthInfo);\n if (!ok) return process.exit(1);\n }\n if (bag === 'perms' || bag === 'all') {\n const { ok } = await pullPerms(appId, pkgAndAuthInfo);\n if (!ok) return process.exit(1);\n }\n}\n\nasync function login(options) {\n const registerRes = await fetchJson({\n method: 'POST',\n path: '/dash/cli/auth/register',\n debugName: 'Login register',\n errorMessage: 'Failed to register login.',\n noAuth: true,\n command: 'login',\n });\n\n if (!registerRes.ok) {\n return process.exit(1);\n }\n\n const { secret, ticket } = registerRes.data;\n\n console.log();\n\n if (isHeadlessEnvironment(options)) {\n console.log(\n `Open this URL in a browser to log in:\\n ${instantDashOrigin}/dash?ticket=${ticket}\\n`,\n );\n } else {\n const ok = await promptOk(\n {\n promptText: `This will open instantdb.com in your browser, OK to proceed?`,\n },\n program.opts(),\n /*defaultAnswer=*/ true,\n );\n\n if (!ok) return;\n openInBrowser(`${instantDashOrigin}/dash?ticket=${ticket}`);\n }\n\n console.log('Waiting for authentication...');\n const authTokenRes = await waitForAuthToken({ secret });\n if (!authTokenRes) {\n return process.exit(1);\n }\n\n const { token, email } = authTokenRes;\n\n if (options.print) {\n console.log(chalk.red('[Do not share] Your Instant auth token:', token));\n } else {\n await saveConfigAuthToken(token);\n console.log(chalk.green(`Successfully logged in as ${email}!`));\n }\n return token;\n}\n\nasync function logout() {\n const { authConfigFilePath } = getAuthPaths();\n\n try {\n await unlink(authConfigFilePath);\n console.log(chalk.green('Successfully logged out from Instant!'));\n return true;\n } catch (error) {\n if (error.code === 'ENOENT') {\n console.log(chalk.green('You were already logged out!'));\n } else {\n error('Failed to logout: ' + error.message);\n }\n return false;\n }\n}\n\nconst packageAliasAndFullNames = {\n react: '@instantdb/react',\n 'react-native': '@instantdb/react-native',\n core: '@instantdb/core',\n admin: '@instantdb/admin',\n};\n\nasync function getOrInstallInstantModuleWithErrorLogging(pkgDir, opts) {\n const pkgJson = await getPackageJSONWithErrorLogging(pkgDir);\n if (!pkgJson) {\n return;\n }\n console.log('Checking for an Instant SDK...');\n const instantModuleName = await getInstantModuleName(pkgJson);\n if (instantModuleName) {\n console.log(\n `Found ${chalk.green(instantModuleName)} in your package.json.`,\n );\n return instantModuleName;\n }\n console.log(\n \"Couldn't find an Instant SDK in your package.json, let's install one!\",\n );\n\n let moduleName;\n if (opts.package) {\n moduleName = packageAliasAndFullNames[opts.package];\n } else {\n if (program.optsWithGlobals()?.yes) {\n console.error(\n '--yes was provided without a package specificaion and no Instant SDK was found',\n );\n process.exit(1);\n }\n moduleName = await renderUnwrap(\n new UI.Select({\n promptText: 'Which package would you like to use?',\n options: [\n { label: '@instantdb/react', value: '@instantdb/react' },\n {\n label: '@instantdb/react-native',\n value: '@instantdb/react-native',\n },\n { label: '@instantdb/core', value: '@instantdb/core' },\n { label: '@instantdb/admin', value: '@instantdb/admin' },\n ],\n }),\n );\n }\n\n const packageManager = await detectPackageManager(pkgDir);\n\n const packagesToInstall = [moduleName];\n if (moduleName === '@instantdb/react-native') {\n packagesToInstall.push(\n 'react-native-get-random-values',\n '@react-native-async-storage/async-storage',\n );\n }\n\n const installCommand = getInstallCommand(\n packageManager,\n packagesToInstall.join(' '),\n );\n\n await renderUnwrap(\n new UI.Spinner({\n promise: execAsync(installCommand, pkgDir),\n workingText: `Installing ${packagesToInstall.join(', ')} using ${packageManager}...`,\n doneText: `Installed ${packagesToInstall.join(', ')} using ${packageManager}.`,\n }),\n );\n\n return moduleName;\n}\n\nasync function promptCreateApp(opts) {\n const id = randomUUID();\n const token = randomUUID();\n\n let _title;\n if (opts?.title) {\n _title = opts.title;\n } else {\n _title = await renderUnwrap(\n new UI.TextInput({\n prompt: 'What would you like to call it?',\n placeholder: 'My cool app',\n }),\n ).catch(() => null);\n }\n\n const title = _title?.trim();\n\n if (!title) {\n error('No name provided.');\n return { ok: false };\n }\n\n const res = await fetchJson({\n debugName: 'Fetching orgs',\n method: 'GET',\n path: '/dash',\n errorMessage: 'Failed to fetch apps.',\n command: 'init',\n });\n if (!res.ok) {\n return { ok: false };\n }\n\n const allowedOrgs = res.data.orgs.filter((org) => org.role !== 'app-member');\n\n let org_id = opts.org;\n\n if (!org_id && allowedOrgs.length) {\n const choices = [{ label: '(No organization)', value: null }];\n for (const org of allowedOrgs) {\n choices.push({ label: org.title, value: org.id });\n }\n const choice = await renderUnwrap(\n new UI.Select({\n promptText: 'Would you like to create the app in an organization?',\n options: choices,\n }),\n );\n if (choice) {\n org_id = choice;\n }\n }\n\n const app = { id, title, admin_token: token, org_id };\n const appRes = await fetchJson({\n method: 'POST',\n path: '/dash/apps',\n debugName: 'App create',\n errorMessage: 'Failed to create app.',\n body: app,\n command: 'init',\n });\n\n if (!appRes.ok) return { ok: false };\n return {\n ok: true,\n appId: id,\n appTitle: title,\n appToken: token,\n source: 'created',\n };\n}\n\nasync function promptImportAppOrCreateApp() {\n const res = await fetchJson({\n debugName: 'Fetching apps',\n method: 'GET',\n path: '/dash',\n errorMessage: 'Failed to fetch apps.',\n command: 'init',\n });\n if (!res.ok) {\n return { ok: false };\n }\n\n const result = await renderUnwrap(\n new UI.AppSelector({\n allowEphemeral: true,\n allowCreate: true,\n startingMenuIndex: 2,\n api: {\n getDash: () => res.data,\n createEphemeralApp,\n getAppsForOrg: async (orgId) => {\n const orgsRes = await fetchJson({\n debugName: 'Fetching org apps',\n method: 'GET',\n path: `/dash/orgs/${orgId}`,\n errorMessage: 'Failed to fetch apps.',\n command: 'init',\n });\n if (!orgsRes.ok) {\n throw new Error('Failed to fetch org apps');\n }\n return { apps: orgsRes.data.apps };\n },\n createApp,\n },\n }),\n );\n\n if (result.approach === 'import') {\n trackAppImport(result.appId);\n }\n\n return {\n ok: true,\n appId: result.appId,\n appToken: result.adminToken,\n source: result.approach === 'import' ? 'imported' : 'created',\n };\n}\n\nasync function createApp(title, orgId) {\n const id = randomUUID();\n const token = randomUUID();\n const app = { id, title, admin_token: token, org_id: orgId };\n const appRes = await fetchJson({\n method: 'POST',\n path: '/dash/apps',\n debugName: 'App create',\n errorMessage: 'Failed to create app.',\n body: app,\n command: 'init',\n });\n if (!appRes.ok) throw new Error('Failed to create app');\n return { appId: id, adminToken: token };\n}\n\nasync function createEphemeralApp(title) {\n const api = new PlatformApi({ apiURI: instantBackendOrigin });\n const { app } = await api.createTemporaryApp({ title });\n return { appId: app.id, adminToken: app.adminToken };\n}\n\n/**\n * Fire-and-forget tracking for when a user imports/links an existing app.\n * Captures user info if authenticated.\n */\nfunction trackAppImport(appId) {\n fetchJson({\n method: 'POST',\n path: `/dash/apps/${appId}/track-import`,\n debugName: 'Track import',\n errorMessage: '',\n noLogError: true,\n command: 'init',\n }).catch(() => {});\n}\n\nasync function detectAppWithErrorLogging(opts) {\n const fromOpts = await detectAppIdFromOptsWithErrorLogging(opts);\n if (!fromOpts.ok) return fromOpts;\n if (fromOpts.appId) {\n trackAppImport(fromOpts.appId);\n return { ok: true, appId: fromOpts.appId, source: 'opts' };\n }\n const fromEnv = detectAppIdFromEnvWithErrorLogging();\n if (!fromEnv.ok) return fromEnv;\n if (fromEnv.found) {\n const { envName, value } = fromEnv.found;\n console.log(`Found ${chalk.green(envName)}: ${value}`);\n return { ok: true, appId: value, source: 'env' };\n }\n return { ok: true };\n}\n\nasync function detectOrCreateAppWithErrorLogging(opts) {\n const detected = await detectAppWithErrorLogging(opts);\n if (!detected.ok) return detected;\n if (detected.appId) {\n return detected;\n }\n let action;\n if (program.optsWithGlobals().yes) {\n action = 'create';\n if (!opts?.title) {\n console.error(\n chalk.red(`Title is required when using --yes and no app is linked`),\n );\n process.exit(1);\n }\n const app = await createApp(opts.title);\n\n return { ok: true, appId: app.appId, source: 'created' };\n } else {\n console.log();\n return await promptImportAppOrCreateApp();\n }\n}\n\nasync function writeTypescript(path, content, encoding) {\n const prettierConfig = await prettier.resolveConfig(path);\n const formattedCode = await prettier.format(content, {\n ...prettierConfig,\n parser: 'typescript',\n });\n return await writeFile(path, formattedCode, encoding);\n}\n\nasync function getInstantModuleName(pkgJson) {\n const deps = pkgJson.dependencies || {};\n const devDeps = pkgJson.devDependencies || {};\n const instantModuleName = [\n '@instantdb/react',\n '@instantdb/react-native',\n '@instantdb/core',\n '@instantdb/admin',\n ].find((name) => deps[name] || devDeps[name]);\n return instantModuleName;\n}\n\nasync function getPackageJson(pkgDir) {\n return await readJsonFile(join(pkgDir, 'package.json'));\n}\n\nasync function getPackageJSONWithErrorLogging(pkgDir) {\n const pkgJson = await getPackageJson(pkgDir);\n if (!pkgJson) {\n error(`Couldn't find a packge.json file in: ${pkgDir}. Please add one.`);\n return;\n }\n return pkgJson;\n}\n\nasync function enforcePackageAndAuthInfoWithErrorLogging(_opts) {\n const projectInfo = await packageDirectoryWithErrorLogging();\n if (!projectInfo) {\n return;\n }\n const { dir: pkgDir, type: projectType } = projectInfo;\n\n // Deno projects don't have package.json or node_modules\n if (projectType === 'deno') {\n const authToken = await readConfigAuthTokenWithErrorLogging();\n if (!authToken) {\n return;\n }\n return {\n pkgDir,\n projectType,\n instantModuleName: '@instantdb/core',\n authToken,\n };\n }\n\n const pkgJson = await getPackageJSONWithErrorLogging(pkgDir);\n if (!pkgJson) {\n return;\n }\n const instantModuleName = await getInstantModuleName(pkgJson);\n if (!instantModuleName) {\n error(\"We couldn't find an Instant SDK. Install one, or run `init`\");\n }\n const authToken = await readConfigAuthTokenWithErrorLogging();\n if (!authToken) {\n return;\n }\n return { pkgDir, projectType, instantModuleName, authToken };\n}\n\nasync function getOrPromptPackageAndAuthInfoWithErrorLogging(opts) {\n const projectInfo = await packageDirectoryWithErrorLogging();\n if (!projectInfo) {\n return;\n }\n const { dir: pkgDir, type: projectType } = projectInfo;\n\n // Deno projects don't have package.json or node_modules\n if (projectType === 'deno') {\n const authToken = await readAuthTokenOrLoginWithErrorLogging();\n if (!authToken) {\n return;\n }\n return {\n pkgDir,\n projectType,\n instantModuleName: '@instantdb/core',\n authToken,\n };\n }\n\n const instantModuleName = await getOrInstallInstantModuleWithErrorLogging(\n pkgDir,\n opts,\n );\n if (!instantModuleName) {\n return;\n }\n const authToken = await readAuthTokenOrLoginWithErrorLogging();\n if (!authToken) {\n return;\n }\n return { pkgDir, projectType, instantModuleName, authToken };\n}\n\nasync function pullSchema(\n appId,\n { pkgDir, instantModuleName, experimentalTypePreservation },\n) {\n console.log('Pulling schema...');\n\n const pullRes = await fetchJson({\n path: `/dash/apps/${appId}/schema/pull`,\n debugName: 'Schema pull',\n errorMessage: 'Failed to pull schema.',\n command: 'pull',\n });\n\n if (!pullRes.ok) return pullRes;\n\n if (\n !countEntities(pullRes.data.schema.refs) &&\n !countEntities(pullRes.data.schema.blobs)\n ) {\n console.log('Schema is empty. Skipping.');\n return { ok: true };\n }\n\n const prev = await readLocalSchemaFile();\n if (prev) {\n const shouldContinue = await promptOk(\n {\n promptText:\n 'This will overwrite your local instant.schema.ts file, OK to proceed?',\n modifyOutput: UI.modifiers.yPadding,\n inline: true,\n },\n program.opts(),\n );\n console.log();\n\n if (!shouldContinue) return { ok: true };\n }\n\n const shortSchemaPath = getSchemaPathToWrite(prev?.path);\n const schemaPath = join(pkgDir, shortSchemaPath);\n\n let newSchemaContent = generateSchemaTypescriptFile(\n prev?.schema,\n apiSchemaToInstantSchemaDef(pullRes.data.schema),\n instantModuleName,\n );\n\n if (prev && experimentalTypePreservation) {\n try {\n const oldSchemaContent = await readFile(prev.path, 'utf-8');\n newSchemaContent = mergeSchema(oldSchemaContent, newSchemaContent);\n } catch (e) {\n warn(\n 'Failed to merge schema with existing file. Overwriting instead.',\n e,\n );\n }\n }\n\n await writeTypescript(schemaPath, newSchemaContent, 'utf-8');\n\n console.log('✅ Wrote schema to ' + shortSchemaPath);\n\n return { ok: true };\n}\n\nasync function pullPerms(appId, { pkgDir, instantModuleName }) {\n console.log('Pulling perms...');\n\n const pullRes = await fetchJson({\n path: `/dash/apps/${appId}/perms/pull`,\n debugName: 'Perms pull',\n errorMessage: 'Failed to pull perms.',\n command: 'pull',\n });\n\n if (!pullRes.ok) return pullRes;\n const prev = await readLocalPermsFile();\n if (prev) {\n const shouldContinue = await promptOk(\n {\n promptText:\n 'This will overwrite your local instant.perms.ts file, OK to proceed?',\n modifyOutput: UI.modifiers.yPadding,\n inline: true,\n },\n program.opts(),\n );\n console.log();\n\n if (!shouldContinue) return { ok: true };\n }\n\n const shortPermsPath = getPermsPathToWrite(prev?.path);\n const permsPath = join(pkgDir, shortPermsPath);\n await writeTypescript(\n permsPath,\n generatePermsTypescriptFile(pullRes.data.perms || {}, instantModuleName),\n 'utf-8',\n );\n\n console.log('✅ Wrote permissions to ' + shortPermsPath);\n\n return { ok: true };\n}\n\nfunction indexingJobCompletedActionMessage(job) {\n if (job.job_type === 'check-data-type') {\n return `setting type of ${job.attr_name} to ${job.checked_data_type}`;\n }\n if (job.job_type === 'remove-data-type') {\n return `removing type from ${job.attr_name}`;\n }\n if (job.job_type === 'index') {\n return `adding index to ${job.attr_name}`;\n }\n if (job.job_type === 'remove-index') {\n return `removing index from ${job.attr_name}`;\n }\n if (job.job_type === 'unique') {\n return `adding uniqueness constraint to ${job.attr_name}`;\n }\n if (job.job_type === 'remove-unique') {\n return `removing uniqueness constraint from ${job.attr_name}`;\n }\n if (job.job_type === 'required') {\n return `adding required constraint to ${job.attr_name}`;\n }\n if (job.job_type === 'remove-required') {\n return `removing required constraint from ${job.attr_name}`;\n }\n return `unexpected job type ${job.job_type} - please ping us on discord with this job id (${job.id})`;\n}\n\nfunction truncate(s, maxLen) {\n if (s.length > maxLen) {\n return `${s.substr(0, maxLen - 3)}...`;\n }\n return s;\n}\n\nfunction formatSamples(triples_samples) {\n return triples_samples.slice(0, 3).map((t) => {\n return { ...t, value: truncate(JSON.stringify(t.value), 32) };\n });\n}\n\nfunction createUrl(triple, job) {\n const urlParams = new URLSearchParams({\n s: 'main',\n app: job.app_id,\n t: 'explorer',\n ns: job.attr_name.split('.')[0],\n where: JSON.stringify(['id', triple.entity_id]),\n });\n const url = new URL(instantDashOrigin);\n url.pathname = '/dash';\n url.search = urlParams.toString();\n return url;\n}\n\nfunction padCell(value, width) {\n const trimmed = value.length > width ? value.substring(0, width) : value;\n return trimmed + ' '.repeat(width - trimmed.length);\n}\n\nfunction indexingJobCompletedMessage(job) {\n const actionMessage = indexingJobCompletedActionMessage(job);\n if (job.job_status === 'canceled') {\n return `Canceled ${actionMessage} before it could finish.`;\n }\n if (job.job_status === 'completed') {\n return `Finished ${actionMessage}.`;\n }\n if (job.job_status === 'errored') {\n if (job.invalid_triples_sample?.length) {\n const [etype, label] = job.attr_name.split('.');\n const samples = formatSamples(job.invalid_triples_sample);\n const longestValue = samples.reduce(\n (acc, { value }) => Math.max(acc, value.length),\n label.length,\n );\n\n const columns = [\n { header: 'namespace', width: 15, getValue: () => etype },\n {\n header: 'id',\n width: 37,\n getValue: (triple) =>\n terminalLink(triple.entity_id, createUrl(triple, job).toString(), {\n fallback: () => triple.entity_id,\n }),\n },\n {\n header: label,\n width: longestValue + 2,\n getValue: (triple) => triple.value,\n },\n { header: 'type', width: 8, getValue: (triple) => triple.json_type },\n ];\n\n let msg = `${chalk.red('INVALID DATA')} ${actionMessage}.\\n`;\n if (job.invalid_unique_value) {\n msg += ` Found multiple entities with value ${truncate(JSON.stringify(job.invalid_unique_value), 64)}.\\n`;\n }\n if (job.error === 'triple-too-large-error') {\n msg += ` Some of the existing data is too large to index.\\n`;\n }\n\n msg += ` First few examples:\\n`;\n msg += ` ${columns.map((col) => chalk.bold(padCell(col.header, col.width))).join(' | ')}\\n`;\n msg += ` ${columns.map((col) => '-'.repeat(col.width)).join('-|-')}\\n`;\n\n for (const triple of samples) {\n const cells = columns.map((col) =>\n padCell(col.getValue(triple), col.width),\n );\n msg += ` ${cells.join(' | ')}\\n`;\n }\n return msg;\n }\n return `Error ${actionMessage}.`;\n }\n}\n\nfunction joinInSentence(items) {\n if (items.length === 0) {\n return '';\n }\n if (items.length === 1) {\n return items[0];\n }\n if (items.length === 2) {\n return `${items[0]} and ${items[1]}`;\n }\n return `${items.slice(0, -1).join(', ')}, and ${items[items.length - 1]}`;\n}\n\nfunction jobGroupDescription(jobs) {\n const actions = new Set();\n const jobActions = {\n 'check-data-type': 'updating types',\n 'remove-data-type': 'updating types',\n index: 'updating indexes',\n 'remove-index': 'updating indexes',\n unique: 'updating uniqueness constraints',\n 'remove-unique': 'updating uniqueness constraints',\n required: 'making attributes required',\n 'remove-required': 'making attributes optional',\n };\n for (const job of jobs) {\n actions.add(jobActions[job.job_type]);\n }\n return joinInSentence([...actions].sort()) || 'updating schema';\n}\n\nasync function waitForIndexingJobsToFinish(appId, data) {\n const spinnerDefferedPromise = deferred();\n const spinner = new UI.Spinner({\n promise: spinnerDefferedPromise.promise,\n });\n const spinnerRenderPromise = renderUnwrap(spinner);\n\n const groupId = data['group-id'];\n let jobs = data.jobs;\n let waitMs = 20;\n let lastUpdatedAt = new Date(0);\n\n const completedIds = new Set();\n\n const errorMessages = [];\n\n while (true) {\n let stillRunning = false;\n let updated = false;\n let workEstimateTotal = 0;\n let workCompletedTotal = 0;\n\n for (const job of jobs) {\n const updatedAt = new Date(job.updated_at);\n if (updatedAt > lastUpdatedAt) {\n updated = true;\n lastUpdatedAt = updatedAt;\n }\n if (job.job_status === 'waiting' || job.job_status === 'processing') {\n stillRunning = true;\n // Default estimate to high value to prevent % from jumping around\n workEstimateTotal += job.work_estimate ?? 50000;\n workCompletedTotal += job.work_completed ?? 0;\n } else {\n if (!completedIds.has(job.id)) {\n completedIds.add(job.id);\n const msg = indexingJobCompletedMessage(job);\n if (msg) {\n if (job.job_status === 'errored') {\n spinner.addMessage(msg);\n errorMessages.push(msg);\n } else {\n spinner.addMessage(msg);\n }\n }\n }\n }\n }\n if (!stillRunning) {\n break;\n }\n if (workEstimateTotal) {\n const percent = Math.floor(\n (workCompletedTotal / workEstimateTotal) * 100,\n );\n spinner.updateText(`${jobGroupDescription(jobs)} ${percent}%`);\n }\n waitMs = updated ? 1 : Math.min(10000, waitMs * 2);\n await sleep(waitMs);\n const res = await fetchJson({\n debugName: 'Check indexing status',\n method: 'GET',\n path: `/dash/apps/${appId}/indexing-jobs/group/${groupId}`,\n errorMessage: 'Failed to check indexing status.',\n command: 'push',\n });\n if (!res.ok) {\n break;\n }\n jobs = res.data.jobs;\n }\n\n spinnerDefferedPromise.resolve(null);\n\n await spinnerRenderPromise;\n\n // Log errors at the end so that they're easier to see.\n if (errorMessages.length) {\n for (const msg of errorMessages) {\n console.log(msg);\n }\n console.log(chalk.red('Some steps failed while updating schema.'));\n process.exit(1);\n }\n}\n\nconst resolveRenames = async (created, promptData, extraInfo) => {\n const answer = await renderUnwrap(\n new ResolveRenamePrompt(\n created,\n promptData,\n extraInfo,\n UI.modifiers.piped([\n (out) =>\n boxen(out, {\n dimBorder: true,\n padding: {\n left: 1,\n right: 1,\n },\n }),\n UI.modifiers.vanishOnComplete,\n ]),\n ),\n );\n return answer;\n};\n\nfunction collectSystemCatalogIdentNames(currentAttrs) {\n const allSystemIdents = currentAttrs\n .filter((attr) => attr.catalog === 'system')\n .flatMap((attr) =>\n [attr['forward-identity'], attr['reverse-identity']].filter(Boolean),\n );\n\n /** @type {Record<string, Set<string>>} */\n let res = {};\n for (const [_, etype, label] of allSystemIdents) {\n res[etype] = res[etype] || new Set();\n res[etype].add(label);\n }\n return res;\n}\n\nasync function pushSchema(appId, opts) {\n const res = await readLocalSchemaFileWithErrorLogging();\n if (!res) return { ok: false };\n const { schema } = res;\n\n const pulledSchemaResponse = await fetchJson({\n method: 'GET',\n path: `/dash/apps/${appId}/schema/pull`,\n debugName: 'Schema plan',\n errorMessage: 'Failed to get old schema.',\n command: 'push',\n });\n\n if (!pulledSchemaResponse.ok) return pulledSchemaResponse;\n\n const currentAttrs = pulledSchemaResponse.data['attrs'];\n const currentApiSchema = pulledSchemaResponse.data['schema'];\n const oldSchema = apiSchemaToInstantSchemaDef(currentApiSchema, {\n disableTypeInference: true,\n });\n const systemCatalogIdentNames = collectSystemCatalogIdentNames(currentAttrs);\n\n try {\n validateSchema(schema, systemCatalogIdentNames);\n } catch (error) {\n if (error instanceof SchemaValidationError) {\n console.error(chalk.red('Invalid schema:', error.message));\n } else {\n console.error('Unexpected error:', error);\n }\n return { ok: false };\n }\n\n const renameSelector = program.optsWithGlobals().yes\n ? buildAutoRenameSelector(opts)\n : resolveRenames;\n\n const diffResult = await diffSchemas(\n oldSchema,\n schema,\n renameSelector,\n systemCatalogIdentNames,\n );\n\n if (currentAttrs === undefined) {\n throw new Error(\"Couldn't get current schema from server\");\n }\n\n const txSteps = convertTxSteps(diffResult, currentAttrs);\n\n if (txSteps.length === 0) {\n console.log(chalk.bgGray('No schema changes to apply!'));\n return { ok: true };\n }\n\n let wantsToPush = false;\n try {\n const groupedSteps = groupSteps(diffResult);\n const lines = renderSchemaPlan(groupedSteps, currentAttrs);\n if (program.optsWithGlobals().yes) {\n console.log('Applying schema changes...');\n console.log(lines.join('\\n'));\n }\n wantsToPush = await promptOk(\n {\n promptText: 'Push these changes?',\n yesText: 'Push',\n noText: 'Cancel',\n modifyOutput: (output) => {\n let both = lines.join('\\n') + '\\n\\n' + output;\n return boxen(both, {\n dimBorder: true,\n padding: {\n left: 1,\n right: 1,\n },\n });\n },\n },\n program.opts(),\n );\n } catch (error) {\n if (error instanceof CancelSchemaError) {\n console.info('Schema migration cancelled!');\n }\n return { ok: false };\n }\n\n if (verbose) {\n console.log(txSteps);\n }\n\n if (wantsToPush) {\n const applyRes = await fetchJson({\n method: 'POST',\n path: `/dash/apps/${appId}/schema/steps/apply`,\n debugName: 'Schema apply',\n errorMessage: 'Failed to update schema.',\n body: {\n steps: txSteps,\n },\n command: 'push',\n });\n console.log(chalk.green('Schema updated!'));\n if (!applyRes.ok) return applyRes;\n\n if (applyRes.data['indexing-jobs']) {\n await waitForIndexingJobsToFinish(appId, applyRes.data['indexing-jobs']);\n }\n } else {\n console.info('Schema migration cancelled!');\n }\n\n return { ok: true };\n}\n\nasync function claimEphemeralApp(appId, adminToken) {\n const res = await fetchJson({\n method: 'POST',\n body: {\n app_id: appId,\n token: adminToken,\n },\n path: `/dash/apps/ephemeral/${appId}/claim`,\n debugName: 'Claim ephemeral app',\n errorMessage: 'Failed to claim ephemeral app.',\n command: 'claim',\n });\n\n if (!res.ok) return res;\n\n console.log(chalk.green('App claimed!'));\n return { ok: true };\n}\n\nasync function pushPerms(appId) {\n const res = await readLocalPermsFileWithErrorLogging();\n if (!res) {\n return { ok: true };\n }\n\n console.log('Planning perms...');\n\n const prodPerms = await fetchJson({\n path: `/dash/apps/${appId}/perms/pull`,\n debugName: 'Perms pull',\n errorMessage: 'Failed to pull perms.',\n command: 'push',\n });\n\n if (!prodPerms.ok) return prodPerms;\n\n const diffedStr = jsonDiff.diffString(\n prodPerms.data.perms || {},\n res.perms || {},\n );\n if (!diffedStr.length) {\n console.log('No perms changes detected. Skipping.');\n return { ok: true };\n }\n\n const okPush = await promptOk(\n {\n promptText: 'Push these changes to your perms?',\n modifyOutput: (output) => {\n let both = diffedStr + '\\n' + output;\n return boxen(both, {\n dimBorder: true,\n padding: {\n left: 1,\n right: 1,\n },\n });\n },\n },\n program.opts(),\n );\n if (!okPush) return { ok: true };\n\n const permsRes = await fetchJson({\n method: 'POST',\n path: `/dash/apps/${appId}/rules`,\n debugName: 'Schema apply',\n errorMessage: 'Failed to update schema.',\n body: {\n code: res.perms,\n },\n command: 'push',\n });\n\n if (!permsRes.ok) return permsRes;\n\n console.log(chalk.green('Permissions updated!'));\n\n return { ok: true };\n}\n\nasync function waitForAuthToken({ secret }) {\n for (let i = 1; i <= 120; i++) {\n await sleep(1000);\n const authCheckRes = await fetchJson({\n method: 'POST',\n debugName: 'Auth check',\n errorMessage: 'Failed to check auth status.',\n path: '/dash/cli/auth/check',\n body: { secret },\n noAuth: true,\n noLogError: true,\n command: 'login',\n });\n if (authCheckRes.ok) {\n return authCheckRes.data;\n }\n if (authCheckRes.data?.hint.errors?.[0]?.issue === 'waiting-for-user') {\n continue;\n }\n error('Failed to authenticate ');\n prettyPrintJSONErr(authCheckRes.data);\n return;\n }\n error('Timed out waiting for authentication');\n return null;\n}\n\n// resources\n\n/**\n * Fetches JSON data from a specified path using the POST method.\n *\n * @param {Object} options\n * @param {string} options.debugName\n * @param {string} options.errorMessage\n * @param {string} options.path\n * @param {'POST' | 'GET'} [options.method]\n * @param {Object} [options.body=undefined]\n * @param {boolean} [options.noAuth]\n * @param {boolean} [options.noLogError]\n * @param {string} [options.command] - The CLI command being executed (e.g., 'push', 'pull', 'login')\n * @returns {Promise<{ ok: boolean; data: any }>}\n */\nasync function fetchJson({\n debugName,\n errorMessage,\n path,\n body,\n method,\n noAuth,\n noLogError,\n command,\n}) {\n const withAuth = !noAuth;\n const withErrorLogging = !noLogError;\n let authToken = null;\n if (withAuth) {\n authToken = await readConfigAuthTokenWithErrorLogging();\n if (!authToken) {\n return { ok: false, data: undefined };\n }\n }\n const timeoutMs = 1000 * 60 * 5; // 5 minutes\n\n try {\n const res = await fetch(`${instantBackendOrigin}${path}`, {\n method: method ?? 'GET',\n headers: {\n ...(withAuth ? { Authorization: `Bearer ${authToken}` } : {}),\n 'Content-Type': 'application/json',\n 'X-Instant-Source': 'instant-cli',\n 'X-Instant-Version': version,\n ...(command ? { 'X-Instant-Command': command } : {}),\n },\n body: body ? JSON.stringify(body) : undefined,\n signal: AbortSignal.timeout(timeoutMs),\n });\n\n if (verbose) {\n console.log(debugName, 'response:', res.status, res.statusText);\n }\n\n let data;\n try {\n data = await res.json();\n } catch {\n data = null;\n }\n if (verbose && data) {\n console.log(debugName, 'json:', JSON.stringify(data, null, 2));\n }\n if (!res.ok) {\n if (withErrorLogging) {\n error(errorMessage);\n prettyPrintJSONErr(data);\n }\n return { ok: false, data };\n }\n\n return { ok: true, data };\n } catch (err) {\n if (withErrorLogging) {\n if (err.name === 'AbortError') {\n error(\n `Timeout: It took more than ${timeoutMs / 60000} minutes to get the result.`,\n );\n } else {\n error(`Error: type: ${err.name}, message: ${err.message}`);\n }\n }\n return { ok: false, data: null };\n }\n}\n\nfunction prettyPrintJSONErr(data) {\n if (data?.message) {\n error(data.message);\n }\n if (Array.isArray(data?.hint?.errors)) {\n for (const err of data.hint.errors) {\n error(`${err.in ? err.in.join('->') + ': ' : ''}${err.message}`);\n }\n }\n if (!data) {\n error('Failed to parse error response');\n }\n}\n\nasync function readLocalPermsFile() {\n const readCandidates = getPermsReadCandidates();\n const res = await loadConfig({\n sources: readCandidates,\n merge: false,\n });\n if (!res.config) return;\n const relativePath = path.relative(process.cwd(), res.sources[0]);\n return { path: relativePath, perms: res.config };\n}\n\nasync function readLocalPermsFileWithErrorLogging() {\n const res = await readLocalPermsFile();\n if (!res) {\n error(\n `We couldn't find your ${chalk.yellow('`instant.perms.ts`')} file. Make sure it's in the root directory. (Hint: You can use an INSTANT_PERMS_FILE_PATH environment variable to specify it.)`,\n );\n }\n return res;\n}\n\nasync function readLocalSchemaFile() {\n const readCandidates = getSchemaReadCandidates();\n const res = await loadConfig({\n sources: readCandidates,\n merge: false,\n });\n if (!res.config) return;\n const relativePath = path.relative(process.cwd(), res.sources[0]);\n return { path: relativePath, schema: res.config };\n}\n\nasync function readInstantConfigFile() {\n return (\n await loadConfig({\n sources: [\n // load from `instant.config.xx`\n {\n files: 'instant.config',\n extensions: ['ts', 'mts', 'cts', 'js', 'mjs', 'cjs', 'json'],\n },\n ],\n // if false, the only the first matched will be loaded\n // if true, all matched will be loaded and deep merged\n merge: false,\n })\n ).config;\n}\n\nasync function readLocalSchemaFileWithErrorLogging() {\n const res = await readLocalSchemaFile();\n\n if (!res) {\n error(\n `We couldn't find your ${chalk.yellow('`instant.schema.ts`')} file. Make sure it's in the root directory. (Hint: You can use an INSTANT_SCHEMA_FILE_PATH environment variable to specify it.)`,\n );\n return;\n }\n\n if (res.schema?.constructor?.name !== 'InstantSchemaDef') {\n error(\"We couldn't find your schema export.\");\n error(\n 'In your ' +\n chalk.green('`instant.schema.ts`') +\n ' file, make sure you ' +\n chalk.green('`export default schema`'),\n );\n return;\n }\n\n return res;\n}\n\nasync function readConfigAuthToken(allowAdminToken = true) {\n const options = program.opts();\n if (typeof options.token === 'string') {\n return options.token;\n }\n\n if (process.env.INSTANT_CLI_AUTH_TOKEN) {\n return process.env.INSTANT_CLI_AUTH_TOKEN;\n }\n\n if (allowAdminToken) {\n const adminTokenNames = Object.values(potentialAdminTokenEnvs);\n for (const envName of adminTokenNames) {\n const token = process.env[envName];\n if (token) {\n return token;\n }\n }\n }\n\n const authToken = await readFile(\n getAuthPaths().authConfigFilePath,\n 'utf-8',\n ).catch(() => null);\n\n if (authToken) {\n return authToken;\n }\n\n return null;\n}\n\nexport async function readConfigAuthTokenWithErrorLogging() {\n const token = await readConfigAuthToken();\n if (!token) {\n error(\n `Looks like you are not logged in. Please log in with ${chalk.green('`instant-cli login`')}`,\n );\n }\n return token;\n}\n\nasync function readAuthTokenOrLoginWithErrorLogging() {\n const token = await readConfigAuthToken();\n if (token) return token;\n console.log(`Looks like you are not logged in...`);\n console.log(`Let's log in!`);\n return await login({});\n}\n\nasync function saveConfigAuthToken(authToken) {\n const authPaths = getAuthPaths();\n\n await mkdir(authPaths.appConfigDirPath, {\n recursive: true,\n });\n\n return writeFile(authPaths.authConfigFilePath, authToken, 'utf-8');\n}\n\n// utils\n\nfunction sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction countEntities(o) {\n return Object.keys(o).length;\n}\n\nfunction sortedEntries(o) {\n return Object.entries(o).sort(([a], [b]) => a.localeCompare(b));\n}\n\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n// attr helpers\nfunction identEtype(ident) {\n return ident[1];\n}\n\nfunction identLabel(ident) {\n return ident[2];\n}\n\nfunction identName(ident) {\n return `${identEtype(ident)}.${identLabel(ident)}`;\n}\n\nfunction attrFwdLabel(attr) {\n return attr['forward-identity']?.[2];\n}\n\nfunction attrFwdEtype(attr) {\n return attr['forward-identity']?.[1];\n}\n\nfunction attrRevLabel(attr) {\n return attr['reverse-identity']?.[2];\n}\n\nfunction attrRevEtype(attr) {\n return attr['reverse-identity']?.[1];\n}\n\nfunction attrFwdName(attr) {\n return `${attrFwdEtype(attr)}.${attrFwdLabel(attr)}`;\n}\n\nfunction attrRevName(attr) {\n if (attr['reverse-identity']) {\n return `${attrRevEtype(attr)}.${attrRevLabel(attr)}`;\n }\n}\n\n// templates and constants\n\nexport const rels = {\n 'many-false': ['many', 'many'],\n 'one-true': ['one', 'one'],\n 'many-true': ['many', 'one'],\n 'one-false': ['one', 'many'],\n};\n\nfunction isUUID(uuid) {\n const uuidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n return uuidRegex.test(uuid);\n}\n\nasync function detectAppIdFromOptsWithErrorLogging(opts) {\n if (!opts.app) return { ok: true };\n const appId = opts.app;\n const config = await readInstantConfigFile();\n const nameMatch = config?.apps?.[appId];\n const namedAppId = nameMatch?.id && isUUID(nameMatch.id) ? nameMatch : null;\n const uuidAppId = appId && isUUID(appId) ? appId : null;\n\n if (nameMatch && !namedAppId) {\n error(`Expected \\`${appId}\\` to point to a UUID, but got ${nameMatch.id}.`);\n return { ok: false };\n }\n if (!namedAppId && !uuidAppId) {\n error(`Expected App ID to be a UUID, but got: ${chalk.red(appId)}`);\n return { ok: false };\n }\n return { ok: true, appId: namedAppId || uuidAppId };\n}\n\nfunction detectAppIdFromEnvWithErrorLogging() {\n const found = Object.keys(potentialEnvs)\n .map((type) => {\n const envName = potentialEnvs[type];\n const value = process.env[envName];\n return { type, envName, value };\n })\n .find(({ value }) => !!value);\n if (found && !isUUID(found.value)) {\n error(\n `Found ${chalk.green('`' + found.envName + '`')} but it's not a valid UUID.`,\n );\n return { ok: false, found };\n }\n return { ok: true, found };\n}\n\nfunction detectAppIdAndAdminTokenFromEnvWithErrorLogging() {\n const appIdResult = Object.keys(potentialEnvs)\n .map((type) => {\n const envName = potentialEnvs[type];\n const value = process.env[envName];\n return { type, envName, value };\n })\n .find(({ value }) => !!value);\n\n const adminTokenResult = Object.keys(potentialAdminTokenEnvs)\n .map((type) => {\n const envName = potentialAdminTokenEnvs[type];\n const value = process.env[envName];\n return { type, envName, value };\n })\n .find(({ value }) => !!value);\n\n if (appIdResult && !isUUID(appIdResult.value)) {\n error(\n `Found ${chalk.green('`' + appIdResult.envName + '`')} but it's not a valid UUID.`,\n );\n return { ok: false, appId: appIdResult, adminToken: adminTokenResult };\n }\n\n return { ok: true, appId: appIdResult, adminToken: adminTokenResult };\n}\n\nfunction appDashUrl(id) {\n return `${instantDashOrigin}/dash?s=main&t=home&app=${id}`;\n}\n"]}
|
package/dist/ui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/index.js
CHANGED
|
@@ -843,10 +843,11 @@ ${inputDisplay}`;
|
|
|
843
843
|
},
|
|
844
844
|
});
|
|
845
845
|
this.focus.setFocus('appList');
|
|
846
|
+
const defaultAppName = 'Awesome Todos';
|
|
846
847
|
this.appNameInput = new TextInput({
|
|
847
848
|
prompt: 'Enter New App Name',
|
|
848
|
-
placeholder:
|
|
849
|
-
defaultValue:
|
|
849
|
+
placeholder: defaultAppName,
|
|
850
|
+
defaultValue: defaultAppName,
|
|
850
851
|
headless: true,
|
|
851
852
|
});
|
|
852
853
|
this.focus.child('newApp').onKey((key, keyInfo) => {
|
|
@@ -854,7 +855,7 @@ ${inputDisplay}`;
|
|
|
854
855
|
this.focus.setFocus('appList');
|
|
855
856
|
}
|
|
856
857
|
if (keyInfo.name === 'return') {
|
|
857
|
-
const name = this.appNameInput.value ||
|
|
858
|
+
const name = this.appNameInput.value || defaultAppName;
|
|
858
859
|
if (this.creatingEphemeral) {
|
|
859
860
|
this.props.api.createEphemeralApp(name).then((pair) => {
|
|
860
861
|
this.selectedAppName = name;
|
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport boxen from 'boxen';\nimport stringWidth from 'string-width';\nimport { AnyKey, ModifyOutputFn, Prompt, SelectState } from './lib.js';\n\nexport { render, renderUnwrap, setRawModeWindowsFriendly } from './lib.js';\n\nexport namespace UI {\n type Status = 'idle' | 'submitted' | 'aborted';\n export const modifiers = {\n piped: (modifiers: ModifyOutputFn[]): ModifyOutputFn => {\n return (output: string, status?: Status) => {\n return modifiers.reduce(\n (acc, modifier) => modifier(acc, status),\n output,\n );\n };\n },\n\n topPadding: (output: string) => {\n return '\\n' + output;\n },\n\n yPadding: (output: string) => {\n return '\\n' + output + '\\n';\n },\n\n sidelined:\n (symbol: string | null = '◆') =>\n (output: string, status?: Status) => {\n const result: string[] = [];\n output.split('\\n').forEach((line, idx) => {\n if (idx === 1 && symbol) {\n result.push(`${chalk.gray(symbol + ' ')}${line}`);\n } else {\n result.push(`${chalk.gray('│ ')}${line}`);\n }\n });\n if (status === 'idle') {\n result.push(`${chalk.gray('└ ')}`);\n }\n let almost = result.join('\\n');\n if (!almost.endsWith('\\n')) {\n almost += '\\n';\n }\n return almost;\n },\n\n background: (output: string) => {\n return chalk.bgBlackBright(output);\n },\n\n dimOnComplete: (output: string, status?: Status) => {\n if (status === 'submitted' || status === 'aborted') {\n return chalk.dim(output);\n }\n return output;\n },\n vanishOnComplete: (output: string, status?: Status) => {\n if (status === 'submitted' || status === 'aborted') {\n return '';\n }\n return output;\n },\n } as const;\n\n export const ciaModifier = (symbol: string | null = '◆') =>\n modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n UI.modifiers.sidelined(symbol),\n ]);\n\n /**\n * Utility that lets you use output modifiers in console.log\n */\n export const log = (\n output: string,\n modifyOutput?: ModifyOutputFn,\n ...args: any[]\n ) => {\n const finalOutput = modifyOutput ? modifyOutput(output) : output;\n if (finalOutput.endsWith('\\n')) {\n process.stdout.write(finalOutput, ...args);\n } else {\n process.stdout.write(finalOutput + '\\n', ...args);\n }\n };\n\n type SelectProps<T> = {\n options: {\n value: T;\n label: string;\n }[];\n promptText: string;\n modifyOutput?: ModifyOutputFn;\n defaultValue?: T;\n };\n export class Select<T> extends Prompt<T> {\n config(status: 'idle' | 'submitted' | 'aborted'): string {\n console.log('config', status);\n return status;\n }\n\n private readonly data: SelectState<T>;\n private readonly options: SelectProps<T>['options'];\n private readonly params: SelectProps<T>;\n\n constructor(params: SelectProps<T>) {\n super(params.modifyOutput);\n this.on('attach', (terminal) => terminal.toggleCursor('hide'));\n this.on('input', (input) => {\n if (input === 'j') {\n this.data.selectedIdx =\n (this.data.selectedIdx + 1) % this.options.length;\n } else if (input === 'k') {\n this.data.selectedIdx =\n (this.data.selectedIdx - 1 + this.options.length) %\n this.options.length;\n }\n this.requestLayout();\n });\n this.on('detach', (terminal) => {\n terminal.toggleCursor('show');\n });\n this.options = params.options;\n this.params = params;\n this.data = new SelectState<T>(\n params.options.map((option) => option.value),\n );\n\n // Set initial selected index based on defaultValue if provided\n if (params.defaultValue !== undefined) {\n const defaultIndex = params.options.findIndex(\n (option) => option.value === params.defaultValue,\n );\n if (defaultIndex !== -1) {\n this.data.selectedIdx = defaultIndex;\n }\n }\n\n this.data.bind(this as any);\n }\n\n result(): T {\n return this.data.items[this.data.selectedIdx]!;\n }\n\n render(status: 'idle' | 'submitted' | 'aborted'): string {\n if (status === 'submitted') {\n return `${this.params.promptText}\n${chalk.hex('#EA570B').bold('●')} ${this.params.options[this.data.selectedIdx]?.label}`;\n }\n const optionsList = this.options\n .map((option, idx) => {\n const isSelected = idx === this.data.selectedIdx;\n const cursor = isSelected ? chalk.hex('#EA570B').bold('●') : '○';\n const label = isSelected\n ? chalk.bold(option.label)\n : chalk.dim(option.label);\n\n return `${cursor} ${label}`;\n })\n .join('\\n');\n\n return `${this.params.promptText}\n${optionsList}`;\n }\n }\n\n /**\n * @deprecated use the modifyOutput prop instead\n * left as an example of how to do wrapper prompts\n */\n export class Sidelined<T> extends Prompt<T> {\n override result(): T {\n return this.inner.result();\n }\n override render(status: 'idle' | 'submitted' | 'aborted'): string {\n return (\n this.inner\n .render(status)\n .split('\\n')\n .map((line) => `${chalk.gray(' │ ')}${line}`)\n .join('\\n') + '\\n'\n );\n }\n config(status: 'idle' | 'submitted' | 'aborted'): string {\n return status;\n }\n\n private readonly inner: Prompt<T>;\n\n constructor(inner: Prompt<T>) {\n super();\n this.inner = inner;\n this.on('input', (input, arg2) => {\n this.inner.input(input, arg2);\n this.requestLayout();\n });\n this.on('detach', (terminal) => {\n this.inner.detach(terminal);\n });\n this.on('attach', (terminal) => {\n this.inner.attach(terminal);\n });\n }\n }\n\n type TextInputProps = {\n placeholder?: string;\n prompt: string;\n modifyOutput?: ModifyOutputFn;\n defaultValue?: string;\n validate?: (value: string) => string | undefined;\n headless?: boolean;\n };\n\n export class TextInput extends Prompt<string> {\n override result(): string {\n return this.value;\n }\n override render(status: 'idle' | 'submitted' | 'aborted'): string {\n if (status === 'submitted') {\n return `${this.props.prompt}\n${this.value}`;\n }\n if (status === 'aborted') {\n return `${this.props.prompt} ${this.value} (CANCELLED)\\n`;\n }\n let inputDisplay = '';\n if (this.value === '') {\n inputDisplay = `${chalk.inverse(this.props.placeholder?.substring(0, 1))}${chalk.dim(this.props.placeholder?.substring(1))}`;\n } else {\n inputDisplay = `${this.value}${chalk.inverse(' ')}`;\n }\n const errorText = this.errorText\n ? ` ${chalk.red(this.errorText)}`\n : '';\n return `${this.props.prompt}${errorText}\n${inputDisplay}`;\n }\n\n public value: string;\n private errorText: string | undefined;\n private readonly props: TextInputProps;\n\n constructor(props: TextInputProps) {\n super(props.modifyOutput);\n this.on('attach', (terminal) => {\n terminal.setAllowInteraction(false); // needed for validation\n terminal.toggleCursor('hide');\n });\n this.on('detach', (terminal) => {\n terminal.toggleCursor('show');\n });\n this.on('input', (input, keyInfo) => {\n if (keyInfo.name === 'escape') {\n if (!this.props.headless) {\n return this?.terminal?.resolve({\n data: undefined,\n status: 'aborted',\n });\n }\n }\n if (keyInfo.name === 'tab') {\n return;\n }\n if (keyInfo.name === 'return') {\n if (this.value === '' && this.props.defaultValue) {\n this.value = this.props.defaultValue;\n return this.terminal?.resolve({\n data: this.props.defaultValue,\n status: 'submitted',\n });\n }\n // Do the validation\n if (this.props.validate) {\n const validationResult = this.props.validate(this.value);\n if (validationResult) {\n this.errorText = validationResult;\n } else {\n return this.terminal?.resolve({\n data: this.value,\n status: 'submitted',\n });\n }\n } else {\n return this.terminal?.resolve({\n data: this.value,\n status: 'submitted',\n });\n }\n }\n if (keyInfo.name === 'backspace') {\n this.value = this.value.slice(0, -1);\n } else if (keyInfo.name?.length === 1) {\n this.value += input;\n } else if (keyInfo.name === 'space') {\n this.value += ' ';\n } else if (input !== undefined) {\n this.value += input;\n }\n this.requestLayout();\n });\n this.value = '';\n this.errorText = '';\n this.props = props;\n }\n\n setValue(value: string) {\n this.value = value;\n this.requestLayout();\n }\n\n setPrompt(prompt: string) {\n this.props.prompt = prompt;\n this.requestLayout();\n }\n }\n\n type SpinnerProps<T> = {\n modifyOutput?: ModifyOutputFn;\n promise: Promise<T>;\n workingText?: string;\n doneText?: string;\n errorText?: string;\n disappearWhenDone?: boolean;\n };\n\n export class Spinner<T> extends Prompt<T> {\n private props: SpinnerProps<T>;\n private promiseResult: T | null = null;\n private promiseError: Error | null = null;\n private spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n private frameIndex = 0;\n private intervalId: NodeJS.Timeout | null = null;\n private messages: string[] = [];\n\n result(): T {\n if (this.promiseError) {\n throw this.promiseError;\n }\n return this.promiseResult!;\n }\n\n addMessage(message: string): void {\n this.messages.push(message);\n this.requestLayout();\n }\n\n updateText(text: string): void {\n this.props.workingText = text;\n this.requestLayout();\n }\n\n render(status: 'idle' | 'submitted' | 'aborted'): string {\n const workingText = this.props.workingText || 'Loading...';\n const doneText = this.props.doneText || 'Done';\n const errorText = this.props.errorText || 'Error';\n\n if (status === 'submitted') {\n if (this.promiseError) {\n return `${chalk.red('✗')} ${errorText}\\n`;\n }\n if (this.props.disappearWhenDone) {\n return '';\n }\n return `${chalk.green('✓')} ${doneText}\\n`;\n }\n\n if (status === 'aborted') {\n return `${chalk.yellow('⚠')} Aborted\\n`;\n }\n\n const frame = this.spinnerFrames[this.frameIndex];\n let messages = this.messages.join('\\n');\n if (this.messages.length > 0) {\n messages += '\\n';\n }\n return `${messages}${chalk.hex('#EA570B')(frame)} ${workingText}\\n${messages}`;\n }\n\n constructor(props: SpinnerProps<T>) {\n super(props.modifyOutput);\n this.props = props;\n\n this.on('attach', (terminal) => {\n terminal.setAllowInteraction(false);\n terminal.toggleCursor('hide');\n this.intervalId = setInterval(() => {\n this.frameIndex = (this.frameIndex + 1) % this.spinnerFrames.length;\n this.requestLayout();\n }, 80);\n\n this.props.promise\n .then((result) => {\n this.promiseResult = result;\n if (this.intervalId) clearInterval(this.intervalId);\n return terminal.resolve({\n data: result as any,\n status: 'submitted',\n });\n })\n .catch((error) => {\n this.promiseError = error;\n if (this.intervalId) clearInterval(this.intervalId);\n return terminal.resolve({\n data: error as any,\n status: 'submitted',\n });\n });\n });\n\n this.on('detach', (terminal) => {\n terminal.toggleCursor('show');\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n });\n }\n }\n\n export type ConfirmationProps = {\n promptText: string;\n defaultValue?: boolean;\n modifyOutput?: ModifyOutputFn;\n yesText?: string;\n inline?: boolean;\n noText?: string;\n };\n\n export class Confirmation extends Prompt<boolean> {\n override result(): boolean {\n return this.value ?? this.props.defaultValue ?? false;\n }\n\n override render(status: 'idle' | 'submitted' | 'aborted'): string {\n const renderLabel = (\n text: string,\n active: boolean,\n width: number = 8,\n ): string => {\n return boxen(text, {\n backgroundColor: active\n ? '#EA570B'\n : status === 'idle'\n ? 'blackBright'\n : undefined,\n borderStyle: 'none',\n align: 'center',\n width,\n });\n };\n\n const yesStyle = renderLabel(\n this.props.yesText ?? 'Yes',\n this.value === true,\n 9,\n );\n const noStyle = renderLabel(\n this.props.noText ?? 'No',\n this.value === false,\n 8,\n );\n\n const display = `${this.props.promptText}${this.props.inline ? ' ' : '\\n'}${yesStyle} ${noStyle}`;\n if (status === 'submitted') {\n return chalk.dim(display);\n }\n return display;\n }\n\n private value: boolean | null = null;\n private readonly props: ConfirmationProps;\n\n constructor(props: ConfirmationProps) {\n super(props.modifyOutput);\n this.props = props;\n this.on('attach', (terminal) => {\n terminal.toggleCursor('hide');\n });\n this.on('detach', (terminal) => {\n terminal.toggleCursor('show');\n });\n this.value = props.defaultValue || false;\n this.on('input', (input, key) => {\n if (['right', 'left', 'tab', 'j', 'k', 'h', 'l'].includes(key.name!)) {\n this.value = !this.value;\n }\n if (input) {\n if (input.toLowerCase() === 'y') {\n return this.terminal!.resolve({ data: true, status: 'submitted' });\n } else if (input.toLowerCase() === 'n') {\n return this.terminal!.resolve({ data: false, status: 'submitted' });\n }\n }\n this.requestLayout();\n });\n }\n }\n\n class FocusHandle {\n private parent: FocusHandle | null = null;\n private _focus: Focus;\n key: string;\n\n private onFocusCallback: (() => void) | null = null;\n private onBlurCallback: (() => void) | null = null;\n private onKeyCallbacks: ((\n str: string | undefined,\n key: AnyKey,\n propagate: () => void,\n ) => any)[] = [];\n\n constructor(focus: Focus, key: string, parent: FocusHandle | null) {\n this._focus = focus;\n this.key = key;\n this.parent = parent;\n }\n\n child(childKey: string): FocusHandle {\n const newHandle = new FocusHandle(this._focus, childKey, this);\n this._focus.register(newHandle);\n return newHandle;\n }\n\n setFocus(key: string) {\n this._focus?.setFocus(key);\n }\n\n onKey(\n callback: (\n str: string | undefined,\n key: AnyKey,\n propagate: () => void,\n ) => any,\n ): FocusHandle {\n this.onKeyCallbacks.push(callback);\n return this;\n }\n\n onFocus(callback: () => void): FocusHandle {\n this.onFocusCallback = callback;\n return this;\n }\n\n onBlur(callback: () => void): FocusHandle {\n this.onBlurCallback = callback;\n return this;\n }\n\n getFocused(): string {\n return this._focus.getFocused();\n }\n\n isFocused(): boolean {\n return this._focus.isFocused(this.key);\n }\n\n _notifyKey(str: string | undefined, key: AnyKey) {\n this.onKeyCallbacks.forEach((callback) => {\n callback(str, key, () => {\n this.parent?._notifyKey(str, key);\n });\n });\n }\n\n _notifyFocusState(key: string) {\n if (key === this.key) {\n this.onFocusCallback?.();\n } else {\n this.onBlurCallback?.();\n }\n }\n }\n\n export class Focus {\n private selected: string;\n private prompt: Prompt<any>;\n private handles: Record<string, FocusHandle>;\n\n constructor(prompt: Prompt<any>) {\n this.prompt = prompt;\n this.prompt.on('input', (arg1, arg2) => {\n this.handles[this.selected]?._notifyKey?.(arg1, arg2);\n this.prompt.requestLayout();\n });\n this.handles = {};\n this.selected = 'root';\n }\n\n register(handle: FocusHandle) {\n this.handles[handle.key] = handle;\n }\n\n root(): FocusHandle {\n const rootHandle = new FocusHandle(this, 'root', null);\n this.register(rootHandle);\n this.setFocus('root');\n return rootHandle;\n }\n\n getFocused(): string {\n return this.selected;\n }\n\n setFocus(key: string) {\n this.selected = key;\n\n this.handles[key]?._notifyFocusState?.(key);\n\n this.prompt.requestLayout();\n }\n\n isFocused(key: string): boolean {\n return this.selected === key;\n }\n }\n\n type App = {\n admin_token: string;\n magic_code_email_template: null;\n id: string;\n title: string;\n created_at: string;\n };\n type Org = {\n id: string;\n title: string;\n role: string;\n };\n\n type MenuItem = {\n label: string;\n onSelect: () => void;\n value?: string;\n };\n\n type MenuProps = {\n focus: FocusHandle;\n items: MenuItem[];\n width?: number;\n maxHeight?: number;\n emptyState?: string;\n showIdxWhileBlurred?: boolean;\n resetIdxOnFocus?: boolean;\n onHoverChange?: (value: string | undefined) => void;\n enableSearch?: boolean;\n };\n\n export class Menu {\n items: MenuItem[] = [];\n selectedIdx: number = 0;\n focus: FocusHandle;\n width = 40;\n maxHeight = 10;\n scrollOffset = 0;\n emptyState?: string;\n showIdxWhileBlurred: boolean;\n onHoverChange?: (value: string | undefined) => void;\n enableSearch: boolean;\n searchMode: boolean = false;\n searchQuery: string = '';\n allItems: { label: string; onSelect: () => void; value?: string }[] = [];\n\n constructor(props: MenuProps) {\n this.width = props.width ?? 40;\n this.maxHeight = props.maxHeight ?? 10;\n this.focus = props.focus;\n this.emptyState = props.emptyState;\n this.showIdxWhileBlurred = props.showIdxWhileBlurred ?? false;\n this.onHoverChange = props.onHoverChange;\n this.enableSearch = props.enableSearch ?? false;\n\n if (props.resetIdxOnFocus) {\n this.focus.onFocus(() => {\n this.setSelectedItem(0);\n });\n }\n\n this.focus.onKey((key, keyInfo, propagate) => {\n if (this.enableSearch && key === '/' && !this.searchMode) {\n this.searchMode = true;\n this.searchQuery = '';\n return;\n }\n\n if (this.searchMode) {\n if (keyInfo.name === 'escape') {\n this.searchMode = false;\n this.searchQuery = '';\n this.items = this.allItems;\n this.setSelectedItem(0);\n } else if (keyInfo.name === 'backspace') {\n this.searchQuery = this.searchQuery.slice(0, -1);\n this.filterItems();\n } else if (keyInfo.name === 'up' || keyInfo.name === 'down') {\n // Allow arrow keys to navigate in search mode\n } else if (keyInfo.name === 'return') {\n this.searchMode = false;\n const item = this.items[this.selectedIdx];\n if (item) {\n item.onSelect();\n } else {\n // bail out of search if you hit enter on nothing\n this.items = this.allItems;\n this.searchQuery = '';\n this.setSelectedItem(0);\n this.searchMode = false;\n }\n } else if (key && key.length === 1) {\n this.searchQuery += key;\n this.filterItems();\n }\n if (keyInfo.name === 'up' || keyInfo.name === 'down') {\n // Continue to navigation logic below\n } else {\n return;\n }\n }\n\n if (key === 'j' || keyInfo.name == 'down') {\n const newIndex = Math.min(\n this.selectedIdx + 1,\n this.items.length - 1,\n );\n this.setSelectedItem(newIndex);\n } else if (key === 'k' || keyInfo.name == 'up') {\n const newIndex = Math.max(this.selectedIdx - 1, 0);\n this.setSelectedItem(newIndex);\n } else if (keyInfo.name === 'return' || keyInfo.name === 'right') {\n this.items[this.selectedIdx]?.onSelect();\n } else {\n propagate();\n }\n });\n\n this.allItems = props.items;\n this.items = props.items;\n this.setSelectedItem(0);\n }\n\n public isSearching(): boolean {\n return this.searchMode;\n }\n\n private filterItems() {\n if (this.searchQuery === '') {\n this.items = this.allItems;\n } else {\n this.items = this.allItems.filter((item) =>\n item.label.toLowerCase().includes(this.searchQuery.toLowerCase()),\n );\n }\n this.setSelectedItem(0);\n }\n\n private adjustScroll() {\n if (this.selectedIdx < this.scrollOffset) {\n this.scrollOffset = this.selectedIdx;\n } else if (this.selectedIdx >= this.scrollOffset + this.maxHeight) {\n this.scrollOffset = this.selectedIdx - this.maxHeight + 1;\n }\n this.scrollOffset = Math.max(\n 0,\n Math.min(this.scrollOffset, this.items.length - this.maxHeight),\n );\n }\n\n addItem(item: { label: string; onSelect: () => void; value?: string }) {\n this.items.push(item);\n }\n\n setSelectedItem(index: number) {\n const maxIndex = Math.max(0, this.items.length - 1);\n this.selectedIdx = Math.max(0, Math.min(index, maxIndex));\n this.adjustScroll();\n if (this.onHoverChange && this.items[this.selectedIdx]) {\n this.onHoverChange(this.items[this.selectedIdx].value);\n }\n }\n\n setItemList(items: { label: string; onSelect: () => void }[]) {\n this.allItems = items;\n this.items = items;\n this.setSelectedItem(this.selectedIdx);\n }\n\n render(): string {\n let output = '';\n\n if (this.searchMode) {\n const searchLine = (\n ' Search: ' +\n this.searchQuery +\n chalk.inverse(' ')\n ).padEnd(this.width);\n output += chalk.hex('#EA570B')(searchLine) + '\\n';\n }\n\n if (this.items.length === 0) {\n return output + (this.emptyState ?? chalk.dim('No items'));\n }\n\n const hasItemsAbove = this.scrollOffset > 0;\n const hasItemsBelow =\n this.scrollOffset + this.maxHeight < this.items.length;\n\n const visibleItems = this.items.slice(\n this.scrollOffset,\n this.scrollOffset + this.maxHeight,\n );\n visibleItems.forEach((item, index) => {\n const actualIndex = this.scrollOffset + index;\n const isSelected =\n this.selectedIdx === actualIndex && this.focus.isFocused();\n const isSelectedButBlurred =\n this.selectedIdx === actualIndex && !this.focus.isFocused();\n\n const labelWithSpace = ' ' + item.label;\n const labelWidth = stringWidth(labelWithSpace);\n const paddingNeeded = Math.max(0, this.width - 1 - labelWidth);\n let line = labelWithSpace + ' '.repeat(paddingNeeded) + ' ';\n\n if (index === 0 && hasItemsAbove) {\n line = labelWithSpace + ' '.repeat(paddingNeeded) + chalk.dim('▲');\n } else if (index === visibleItems.length - 1 && hasItemsBelow) {\n line = labelWithSpace + ' '.repeat(paddingNeeded) + chalk.dim('▼');\n }\n\n if (isSelected) {\n output += chalk.bold.hex('#EA570B').inverse(line) + '\\n';\n } else if (isSelectedButBlurred && this.showIdxWhileBlurred) {\n output += chalk.bgBlackBright(line) + '\\n';\n } else {\n output += line + '\\n';\n }\n });\n return output;\n }\n }\n\n interface AppSelectorApi {\n getDash: () => { apps: App[]; orgs: Org[] };\n createEphemeralApp: (title: string) => Promise<{\n appId: string;\n adminToken: string;\n }>;\n getAppsForOrg: (orgId: string) => Promise<{\n apps: any[];\n }>;\n createApp: (\n title: string,\n orgId?: string,\n ) => Promise<{\n appId: string;\n adminToken: string;\n }>;\n }\n\n type AppSelectorProps = {\n allowEphemeral: boolean;\n allowCreate: boolean;\n modifyOutput?: (output: string) => string;\n api: AppSelectorApi;\n startingMenuIndex?: number;\n };\n\n export class AppSelector extends Prompt<{\n appId: string;\n adminToken: string;\n approach: 'ephemeral' | 'import' | 'create';\n }> {\n props: AppSelectorProps;\n api: AppSelectorApi;\n dashResponse: { apps: App[]; orgs: Org[] };\n creatingEphemeral = false;\n selectedAppName = '';\n selectedOrg: Org | null = null;\n appNameInput: TextInput;\n focus: FocusHandle;\n appList: Menu;\n orgList: Menu;\n\n HEIGHT = 10;\n RIGHT_WIDTH = 70;\n\n result(): {\n appId: string;\n adminToken: string;\n approach: 'ephemeral' | 'import' | 'create';\n } {\n throw new Error('Method not implemented.');\n }\n\n rightView(): string {\n let inner = '';\n\n // Use hoveredLeftMenuItem to determine what to show\n if (this.focus.getFocused() === 'appList') {\n inner = this.appList.render();\n }\n\n if (this.focus.getFocused() === 'pickOrg') {\n inner = this.orgList.render();\n }\n\n if (this.focus.getFocused() === 'newApp') {\n return boxen(this.appNameInput.render('idle'), {\n height: this.HEIGHT,\n width: this.RIGHT_WIDTH,\n borderStyle: 'none',\n padding: {\n left: 2,\n top: 1,\n },\n textAlignment: 'left',\n });\n }\n\n return boxen(inner, {\n height: this.HEIGHT,\n width: this.RIGHT_WIDTH,\n borderStyle: 'none',\n });\n }\n\n render(status: 'idle' | 'submitted' | 'aborted'): string {\n if (status === 'submitted') {\n return boxen(' Selected App: ' + this.selectedAppName, {\n width: 50,\n dimBorder: true,\n textAlignment: 'center',\n });\n }\n\n const rightSide = this.rightView();\n\n const curFocus = this.focus.getFocused();\n let left =\n curFocus === 'appList'\n ? 'Select an app '\n : curFocus === 'pickOrg'\n ? 'Select an org '\n : curFocus === 'newApp'\n ? 'Create app '\n : '';\n\n if (this.selectedOrg?.title) {\n left += `(${this.selectedOrg.title}) `;\n }\n\n const keybindings: string[] = [];\n\n if (curFocus === 'newApp') {\n keybindings.push('<enter>: create app');\n keybindings.push('<esc>: back');\n if (this.props.allowEphemeral) {\n keybindings.push('<tab>: toggle temporary app');\n }\n }\n\n if (curFocus === 'appList') {\n keybindings.push('<tab>: change org');\n keybindings.push('<enter>: select app');\n if (this.appList.isSearching()) {\n keybindings.push('<esc>: cancel search');\n } else {\n keybindings.push('/: search');\n }\n }\n\n if (curFocus === 'pickOrg') {\n keybindings.push('<tab>/<esc>: back');\n keybindings.push('<enter>: select org');\n if (this.orgList.isSearching()) {\n keybindings.push('<esc>: cancel search');\n } else {\n keybindings.push('/: search');\n }\n }\n\n return (\n boxen(rightSide, {\n title: left,\n dimBorder: true,\n }) +\n '\\n' +\n chalk.dim(' ' + keybindings.join(' '))\n );\n }\n\n createAppList = (apps: App[]): MenuItem[] => {\n const items: MenuItem[] = [];\n\n if (this.props.allowCreate) {\n items.push({\n label: chalk.italic('+ New App'),\n onSelect: () => {\n this.focus.setFocus('newApp');\n },\n });\n }\n\n apps\n .sort(\n (a, b) =>\n new Date(b.created_at).getTime() - new Date(a.created_at).getTime(),\n )\n .forEach((app) => {\n items.push({\n label: app.title,\n onSelect: () => {\n this.selectedAppName = app.title;\n this.terminal?.resolve({\n status: 'submitted',\n data: {\n appId: app.id,\n approach: 'import',\n adminToken: app.admin_token,\n },\n });\n },\n });\n });\n\n return items;\n };\n\n constructor(props: AppSelectorProps) {\n super(props.modifyOutput);\n this.props = props;\n this.api = props.api;\n this.dashResponse = this.api.getDash();\n this.focus = new Focus(this).root();\n\n this.appList = new Menu({\n enableSearch: true,\n width: this.RIGHT_WIDTH,\n focus: this.focus.child('appList').onKey((_key, keyInfo) => {\n if (keyInfo.name === 'tab') {\n this.focus.setFocus('pickOrg');\n }\n }),\n items: this.createAppList(this.dashResponse.apps),\n emptyState: ' No Apps ',\n });\n\n this.orgList = new Menu({\n enableSearch: true,\n width: this.RIGHT_WIDTH,\n focus: this.focus.child('pickOrg').onKey((_, keyInfo) => {\n if (keyInfo.name === 'escape' || keyInfo.name === 'tab') {\n this.focus.setFocus('appList');\n }\n }),\n items: this.dashResponse.orgs.map((org) => ({\n label: org.title,\n onSelect: () => {\n this.selectedOrg = org;\n this.api.getAppsForOrg(org.id).then((apps) => {\n this.appList.setItemList(this.createAppList(apps.apps));\n this.focus.setFocus('appList');\n this.requestLayout();\n });\n },\n })),\n });\n\n this.orgList.addItem({\n label: 'Personal',\n onSelect: () => {\n this.selectedOrg = null;\n this.appList.setItemList(this.createAppList(this.dashResponse.apps));\n this.focus.setFocus('appList');\n this.requestLayout();\n },\n });\n\n this.focus.setFocus('appList');\n\n this.appNameInput = new TextInput({\n prompt: 'Enter New App Name',\n placeholder: 'my-instant-app',\n defaultValue: 'my-instant-app',\n headless: true,\n });\n\n this.focus.child('newApp').onKey((key, keyInfo) => {\n if (keyInfo.name === 'escape' || keyInfo.name == 'left') {\n this.focus.setFocus('appList');\n }\n if (keyInfo.name === 'return') {\n const name = this.appNameInput.value || 'my-instant-app';\n if (this.creatingEphemeral) {\n this.props.api.createEphemeralApp(name).then((pair) => {\n this.selectedAppName = name;\n this.terminal?.resolve({\n status: 'submitted',\n data: {\n ...pair,\n approach: 'ephemeral',\n },\n });\n });\n } else {\n this.props.api\n .createApp(name, this.selectedOrg?.id)\n .then((pair) => {\n this.selectedAppName = name;\n this.terminal?.resolve({\n status: 'submitted',\n data: {\n ...pair,\n approach: 'create',\n },\n });\n });\n }\n } else if (keyInfo.name === 'tab' && this.props.allowEphemeral) {\n this.creatingEphemeral = !this.creatingEphemeral;\n this.appNameInput.setPrompt(\n this.creatingEphemeral\n ? `Enter New ${chalk.bold('Temporary')} App Name`\n : 'Enter New App Name',\n );\n } else {\n this.appNameInput.input(key, keyInfo);\n }\n });\n\n this.on('attach', (terminal) => {\n this.terminal?.setAllowInteraction(false);\n terminal.toggleCursor('hide');\n });\n this.on('detach', (terminal) => {\n terminal.toggleCursor('show');\n });\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport boxen from 'boxen';\nimport stringWidth from 'string-width';\nimport { AnyKey, ModifyOutputFn, Prompt, SelectState } from './lib.js';\n\nexport { render, renderUnwrap, setRawModeWindowsFriendly } from './lib.js';\n\nexport namespace UI {\n type Status = 'idle' | 'submitted' | 'aborted';\n export const modifiers = {\n piped: (modifiers: ModifyOutputFn[]): ModifyOutputFn => {\n return (output: string, status?: Status) => {\n return modifiers.reduce(\n (acc, modifier) => modifier(acc, status),\n output,\n );\n };\n },\n\n topPadding: (output: string) => {\n return '\\n' + output;\n },\n\n yPadding: (output: string) => {\n return '\\n' + output + '\\n';\n },\n\n sidelined:\n (symbol: string | null = '◆') =>\n (output: string, status?: Status) => {\n const result: string[] = [];\n output.split('\\n').forEach((line, idx) => {\n if (idx === 1 && symbol) {\n result.push(`${chalk.gray(symbol + ' ')}${line}`);\n } else {\n result.push(`${chalk.gray('│ ')}${line}`);\n }\n });\n if (status === 'idle') {\n result.push(`${chalk.gray('└ ')}`);\n }\n let almost = result.join('\\n');\n if (!almost.endsWith('\\n')) {\n almost += '\\n';\n }\n return almost;\n },\n\n background: (output: string) => {\n return chalk.bgBlackBright(output);\n },\n\n dimOnComplete: (output: string, status?: Status) => {\n if (status === 'submitted' || status === 'aborted') {\n return chalk.dim(output);\n }\n return output;\n },\n vanishOnComplete: (output: string, status?: Status) => {\n if (status === 'submitted' || status === 'aborted') {\n return '';\n }\n return output;\n },\n } as const;\n\n export const ciaModifier = (symbol: string | null = '◆') =>\n modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n UI.modifiers.sidelined(symbol),\n ]);\n\n /**\n * Utility that lets you use output modifiers in console.log\n */\n export const log = (\n output: string,\n modifyOutput?: ModifyOutputFn,\n ...args: any[]\n ) => {\n const finalOutput = modifyOutput ? modifyOutput(output) : output;\n if (finalOutput.endsWith('\\n')) {\n process.stdout.write(finalOutput, ...args);\n } else {\n process.stdout.write(finalOutput + '\\n', ...args);\n }\n };\n\n type SelectProps<T> = {\n options: {\n value: T;\n label: string;\n }[];\n promptText: string;\n modifyOutput?: ModifyOutputFn;\n defaultValue?: T;\n };\n export class Select<T> extends Prompt<T> {\n config(status: 'idle' | 'submitted' | 'aborted'): string {\n console.log('config', status);\n return status;\n }\n\n private readonly data: SelectState<T>;\n private readonly options: SelectProps<T>['options'];\n private readonly params: SelectProps<T>;\n\n constructor(params: SelectProps<T>) {\n super(params.modifyOutput);\n this.on('attach', (terminal) => terminal.toggleCursor('hide'));\n this.on('input', (input) => {\n if (input === 'j') {\n this.data.selectedIdx =\n (this.data.selectedIdx + 1) % this.options.length;\n } else if (input === 'k') {\n this.data.selectedIdx =\n (this.data.selectedIdx - 1 + this.options.length) %\n this.options.length;\n }\n this.requestLayout();\n });\n this.on('detach', (terminal) => {\n terminal.toggleCursor('show');\n });\n this.options = params.options;\n this.params = params;\n this.data = new SelectState<T>(\n params.options.map((option) => option.value),\n );\n\n // Set initial selected index based on defaultValue if provided\n if (params.defaultValue !== undefined) {\n const defaultIndex = params.options.findIndex(\n (option) => option.value === params.defaultValue,\n );\n if (defaultIndex !== -1) {\n this.data.selectedIdx = defaultIndex;\n }\n }\n\n this.data.bind(this as any);\n }\n\n result(): T {\n return this.data.items[this.data.selectedIdx]!;\n }\n\n render(status: 'idle' | 'submitted' | 'aborted'): string {\n if (status === 'submitted') {\n return `${this.params.promptText}\n${chalk.hex('#EA570B').bold('●')} ${this.params.options[this.data.selectedIdx]?.label}`;\n }\n const optionsList = this.options\n .map((option, idx) => {\n const isSelected = idx === this.data.selectedIdx;\n const cursor = isSelected ? chalk.hex('#EA570B').bold('●') : '○';\n const label = isSelected\n ? chalk.bold(option.label)\n : chalk.dim(option.label);\n\n return `${cursor} ${label}`;\n })\n .join('\\n');\n\n return `${this.params.promptText}\n${optionsList}`;\n }\n }\n\n /**\n * @deprecated use the modifyOutput prop instead\n * left as an example of how to do wrapper prompts\n */\n export class Sidelined<T> extends Prompt<T> {\n override result(): T {\n return this.inner.result();\n }\n override render(status: 'idle' | 'submitted' | 'aborted'): string {\n return (\n this.inner\n .render(status)\n .split('\\n')\n .map((line) => `${chalk.gray(' │ ')}${line}`)\n .join('\\n') + '\\n'\n );\n }\n config(status: 'idle' | 'submitted' | 'aborted'): string {\n return status;\n }\n\n private readonly inner: Prompt<T>;\n\n constructor(inner: Prompt<T>) {\n super();\n this.inner = inner;\n this.on('input', (input, arg2) => {\n this.inner.input(input, arg2);\n this.requestLayout();\n });\n this.on('detach', (terminal) => {\n this.inner.detach(terminal);\n });\n this.on('attach', (terminal) => {\n this.inner.attach(terminal);\n });\n }\n }\n\n type TextInputProps = {\n placeholder?: string;\n prompt: string;\n modifyOutput?: ModifyOutputFn;\n defaultValue?: string;\n validate?: (value: string) => string | undefined;\n headless?: boolean;\n };\n\n export class TextInput extends Prompt<string> {\n override result(): string {\n return this.value;\n }\n override render(status: 'idle' | 'submitted' | 'aborted'): string {\n if (status === 'submitted') {\n return `${this.props.prompt}\n${this.value}`;\n }\n if (status === 'aborted') {\n return `${this.props.prompt} ${this.value} (CANCELLED)\\n`;\n }\n let inputDisplay = '';\n if (this.value === '') {\n inputDisplay = `${chalk.inverse(this.props.placeholder?.substring(0, 1))}${chalk.dim(this.props.placeholder?.substring(1))}`;\n } else {\n inputDisplay = `${this.value}${chalk.inverse(' ')}`;\n }\n const errorText = this.errorText\n ? ` ${chalk.red(this.errorText)}`\n : '';\n return `${this.props.prompt}${errorText}\n${inputDisplay}`;\n }\n\n public value: string;\n private errorText: string | undefined;\n private readonly props: TextInputProps;\n\n constructor(props: TextInputProps) {\n super(props.modifyOutput);\n this.on('attach', (terminal) => {\n terminal.setAllowInteraction(false); // needed for validation\n terminal.toggleCursor('hide');\n });\n this.on('detach', (terminal) => {\n terminal.toggleCursor('show');\n });\n this.on('input', (input, keyInfo) => {\n if (keyInfo.name === 'escape') {\n if (!this.props.headless) {\n return this?.terminal?.resolve({\n data: undefined,\n status: 'aborted',\n });\n }\n }\n if (keyInfo.name === 'tab') {\n return;\n }\n if (keyInfo.name === 'return') {\n if (this.value === '' && this.props.defaultValue) {\n this.value = this.props.defaultValue;\n return this.terminal?.resolve({\n data: this.props.defaultValue,\n status: 'submitted',\n });\n }\n // Do the validation\n if (this.props.validate) {\n const validationResult = this.props.validate(this.value);\n if (validationResult) {\n this.errorText = validationResult;\n } else {\n return this.terminal?.resolve({\n data: this.value,\n status: 'submitted',\n });\n }\n } else {\n return this.terminal?.resolve({\n data: this.value,\n status: 'submitted',\n });\n }\n }\n if (keyInfo.name === 'backspace') {\n this.value = this.value.slice(0, -1);\n } else if (keyInfo.name?.length === 1) {\n this.value += input;\n } else if (keyInfo.name === 'space') {\n this.value += ' ';\n } else if (input !== undefined) {\n this.value += input;\n }\n this.requestLayout();\n });\n this.value = '';\n this.errorText = '';\n this.props = props;\n }\n\n setValue(value: string) {\n this.value = value;\n this.requestLayout();\n }\n\n setPrompt(prompt: string) {\n this.props.prompt = prompt;\n this.requestLayout();\n }\n }\n\n type SpinnerProps<T> = {\n modifyOutput?: ModifyOutputFn;\n promise: Promise<T>;\n workingText?: string;\n doneText?: string;\n errorText?: string;\n disappearWhenDone?: boolean;\n };\n\n export class Spinner<T> extends Prompt<T> {\n private props: SpinnerProps<T>;\n private promiseResult: T | null = null;\n private promiseError: Error | null = null;\n private spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n private frameIndex = 0;\n private intervalId: NodeJS.Timeout | null = null;\n private messages: string[] = [];\n\n result(): T {\n if (this.promiseError) {\n throw this.promiseError;\n }\n return this.promiseResult!;\n }\n\n addMessage(message: string): void {\n this.messages.push(message);\n this.requestLayout();\n }\n\n updateText(text: string): void {\n this.props.workingText = text;\n this.requestLayout();\n }\n\n render(status: 'idle' | 'submitted' | 'aborted'): string {\n const workingText = this.props.workingText || 'Loading...';\n const doneText = this.props.doneText || 'Done';\n const errorText = this.props.errorText || 'Error';\n\n if (status === 'submitted') {\n if (this.promiseError) {\n return `${chalk.red('✗')} ${errorText}\\n`;\n }\n if (this.props.disappearWhenDone) {\n return '';\n }\n return `${chalk.green('✓')} ${doneText}\\n`;\n }\n\n if (status === 'aborted') {\n return `${chalk.yellow('⚠')} Aborted\\n`;\n }\n\n const frame = this.spinnerFrames[this.frameIndex];\n let messages = this.messages.join('\\n');\n if (this.messages.length > 0) {\n messages += '\\n';\n }\n return `${messages}${chalk.hex('#EA570B')(frame)} ${workingText}\\n${messages}`;\n }\n\n constructor(props: SpinnerProps<T>) {\n super(props.modifyOutput);\n this.props = props;\n\n this.on('attach', (terminal) => {\n terminal.setAllowInteraction(false);\n terminal.toggleCursor('hide');\n this.intervalId = setInterval(() => {\n this.frameIndex = (this.frameIndex + 1) % this.spinnerFrames.length;\n this.requestLayout();\n }, 80);\n\n this.props.promise\n .then((result) => {\n this.promiseResult = result;\n if (this.intervalId) clearInterval(this.intervalId);\n return terminal.resolve({\n data: result as any,\n status: 'submitted',\n });\n })\n .catch((error) => {\n this.promiseError = error;\n if (this.intervalId) clearInterval(this.intervalId);\n return terminal.resolve({\n data: error as any,\n status: 'submitted',\n });\n });\n });\n\n this.on('detach', (terminal) => {\n terminal.toggleCursor('show');\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n });\n }\n }\n\n export type ConfirmationProps = {\n promptText: string;\n defaultValue?: boolean;\n modifyOutput?: ModifyOutputFn;\n yesText?: string;\n inline?: boolean;\n noText?: string;\n };\n\n export class Confirmation extends Prompt<boolean> {\n override result(): boolean {\n return this.value ?? this.props.defaultValue ?? false;\n }\n\n override render(status: 'idle' | 'submitted' | 'aborted'): string {\n const renderLabel = (\n text: string,\n active: boolean,\n width: number = 8,\n ): string => {\n return boxen(text, {\n backgroundColor: active\n ? '#EA570B'\n : status === 'idle'\n ? 'blackBright'\n : undefined,\n borderStyle: 'none',\n align: 'center',\n width,\n });\n };\n\n const yesStyle = renderLabel(\n this.props.yesText ?? 'Yes',\n this.value === true,\n 9,\n );\n const noStyle = renderLabel(\n this.props.noText ?? 'No',\n this.value === false,\n 8,\n );\n\n const display = `${this.props.promptText}${this.props.inline ? ' ' : '\\n'}${yesStyle} ${noStyle}`;\n if (status === 'submitted') {\n return chalk.dim(display);\n }\n return display;\n }\n\n private value: boolean | null = null;\n private readonly props: ConfirmationProps;\n\n constructor(props: ConfirmationProps) {\n super(props.modifyOutput);\n this.props = props;\n this.on('attach', (terminal) => {\n terminal.toggleCursor('hide');\n });\n this.on('detach', (terminal) => {\n terminal.toggleCursor('show');\n });\n this.value = props.defaultValue || false;\n this.on('input', (input, key) => {\n if (['right', 'left', 'tab', 'j', 'k', 'h', 'l'].includes(key.name!)) {\n this.value = !this.value;\n }\n if (input) {\n if (input.toLowerCase() === 'y') {\n return this.terminal!.resolve({ data: true, status: 'submitted' });\n } else if (input.toLowerCase() === 'n') {\n return this.terminal!.resolve({ data: false, status: 'submitted' });\n }\n }\n this.requestLayout();\n });\n }\n }\n\n class FocusHandle {\n private parent: FocusHandle | null = null;\n private _focus: Focus;\n key: string;\n\n private onFocusCallback: (() => void) | null = null;\n private onBlurCallback: (() => void) | null = null;\n private onKeyCallbacks: ((\n str: string | undefined,\n key: AnyKey,\n propagate: () => void,\n ) => any)[] = [];\n\n constructor(focus: Focus, key: string, parent: FocusHandle | null) {\n this._focus = focus;\n this.key = key;\n this.parent = parent;\n }\n\n child(childKey: string): FocusHandle {\n const newHandle = new FocusHandle(this._focus, childKey, this);\n this._focus.register(newHandle);\n return newHandle;\n }\n\n setFocus(key: string) {\n this._focus?.setFocus(key);\n }\n\n onKey(\n callback: (\n str: string | undefined,\n key: AnyKey,\n propagate: () => void,\n ) => any,\n ): FocusHandle {\n this.onKeyCallbacks.push(callback);\n return this;\n }\n\n onFocus(callback: () => void): FocusHandle {\n this.onFocusCallback = callback;\n return this;\n }\n\n onBlur(callback: () => void): FocusHandle {\n this.onBlurCallback = callback;\n return this;\n }\n\n getFocused(): string {\n return this._focus.getFocused();\n }\n\n isFocused(): boolean {\n return this._focus.isFocused(this.key);\n }\n\n _notifyKey(str: string | undefined, key: AnyKey) {\n this.onKeyCallbacks.forEach((callback) => {\n callback(str, key, () => {\n this.parent?._notifyKey(str, key);\n });\n });\n }\n\n _notifyFocusState(key: string) {\n if (key === this.key) {\n this.onFocusCallback?.();\n } else {\n this.onBlurCallback?.();\n }\n }\n }\n\n export class Focus {\n private selected: string;\n private prompt: Prompt<any>;\n private handles: Record<string, FocusHandle>;\n\n constructor(prompt: Prompt<any>) {\n this.prompt = prompt;\n this.prompt.on('input', (arg1, arg2) => {\n this.handles[this.selected]?._notifyKey?.(arg1, arg2);\n this.prompt.requestLayout();\n });\n this.handles = {};\n this.selected = 'root';\n }\n\n register(handle: FocusHandle) {\n this.handles[handle.key] = handle;\n }\n\n root(): FocusHandle {\n const rootHandle = new FocusHandle(this, 'root', null);\n this.register(rootHandle);\n this.setFocus('root');\n return rootHandle;\n }\n\n getFocused(): string {\n return this.selected;\n }\n\n setFocus(key: string) {\n this.selected = key;\n\n this.handles[key]?._notifyFocusState?.(key);\n\n this.prompt.requestLayout();\n }\n\n isFocused(key: string): boolean {\n return this.selected === key;\n }\n }\n\n type App = {\n admin_token: string;\n magic_code_email_template: null;\n id: string;\n title: string;\n created_at: string;\n };\n type Org = {\n id: string;\n title: string;\n role: string;\n };\n\n type MenuItem = {\n label: string;\n onSelect: () => void;\n value?: string;\n };\n\n type MenuProps = {\n focus: FocusHandle;\n items: MenuItem[];\n width?: number;\n maxHeight?: number;\n emptyState?: string;\n showIdxWhileBlurred?: boolean;\n resetIdxOnFocus?: boolean;\n onHoverChange?: (value: string | undefined) => void;\n enableSearch?: boolean;\n };\n\n export class Menu {\n items: MenuItem[] = [];\n selectedIdx: number = 0;\n focus: FocusHandle;\n width = 40;\n maxHeight = 10;\n scrollOffset = 0;\n emptyState?: string;\n showIdxWhileBlurred: boolean;\n onHoverChange?: (value: string | undefined) => void;\n enableSearch: boolean;\n searchMode: boolean = false;\n searchQuery: string = '';\n allItems: { label: string; onSelect: () => void; value?: string }[] = [];\n\n constructor(props: MenuProps) {\n this.width = props.width ?? 40;\n this.maxHeight = props.maxHeight ?? 10;\n this.focus = props.focus;\n this.emptyState = props.emptyState;\n this.showIdxWhileBlurred = props.showIdxWhileBlurred ?? false;\n this.onHoverChange = props.onHoverChange;\n this.enableSearch = props.enableSearch ?? false;\n\n if (props.resetIdxOnFocus) {\n this.focus.onFocus(() => {\n this.setSelectedItem(0);\n });\n }\n\n this.focus.onKey((key, keyInfo, propagate) => {\n if (this.enableSearch && key === '/' && !this.searchMode) {\n this.searchMode = true;\n this.searchQuery = '';\n return;\n }\n\n if (this.searchMode) {\n if (keyInfo.name === 'escape') {\n this.searchMode = false;\n this.searchQuery = '';\n this.items = this.allItems;\n this.setSelectedItem(0);\n } else if (keyInfo.name === 'backspace') {\n this.searchQuery = this.searchQuery.slice(0, -1);\n this.filterItems();\n } else if (keyInfo.name === 'up' || keyInfo.name === 'down') {\n // Allow arrow keys to navigate in search mode\n } else if (keyInfo.name === 'return') {\n this.searchMode = false;\n const item = this.items[this.selectedIdx];\n if (item) {\n item.onSelect();\n } else {\n // bail out of search if you hit enter on nothing\n this.items = this.allItems;\n this.searchQuery = '';\n this.setSelectedItem(0);\n this.searchMode = false;\n }\n } else if (key && key.length === 1) {\n this.searchQuery += key;\n this.filterItems();\n }\n if (keyInfo.name === 'up' || keyInfo.name === 'down') {\n // Continue to navigation logic below\n } else {\n return;\n }\n }\n\n if (key === 'j' || keyInfo.name == 'down') {\n const newIndex = Math.min(\n this.selectedIdx + 1,\n this.items.length - 1,\n );\n this.setSelectedItem(newIndex);\n } else if (key === 'k' || keyInfo.name == 'up') {\n const newIndex = Math.max(this.selectedIdx - 1, 0);\n this.setSelectedItem(newIndex);\n } else if (keyInfo.name === 'return' || keyInfo.name === 'right') {\n this.items[this.selectedIdx]?.onSelect();\n } else {\n propagate();\n }\n });\n\n this.allItems = props.items;\n this.items = props.items;\n this.setSelectedItem(0);\n }\n\n public isSearching(): boolean {\n return this.searchMode;\n }\n\n private filterItems() {\n if (this.searchQuery === '') {\n this.items = this.allItems;\n } else {\n this.items = this.allItems.filter((item) =>\n item.label.toLowerCase().includes(this.searchQuery.toLowerCase()),\n );\n }\n this.setSelectedItem(0);\n }\n\n private adjustScroll() {\n if (this.selectedIdx < this.scrollOffset) {\n this.scrollOffset = this.selectedIdx;\n } else if (this.selectedIdx >= this.scrollOffset + this.maxHeight) {\n this.scrollOffset = this.selectedIdx - this.maxHeight + 1;\n }\n this.scrollOffset = Math.max(\n 0,\n Math.min(this.scrollOffset, this.items.length - this.maxHeight),\n );\n }\n\n addItem(item: { label: string; onSelect: () => void; value?: string }) {\n this.items.push(item);\n }\n\n setSelectedItem(index: number) {\n const maxIndex = Math.max(0, this.items.length - 1);\n this.selectedIdx = Math.max(0, Math.min(index, maxIndex));\n this.adjustScroll();\n if (this.onHoverChange && this.items[this.selectedIdx]) {\n this.onHoverChange(this.items[this.selectedIdx].value);\n }\n }\n\n setItemList(items: { label: string; onSelect: () => void }[]) {\n this.allItems = items;\n this.items = items;\n this.setSelectedItem(this.selectedIdx);\n }\n\n render(): string {\n let output = '';\n\n if (this.searchMode) {\n const searchLine = (\n ' Search: ' +\n this.searchQuery +\n chalk.inverse(' ')\n ).padEnd(this.width);\n output += chalk.hex('#EA570B')(searchLine) + '\\n';\n }\n\n if (this.items.length === 0) {\n return output + (this.emptyState ?? chalk.dim('No items'));\n }\n\n const hasItemsAbove = this.scrollOffset > 0;\n const hasItemsBelow =\n this.scrollOffset + this.maxHeight < this.items.length;\n\n const visibleItems = this.items.slice(\n this.scrollOffset,\n this.scrollOffset + this.maxHeight,\n );\n visibleItems.forEach((item, index) => {\n const actualIndex = this.scrollOffset + index;\n const isSelected =\n this.selectedIdx === actualIndex && this.focus.isFocused();\n const isSelectedButBlurred =\n this.selectedIdx === actualIndex && !this.focus.isFocused();\n\n const labelWithSpace = ' ' + item.label;\n const labelWidth = stringWidth(labelWithSpace);\n const paddingNeeded = Math.max(0, this.width - 1 - labelWidth);\n let line = labelWithSpace + ' '.repeat(paddingNeeded) + ' ';\n\n if (index === 0 && hasItemsAbove) {\n line = labelWithSpace + ' '.repeat(paddingNeeded) + chalk.dim('▲');\n } else if (index === visibleItems.length - 1 && hasItemsBelow) {\n line = labelWithSpace + ' '.repeat(paddingNeeded) + chalk.dim('▼');\n }\n\n if (isSelected) {\n output += chalk.bold.hex('#EA570B').inverse(line) + '\\n';\n } else if (isSelectedButBlurred && this.showIdxWhileBlurred) {\n output += chalk.bgBlackBright(line) + '\\n';\n } else {\n output += line + '\\n';\n }\n });\n return output;\n }\n }\n\n interface AppSelectorApi {\n getDash: () => { apps: App[]; orgs: Org[] };\n createEphemeralApp: (title: string) => Promise<{\n appId: string;\n adminToken: string;\n }>;\n getAppsForOrg: (orgId: string) => Promise<{\n apps: any[];\n }>;\n createApp: (\n title: string,\n orgId?: string,\n ) => Promise<{\n appId: string;\n adminToken: string;\n }>;\n }\n\n type AppSelectorProps = {\n allowEphemeral: boolean;\n allowCreate: boolean;\n modifyOutput?: (output: string) => string;\n api: AppSelectorApi;\n startingMenuIndex?: number;\n };\n\n export class AppSelector extends Prompt<{\n appId: string;\n adminToken: string;\n approach: 'ephemeral' | 'import' | 'create';\n }> {\n props: AppSelectorProps;\n api: AppSelectorApi;\n dashResponse: { apps: App[]; orgs: Org[] };\n creatingEphemeral = false;\n selectedAppName = '';\n selectedOrg: Org | null = null;\n appNameInput: TextInput;\n focus: FocusHandle;\n appList: Menu;\n orgList: Menu;\n\n HEIGHT = 10;\n RIGHT_WIDTH = 70;\n\n result(): {\n appId: string;\n adminToken: string;\n approach: 'ephemeral' | 'import' | 'create';\n } {\n throw new Error('Method not implemented.');\n }\n\n rightView(): string {\n let inner = '';\n\n // Use hoveredLeftMenuItem to determine what to show\n if (this.focus.getFocused() === 'appList') {\n inner = this.appList.render();\n }\n\n if (this.focus.getFocused() === 'pickOrg') {\n inner = this.orgList.render();\n }\n\n if (this.focus.getFocused() === 'newApp') {\n return boxen(this.appNameInput.render('idle'), {\n height: this.HEIGHT,\n width: this.RIGHT_WIDTH,\n borderStyle: 'none',\n padding: {\n left: 2,\n top: 1,\n },\n textAlignment: 'left',\n });\n }\n\n return boxen(inner, {\n height: this.HEIGHT,\n width: this.RIGHT_WIDTH,\n borderStyle: 'none',\n });\n }\n\n render(status: 'idle' | 'submitted' | 'aborted'): string {\n if (status === 'submitted') {\n return boxen(' Selected App: ' + this.selectedAppName, {\n width: 50,\n dimBorder: true,\n textAlignment: 'center',\n });\n }\n\n const rightSide = this.rightView();\n\n const curFocus = this.focus.getFocused();\n let left =\n curFocus === 'appList'\n ? 'Select an app '\n : curFocus === 'pickOrg'\n ? 'Select an org '\n : curFocus === 'newApp'\n ? 'Create app '\n : '';\n\n if (this.selectedOrg?.title) {\n left += `(${this.selectedOrg.title}) `;\n }\n\n const keybindings: string[] = [];\n\n if (curFocus === 'newApp') {\n keybindings.push('<enter>: create app');\n keybindings.push('<esc>: back');\n if (this.props.allowEphemeral) {\n keybindings.push('<tab>: toggle temporary app');\n }\n }\n\n if (curFocus === 'appList') {\n keybindings.push('<tab>: change org');\n keybindings.push('<enter>: select app');\n if (this.appList.isSearching()) {\n keybindings.push('<esc>: cancel search');\n } else {\n keybindings.push('/: search');\n }\n }\n\n if (curFocus === 'pickOrg') {\n keybindings.push('<tab>/<esc>: back');\n keybindings.push('<enter>: select org');\n if (this.orgList.isSearching()) {\n keybindings.push('<esc>: cancel search');\n } else {\n keybindings.push('/: search');\n }\n }\n\n return (\n boxen(rightSide, {\n title: left,\n dimBorder: true,\n }) +\n '\\n' +\n chalk.dim(' ' + keybindings.join(' '))\n );\n }\n\n createAppList = (apps: App[]): MenuItem[] => {\n const items: MenuItem[] = [];\n\n if (this.props.allowCreate) {\n items.push({\n label: chalk.italic('+ New App'),\n onSelect: () => {\n this.focus.setFocus('newApp');\n },\n });\n }\n\n apps\n .sort(\n (a, b) =>\n new Date(b.created_at).getTime() - new Date(a.created_at).getTime(),\n )\n .forEach((app) => {\n items.push({\n label: app.title,\n onSelect: () => {\n this.selectedAppName = app.title;\n this.terminal?.resolve({\n status: 'submitted',\n data: {\n appId: app.id,\n approach: 'import',\n adminToken: app.admin_token,\n },\n });\n },\n });\n });\n\n return items;\n };\n\n constructor(props: AppSelectorProps) {\n super(props.modifyOutput);\n this.props = props;\n this.api = props.api;\n this.dashResponse = this.api.getDash();\n this.focus = new Focus(this).root();\n\n this.appList = new Menu({\n enableSearch: true,\n width: this.RIGHT_WIDTH,\n focus: this.focus.child('appList').onKey((_key, keyInfo) => {\n if (keyInfo.name === 'tab') {\n this.focus.setFocus('pickOrg');\n }\n }),\n items: this.createAppList(this.dashResponse.apps),\n emptyState: ' No Apps ',\n });\n\n this.orgList = new Menu({\n enableSearch: true,\n width: this.RIGHT_WIDTH,\n focus: this.focus.child('pickOrg').onKey((_, keyInfo) => {\n if (keyInfo.name === 'escape' || keyInfo.name === 'tab') {\n this.focus.setFocus('appList');\n }\n }),\n items: this.dashResponse.orgs.map((org) => ({\n label: org.title,\n onSelect: () => {\n this.selectedOrg = org;\n this.api.getAppsForOrg(org.id).then((apps) => {\n this.appList.setItemList(this.createAppList(apps.apps));\n this.focus.setFocus('appList');\n this.requestLayout();\n });\n },\n })),\n });\n\n this.orgList.addItem({\n label: 'Personal',\n onSelect: () => {\n this.selectedOrg = null;\n this.appList.setItemList(this.createAppList(this.dashResponse.apps));\n this.focus.setFocus('appList');\n this.requestLayout();\n },\n });\n\n this.focus.setFocus('appList');\n\n const defaultAppName = 'Awesome Todos';\n this.appNameInput = new TextInput({\n prompt: 'Enter New App Name',\n placeholder: defaultAppName,\n defaultValue: defaultAppName,\n headless: true,\n });\n\n this.focus.child('newApp').onKey((key, keyInfo) => {\n if (keyInfo.name === 'escape' || keyInfo.name == 'left') {\n this.focus.setFocus('appList');\n }\n if (keyInfo.name === 'return') {\n const name = this.appNameInput.value || defaultAppName;\n if (this.creatingEphemeral) {\n this.props.api.createEphemeralApp(name).then((pair) => {\n this.selectedAppName = name;\n this.terminal?.resolve({\n status: 'submitted',\n data: {\n ...pair,\n approach: 'ephemeral',\n },\n });\n });\n } else {\n this.props.api\n .createApp(name, this.selectedOrg?.id)\n .then((pair) => {\n this.selectedAppName = name;\n this.terminal?.resolve({\n status: 'submitted',\n data: {\n ...pair,\n approach: 'create',\n },\n });\n });\n }\n } else if (keyInfo.name === 'tab' && this.props.allowEphemeral) {\n this.creatingEphemeral = !this.creatingEphemeral;\n this.appNameInput.setPrompt(\n this.creatingEphemeral\n ? `Enter New ${chalk.bold('Temporary')} App Name`\n : 'Enter New App Name',\n );\n } else {\n this.appNameInput.input(key, keyInfo);\n }\n });\n\n this.on('attach', (terminal) => {\n this.terminal?.setAllowInteraction(false);\n terminal.toggleCursor('hide');\n });\n this.on('detach', (terminal) => {\n terminal.toggleCursor('show');\n });\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "instant-cli",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.22.
|
|
4
|
+
"version": "0.22.100-experimental.track-import-front.20838024522.1",
|
|
5
5
|
"description": "Instant's CLI",
|
|
6
6
|
"homepage": "https://github.com/instantdb/instant/tree/main/client/packages/cli",
|
|
7
7
|
"repository": {
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"strip-ansi": "^7.1.2",
|
|
42
42
|
"terminal-link": "^3.0.0",
|
|
43
43
|
"unconfig": "^0.5.5",
|
|
44
|
-
"@instantdb/core": "0.22.
|
|
45
|
-
"@instantdb/platform": "0.22.
|
|
46
|
-
"@instantdb/version": "0.22.
|
|
44
|
+
"@instantdb/core": "0.22.100-experimental.track-import-front.20838024522.1",
|
|
45
|
+
"@instantdb/platform": "0.22.100-experimental.track-import-front.20838024522.1",
|
|
46
|
+
"@instantdb/version": "0.22.100-experimental.track-import-front.20838024522.1"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@babel/core": "^7.17.9",
|
package/src/index.js
CHANGED
|
@@ -1019,6 +1019,10 @@ async function promptImportAppOrCreateApp() {
|
|
|
1019
1019
|
}),
|
|
1020
1020
|
);
|
|
1021
1021
|
|
|
1022
|
+
if (result.approach === 'import') {
|
|
1023
|
+
trackAppImport(result.appId);
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1022
1026
|
return {
|
|
1023
1027
|
ok: true,
|
|
1024
1028
|
appId: result.appId,
|
|
@@ -1049,10 +1053,26 @@ async function createEphemeralApp(title) {
|
|
|
1049
1053
|
return { appId: app.id, adminToken: app.adminToken };
|
|
1050
1054
|
}
|
|
1051
1055
|
|
|
1056
|
+
/**
|
|
1057
|
+
* Fire-and-forget tracking for when a user imports/links an existing app.
|
|
1058
|
+
* Captures user info if authenticated.
|
|
1059
|
+
*/
|
|
1060
|
+
function trackAppImport(appId) {
|
|
1061
|
+
fetchJson({
|
|
1062
|
+
method: 'POST',
|
|
1063
|
+
path: `/dash/apps/${appId}/track-import`,
|
|
1064
|
+
debugName: 'Track import',
|
|
1065
|
+
errorMessage: '',
|
|
1066
|
+
noLogError: true,
|
|
1067
|
+
command: 'init',
|
|
1068
|
+
}).catch(() => {});
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1052
1071
|
async function detectAppWithErrorLogging(opts) {
|
|
1053
1072
|
const fromOpts = await detectAppIdFromOptsWithErrorLogging(opts);
|
|
1054
1073
|
if (!fromOpts.ok) return fromOpts;
|
|
1055
1074
|
if (fromOpts.appId) {
|
|
1075
|
+
trackAppImport(fromOpts.appId);
|
|
1056
1076
|
return { ok: true, appId: fromOpts.appId, source: 'opts' };
|
|
1057
1077
|
}
|
|
1058
1078
|
const fromEnv = detectAppIdFromEnvWithErrorLogging();
|
package/src/ui/index.ts
CHANGED
|
@@ -1081,10 +1081,11 @@ ${inputDisplay}`;
|
|
|
1081
1081
|
|
|
1082
1082
|
this.focus.setFocus('appList');
|
|
1083
1083
|
|
|
1084
|
+
const defaultAppName = 'Awesome Todos';
|
|
1084
1085
|
this.appNameInput = new TextInput({
|
|
1085
1086
|
prompt: 'Enter New App Name',
|
|
1086
|
-
placeholder:
|
|
1087
|
-
defaultValue:
|
|
1087
|
+
placeholder: defaultAppName,
|
|
1088
|
+
defaultValue: defaultAppName,
|
|
1088
1089
|
headless: true,
|
|
1089
1090
|
});
|
|
1090
1091
|
|
|
@@ -1093,7 +1094,7 @@ ${inputDisplay}`;
|
|
|
1093
1094
|
this.focus.setFocus('appList');
|
|
1094
1095
|
}
|
|
1095
1096
|
if (keyInfo.name === 'return') {
|
|
1096
|
-
const name = this.appNameInput.value ||
|
|
1097
|
+
const name = this.appNameInput.value || defaultAppName;
|
|
1097
1098
|
if (this.creatingEphemeral) {
|
|
1098
1099
|
this.props.api.createEphemeralApp(name).then((pair) => {
|
|
1099
1100
|
this.selectedAppName = name;
|