@ethereal-nexus/cli 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -150,8 +150,10 @@ import path2 from "path";
150
150
  var config = await getConfig();
151
151
  var nexusApi = wretch(config?.url);
152
152
  if (config?.authType === "keycloak" && config?.token) {
153
+ const isHttps = config?.url?.startsWith("https://");
154
+ const cookieName = isHttps ? "__Secure-authjs.session-token" : "authjs.session-token";
153
155
  nexusApi = nexusApi.headers({
154
- "Cookie": `authjs.session-token=${config.token}`
156
+ "Cookie": `${cookieName}=${config.token}; Secure; HttpOnly; SameSite=Strict`
155
157
  });
156
158
  }
157
159
  nexusApi = nexusApi.auth(`apikey ${config?.auth}`);
@@ -468,9 +470,11 @@ var authKeys = new Command3().name("authkeys").description("List and select API
468
470
  const baseUrl = config2.url;
469
471
  const apiKeysUrl = baseUrl.endsWith("/api/v1/cli/apikeys") ? baseUrl : `${baseUrl}/api/v1/cli/apikeys`;
470
472
  try {
473
+ const isHttps = apiKeysUrl.startsWith("https://");
474
+ const cookieName = isHttps ? "__Secure-authjs.session-token" : "authjs.session-token";
471
475
  const response = await fetch(apiKeysUrl, {
472
476
  headers: {
473
- "Cookie": `authjs.session-token=${config2.token}`
477
+ "Cookie": `${cookieName}=${config2.token}; Secure; HttpOnly; SameSite=Strict`
474
478
  }
475
479
  });
476
480
  if (!response.ok) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../bin/index.ts","../src/commands/publish.ts","../src/utils/logger.ts","../src/utils/handle-error.ts","../src/utils/get-config.ts","../src/utils/get-tar-exclude-list.ts","../src/utils/create-tar.ts","../src/lib/services/nexus.ts","../src/commands/init.ts","../src/utils/get-package-info.ts","../src/utils/dirname.ts","../src/commands/auth.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from \"commander\"\nimport { publish } from '../src/commands/publish';\nimport { init } from '../src/commands/init';\nimport { getPackageInfo } from \"../src/utils/get-package-info\"\nimport { authLogin, authLogout, authKeys } from '../src/commands/auth';\n\nprocess.on(\"SIGINT\", () => process.exit(0))\nprocess.on(\"SIGTERM\", () => process.exit(0))\n\nfunction main() {\n const packageInfo = getPackageInfo();\n\n const program = new Command()\n .name(\"ethereal\")\n .description(\"Add components and dependencies to your Nexus projects.\")\n .version(\n packageInfo.version || \"1.0.0\",\n \"-v, --version\",\n \"display the version number\"\n )\n\n program\n .addCommand(init)\n .addCommand(authLogin)\n .addCommand(authLogout)\n .addCommand(authKeys)\n .addCommand(publish)\n .parse()\n}\n\nmain()\n","import path from 'path';\nimport chalk from 'chalk';\nimport { existsSync, readdirSync } from 'node:fs';\nimport { Command } from 'commander';\nimport { z } from 'zod';\nimport { handleError } from '../utils/handle-error';\nimport { logger } from '../utils/logger';\nimport { getConfig } from '../utils/get-config';\nimport { getTarExcludeList, ignoreCommonFiles } from '../utils/get-tar-exclude-list';\nimport { createTar } from '../utils/create-tar';\nimport ora from 'ora';\nimport { nexus } from '../lib/services/nexus';\n\nconst publishOptionsSchema = z.object({\n components: z.array(z.string()).optional(),\n yes: z.boolean(),\n overwrite: z.boolean(),\n all: z.boolean(),\n path: z.string().optional()\n});\n\nexport const publish = new Command()\n .name('publish')\n .description('publish a component to your project')\n .argument('[components...]', 'the components to add')\n .option('-y, --yes', 'skip confirmation prompt.', false)\n .option('-o, --overwrite', 'overwrite existing versions.', false)\n .option('-a, --all', 'add all available components', false)\n .option('-p, --path <path>', 'the path to .ethereal folder where the component are.')\n .action(async (components, opts) => {\n try {\n const options = publishOptionsSchema.parse({\n components,\n ...opts\n });\n if (!options.all && !options.components?.length) {\n logger.warn(\n `Either [components...] or --all need to be passed.`\n );\n process.exit(1);\n }\n\n const config = await getConfig();\n if (!config) {\n logger.warn(\n `Configuration is missing. Please run ${chalk.green(\n `'init'`\n )} to create an .etherealrc file.`\n );\n process.exit(1);\n }\n\n const distPath = config?.path;\n if (!distPath || !existsSync(distPath)) {\n logger.error(`The path ${distPath} does not exist. Please try again.`);\n process.exit(1);\n }\n\n const selectedComponents = options.all\n ? readdirSync(distPath).filter(folder => !ignoreCommonFiles.includes(folder))\n : options.components!;\n\n const componentPaths = selectedComponents.map(folder => path.resolve(distPath, folder));\n const excludeList = getTarExcludeList();\n const spinner = ora({\n discardStdin: false,\n text: `${chalk.green('Taring files...\\n')}`\n }).start();\n for (const folder of componentPaths) {\n spinner.text = `Taring ${folder}...\\n`;\n createTar(folder, excludeList);\n spinner.stopAndPersist({\n text: folder,\n symbol: chalk.green('✔')\n });\n }\n\n spinner.start(`Publishing...\\n`);\n for (const folder of componentPaths) {\n spinner.text = `Publishing ${folder}...\\n`;\n const tar = `${folder}/ethereal_nexus.tar.gz`;\n try {\n const result = await nexus.publish(tar);\n spinner.stopAndPersist({\n text: folder,\n symbol: chalk.green('✔')\n });\n\n if(result === 409) {\n logger.warn('Some assets were already present.');\n }\n } catch (e) {\n logger.error(`Failed to publish ${tar}.`, e);\n process.exit(1);\n }\n }\n spinner.stop();\n\n logger.info(\"\")\n spinner.succeed(`Done.`);\n logger.info(\n `${chalk.green(\n \"Success!\"\n )} You may now start using your components.`\n )\n } catch (error) {\n handleError(error);\n }\n });\n","import chalk from \"chalk\"\n\nexport const logger = {\n error(...args: unknown[]) {\n console.log(chalk.red(...args))\n },\n warn(...args: unknown[]) {\n console.log(chalk.yellow(...args))\n },\n info(...args: unknown[]) {\n console.log(chalk.cyan(...args))\n },\n success(...args: unknown[]) {\n console.log(chalk.green(...args))\n },\n break() {\n console.log(\"\")\n },\n}","import { logger } from './logger';\n\nexport function handleError(error: unknown) {\n if (typeof error === \"string\") {\n logger.error(error)\n process.exit(1)\n }\n\n if (error instanceof Error) {\n logger.error(error.message)\n process.exit(1)\n }\n\n logger.error(\"Something went wrong. Please try again.\")\n process.exit(1)\n}","import path from \"path\"\nimport { cosmiconfig } from \"cosmiconfig\"\nimport { z } from \"zod\"\nimport { promises as fs } from 'fs'\n\nexport const DEFAULT_PATH = \"./dist/.ethereal\"\n\nconst explorer = cosmiconfig(\"ethereal\");\n\nexport const configSchema = z\n .object({\n $schema: z.string().optional(),\n url: z.string(),\n auth: z.string().optional(),\n token: z.string().optional(),\n path: z.string().optional(),\n authType: z.enum(['keycloak']).optional(),\n })\n .strict()\n\nexport type Config = z.infer<typeof configSchema>\n\nexport async function getRawConfig(cwd: string): Promise<Config | null> {\n try {\n const configResult = await explorer.search(cwd)\n if (!configResult) {\n return null\n }\n\n return configSchema.parse(configResult.config)\n } catch (error) {\n console.error(error.message)\n throw new Error(`Invalid configuration found in ${cwd}/components.json.`)\n }\n}\n\nexport async function resolveConfigPaths(cwd: string, config: Config) {\n const sourcePath = config.path ?? DEFAULT_PATH;\n return configSchema.parse({\n ...config,\n path: path.resolve(cwd, sourcePath),\n })\n}\n\nexport async function getConfig() {\n const cwd = path.resolve(process.cwd())\n const config = await getRawConfig(cwd)\n\n if (!config) {\n return null\n }\n\n return await resolveConfigPaths(cwd, config)\n}\n\nexport async function saveConfig(config: Config) {\n const cwd = path.resolve(process.cwd())\n const targetPath = path.resolve(cwd, \".etherealrc\")\n await fs.writeFile(targetPath, JSON.stringify(config, null, 2), \"utf8\")\n return config\n}\n","import fs from 'node:fs';\n\nexport const ignoreCommonFiles = [\n 'package.json',\n 'package-lock.json',\n 'yarn.lock',\n 'pnpm-lock.yaml',\n 'node_modules',\n '.DS_Store'\n]\n\nexport function getTarExcludeList(excludedPaths: string[] = []) {\n const gitignore = fs.existsSync('.gitignore')\n ? fs.readFileSync('.gitignore', 'utf-8')\n : '';\n const gitignoreFiles = gitignore\n ?.split('\\n')\n ?.filter((file) => !file?.includes('#') && file?.trim() !== '');\n\n return [\n ...gitignoreFiles,\n ...excludedPaths,\n ...ignoreCommonFiles,\n '*.tar',\n '*.tar.gz',\n '*.tar.xz',\n ]\n}\n","import { create } from 'tar'\nimport { minimatch } from 'minimatch'\n\nexport function createTar(folder: string, excludeList: string[]) {\n console.log(folder)\n return create(\n {\n gzip: true,\n file: `${folder}/ethereal_nexus.tar.gz`,\n filter: (path) => {\n for (const exclude of excludeList) {\n if (minimatch(path, exclude)) {\n return false\n }\n }\n return true\n },\n cwd: `${folder}/`,\n sync: true,\n },\n ['.']\n )\n}","import wretch from \"wretch\"\nimport { getConfig } from '../../utils/get-config';\nimport fs from 'node:fs';\nimport path from 'path';\n\nconst config = await getConfig()\nlet nexusApi = wretch(config?.url)\n\n// If authType is keycloak and token exists, set the cookie\nif (config?.authType === 'keycloak' && config?.token) {\n nexusApi = nexusApi.headers({\n 'Cookie': `authjs.session-token=${config.token}`\n })\n}\n\nnexusApi = nexusApi.auth(`apikey ${config?.auth}`)\n\n\nconst publish = async (filePath: string) => {\n\n const form = new FormData();\n const buffer = fs.readFileSync(filePath);\n const blob = new Blob([buffer])\n const fileName = path.basename(filePath);\n\n form.append('file', blob, fileName);\n\n\n return await nexusApi\n .url(\"/api/v1/publish\")\n .body(form)\n .post()\n .error(409, (error) => 409)\n .json()\n}\n\nexport const nexus = {\n publish\n}\n","import { existsSync, promises as fs } from 'fs';\nimport { Command } from 'commander';\nimport { logger } from '../utils/logger';\nimport chalk from 'chalk';\nimport { handleError } from '../utils/handle-error';\nimport ora from 'ora';\nimport inquirer from 'inquirer';\nimport { configSchema, DEFAULT_PATH } from '../utils/get-config';\nimport { z } from 'zod';\nimport { resolve } from 'node:path';\n\nconst initOptionsSchema = z.object({\n yes: z.boolean(),\n});\n\nexport const init = new Command()\n .name(\"init\")\n .description(\"initialize your project configuration\")\n .option('-y, --yes', 'skip confirmation prompt.', false)\n .action(async (opts) => {\n try {\n const options = initOptionsSchema.parse(opts)\n const cwd = resolve(process.cwd())\n\n // Ensure target directory exists.\n if (!existsSync(cwd)) {\n logger.error(`The path ${cwd} does not exist. Please try again.`)\n process.exit(1)\n }\n\n await promptForConfig(cwd, options.yes)\n\n logger.info(\"\")\n logger.info(\n `${chalk.green(\n \"Success!\"\n )} Project initialization completed. You may now create your components.`\n )\n } catch (error) {\n handleError(error)\n }\n })\n\nexport async function promptForConfig(\n cwd: string,\n skip: boolean,\n) {\n const highlight = (text: string) => chalk.cyan(text)\n\n const options = await inquirer\n .prompt([{\n type: 'input',\n name: 'url',\n message: `What is your ${highlight('Nexus')} instance url?`\n },\n {\n type: 'password',\n name: 'auth',\n message: `What is your ${highlight('Nexus')} instance Api Key?`\n },\n {\n type: 'input',\n name: 'path',\n default: DEFAULT_PATH,\n message: `What is the path for your library output?`\n }\n ])\n\n const config = configSchema.parse({\n url: options.url,\n auth: options.auth,\n path: options.path,\n })\n\n if (!skip) {\n const { proceed } = await inquirer\n .prompt({\n type: \"confirm\",\n name: \"proceed\",\n message: `Write configuration to ${highlight(\n \".etherealrc\"\n )}. Proceed?`,\n default: true,\n })\n\n if (!proceed) {\n process.exit(0)\n }\n }\n logger.info(\"\")\n const spinner = ora(`Writing .etherealrc...`).start()\n const targetPath = resolve(cwd, \".etherealrc\")\n await fs.writeFile(targetPath, JSON.stringify(config, null, 2), \"utf8\")\n spinner.succeed()\n}\n","import path from \"path\"\nimport fs from \"fs-extra\"\nimport { __dirname } from \"./dirname\"\nimport { type PackageJson } from \"type-fest\"\n\nexport function getPackageInfo() {\n const packageJsonPath = path.join(__dirname, \"../package.json\")\n\n return fs.readJSONSync(packageJsonPath) as PackageJson\n}","import { dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\nexport const __dirname = dirname(fileURLToPath(import.meta.url));","import { Command } from 'commander';\nimport { handleError } from '../utils/handle-error';\nimport { getConfig, saveConfig } from '../utils/get-config';\nimport open from 'open';\nimport { logger } from '../utils/logger';\nimport ora from 'ora';\nimport chalk from 'chalk';\nimport http from 'http';\nimport { URL } from 'url';\nimport inquirer from 'inquirer';\n\n/**\n * Command to authenticate with Keycloak.\n * This command implements a direct OAuth flow:\n * 1. Verifies that authType is set to 'keycloak' in .etherealrc\n * 2. Uses the authenticationUrl from .etherealrc as the Keycloak server URL\n * 3. Sets up a local server to receive the callback\n * 4. Opens the browser for the user to login\n * 5. Listens for a token parameter in the callback URL (localhost:${port}/?token=...)\n * 6. Saves the received token to the .etherealrc file\n */\nexport const authLogin = new Command()\n .name('auth')\n .description('Ethereal Nexus authentication command.')\n .argument('login', 'to login')\n .option('--port <port>', 'Port to use for the callback server', '3000')\n .action(async (_, options) => {\n try {\n const config = await getConfig();\n\n if (!config) {\n logger.error('No configuration found. Please run `ethereal init` first.');\n process.exit(1);\n }\n\n if (!config.url) {\n logger.error('No authentication URL found in configuration.');\n process.exit(1);\n }\n\n if (!config.authType || config.authType !== 'keycloak') {\n logger.error('Authentication type must be set to \"keycloak\" in .etherealrc');\n process.exit(1);\n }\n\n logger.info(`Starting Keycloak login flow...`);\n\n // Use the authentication URL directly without format verification\n const baseUrl = config.url;\n\n logger.info(`Using Keycloak server: ${baseUrl}`);\n\n // Create a local server to receive the callback\n const server = http.createServer();\n\n // Use the specified port or default to 3000\n const port = parseInt(options.port);\n\n try {\n server.listen(port);\n logger.info(`Using port ${port} for callback server`);\n } catch (error) {\n logger.error(`Failed to bind to port ${port}. It might be in use by another application.`);\n process.exit(1);\n }\n\n // Handle server errors\n server.on('error', (error: any) => {\n if (error.code === 'EADDRINUSE') {\n logger.error(`Port ${port} is already in use. Please specify a different port with --port option.`);\n process.exit(1);\n } else {\n logger.error(`Server error: ${error.message}`);\n process.exit(1);\n }\n });\n\n // Create a promise that will resolve when we get the tokens\n const tokenPromise = new Promise<{ access_token: string, refresh_token?: string }>((resolve, reject) => {\n // Set a timeout to reject the promise after 5 minutes\n const timeout = setTimeout(() => {\n server.close();\n reject(new Error('Authentication timed out'));\n }, 5 * 60 * 1000);\n\n server.on('request', async (req, res) => {\n try {\n // Parse the URL to get the token\n const url = new URL(req.url || '', `http://localhost:${port}`);\n const token = url.searchParams.get('token');\n\n if (token) {\n // Send a response to the browser\n res.writeHead(200, { 'Content-Type': 'text/plain' });\n res.end('Ethereal Nexus CLI Authentication successful! You can close this window.');\n\n // Resolve the promise with the token\n clearTimeout(timeout);\n resolve({ access_token: token });\n\n // Close the server\n server.close();\n }\n } catch (error) {\n reject(error);\n server.close();\n }\n });\n });\n\n // Ensure the auth URL is correctly constructed\n const authUrlBase = baseUrl.endsWith(`/api/v1/cli-auth?callback=http://localhost:${port}`)\n ? baseUrl \n : `${baseUrl}/api/v1/cli-auth?callback=http://localhost:${port}`;\n const authUrl = new URL(authUrlBase);\n\n // Open the browser with the login URL\n logger.info(`Opening browser to authenticate...`);\n logger.info(`If the browser doesn't open automatically, please visit:`);\n logger.info(chalk.cyan(authUrl.toString()));\n\n await open(authUrl.toString());\n\n logger.info(`Waiting for authentication...`);\n\n // Wait for the tokens\n try {\n const { access_token } = await tokenPromise;\n\n // Save the tokens to the config\n const spinner = ora('Saving authentication tokens...').start();\n await saveConfig({\n ...config,\n token: access_token\n });\n spinner.succeed();\n\n logger.info(chalk.green('Authentication successful!'));\n } catch (error) {\n logger.error('Authentication failed:', error);\n process.exit(1);\n }\n } catch (error) {\n handleError(error);\n }\n });\n\n/**\n * Command to logout.\n * This command simply removes the authentication token from the config file.\n */\nexport const authLogout = new Command()\n .name('auth logout')\n .description('Ethereal Nexus authentication command.')\n .argument('logout', 'to logout')\n .action(async () => {\n try {\n const config = await getConfig();\n\n if (!config) {\n logger.error('No configuration found. Please run `ethereal init` first.');\n process.exit(1);\n }\n\n if (!config.auth) {\n logger.info('You are not currently logged in.');\n process.exit(0);\n }\n\n // Remove the token from the config\n const spinner = ora('Removing local authentication token...').start();\n await saveConfig({\n ...config,\n token: undefined\n });\n spinner.succeed();\n\n logger.info(chalk.green('Logged out successfully!'));\n } catch (error) {\n handleError(error);\n }\n });\n\n/**\n * Command to list and select API keys.\n * This command:\n * 1. Checks if .etherealrc has an \"auth\" field\n * 2. Lists all API keys from a specific user (mocked data for now)\n * 3. Allows keyboard selection of a specific API key\n * 4. Saves the selected API key to .etherealrc\n */\nexport const authKeys = new Command()\n .name('authkeys')\n .description('List and select API keys.')\n .argument('keys', 'to list and select API keys')\n .action(async () => {\n try {\n const config = await getConfig();\n\n if (!config) {\n logger.error('No configuration found. Please run `ethereal init` first.');\n process.exit(1);\n }\n\n if (!config.token) {\n logger.error('You are not authenticated. Please run `ethereal auth login` first.');\n process.exit(1);\n }\n\n logger.info('Fetching API keys...');\n\n // Fetch API keys from the server\n let apiKeys = [];\n const baseUrl = config.url;\n const apiKeysUrl = baseUrl.endsWith('/api/v1/cli/apikeys')\n ? baseUrl\n : `${baseUrl}/api/v1/cli/apikeys`;\n\n try {\n const response = await fetch(apiKeysUrl, {\n headers: {\n 'Cookie': `authjs.session-token=${config.token}`\n }\n });\n\n if (!response.ok) {\n logger.error(`Failed to fetch API keys: ${response.statusText}`);\n process.exit(1);\n }\n\n apiKeys = await response.json();\n\n if (!apiKeys || apiKeys.length === 0) {\n logger.error('No API keys found for your account.');\n process.exit(1);\n }\n } catch (error) {\n logger.error('Failed to fetch API keys:', error);\n process.exit(1);\n }\n\n // Display API keys with inquirer\n const { selectedKey } = await inquirer.prompt([\n {\n type: 'list',\n name: 'selectedKey',\n message: 'Select an API key to use:',\n choices: apiKeys.map((key: { permissions: any; id:string, created_at: string | number | Date; alias: any; key: any; }) => {\n // Format the permissions for display\n const permissionsStr = Object.entries(key.permissions ?? {})\n .map(([resource, permission]) => `${resource}: ${permission}`)\n .join(', ');\n\n // Format the created_at date\n const createdDate = new Date(key.created_at).toLocaleDateString();\n\n return {\n name: `${key.alias || 'Unnamed Key'} - ${key.key} - Created: ${createdDate} - Permissions: ${permissionsStr}`,\n value: key.key\n };\n }),\n },\n ]);\n\n // Save the selected API key to .etherealrc\n const spinner = ora('Saving selected API key...').start();\n await saveConfig({\n ...config,\n auth: selectedKey\n });\n spinner.succeed();\n\n logger.info(chalk.green('API key saved successfully!'));\n logger.info(`Using API key: ${chalk.cyan(selectedKey)}`);\n } catch (error) {\n handleError(error);\n }\n });\n"],"mappings":"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","names":["Command","path","chalk","z","config","fs","path","fs","path","z","publish","config","chalk","path","existsSync","fs","Command","chalk","ora","z","Command","existsSync","chalk","config","ora","fs","path","fs","path","fs","Command","ora","chalk","inquirer","Command","config","resolve","Command","publish"]}
1
+ {"version":3,"sources":["../bin/index.ts","../src/commands/publish.ts","../src/utils/logger.ts","../src/utils/handle-error.ts","../src/utils/get-config.ts","../src/utils/get-tar-exclude-list.ts","../src/utils/create-tar.ts","../src/lib/services/nexus.ts","../src/commands/init.ts","../src/utils/get-package-info.ts","../src/utils/dirname.ts","../src/commands/auth.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from \"commander\"\nimport { publish } from '../src/commands/publish';\nimport { init } from '../src/commands/init';\nimport { getPackageInfo } from \"../src/utils/get-package-info\"\nimport { authLogin, authLogout, authKeys } from '../src/commands/auth';\n\nprocess.on(\"SIGINT\", () => process.exit(0))\nprocess.on(\"SIGTERM\", () => process.exit(0))\n\nfunction main() {\n const packageInfo = getPackageInfo();\n\n const program = new Command()\n .name(\"ethereal\")\n .description(\"Add components and dependencies to your Nexus projects.\")\n .version(\n packageInfo.version || \"1.0.0\",\n \"-v, --version\",\n \"display the version number\"\n )\n\n program\n .addCommand(init)\n .addCommand(authLogin)\n .addCommand(authLogout)\n .addCommand(authKeys)\n .addCommand(publish)\n .parse()\n}\n\nmain()\n","import path from 'path';\nimport chalk from 'chalk';\nimport { existsSync, readdirSync } from 'node:fs';\nimport { Command } from 'commander';\nimport { z } from 'zod';\nimport { handleError } from '../utils/handle-error';\nimport { logger } from '../utils/logger';\nimport { getConfig } from '../utils/get-config';\nimport { getTarExcludeList, ignoreCommonFiles } from '../utils/get-tar-exclude-list';\nimport { createTar } from '../utils/create-tar';\nimport ora from 'ora';\nimport { nexus } from '../lib/services/nexus';\n\nconst publishOptionsSchema = z.object({\n components: z.array(z.string()).optional(),\n yes: z.boolean(),\n overwrite: z.boolean(),\n all: z.boolean(),\n path: z.string().optional()\n});\n\nexport const publish = new Command()\n .name('publish')\n .description('publish a component to your project')\n .argument('[components...]', 'the components to add')\n .option('-y, --yes', 'skip confirmation prompt.', false)\n .option('-o, --overwrite', 'overwrite existing versions.', false)\n .option('-a, --all', 'add all available components', false)\n .option('-p, --path <path>', 'the path to .ethereal folder where the component are.')\n .action(async (components, opts) => {\n try {\n const options = publishOptionsSchema.parse({\n components,\n ...opts\n });\n if (!options.all && !options.components?.length) {\n logger.warn(\n `Either [components...] or --all need to be passed.`\n );\n process.exit(1);\n }\n\n const config = await getConfig();\n if (!config) {\n logger.warn(\n `Configuration is missing. Please run ${chalk.green(\n `'init'`\n )} to create an .etherealrc file.`\n );\n process.exit(1);\n }\n\n const distPath = config?.path;\n if (!distPath || !existsSync(distPath)) {\n logger.error(`The path ${distPath} does not exist. Please try again.`);\n process.exit(1);\n }\n\n const selectedComponents = options.all\n ? readdirSync(distPath).filter(folder => !ignoreCommonFiles.includes(folder))\n : options.components!;\n\n const componentPaths = selectedComponents.map(folder => path.resolve(distPath, folder));\n const excludeList = getTarExcludeList();\n const spinner = ora({\n discardStdin: false,\n text: `${chalk.green('Taring files...\\n')}`\n }).start();\n for (const folder of componentPaths) {\n spinner.text = `Taring ${folder}...\\n`;\n createTar(folder, excludeList);\n spinner.stopAndPersist({\n text: folder,\n symbol: chalk.green('✔')\n });\n }\n\n spinner.start(`Publishing...\\n`);\n for (const folder of componentPaths) {\n spinner.text = `Publishing ${folder}...\\n`;\n const tar = `${folder}/ethereal_nexus.tar.gz`;\n try {\n const result = await nexus.publish(tar);\n spinner.stopAndPersist({\n text: folder,\n symbol: chalk.green('✔')\n });\n\n if(result === 409) {\n logger.warn('Some assets were already present.');\n }\n } catch (e) {\n logger.error(`Failed to publish ${tar}.`, e);\n process.exit(1);\n }\n }\n spinner.stop();\n\n logger.info(\"\")\n spinner.succeed(`Done.`);\n logger.info(\n `${chalk.green(\n \"Success!\"\n )} You may now start using your components.`\n )\n } catch (error) {\n handleError(error);\n }\n });\n","import chalk from \"chalk\"\n\nexport const logger = {\n error(...args: unknown[]) {\n console.log(chalk.red(...args))\n },\n warn(...args: unknown[]) {\n console.log(chalk.yellow(...args))\n },\n info(...args: unknown[]) {\n console.log(chalk.cyan(...args))\n },\n success(...args: unknown[]) {\n console.log(chalk.green(...args))\n },\n break() {\n console.log(\"\")\n },\n}","import { logger } from './logger';\n\nexport function handleError(error: unknown) {\n if (typeof error === \"string\") {\n logger.error(error)\n process.exit(1)\n }\n\n if (error instanceof Error) {\n logger.error(error.message)\n process.exit(1)\n }\n\n logger.error(\"Something went wrong. Please try again.\")\n process.exit(1)\n}","import path from \"path\"\nimport { cosmiconfig } from \"cosmiconfig\"\nimport { z } from \"zod\"\nimport { promises as fs } from 'fs'\n\nexport const DEFAULT_PATH = \"./dist/.ethereal\"\n\nconst explorer = cosmiconfig(\"ethereal\");\n\nexport const configSchema = z\n .object({\n $schema: z.string().optional(),\n url: z.string(),\n auth: z.string().optional(),\n token: z.string().optional(),\n path: z.string().optional(),\n authType: z.enum(['keycloak']).optional(),\n })\n .strict()\n\nexport type Config = z.infer<typeof configSchema>\n\nexport async function getRawConfig(cwd: string): Promise<Config | null> {\n try {\n const configResult = await explorer.search(cwd)\n if (!configResult) {\n return null\n }\n\n return configSchema.parse(configResult.config)\n } catch (error) {\n console.error(error.message)\n throw new Error(`Invalid configuration found in ${cwd}/components.json.`)\n }\n}\n\nexport async function resolveConfigPaths(cwd: string, config: Config) {\n const sourcePath = config.path ?? DEFAULT_PATH;\n return configSchema.parse({\n ...config,\n path: path.resolve(cwd, sourcePath),\n })\n}\n\nexport async function getConfig() {\n const cwd = path.resolve(process.cwd())\n const config = await getRawConfig(cwd)\n\n if (!config) {\n return null\n }\n\n return await resolveConfigPaths(cwd, config)\n}\n\nexport async function saveConfig(config: Config) {\n const cwd = path.resolve(process.cwd())\n const targetPath = path.resolve(cwd, \".etherealrc\")\n await fs.writeFile(targetPath, JSON.stringify(config, null, 2), \"utf8\")\n return config\n}\n","import fs from 'node:fs';\n\nexport const ignoreCommonFiles = [\n 'package.json',\n 'package-lock.json',\n 'yarn.lock',\n 'pnpm-lock.yaml',\n 'node_modules',\n '.DS_Store'\n]\n\nexport function getTarExcludeList(excludedPaths: string[] = []) {\n const gitignore = fs.existsSync('.gitignore')\n ? fs.readFileSync('.gitignore', 'utf-8')\n : '';\n const gitignoreFiles = gitignore\n ?.split('\\n')\n ?.filter((file) => !file?.includes('#') && file?.trim() !== '');\n\n return [\n ...gitignoreFiles,\n ...excludedPaths,\n ...ignoreCommonFiles,\n '*.tar',\n '*.tar.gz',\n '*.tar.xz',\n ]\n}\n","import { create } from 'tar'\nimport { minimatch } from 'minimatch'\n\nexport function createTar(folder: string, excludeList: string[]) {\n console.log(folder)\n return create(\n {\n gzip: true,\n file: `${folder}/ethereal_nexus.tar.gz`,\n filter: (path) => {\n for (const exclude of excludeList) {\n if (minimatch(path, exclude)) {\n return false\n }\n }\n return true\n },\n cwd: `${folder}/`,\n sync: true,\n },\n ['.']\n )\n}","import wretch from \"wretch\"\nimport { getConfig } from '../../utils/get-config';\nimport fs from 'node:fs';\nimport path from 'path';\n\nconst config = await getConfig()\nlet nexusApi = wretch(config?.url)\n\n// If authType is keycloak and token exists, set the cookie\nif (config?.authType === 'keycloak' && config?.token) {\n // Determine if the URL is using HTTPS\n const isHttps = config?.url?.startsWith('https://');\n\n // Set the appropriate cookie name based on the protocol\n const cookieName = isHttps ? '__Secure-authjs.session-token' : 'authjs.session-token';\n\n nexusApi = nexusApi.headers({\n 'Cookie': `${cookieName}=${config.token}; Secure; HttpOnly; SameSite=Strict`\n })\n}\n\nnexusApi = nexusApi.auth(`apikey ${config?.auth}`)\n\n\nconst publish = async (filePath: string) => {\n\n const form = new FormData();\n const buffer = fs.readFileSync(filePath);\n const blob = new Blob([buffer])\n const fileName = path.basename(filePath);\n\n form.append('file', blob, fileName);\n\n\n return await nexusApi\n .url(\"/api/v1/publish\")\n .body(form)\n .post()\n .error(409, (error) => 409)\n .json()\n}\n\nexport const nexus = {\n publish\n}\n","import { existsSync, promises as fs } from 'fs';\nimport { Command } from 'commander';\nimport { logger } from '../utils/logger';\nimport chalk from 'chalk';\nimport { handleError } from '../utils/handle-error';\nimport ora from 'ora';\nimport inquirer from 'inquirer';\nimport { configSchema, DEFAULT_PATH } from '../utils/get-config';\nimport { z } from 'zod';\nimport { resolve } from 'node:path';\n\nconst initOptionsSchema = z.object({\n yes: z.boolean(),\n});\n\nexport const init = new Command()\n .name(\"init\")\n .description(\"initialize your project configuration\")\n .option('-y, --yes', 'skip confirmation prompt.', false)\n .action(async (opts) => {\n try {\n const options = initOptionsSchema.parse(opts)\n const cwd = resolve(process.cwd())\n\n // Ensure target directory exists.\n if (!existsSync(cwd)) {\n logger.error(`The path ${cwd} does not exist. Please try again.`)\n process.exit(1)\n }\n\n await promptForConfig(cwd, options.yes)\n\n logger.info(\"\")\n logger.info(\n `${chalk.green(\n \"Success!\"\n )} Project initialization completed. You may now create your components.`\n )\n } catch (error) {\n handleError(error)\n }\n })\n\nexport async function promptForConfig(\n cwd: string,\n skip: boolean,\n) {\n const highlight = (text: string) => chalk.cyan(text)\n\n const options = await inquirer\n .prompt([{\n type: 'input',\n name: 'url',\n message: `What is your ${highlight('Nexus')} instance url?`\n },\n {\n type: 'password',\n name: 'auth',\n message: `What is your ${highlight('Nexus')} instance Api Key?`\n },\n {\n type: 'input',\n name: 'path',\n default: DEFAULT_PATH,\n message: `What is the path for your library output?`\n }\n ])\n\n const config = configSchema.parse({\n url: options.url,\n auth: options.auth,\n path: options.path,\n })\n\n if (!skip) {\n const { proceed } = await inquirer\n .prompt({\n type: \"confirm\",\n name: \"proceed\",\n message: `Write configuration to ${highlight(\n \".etherealrc\"\n )}. Proceed?`,\n default: true,\n })\n\n if (!proceed) {\n process.exit(0)\n }\n }\n logger.info(\"\")\n const spinner = ora(`Writing .etherealrc...`).start()\n const targetPath = resolve(cwd, \".etherealrc\")\n await fs.writeFile(targetPath, JSON.stringify(config, null, 2), \"utf8\")\n spinner.succeed()\n}\n","import path from \"path\"\nimport fs from \"fs-extra\"\nimport { __dirname } from \"./dirname\"\nimport { type PackageJson } from \"type-fest\"\n\nexport function getPackageInfo() {\n const packageJsonPath = path.join(__dirname, \"../package.json\")\n\n return fs.readJSONSync(packageJsonPath) as PackageJson\n}","import { dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\nexport const __dirname = dirname(fileURLToPath(import.meta.url));","import { Command } from 'commander';\nimport { handleError } from '../utils/handle-error';\nimport { getConfig, saveConfig } from '../utils/get-config';\nimport open from 'open';\nimport { logger } from '../utils/logger';\nimport ora from 'ora';\nimport chalk from 'chalk';\nimport http from 'http';\nimport { URL } from 'url';\nimport inquirer from 'inquirer';\n\n/**\n * Command to authenticate with Keycloak.\n * This command implements a direct OAuth flow:\n * 1. Verifies that authType is set to 'keycloak' in .etherealrc\n * 2. Uses the authenticationUrl from .etherealrc as the Keycloak server URL\n * 3. Sets up a local server to receive the callback\n * 4. Opens the browser for the user to login\n * 5. Listens for a token parameter in the callback URL (localhost:${port}/?token=...)\n * 6. Saves the received token to the .etherealrc file\n */\nexport const authLogin = new Command()\n .name('auth')\n .description('Ethereal Nexus authentication command.')\n .argument('login', 'to login')\n .option('--port <port>', 'Port to use for the callback server', '3000')\n .action(async (_, options) => {\n try {\n const config = await getConfig();\n\n if (!config) {\n logger.error('No configuration found. Please run `ethereal init` first.');\n process.exit(1);\n }\n\n if (!config.url) {\n logger.error('No authentication URL found in configuration.');\n process.exit(1);\n }\n\n if (!config.authType || config.authType !== 'keycloak') {\n logger.error('Authentication type must be set to \"keycloak\" in .etherealrc');\n process.exit(1);\n }\n\n logger.info(`Starting Keycloak login flow...`);\n\n // Use the authentication URL directly without format verification\n const baseUrl = config.url;\n\n logger.info(`Using Keycloak server: ${baseUrl}`);\n\n // Create a local server to receive the callback\n const server = http.createServer();\n\n // Use the specified port or default to 3000\n const port = parseInt(options.port);\n\n try {\n server.listen(port);\n logger.info(`Using port ${port} for callback server`);\n } catch (error) {\n logger.error(`Failed to bind to port ${port}. It might be in use by another application.`);\n process.exit(1);\n }\n\n // Handle server errors\n server.on('error', (error: any) => {\n if (error.code === 'EADDRINUSE') {\n logger.error(`Port ${port} is already in use. Please specify a different port with --port option.`);\n process.exit(1);\n } else {\n logger.error(`Server error: ${error.message}`);\n process.exit(1);\n }\n });\n\n // Create a promise that will resolve when we get the tokens\n const tokenPromise = new Promise<{ access_token: string, refresh_token?: string }>((resolve, reject) => {\n // Set a timeout to reject the promise after 5 minutes\n const timeout = setTimeout(() => {\n server.close();\n reject(new Error('Authentication timed out'));\n }, 5 * 60 * 1000);\n\n server.on('request', async (req, res) => {\n try {\n // Parse the URL to get the token\n const url = new URL(req.url || '', `http://localhost:${port}`);\n const token = url.searchParams.get('token');\n\n if (token) {\n // Send a response to the browser\n res.writeHead(200, { 'Content-Type': 'text/plain' });\n res.end('Ethereal Nexus CLI Authentication successful! You can close this window.');\n\n // Resolve the promise with the token\n clearTimeout(timeout);\n resolve({ access_token: token });\n\n // Close the server\n server.close();\n }\n } catch (error) {\n reject(error);\n server.close();\n }\n });\n });\n\n // Ensure the auth URL is correctly constructed\n const authUrlBase = baseUrl.endsWith(`/api/v1/cli-auth?callback=http://localhost:${port}`)\n ? baseUrl \n : `${baseUrl}/api/v1/cli-auth?callback=http://localhost:${port}`;\n const authUrl = new URL(authUrlBase);\n\n // Open the browser with the login URL\n logger.info(`Opening browser to authenticate...`);\n logger.info(`If the browser doesn't open automatically, please visit:`);\n logger.info(chalk.cyan(authUrl.toString()));\n\n await open(authUrl.toString());\n\n logger.info(`Waiting for authentication...`);\n\n // Wait for the tokens\n try {\n const { access_token } = await tokenPromise;\n\n // Save the tokens to the config\n const spinner = ora('Saving authentication tokens...').start();\n await saveConfig({\n ...config,\n token: access_token\n });\n spinner.succeed();\n\n logger.info(chalk.green('Authentication successful!'));\n } catch (error) {\n logger.error('Authentication failed:', error);\n process.exit(1);\n }\n } catch (error) {\n handleError(error);\n }\n });\n\n/**\n * Command to logout.\n * This command simply removes the authentication token from the config file.\n */\nexport const authLogout = new Command()\n .name('auth logout')\n .description('Ethereal Nexus authentication command.')\n .argument('logout', 'to logout')\n .action(async () => {\n try {\n const config = await getConfig();\n\n if (!config) {\n logger.error('No configuration found. Please run `ethereal init` first.');\n process.exit(1);\n }\n\n if (!config.auth) {\n logger.info('You are not currently logged in.');\n process.exit(0);\n }\n\n // Remove the token from the config\n const spinner = ora('Removing local authentication token...').start();\n await saveConfig({\n ...config,\n token: undefined\n });\n spinner.succeed();\n\n logger.info(chalk.green('Logged out successfully!'));\n } catch (error) {\n handleError(error);\n }\n });\n\n/**\n * Command to list and select API keys.\n * This command:\n * 1. Checks if .etherealrc has an \"auth\" field\n * 2. Lists all API keys from a specific user (mocked data for now)\n * 3. Allows keyboard selection of a specific API key\n * 4. Saves the selected API key to .etherealrc\n */\nexport const authKeys = new Command()\n .name('authkeys')\n .description('List and select API keys.')\n .argument('keys', 'to list and select API keys')\n .action(async () => {\n try {\n const config = await getConfig();\n\n if (!config) {\n logger.error('No configuration found. Please run `ethereal init` first.');\n process.exit(1);\n }\n\n if (!config.token) {\n logger.error('You are not authenticated. Please run `ethereal auth login` first.');\n process.exit(1);\n }\n\n logger.info('Fetching API keys...');\n\n // Fetch API keys from the server\n let apiKeys = [];\n const baseUrl = config.url;\n const apiKeysUrl = baseUrl.endsWith('/api/v1/cli/apikeys')\n ? baseUrl\n : `${baseUrl}/api/v1/cli/apikeys`;\n\n try {\n // Determine if the API keys URL is using HTTPS\n const isHttps = apiKeysUrl.startsWith('https://');\n\n // Set the appropriate cookie name based on the protocol\n const cookieName = isHttps ? '__Secure-authjs.session-token' : 'authjs.session-token';\n\n const response = await fetch(apiKeysUrl, {\n headers: {\n 'Cookie': `${cookieName}=${config.token}; Secure; HttpOnly; SameSite=Strict`\n }\n });\n\n if (!response.ok) {\n logger.error(`Failed to fetch API keys: ${response.statusText}`);\n process.exit(1);\n }\n\n apiKeys = await response.json();\n\n if (!apiKeys || apiKeys.length === 0) {\n logger.error('No API keys found for your account.');\n process.exit(1);\n }\n } catch (error) {\n logger.error('Failed to fetch API keys:', error);\n process.exit(1);\n }\n\n // Display API keys with inquirer\n const { selectedKey } = await inquirer.prompt([\n {\n type: 'list',\n name: 'selectedKey',\n message: 'Select an API key to use:',\n choices: apiKeys.map((key: { permissions: any; id:string, created_at: string | number | Date; alias: any; key: any; }) => {\n // Format the permissions for display\n const permissionsStr = Object.entries(key.permissions ?? {})\n .map(([resource, permission]) => `${resource}: ${permission}`)\n .join(', ');\n\n // Format the created_at date\n const createdDate = new Date(key.created_at).toLocaleDateString();\n\n return {\n name: `${key.alias || 'Unnamed Key'} - ${key.key} - Created: ${createdDate} - Permissions: ${permissionsStr}`,\n value: key.key\n };\n }),\n },\n ]);\n\n // Save the selected API key to .etherealrc\n const spinner = ora('Saving selected API key...').start();\n await saveConfig({\n ...config,\n auth: selectedKey\n });\n spinner.succeed();\n\n logger.info(chalk.green('API key saved successfully!'));\n logger.info(`Using API key: ${chalk.cyan(selectedKey)}`);\n } catch (error) {\n handleError(error);\n }\n });\n"],"mappings":"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","names":["Command","path","chalk","z","config","fs","path","fs","path","z","publish","config","chalk","path","existsSync","fs","Command","chalk","ora","z","Command","existsSync","chalk","config","ora","fs","path","fs","path","fs","Command","ora","chalk","inquirer","Command","config","resolve","Command","publish"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ethereal-nexus/cli",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "exports": "./dist/index.js",