@hailer/app-sdk 2.6.0 → 2.6.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.
@@ -80,8 +80,10 @@ if (customEnvPath && (0, import_fs.existsSync)((0, import_path.resolve)(customEn
80
80
  (0, import_dotenv.config)({ path: (0, import_path.resolve)(customEnvPath) });
81
81
  }
82
82
  (0, import_dotenv.config)({ path: (0, import_path.join)((0, import_os.homedir)(), ".env") });
83
- var userApiKey = getArgValue("--user-api-key") || process.env.USER_API_KEY || process.env.HAILER_USER_API_KEY;
84
- var email = getArgValue("--email") || process.env.EMAIL;
83
+ var explicitEmail = getArgValue("--email");
84
+ var explicitApiKey = getArgValue("--user-api-key");
85
+ var userApiKey = explicitEmail ? void 0 : explicitApiKey || process.env.USER_API_KEY || process.env.HAILER_USER_API_KEY;
86
+ var email = explicitEmail || (explicitApiKey ? void 0 : process.env.EMAIL);
85
87
  if (!userApiKey && !email && !process.env.LOCAL) {
86
88
  console.log("Please provide authentication: --email, --user-api-key, or EMAIL env var.");
87
89
  console.log("");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../tools/publish.ts", "../../tools/minimal-password-prompt.ts"],
4
- "sourcesContent": ["import { Client } from '@hailer/cli';\nimport { existsSync, readFileSync, writeFileSync } from 'fs';\nimport { prompt } from './minimal-password-prompt';\nimport { inspect } from 'util';\nimport { createInterface } from 'readline';\nimport { config as loadEnv } from 'dotenv';\nimport { homedir } from 'os';\nimport { join, resolve } from 'path';\n\n\n/** Get the value following a named flag, e.g. getArgValue('--user-api-key') */\nfunction getArgValue(flag: string): string | undefined {\n const index = process.argv.indexOf(flag);\n if (index === -1 || index + 1 >= process.argv.length) {\n return undefined;\n }\n return process.argv[index + 1];\n}\n\nfunction hasFlag(flag: string): boolean {\n return process.argv.includes(flag);\n}\n\n\n// Load env files dotenv never overwrites variables already set in the real environment and loading an earlier file means its values persist\nconst customEnvPath = getArgValue('--env-file');\nif (customEnvPath && existsSync(resolve(customEnvPath))) {\n loadEnv({ path: resolve(customEnvPath) });\n}\nloadEnv({ path: join(homedir(), '.env') });\n\nconst userApiKey = getArgValue('--user-api-key') || process.env.USER_API_KEY || process.env.HAILER_USER_API_KEY;\n\nlet email = getArgValue('--email') || process.env.EMAIL;\n\nif (!userApiKey && !email && !process.env.LOCAL) {\n console.log('Please provide authentication: --email, --user-api-key, or EMAIL env var.');\n console.log('');\n console.log('Usage:');\n console.log(' npm run publish-production -- --email user@mail.com (will prompt for password)');\n console.log(' npm run publish-production -- --user-api-key <key>');\n console.log(' EMAIL=user@mail.com npm run publish-production (going to be deprecated, use --email instead)');\n console.log(' USER_API_KEY=<key> npm run publish-production (going to be deprecated, use --user-api-key instead)');\n console.log('');\n console.log('Create and publish new app:');\n console.log(' npm run publish-production -- --create --app-name \"My App\" --workspace <id> --user-api-key <key> --yes');\n console.log('');\n console.log('Options:');\n console.log(' --email <email> User email for authentication');\n console.log(' --user-api-key <key> API key for authentication');\n console.log(' --create Create a new app before publishing');\n console.log(' --app-name <name> App name (with --create)');\n console.log(' --workspace <id> Workspace ID (with --create)');\n console.log(' --market Also publish to Hailer marketplace');\n console.log(' --yes Skip confirmation prompt (going to be deprecated, use --force instead)');\n console.log(' --force Skip confirmation prompt');\n console.log(' --host <host> Specify the host URL');\n console.log(' --env-file <path> Load env vars from this file, in addition to ~/.env');\n process.exit(10);\n}\n\n(async () => {\n\n let password: string | undefined;\n\n const market = hasFlag('--market') || process.env.MARKET === 'true';\n\n const appPackageFile = process.argv[2];\n\n /** Detect mode from any position in argv */\n const mode = ['--development', '--staging', '--production', '--local']\n .find(m => process.argv.includes(m));\n\n let host = getArgValue('--host') || process.env.HOST || 'https://localhost:9443';\n\n switch (mode) {\n case '--development':\n host = getArgValue('--host') || process.env.HOST || 'https://testapi.hailer.biz';\n break;\n case '--staging':\n host = getArgValue('--host') || process.env.HOST || 'https://api.hailer.biz';\n break;\n case '--production':\n host = getArgValue('--host') || process.env.HOST || 'https://api.hailer.com';\n break;\n }\n\n if (process.env.LOCAL || mode === '--local') {\n host = getArgValue('--host') || process.env.HOST || 'https://api.hailer.local.gd';\n if (!userApiKey) {\n console.log('Overriding credentials with local settings!');\n email = 'el@hailero.es';\n password = 'el@hailero.es';\n }\n }\n\n const isLocal = !!(process.env.LOCAL || mode === '--local');\n\n if (isLocal) {\n process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';\n }\n\n // Authenticate\n let cli: Client;\n\n if (userApiKey) {\n cli = await Client.create({ host, userApiKey, rejectUnauthorized: !isLocal }).catch(\n (error) => {\n console.log('Hailer Cli Error (API key auth):', error);\n process.exit(8);\n }\n );\n } else {\n if (!password) {\n password = await prompt(`enter password for ${ email }: `);\n }\n\n cli = await Client.create({ host, username: email, password, rejectUnauthorized: !isLocal }).catch(\n (error) => {\n if (error.msg === 'Invalid Login Data') {\n console.log('Invalid username or password when logging into Hailer.');\n } else {\n console.log('Hailer Cli Error:', error);\n }\n\n process.exit(8);\n }\n );\n }\n\n // Validate .tgz file\n if (!appPackageFile?.endsWith('.tgz')) {\n console.log('Failed getting .tgz file, found:', appPackageFile);\n process.exit(7);\n }\n\n const content = readFileSync(appPackageFile);\n let appId: string;\n\n // --create: Create a new app, then publish it\n if (hasFlag('--create')) {\n let appName = getArgValue('--app-name');\n let workspaceId = getArgValue('--workspace');\n\n if (!appName) {\n appName = await prompt('App name: ', { hidden: false });\n }\n\n if (!workspaceId) {\n workspaceId = await prompt('Workspace ID: ', { hidden: false });\n }\n\n if (!appName) {\n console.log('Error: --create requires --app-name <name>');\n process.exit(11);\n }\n if (!workspaceId) {\n console.log('Error: --create requires --workspace <id>');\n process.exit(12);\n }\n\n console.log('Creating new app...');\n console.log(' Name:', appName);\n console.log(' Workspace:', workspaceId);\n console.log(' Environment:', host);\n console.log();\n\n const appDoc = await cli.request('v3.app.create', [{\n name: appName,\n cid: workspaceId,\n }]).catch((error: any) => {\n console.log('Failed to create app:', error);\n process.exit(13);\n });\n\n appId = appDoc._id;\n console.log('App created with id:', appId);\n console.log();\n\n } else {\n // Normal publish: read appId from manifest\n const manifest = JSON.parse(readFileSync('./dist/manifest.json').toString());\n\n // Market code\n if (market) {\n if (!manifest.version) {\n manifest.version = '';\n manifest.versionDescription = '';\n\n const updatedManifestContent = JSON.stringify(manifest, null, 2);\n writeFileSync('./public/manifest.json', updatedManifestContent, 'utf-8');\n\n console.log('');\n console.log('Please set version in format (x.y.z) & versionDescription in file public/manifest.json! You have added MARKET=true or --market in your publish string.');\n console.log('');\n process.exit(10);\n }\n }\n\n const info = await cli.request('v2.core.init', [['network', 'networks', 'apps']]).catch((error: any) => {\n console.log('Failed to authenticate. Check that your API key is valid and has access to this app.');\n console.log('Server response:', inspect(error, { depth: 10 }));\n process.exit(8);\n });\n\n const getAppById = (manifestAppId: string): { _id: string, name: string, cid: string } | null => {\n for (const appMap of Object.values(info.apps)) {\n for (const [id, app] of Object.entries(appMap as any)) {\n if (id === manifestAppId) {\n return app as any;\n }\n }\n }\n return null;\n };\n\n const app = getAppById(manifest.appId);\n\n if (!app) {\n const authInfo = userApiKey ? 'the provided API key' : email;\n console.log('The app was not found using:', authInfo);\n process.exit(2);\n }\n\n const personalApp = !app.cid;\n\n console.log('Publishing App');\n console.log(' Id:', manifest.appId);\n console.log(' Name:', app.name);\n if (personalApp) {\n console.log(' Workspace: any (personal app)');\n } else {\n console.log(' Workspace:', info.networks[app.cid]?.name, `(${ app.cid })`);\n }\n console.log(' Environment:', host);\n console.log();\n\n // Market code\n if (market) {\n console.log(' Note: Also publishing app to Hailer market');\n }\n\n /** Default to publish (yes) */\n const promptOverwriteQuestion = async () => {\n if (hasFlag('--yes') || hasFlag('--force')) {\n return true;\n }\n\n return new Promise<boolean>(resolve => {\n const rl = createInterface(process.stdin, process.stdout);\n\n rl.setPrompt('Overwrite the app? (Y/n): ');\n rl.prompt();\n rl.on('line', (line) => {\n if (line.trim().toLocaleLowerCase().startsWith('n')) {\n resolve(false);\n } else {\n resolve(true);\n }\n rl.close();\n });\n });\n };\n\n const shouldOverwrite = await promptOverwriteQuestion();\n\n if (!shouldOverwrite) {\n console.log('Aborted publishing app.');\n process.exit(0);\n }\n\n appId = manifest.appId;\n }\n\n // Upload\n const formData = new FormData();\n formData.append('file', new Blob([content]), appPackageFile);\n formData.append('appId', appId);\n // Market code\n formData.append('publishMarket', market.toString());\n\n const headers: Record<string, string> = {};\n\n if (cli.sessionKey) {\n headers.hlrkey = cli.sessionKey;\n } else if (cli.userApiKey) {\n headers.hlrkey = cli.userApiKey;\n }\n\n const resp = await fetch(`${host }/app/publish`, {\n method: 'POST',\n headers,\n body: formData,\n }).catch((error) => {\n console.log('Publish error uploading file:', error);\n process.exit(9);\n });\n\n if (!resp.ok) {\n console.log('Publish failed with status:', resp.status, resp.statusText);\n const body = await resp.text();\n console.log('Response:', body);\n process.exit(9);\n }\n\n const body = await resp.text();\n let response;\n let infoMarket = '';\n\n try {\n response = JSON.parse(body);\n } catch (error) {\n console.log('Failed to parse publish response:', error);\n console.log('Response body:', body);\n process.exit(6);\n }\n\n // Update manifest.json with appId (--create) and/or targetId (--market)\n const manifestPath = './public/manifest.json';\n if (existsSync(manifestPath)) {\n const publicManifest = JSON.parse(readFileSync(manifestPath).toString());\n let manifestUpdated = false;\n\n if (hasFlag('--create')) {\n publicManifest.appId = appId;\n manifestUpdated = true;\n console.log('Updated', manifestPath, 'with appId:', appId);\n }\n\n if (response.manifest?.targetId) {\n publicManifest.targetId = response.manifest.targetId;\n manifestUpdated = true;\n infoMarket = 'Note! Use targetId in public/manifest.json file when creating the product in market!';\n }\n\n if (manifestUpdated) {\n writeFileSync(manifestPath, JSON.stringify(publicManifest, null, 2), 'utf-8');\n }\n }\n\n console.log('App info:', inspect(response, { depth: 10, colors: true }));\n console.log();\n if (infoMarket) {\n console.log(infoMarket);\n }\n console.log('Published successfully!');\n\n cli.disconnect();\n})().catch((error) => {\n console.log('Publish failed:', inspect(error, { depth: 10 }));\n process.exit(1);\n});\n", "// Re-written to TypeScript to fix typing issue, see: https://www.npmjs.com/package/minimal-password-prompt/v/1.1.0\n\nconst stdin = process.stdin;\nconst stdout = process.stdout;\n\nconst captureStdin = (onData: (data: string) => void) => {\n stdin.setEncoding('utf-8');\n stdin.setRawMode(true);\n stdin.on('data', onData);\n stdin.resume();\n};\n\nconst releaseStdin = (onData: (data: string) => void) => {\n stdin.pause();\n stdin.removeListener('data', onData);\n stdin.setRawMode(false);\n stdout.write('\\n');\n};\n\nexport const prompt = (question: string, { hidden = true, ctrlcExits = true } = {}): Promise<string> => (\n new Promise((resolve, reject) => {\n let input = '';\n const onData = (data: string) => {\n switch (data) {\n case '\\u000A': // \\n\n case '\\u000D': // \\r\n case '\\u0004': // Ctrl+D\n releaseStdin(onData);\n resolve(input);\n break;\n case '\\u0003': // Ctrl+C\n releaseStdin(onData);\n if (ctrlcExits) { // exit or raise error\n process.exit();\n } else {\n reject(new Error('Ctrl+C'));\n }\n break;\n case '\\u0008': // Backspace\n case '\\u007F': // Delete\n input = input.slice(0, -1);\n if (!hidden) {\n stdout.write('\\b \\b');\n }\n break;\n default: // any other\n input += data;\n if (!hidden) {\n stdout.write(data);\n }\n };\n };\n captureStdin(onData);\n stdout.write(question);\n })\n);\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Client } from '@hailer/cli';\nimport { existsSync, readFileSync, writeFileSync } from 'fs';\nimport { prompt } from './minimal-password-prompt';\nimport { inspect } from 'util';\nimport { createInterface } from 'readline';\nimport { config as loadEnv } from 'dotenv';\nimport { homedir } from 'os';\nimport { join, resolve } from 'path';\n\n\n/** Get the value following a named flag, e.g. getArgValue('--user-api-key') */\nfunction getArgValue(flag: string): string | undefined {\n const index = process.argv.indexOf(flag);\n if (index === -1 || index + 1 >= process.argv.length) {\n return undefined;\n }\n return process.argv[index + 1];\n}\n\nfunction hasFlag(flag: string): boolean {\n return process.argv.includes(flag);\n}\n\n\n// Load env files dotenv never overwrites variables already set in the real environment and loading an earlier file means its values persist\nconst customEnvPath = getArgValue('--env-file');\nif (customEnvPath && existsSync(resolve(customEnvPath))) {\n loadEnv({ path: resolve(customEnvPath) });\n}\nloadEnv({ path: join(homedir(), '.env') });\n\nconst explicitEmail = getArgValue('--email');\nconst explicitApiKey = getArgValue('--user-api-key');\n\n// An explicit auth flag wins. Only fall back to env vars when neither flag is given\nconst userApiKey = explicitEmail\n ? undefined\n : (explicitApiKey || process.env.USER_API_KEY || process.env.HAILER_USER_API_KEY);\n\nlet email = explicitEmail || (explicitApiKey ? undefined : process.env.EMAIL);\n\nif (!userApiKey && !email && !process.env.LOCAL) {\n console.log('Please provide authentication: --email, --user-api-key, or EMAIL env var.');\n console.log('');\n console.log('Usage:');\n console.log(' npm run publish-production -- --email user@mail.com (will prompt for password)');\n console.log(' npm run publish-production -- --user-api-key <key>');\n console.log(' EMAIL=user@mail.com npm run publish-production (going to be deprecated, use --email instead)');\n console.log(' USER_API_KEY=<key> npm run publish-production (going to be deprecated, use --user-api-key instead)');\n console.log('');\n console.log('Create and publish new app:');\n console.log(' npm run publish-production -- --create --app-name \"My App\" --workspace <id> --user-api-key <key> --yes');\n console.log('');\n console.log('Options:');\n console.log(' --email <email> User email for authentication');\n console.log(' --user-api-key <key> API key for authentication');\n console.log(' --create Create a new app before publishing');\n console.log(' --app-name <name> App name (with --create)');\n console.log(' --workspace <id> Workspace ID (with --create)');\n console.log(' --market Also publish to Hailer marketplace');\n console.log(' --yes Skip confirmation prompt (going to be deprecated, use --force instead)');\n console.log(' --force Skip confirmation prompt');\n console.log(' --host <host> Specify the host URL');\n console.log(' --env-file <path> Load env vars from this file, in addition to ~/.env');\n process.exit(10);\n}\n\n(async () => {\n\n let password: string | undefined;\n\n const market = hasFlag('--market') || process.env.MARKET === 'true';\n\n const appPackageFile = process.argv[2];\n\n /** Detect mode from any position in argv */\n const mode = ['--development', '--staging', '--production', '--local']\n .find(m => process.argv.includes(m));\n\n let host = getArgValue('--host') || process.env.HOST || 'https://localhost:9443';\n\n switch (mode) {\n case '--development':\n host = getArgValue('--host') || process.env.HOST || 'https://testapi.hailer.biz';\n break;\n case '--staging':\n host = getArgValue('--host') || process.env.HOST || 'https://api.hailer.biz';\n break;\n case '--production':\n host = getArgValue('--host') || process.env.HOST || 'https://api.hailer.com';\n break;\n }\n\n if (process.env.LOCAL || mode === '--local') {\n host = getArgValue('--host') || process.env.HOST || 'https://api.hailer.local.gd';\n if (!userApiKey) {\n console.log('Overriding credentials with local settings!');\n email = 'el@hailero.es';\n password = 'el@hailero.es';\n }\n }\n\n const isLocal = !!(process.env.LOCAL || mode === '--local');\n\n if (isLocal) {\n process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';\n }\n\n // Authenticate\n let cli: Client;\n\n if (userApiKey) {\n cli = await Client.create({ host, userApiKey, rejectUnauthorized: !isLocal }).catch(\n (error) => {\n console.log('Hailer Cli Error (API key auth):', error);\n process.exit(8);\n }\n );\n } else {\n if (!password) {\n password = await prompt(`enter password for ${ email }: `);\n }\n\n cli = await Client.create({ host, username: email, password, rejectUnauthorized: !isLocal }).catch(\n (error) => {\n if (error.msg === 'Invalid Login Data') {\n console.log('Invalid username or password when logging into Hailer.');\n } else {\n console.log('Hailer Cli Error:', error);\n }\n\n process.exit(8);\n }\n );\n }\n\n // Validate .tgz file\n if (!appPackageFile?.endsWith('.tgz')) {\n console.log('Failed getting .tgz file, found:', appPackageFile);\n process.exit(7);\n }\n\n const content = readFileSync(appPackageFile);\n let appId: string;\n\n // --create: Create a new app, then publish it\n if (hasFlag('--create')) {\n let appName = getArgValue('--app-name');\n let workspaceId = getArgValue('--workspace');\n\n if (!appName) {\n appName = await prompt('App name: ', { hidden: false });\n }\n\n if (!workspaceId) {\n workspaceId = await prompt('Workspace ID: ', { hidden: false });\n }\n\n if (!appName) {\n console.log('Error: --create requires --app-name <name>');\n process.exit(11);\n }\n if (!workspaceId) {\n console.log('Error: --create requires --workspace <id>');\n process.exit(12);\n }\n\n console.log('Creating new app...');\n console.log(' Name:', appName);\n console.log(' Workspace:', workspaceId);\n console.log(' Environment:', host);\n console.log();\n\n const appDoc = await cli.request('v3.app.create', [{\n name: appName,\n cid: workspaceId,\n }]).catch((error: any) => {\n console.log('Failed to create app:', error);\n process.exit(13);\n });\n\n appId = appDoc._id;\n console.log('App created with id:', appId);\n console.log();\n\n } else {\n // Normal publish: read appId from manifest\n const manifest = JSON.parse(readFileSync('./dist/manifest.json').toString());\n\n // Market code\n if (market) {\n if (!manifest.version) {\n manifest.version = '';\n manifest.versionDescription = '';\n\n const updatedManifestContent = JSON.stringify(manifest, null, 2);\n writeFileSync('./public/manifest.json', updatedManifestContent, 'utf-8');\n\n console.log('');\n console.log('Please set version in format (x.y.z) & versionDescription in file public/manifest.json! You have added MARKET=true or --market in your publish string.');\n console.log('');\n process.exit(10);\n }\n }\n\n const info = await cli.request('v2.core.init', [['network', 'networks', 'apps']]).catch((error: any) => {\n console.log('Failed to authenticate. Check that your API key is valid and has access to this app.');\n console.log('Server response:', inspect(error, { depth: 10 }));\n process.exit(8);\n });\n\n const getAppById = (manifestAppId: string): { _id: string, name: string, cid: string } | null => {\n for (const appMap of Object.values(info.apps)) {\n for (const [id, app] of Object.entries(appMap as any)) {\n if (id === manifestAppId) {\n return app as any;\n }\n }\n }\n return null;\n };\n\n const app = getAppById(manifest.appId);\n\n if (!app) {\n const authInfo = userApiKey ? 'the provided API key' : email;\n console.log('The app was not found using:', authInfo);\n process.exit(2);\n }\n\n const personalApp = !app.cid;\n\n console.log('Publishing App');\n console.log(' Id:', manifest.appId);\n console.log(' Name:', app.name);\n if (personalApp) {\n console.log(' Workspace: any (personal app)');\n } else {\n console.log(' Workspace:', info.networks[app.cid]?.name, `(${ app.cid })`);\n }\n console.log(' Environment:', host);\n console.log();\n\n // Market code\n if (market) {\n console.log(' Note: Also publishing app to Hailer market');\n }\n\n /** Default to publish (yes) */\n const promptOverwriteQuestion = async () => {\n if (hasFlag('--yes') || hasFlag('--force')) {\n return true;\n }\n\n return new Promise<boolean>(resolve => {\n const rl = createInterface(process.stdin, process.stdout);\n\n rl.setPrompt('Overwrite the app? (Y/n): ');\n rl.prompt();\n rl.on('line', (line) => {\n if (line.trim().toLocaleLowerCase().startsWith('n')) {\n resolve(false);\n } else {\n resolve(true);\n }\n rl.close();\n });\n });\n };\n\n const shouldOverwrite = await promptOverwriteQuestion();\n\n if (!shouldOverwrite) {\n console.log('Aborted publishing app.');\n process.exit(0);\n }\n\n appId = manifest.appId;\n }\n\n // Upload\n const formData = new FormData();\n formData.append('file', new Blob([content]), appPackageFile);\n formData.append('appId', appId);\n // Market code\n formData.append('publishMarket', market.toString());\n\n const headers: Record<string, string> = {};\n\n if (cli.sessionKey) {\n headers.hlrkey = cli.sessionKey;\n } else if (cli.userApiKey) {\n headers.hlrkey = cli.userApiKey;\n }\n\n const resp = await fetch(`${host }/app/publish`, {\n method: 'POST',\n headers,\n body: formData,\n }).catch((error) => {\n console.log('Publish error uploading file:', error);\n process.exit(9);\n });\n\n if (!resp.ok) {\n console.log('Publish failed with status:', resp.status, resp.statusText);\n const body = await resp.text();\n console.log('Response:', body);\n process.exit(9);\n }\n\n const body = await resp.text();\n let response;\n let infoMarket = '';\n\n try {\n response = JSON.parse(body);\n } catch (error) {\n console.log('Failed to parse publish response:', error);\n console.log('Response body:', body);\n process.exit(6);\n }\n\n // Update manifest.json with appId (--create) and/or targetId (--market)\n const manifestPath = './public/manifest.json';\n if (existsSync(manifestPath)) {\n const publicManifest = JSON.parse(readFileSync(manifestPath).toString());\n let manifestUpdated = false;\n\n if (hasFlag('--create')) {\n publicManifest.appId = appId;\n manifestUpdated = true;\n console.log('Updated', manifestPath, 'with appId:', appId);\n }\n\n if (response.manifest?.targetId) {\n publicManifest.targetId = response.manifest.targetId;\n manifestUpdated = true;\n infoMarket = 'Note! Use targetId in public/manifest.json file when creating the product in market!';\n }\n\n if (manifestUpdated) {\n writeFileSync(manifestPath, JSON.stringify(publicManifest, null, 2), 'utf-8');\n }\n }\n\n console.log('App info:', inspect(response, { depth: 10, colors: true }));\n console.log();\n if (infoMarket) {\n console.log(infoMarket);\n }\n console.log('Published successfully!');\n\n cli.disconnect();\n})().catch((error) => {\n console.log('Publish failed:', inspect(error, { depth: 10 }));\n process.exit(1);\n});\n", "// Re-written to TypeScript to fix typing issue, see: https://www.npmjs.com/package/minimal-password-prompt/v/1.1.0\n\nconst stdin = process.stdin;\nconst stdout = process.stdout;\n\nconst captureStdin = (onData: (data: string) => void) => {\n stdin.setEncoding('utf-8');\n stdin.setRawMode(true);\n stdin.on('data', onData);\n stdin.resume();\n};\n\nconst releaseStdin = (onData: (data: string) => void) => {\n stdin.pause();\n stdin.removeListener('data', onData);\n stdin.setRawMode(false);\n stdout.write('\\n');\n};\n\nexport const prompt = (question: string, { hidden = true, ctrlcExits = true } = {}): Promise<string> => (\n new Promise((resolve, reject) => {\n let input = '';\n const onData = (data: string) => {\n switch (data) {\n case '\\u000A': // \\n\n case '\\u000D': // \\r\n case '\\u0004': // Ctrl+D\n releaseStdin(onData);\n resolve(input);\n break;\n case '\\u0003': // Ctrl+C\n releaseStdin(onData);\n if (ctrlcExits) { // exit or raise error\n process.exit();\n } else {\n reject(new Error('Ctrl+C'));\n }\n break;\n case '\\u0008': // Backspace\n case '\\u007F': // Delete\n input = input.slice(0, -1);\n if (!hidden) {\n stdout.write('\\b \\b');\n }\n break;\n default: // any other\n input += data;\n if (!hidden) {\n stdout.write(data);\n }\n };\n };\n captureStdin(onData);\n stdout.write(question);\n })\n);\n"],
5
+ "mappings": "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",
6
6
  "names": ["resolve", "loadEnv", "app", "resolve", "body"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hailer/app-sdk",
3
- "version": "2.6.0",
3
+ "version": "2.6.1",
4
4
  "description": "SDK for building Hailer Apps",
5
5
  "author": "",
6
6
  "license": "ISC",