@event-driven-io/emmett 0.43.0-apha.2 → 0.43.0-beta.10
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/cli.cjs +0 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +0 -1
- package/dist/cli.js.map +1 -1
- package/dist/{index-Amos00J7.d.cts → index-D13Bsibj.d.cts} +1 -1
- package/dist/{index-Amos00J7.d.ts → index-D13Bsibj.d.ts} +1 -1
- package/dist/index.cjs +1215 -648
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +594 -464
- package/dist/index.d.ts +594 -464
- package/dist/index.js +1188 -621
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
package/dist/cli.cjs
CHANGED
|
@@ -66,7 +66,6 @@ configCommand.command("sample").description("Generate or print sample configurat
|
|
|
66
66
|
});
|
|
67
67
|
|
|
68
68
|
// src/commandLine/plugins.ts
|
|
69
|
-
|
|
70
69
|
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
71
70
|
var PluginsConfigImportError = {
|
|
72
71
|
missingDefaultExport: `Error: Config should contain default export, e.g.
|
package/dist/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/emmett/emmett/src/packages/emmett/dist/cli.cjs","../src/cli.ts","../src/commandLine/config.ts","../src/commandLine/plugins.ts"],"names":[],"mappings":"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","file":"/home/runner/work/emmett/emmett/src/packages/emmett/dist/cli.cjs","sourcesContent":[null,"#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { loadPlugins, registerCliPlugins } from './commandLine';\n\nconst program = new Command();\n\nprogram\n .name('emmett')\n .description('CLI tool for Emmett')\n .option('--config <path>', 'Path to the configuration file');\n\n// Load extensions and parse CLI arguments\nconst initCLI = async () => {\n const configIndex = process.argv.indexOf('--config');\n\n const configPath =\n configIndex !== -1 && process.argv.length > configIndex + 1\n ? process.argv[configIndex + 1]\n : undefined;\n\n try {\n const plugins = await loadPlugins({\n pluginType: 'cli',\n configPath: configPath,\n });\n await registerCliPlugins(program, plugins);\n\n // Parse the CLI arguments\n program.parse(process.argv);\n } catch (err) {\n console.error(`Failed to load config from ${configPath}:`, err);\n }\n};\n\n//Initialize CLI and handle errors\ninitCLI().catch((err) => {\n console.error(`CLI initialization failed:`);\n console.error(err);\n});\n\nexport default program;\nexport * from './commandLine';\n","import { Command as CliCommand } from 'commander';\n// eslint-disable-next-line no-restricted-imports\nimport { writeFileSync } from 'node:fs';\nimport { exit } from 'process';\n\nexport const sampleConfig = (plugins: string[] = ['emmett-expressjs']) => {\n const pluginsNames =\n plugins.length > 0\n ? `[\\n${plugins.map((p) => `\"${p}\"`).join(',\\n')} \\n]`\n : '[]';\n\n return `\nexport default {\n plugins: ${pluginsNames},\n};\n`;\n};\n\nexport const generateConfigFile = (\n configPath: string,\n collectionNames: string[],\n): void => {\n try {\n writeFileSync(configPath, sampleConfig(collectionNames), 'utf8');\n console.log(`Configuration file stored at: ${configPath}`);\n } catch (error) {\n console.error(`Error: Couldn't store config file: ${configPath}!`);\n console.error(error);\n process.exit(1);\n }\n};\n\nexport const configCommand = new CliCommand('config').description(\n 'Manage Pongo configuration',\n);\n\ntype SampleConfigOptions =\n | {\n plugin: string[];\n print?: boolean;\n }\n | {\n plugin: string[];\n generate?: boolean;\n file?: string;\n };\n\nconfigCommand\n .command('sample')\n .description('Generate or print sample configuration')\n .option(\n '-plg, --plugins <name>',\n 'Specify the plugin name',\n (value: string, previous: string[]) => {\n // Accumulate plugins names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option(\n '-f, --file <path>',\n 'Path to configuration file with collection list',\n )\n .option('-g, --generate', 'Generate sample config file')\n .option('-p, --print', 'Print sample config file')\n .action((options: SampleConfigOptions) => {\n const plugins =\n options.plugin.length > 0\n ? options.plugin\n : ['@event-driven-io/emmett-expressjs'];\n\n if (!('print' in options) && !('generate' in options)) {\n console.error(\n 'Error: Please provide either:\\n--print param to print sample config or\\n--generate to generate sample config file',\n );\n exit(1);\n }\n\n if ('print' in options) {\n console.log(`${sampleConfig(plugins)}`);\n } else if ('generate' in options) {\n if (!options.file) {\n console.error(\n 'Error: You need to provide a config file through a --file',\n );\n exit(1);\n }\n\n generateConfigFile(options.file, plugins);\n }\n });\n","import { Command as CliCommand } from 'commander';\nimport path from 'path';\nimport {\n isPluginConfig,\n type EmmettCliCommand,\n type EmmettCliPlugin,\n type EmmettPlugin,\n type EmmettPluginConfig,\n type EmmettPluginsConfig,\n type EmmettPluginType,\n} from '../config';\nimport { EmmettError } from '../errors';\nimport { sampleConfig } from './config';\n\nconst PluginsConfigImportError = {\n missingDefaultExport: `Error: Config should contain default export, e.g.\\n\\n${sampleConfig()}`,\n missingPluginsPropertyExport: `Error: Config should contain default export with plugins array, e.g.\\n\\n${sampleConfig()}`,\n wrongPluginStructure: `Error: Plugin config should be either string with plugin name or object with plugin name, e.g. { name: 'emmett-expressjs' }`,\n};\nexport const importPluginsConfig = async (options?: {\n configPath?: string | undefined;\n}): Promise<EmmettPluginsConfig | EmmettError> => {\n const configPath = path.join(\n process.cwd(),\n options?.configPath ?? './dist/emmett.config.js',\n );\n\n console.log('IMPORTING' + configPath);\n\n try {\n const imported = (await import(configPath)) as {\n default: Partial<EmmettPluginsConfig>;\n };\n\n if (!imported.default) {\n return new EmmettError(PluginsConfigImportError.missingDefaultExport);\n }\n\n if (!imported.default.plugins || !Array.isArray(imported.default.plugins)) {\n return new EmmettError(\n PluginsConfigImportError.missingPluginsPropertyExport,\n );\n }\n\n if (!imported.default.plugins.every(isPluginConfig)) {\n return new EmmettError(PluginsConfigImportError.wrongPluginStructure);\n }\n\n return { plugins: imported.default.plugins };\n } catch (error) {\n if (!options?.configPath) {\n console.warn('Didn`t find config file: ' + configPath, error);\n return { plugins: [] };\n }\n return new EmmettError(\n `Error: Couldn't load file:` + (error as Error).toString(),\n );\n }\n};\n\nexport const loadPlugins = async (options?: {\n pluginType?: EmmettPluginType;\n configPath?: string;\n}): Promise<EmmettPlugin[]> => {\n try {\n const pluginsConfig = await importPluginsConfig({\n configPath: options?.configPath,\n });\n\n if (pluginsConfig instanceof EmmettError) throw pluginsConfig;\n\n if (pluginsConfig.plugins.length === 0) {\n console.log(`No extensions specified in config ${options?.configPath}.`);\n return [];\n }\n\n const pluginsToLoad = filterPluginsByType(\n pluginsConfig.plugins,\n options?.pluginType,\n );\n\n const pluginsPromises = pluginsToLoad.map(async (pluginConfig) => {\n const importPath = getImportPath(pluginConfig, options?.pluginType);\n try {\n const plugin = (await import(importPath)) as { default: EmmettPlugin };\n\n console.info(`Loaded plugin: ${importPath}`);\n\n if (!plugin.default) {\n throw new Error(`Plugin: ${importPath} is missing default export`);\n }\n\n return plugin.default;\n } catch (error) {\n console.error(`Failed to load extension \"${importPath}\":`, error);\n return undefined;\n }\n });\n\n return (await Promise.all(pluginsPromises)).filter(\n (plugin) => plugin !== undefined,\n );\n } catch (error) {\n console.error(`Failed to load config ${options?.configPath}:`, error);\n return [];\n }\n};\n\nexport const registerCliPlugins = async (\n program: CliCommand,\n plugins: EmmettCliPlugin[],\n): Promise<void> => {\n const result: EmmettCliPlugin[] = [];\n\n for (const plugin of plugins) {\n const pluginName = plugin.name;\n\n if (!('registerCommands' in plugin)) {\n console.warn(`No registerCommands function found in ${pluginName}`);\n }\n await plugin.registerCommands(program as EmmettCliCommand);\n console.log(`Loaded extension: ${plugin.name}`);\n result.push(plugin);\n }\n};\n\nconst filterPluginsByType = (\n plugins: EmmettPluginConfig[],\n pluginType?: EmmettPluginType,\n): EmmettPluginConfig[] =>\n plugins.filter(\n (p) =>\n typeof p === 'string' ||\n (pluginType &&\n (p.register === undefined ||\n p.register.some((r) => r.pluginType === pluginType))),\n );\n\nconst getImportPath = (\n pluginConfig: EmmettPluginConfig,\n pluginType: EmmettPluginType | undefined,\n) => {\n if (typeof pluginConfig === 'string') {\n return pluginType ? `${pluginConfig}/${pluginType}` : pluginConfig;\n }\n\n const pluginSubpath =\n pluginConfig.register.find((r) => pluginType && r.pluginType === pluginType)\n ?.path ?? pluginType;\n\n return pluginSubpath\n ? `${pluginConfig.name}/${pluginSubpath}`\n : pluginConfig.name;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/emmett/emmett/src/packages/emmett/dist/cli.cjs","../src/cli.ts","../src/commandLine/config.ts","../src/commandLine/plugins.ts"],"names":[],"mappings":"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","file":"/home/runner/work/emmett/emmett/src/packages/emmett/dist/cli.cjs","sourcesContent":[null,"#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { loadPlugins, registerCliPlugins } from './commandLine';\n\nconst program = new Command();\n\nprogram\n .name('emmett')\n .description('CLI tool for Emmett')\n .option('--config <path>', 'Path to the configuration file');\n\n// Load extensions and parse CLI arguments\nconst initCLI = async () => {\n const configIndex = process.argv.indexOf('--config');\n\n const configPath =\n configIndex !== -1 && process.argv.length > configIndex + 1\n ? process.argv[configIndex + 1]\n : undefined;\n\n try {\n const plugins = await loadPlugins({\n pluginType: 'cli',\n configPath: configPath,\n });\n await registerCliPlugins(program, plugins);\n\n // Parse the CLI arguments\n program.parse(process.argv);\n } catch (err) {\n console.error(`Failed to load config from ${configPath}:`, err);\n }\n};\n\n//Initialize CLI and handle errors\ninitCLI().catch((err) => {\n console.error(`CLI initialization failed:`);\n console.error(err);\n});\n\nexport default program;\nexport * from './commandLine';\n","import { Command as CliCommand } from 'commander';\n// eslint-disable-next-line no-restricted-imports\nimport { writeFileSync } from 'node:fs';\nimport { exit } from 'process';\n\nexport const sampleConfig = (plugins: string[] = ['emmett-expressjs']) => {\n const pluginsNames =\n plugins.length > 0\n ? `[\\n${plugins.map((p) => `\"${p}\"`).join(',\\n')} \\n]`\n : '[]';\n\n return `\nexport default {\n plugins: ${pluginsNames},\n};\n`;\n};\n\nexport const generateConfigFile = (\n configPath: string,\n collectionNames: string[],\n): void => {\n try {\n writeFileSync(configPath, sampleConfig(collectionNames), 'utf8');\n console.log(`Configuration file stored at: ${configPath}`);\n } catch (error) {\n console.error(`Error: Couldn't store config file: ${configPath}!`);\n console.error(error);\n process.exit(1);\n }\n};\n\nexport const configCommand = new CliCommand('config').description(\n 'Manage Pongo configuration',\n);\n\ntype SampleConfigOptions =\n | {\n plugin: string[];\n print?: boolean;\n }\n | {\n plugin: string[];\n generate?: boolean;\n file?: string;\n };\n\nconfigCommand\n .command('sample')\n .description('Generate or print sample configuration')\n .option(\n '-plg, --plugins <name>',\n 'Specify the plugin name',\n (value: string, previous: string[]) => {\n // Accumulate plugins names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option(\n '-f, --file <path>',\n 'Path to configuration file with collection list',\n )\n .option('-g, --generate', 'Generate sample config file')\n .option('-p, --print', 'Print sample config file')\n .action((options: SampleConfigOptions) => {\n const plugins =\n options.plugin.length > 0\n ? options.plugin\n : ['@event-driven-io/emmett-expressjs'];\n\n if (!('print' in options) && !('generate' in options)) {\n console.error(\n 'Error: Please provide either:\\n--print param to print sample config or\\n--generate to generate sample config file',\n );\n exit(1);\n }\n\n if ('print' in options) {\n console.log(`${sampleConfig(plugins)}`);\n } else if ('generate' in options) {\n if (!options.file) {\n console.error(\n 'Error: You need to provide a config file through a --file',\n );\n exit(1);\n }\n\n generateConfigFile(options.file, plugins);\n }\n });\n","import type { Command as CliCommand } from 'commander';\nimport path from 'path';\nimport {\n isPluginConfig,\n type EmmettCliCommand,\n type EmmettCliPlugin,\n type EmmettPlugin,\n type EmmettPluginConfig,\n type EmmettPluginsConfig,\n type EmmettPluginType,\n} from '../config';\nimport { EmmettError } from '../errors';\nimport { sampleConfig } from './config';\n\nconst PluginsConfigImportError = {\n missingDefaultExport: `Error: Config should contain default export, e.g.\\n\\n${sampleConfig()}`,\n missingPluginsPropertyExport: `Error: Config should contain default export with plugins array, e.g.\\n\\n${sampleConfig()}`,\n wrongPluginStructure: `Error: Plugin config should be either string with plugin name or object with plugin name, e.g. { name: 'emmett-expressjs' }`,\n};\nexport const importPluginsConfig = async (options?: {\n configPath?: string | undefined;\n}): Promise<EmmettPluginsConfig | EmmettError> => {\n const configPath = path.join(\n process.cwd(),\n options?.configPath ?? './dist/emmett.config.js',\n );\n\n console.log('IMPORTING' + configPath);\n\n try {\n const imported = (await import(configPath)) as {\n default: Partial<EmmettPluginsConfig>;\n };\n\n if (!imported.default) {\n return new EmmettError(PluginsConfigImportError.missingDefaultExport);\n }\n\n if (!imported.default.plugins || !Array.isArray(imported.default.plugins)) {\n return new EmmettError(\n PluginsConfigImportError.missingPluginsPropertyExport,\n );\n }\n\n if (!imported.default.plugins.every(isPluginConfig)) {\n return new EmmettError(PluginsConfigImportError.wrongPluginStructure);\n }\n\n return { plugins: imported.default.plugins };\n } catch (error) {\n if (!options?.configPath) {\n console.warn('Didn`t find config file: ' + configPath, error);\n return { plugins: [] };\n }\n return new EmmettError(\n `Error: Couldn't load file:` + (error as Error).toString(),\n );\n }\n};\n\nexport const loadPlugins = async (options?: {\n pluginType?: EmmettPluginType;\n configPath?: string;\n}): Promise<EmmettPlugin[]> => {\n try {\n const pluginsConfig = await importPluginsConfig({\n configPath: options?.configPath,\n });\n\n if (pluginsConfig instanceof EmmettError) throw pluginsConfig;\n\n if (pluginsConfig.plugins.length === 0) {\n console.log(`No extensions specified in config ${options?.configPath}.`);\n return [];\n }\n\n const pluginsToLoad = filterPluginsByType(\n pluginsConfig.plugins,\n options?.pluginType,\n );\n\n const pluginsPromises = pluginsToLoad.map(async (pluginConfig) => {\n const importPath = getImportPath(pluginConfig, options?.pluginType);\n try {\n const plugin = (await import(importPath)) as { default: EmmettPlugin };\n\n console.info(`Loaded plugin: ${importPath}`);\n\n if (!plugin.default) {\n throw new Error(`Plugin: ${importPath} is missing default export`);\n }\n\n return plugin.default;\n } catch (error) {\n console.error(`Failed to load extension \"${importPath}\":`, error);\n return undefined;\n }\n });\n\n return (await Promise.all(pluginsPromises)).filter(\n (plugin) => plugin !== undefined,\n );\n } catch (error) {\n console.error(`Failed to load config ${options?.configPath}:`, error);\n return [];\n }\n};\n\nexport const registerCliPlugins = async (\n program: CliCommand,\n plugins: EmmettCliPlugin[],\n): Promise<void> => {\n const result: EmmettCliPlugin[] = [];\n\n for (const plugin of plugins) {\n const pluginName = plugin.name;\n\n if (!('registerCommands' in plugin)) {\n console.warn(`No registerCommands function found in ${pluginName}`);\n }\n await plugin.registerCommands(program as EmmettCliCommand);\n console.log(`Loaded extension: ${plugin.name}`);\n result.push(plugin);\n }\n};\n\nconst filterPluginsByType = (\n plugins: EmmettPluginConfig[],\n pluginType?: EmmettPluginType,\n): EmmettPluginConfig[] =>\n plugins.filter(\n (p) =>\n typeof p === 'string' ||\n (pluginType &&\n (p.register === undefined ||\n p.register.some((r) => r.pluginType === pluginType))),\n );\n\nconst getImportPath = (\n pluginConfig: EmmettPluginConfig,\n pluginType: EmmettPluginType | undefined,\n) => {\n if (typeof pluginConfig === 'string') {\n return pluginType ? `${pluginConfig}/${pluginType}` : pluginConfig;\n }\n\n const pluginSubpath =\n pluginConfig.register.find((r) => pluginType && r.pluginType === pluginType)\n ?.path ?? pluginType;\n\n return pluginSubpath\n ? `${pluginConfig.name}/${pluginSubpath}`\n : pluginConfig.name;\n};\n"]}
|
package/dist/cli.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
-
import { E as EmmettPluginsConfig, a as EmmettError, b as EmmettPluginType, c as EmmettPlugin, d as EmmettCliPlugin } from './index-
|
|
3
|
+
import { E as EmmettPluginsConfig, a as EmmettError, b as EmmettPluginType, c as EmmettPlugin, d as EmmettCliPlugin } from './index-D13Bsibj.cjs';
|
|
4
4
|
|
|
5
5
|
declare const sampleConfig: (plugins?: string[]) => string;
|
|
6
6
|
declare const generateConfigFile: (configPath: string, collectionNames: string[]) => void;
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
-
import { E as EmmettPluginsConfig, a as EmmettError, b as EmmettPluginType, c as EmmettPlugin, d as EmmettCliPlugin } from './index-
|
|
3
|
+
import { E as EmmettPluginsConfig, a as EmmettError, b as EmmettPluginType, c as EmmettPlugin, d as EmmettCliPlugin } from './index-D13Bsibj.js';
|
|
4
4
|
|
|
5
5
|
declare const sampleConfig: (plugins?: string[]) => string;
|
|
6
6
|
declare const generateConfigFile: (configPath: string, collectionNames: string[]) => void;
|
package/dist/cli.js
CHANGED
|
@@ -66,7 +66,6 @@ configCommand.command("sample").description("Generate or print sample configurat
|
|
|
66
66
|
});
|
|
67
67
|
|
|
68
68
|
// src/commandLine/plugins.ts
|
|
69
|
-
import "commander";
|
|
70
69
|
import path from "path";
|
|
71
70
|
var PluginsConfigImportError = {
|
|
72
71
|
missingDefaultExport: `Error: Config should contain default export, e.g.
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts","../src/commandLine/config.ts","../src/commandLine/plugins.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { loadPlugins, registerCliPlugins } from './commandLine';\n\nconst program = new Command();\n\nprogram\n .name('emmett')\n .description('CLI tool for Emmett')\n .option('--config <path>', 'Path to the configuration file');\n\n// Load extensions and parse CLI arguments\nconst initCLI = async () => {\n const configIndex = process.argv.indexOf('--config');\n\n const configPath =\n configIndex !== -1 && process.argv.length > configIndex + 1\n ? process.argv[configIndex + 1]\n : undefined;\n\n try {\n const plugins = await loadPlugins({\n pluginType: 'cli',\n configPath: configPath,\n });\n await registerCliPlugins(program, plugins);\n\n // Parse the CLI arguments\n program.parse(process.argv);\n } catch (err) {\n console.error(`Failed to load config from ${configPath}:`, err);\n }\n};\n\n//Initialize CLI and handle errors\ninitCLI().catch((err) => {\n console.error(`CLI initialization failed:`);\n console.error(err);\n});\n\nexport default program;\nexport * from './commandLine';\n","import { Command as CliCommand } from 'commander';\n// eslint-disable-next-line no-restricted-imports\nimport { writeFileSync } from 'node:fs';\nimport { exit } from 'process';\n\nexport const sampleConfig = (plugins: string[] = ['emmett-expressjs']) => {\n const pluginsNames =\n plugins.length > 0\n ? `[\\n${plugins.map((p) => `\"${p}\"`).join(',\\n')} \\n]`\n : '[]';\n\n return `\nexport default {\n plugins: ${pluginsNames},\n};\n`;\n};\n\nexport const generateConfigFile = (\n configPath: string,\n collectionNames: string[],\n): void => {\n try {\n writeFileSync(configPath, sampleConfig(collectionNames), 'utf8');\n console.log(`Configuration file stored at: ${configPath}`);\n } catch (error) {\n console.error(`Error: Couldn't store config file: ${configPath}!`);\n console.error(error);\n process.exit(1);\n }\n};\n\nexport const configCommand = new CliCommand('config').description(\n 'Manage Pongo configuration',\n);\n\ntype SampleConfigOptions =\n | {\n plugin: string[];\n print?: boolean;\n }\n | {\n plugin: string[];\n generate?: boolean;\n file?: string;\n };\n\nconfigCommand\n .command('sample')\n .description('Generate or print sample configuration')\n .option(\n '-plg, --plugins <name>',\n 'Specify the plugin name',\n (value: string, previous: string[]) => {\n // Accumulate plugins names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option(\n '-f, --file <path>',\n 'Path to configuration file with collection list',\n )\n .option('-g, --generate', 'Generate sample config file')\n .option('-p, --print', 'Print sample config file')\n .action((options: SampleConfigOptions) => {\n const plugins =\n options.plugin.length > 0\n ? options.plugin\n : ['@event-driven-io/emmett-expressjs'];\n\n if (!('print' in options) && !('generate' in options)) {\n console.error(\n 'Error: Please provide either:\\n--print param to print sample config or\\n--generate to generate sample config file',\n );\n exit(1);\n }\n\n if ('print' in options) {\n console.log(`${sampleConfig(plugins)}`);\n } else if ('generate' in options) {\n if (!options.file) {\n console.error(\n 'Error: You need to provide a config file through a --file',\n );\n exit(1);\n }\n\n generateConfigFile(options.file, plugins);\n }\n });\n","import { Command as CliCommand } from 'commander';\nimport path from 'path';\nimport {\n isPluginConfig,\n type EmmettCliCommand,\n type EmmettCliPlugin,\n type EmmettPlugin,\n type EmmettPluginConfig,\n type EmmettPluginsConfig,\n type EmmettPluginType,\n} from '../config';\nimport { EmmettError } from '../errors';\nimport { sampleConfig } from './config';\n\nconst PluginsConfigImportError = {\n missingDefaultExport: `Error: Config should contain default export, e.g.\\n\\n${sampleConfig()}`,\n missingPluginsPropertyExport: `Error: Config should contain default export with plugins array, e.g.\\n\\n${sampleConfig()}`,\n wrongPluginStructure: `Error: Plugin config should be either string with plugin name or object with plugin name, e.g. { name: 'emmett-expressjs' }`,\n};\nexport const importPluginsConfig = async (options?: {\n configPath?: string | undefined;\n}): Promise<EmmettPluginsConfig | EmmettError> => {\n const configPath = path.join(\n process.cwd(),\n options?.configPath ?? './dist/emmett.config.js',\n );\n\n console.log('IMPORTING' + configPath);\n\n try {\n const imported = (await import(configPath)) as {\n default: Partial<EmmettPluginsConfig>;\n };\n\n if (!imported.default) {\n return new EmmettError(PluginsConfigImportError.missingDefaultExport);\n }\n\n if (!imported.default.plugins || !Array.isArray(imported.default.plugins)) {\n return new EmmettError(\n PluginsConfigImportError.missingPluginsPropertyExport,\n );\n }\n\n if (!imported.default.plugins.every(isPluginConfig)) {\n return new EmmettError(PluginsConfigImportError.wrongPluginStructure);\n }\n\n return { plugins: imported.default.plugins };\n } catch (error) {\n if (!options?.configPath) {\n console.warn('Didn`t find config file: ' + configPath, error);\n return { plugins: [] };\n }\n return new EmmettError(\n `Error: Couldn't load file:` + (error as Error).toString(),\n );\n }\n};\n\nexport const loadPlugins = async (options?: {\n pluginType?: EmmettPluginType;\n configPath?: string;\n}): Promise<EmmettPlugin[]> => {\n try {\n const pluginsConfig = await importPluginsConfig({\n configPath: options?.configPath,\n });\n\n if (pluginsConfig instanceof EmmettError) throw pluginsConfig;\n\n if (pluginsConfig.plugins.length === 0) {\n console.log(`No extensions specified in config ${options?.configPath}.`);\n return [];\n }\n\n const pluginsToLoad = filterPluginsByType(\n pluginsConfig.plugins,\n options?.pluginType,\n );\n\n const pluginsPromises = pluginsToLoad.map(async (pluginConfig) => {\n const importPath = getImportPath(pluginConfig, options?.pluginType);\n try {\n const plugin = (await import(importPath)) as { default: EmmettPlugin };\n\n console.info(`Loaded plugin: ${importPath}`);\n\n if (!plugin.default) {\n throw new Error(`Plugin: ${importPath} is missing default export`);\n }\n\n return plugin.default;\n } catch (error) {\n console.error(`Failed to load extension \"${importPath}\":`, error);\n return undefined;\n }\n });\n\n return (await Promise.all(pluginsPromises)).filter(\n (plugin) => plugin !== undefined,\n );\n } catch (error) {\n console.error(`Failed to load config ${options?.configPath}:`, error);\n return [];\n }\n};\n\nexport const registerCliPlugins = async (\n program: CliCommand,\n plugins: EmmettCliPlugin[],\n): Promise<void> => {\n const result: EmmettCliPlugin[] = [];\n\n for (const plugin of plugins) {\n const pluginName = plugin.name;\n\n if (!('registerCommands' in plugin)) {\n console.warn(`No registerCommands function found in ${pluginName}`);\n }\n await plugin.registerCommands(program as EmmettCliCommand);\n console.log(`Loaded extension: ${plugin.name}`);\n result.push(plugin);\n }\n};\n\nconst filterPluginsByType = (\n plugins: EmmettPluginConfig[],\n pluginType?: EmmettPluginType,\n): EmmettPluginConfig[] =>\n plugins.filter(\n (p) =>\n typeof p === 'string' ||\n (pluginType &&\n (p.register === undefined ||\n p.register.some((r) => r.pluginType === pluginType))),\n );\n\nconst getImportPath = (\n pluginConfig: EmmettPluginConfig,\n pluginType: EmmettPluginType | undefined,\n) => {\n if (typeof pluginConfig === 'string') {\n return pluginType ? `${pluginConfig}/${pluginType}` : pluginConfig;\n }\n\n const pluginSubpath =\n pluginConfig.register.find((r) => pluginType && r.pluginType === pluginType)\n ?.path ?? pluginType;\n\n return pluginSubpath\n ? `${pluginConfig.name}/${pluginSubpath}`\n : pluginConfig.name;\n};\n"],"mappings":"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","names":["program"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/commandLine/config.ts","../src/commandLine/plugins.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { loadPlugins, registerCliPlugins } from './commandLine';\n\nconst program = new Command();\n\nprogram\n .name('emmett')\n .description('CLI tool for Emmett')\n .option('--config <path>', 'Path to the configuration file');\n\n// Load extensions and parse CLI arguments\nconst initCLI = async () => {\n const configIndex = process.argv.indexOf('--config');\n\n const configPath =\n configIndex !== -1 && process.argv.length > configIndex + 1\n ? process.argv[configIndex + 1]\n : undefined;\n\n try {\n const plugins = await loadPlugins({\n pluginType: 'cli',\n configPath: configPath,\n });\n await registerCliPlugins(program, plugins);\n\n // Parse the CLI arguments\n program.parse(process.argv);\n } catch (err) {\n console.error(`Failed to load config from ${configPath}:`, err);\n }\n};\n\n//Initialize CLI and handle errors\ninitCLI().catch((err) => {\n console.error(`CLI initialization failed:`);\n console.error(err);\n});\n\nexport default program;\nexport * from './commandLine';\n","import { Command as CliCommand } from 'commander';\n// eslint-disable-next-line no-restricted-imports\nimport { writeFileSync } from 'node:fs';\nimport { exit } from 'process';\n\nexport const sampleConfig = (plugins: string[] = ['emmett-expressjs']) => {\n const pluginsNames =\n plugins.length > 0\n ? `[\\n${plugins.map((p) => `\"${p}\"`).join(',\\n')} \\n]`\n : '[]';\n\n return `\nexport default {\n plugins: ${pluginsNames},\n};\n`;\n};\n\nexport const generateConfigFile = (\n configPath: string,\n collectionNames: string[],\n): void => {\n try {\n writeFileSync(configPath, sampleConfig(collectionNames), 'utf8');\n console.log(`Configuration file stored at: ${configPath}`);\n } catch (error) {\n console.error(`Error: Couldn't store config file: ${configPath}!`);\n console.error(error);\n process.exit(1);\n }\n};\n\nexport const configCommand = new CliCommand('config').description(\n 'Manage Pongo configuration',\n);\n\ntype SampleConfigOptions =\n | {\n plugin: string[];\n print?: boolean;\n }\n | {\n plugin: string[];\n generate?: boolean;\n file?: string;\n };\n\nconfigCommand\n .command('sample')\n .description('Generate or print sample configuration')\n .option(\n '-plg, --plugins <name>',\n 'Specify the plugin name',\n (value: string, previous: string[]) => {\n // Accumulate plugins names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option(\n '-f, --file <path>',\n 'Path to configuration file with collection list',\n )\n .option('-g, --generate', 'Generate sample config file')\n .option('-p, --print', 'Print sample config file')\n .action((options: SampleConfigOptions) => {\n const plugins =\n options.plugin.length > 0\n ? options.plugin\n : ['@event-driven-io/emmett-expressjs'];\n\n if (!('print' in options) && !('generate' in options)) {\n console.error(\n 'Error: Please provide either:\\n--print param to print sample config or\\n--generate to generate sample config file',\n );\n exit(1);\n }\n\n if ('print' in options) {\n console.log(`${sampleConfig(plugins)}`);\n } else if ('generate' in options) {\n if (!options.file) {\n console.error(\n 'Error: You need to provide a config file through a --file',\n );\n exit(1);\n }\n\n generateConfigFile(options.file, plugins);\n }\n });\n","import type { Command as CliCommand } from 'commander';\nimport path from 'path';\nimport {\n isPluginConfig,\n type EmmettCliCommand,\n type EmmettCliPlugin,\n type EmmettPlugin,\n type EmmettPluginConfig,\n type EmmettPluginsConfig,\n type EmmettPluginType,\n} from '../config';\nimport { EmmettError } from '../errors';\nimport { sampleConfig } from './config';\n\nconst PluginsConfigImportError = {\n missingDefaultExport: `Error: Config should contain default export, e.g.\\n\\n${sampleConfig()}`,\n missingPluginsPropertyExport: `Error: Config should contain default export with plugins array, e.g.\\n\\n${sampleConfig()}`,\n wrongPluginStructure: `Error: Plugin config should be either string with plugin name or object with plugin name, e.g. { name: 'emmett-expressjs' }`,\n};\nexport const importPluginsConfig = async (options?: {\n configPath?: string | undefined;\n}): Promise<EmmettPluginsConfig | EmmettError> => {\n const configPath = path.join(\n process.cwd(),\n options?.configPath ?? './dist/emmett.config.js',\n );\n\n console.log('IMPORTING' + configPath);\n\n try {\n const imported = (await import(configPath)) as {\n default: Partial<EmmettPluginsConfig>;\n };\n\n if (!imported.default) {\n return new EmmettError(PluginsConfigImportError.missingDefaultExport);\n }\n\n if (!imported.default.plugins || !Array.isArray(imported.default.plugins)) {\n return new EmmettError(\n PluginsConfigImportError.missingPluginsPropertyExport,\n );\n }\n\n if (!imported.default.plugins.every(isPluginConfig)) {\n return new EmmettError(PluginsConfigImportError.wrongPluginStructure);\n }\n\n return { plugins: imported.default.plugins };\n } catch (error) {\n if (!options?.configPath) {\n console.warn('Didn`t find config file: ' + configPath, error);\n return { plugins: [] };\n }\n return new EmmettError(\n `Error: Couldn't load file:` + (error as Error).toString(),\n );\n }\n};\n\nexport const loadPlugins = async (options?: {\n pluginType?: EmmettPluginType;\n configPath?: string;\n}): Promise<EmmettPlugin[]> => {\n try {\n const pluginsConfig = await importPluginsConfig({\n configPath: options?.configPath,\n });\n\n if (pluginsConfig instanceof EmmettError) throw pluginsConfig;\n\n if (pluginsConfig.plugins.length === 0) {\n console.log(`No extensions specified in config ${options?.configPath}.`);\n return [];\n }\n\n const pluginsToLoad = filterPluginsByType(\n pluginsConfig.plugins,\n options?.pluginType,\n );\n\n const pluginsPromises = pluginsToLoad.map(async (pluginConfig) => {\n const importPath = getImportPath(pluginConfig, options?.pluginType);\n try {\n const plugin = (await import(importPath)) as { default: EmmettPlugin };\n\n console.info(`Loaded plugin: ${importPath}`);\n\n if (!plugin.default) {\n throw new Error(`Plugin: ${importPath} is missing default export`);\n }\n\n return plugin.default;\n } catch (error) {\n console.error(`Failed to load extension \"${importPath}\":`, error);\n return undefined;\n }\n });\n\n return (await Promise.all(pluginsPromises)).filter(\n (plugin) => plugin !== undefined,\n );\n } catch (error) {\n console.error(`Failed to load config ${options?.configPath}:`, error);\n return [];\n }\n};\n\nexport const registerCliPlugins = async (\n program: CliCommand,\n plugins: EmmettCliPlugin[],\n): Promise<void> => {\n const result: EmmettCliPlugin[] = [];\n\n for (const plugin of plugins) {\n const pluginName = plugin.name;\n\n if (!('registerCommands' in plugin)) {\n console.warn(`No registerCommands function found in ${pluginName}`);\n }\n await plugin.registerCommands(program as EmmettCliCommand);\n console.log(`Loaded extension: ${plugin.name}`);\n result.push(plugin);\n }\n};\n\nconst filterPluginsByType = (\n plugins: EmmettPluginConfig[],\n pluginType?: EmmettPluginType,\n): EmmettPluginConfig[] =>\n plugins.filter(\n (p) =>\n typeof p === 'string' ||\n (pluginType &&\n (p.register === undefined ||\n p.register.some((r) => r.pluginType === pluginType))),\n );\n\nconst getImportPath = (\n pluginConfig: EmmettPluginConfig,\n pluginType: EmmettPluginType | undefined,\n) => {\n if (typeof pluginConfig === 'string') {\n return pluginType ? `${pluginConfig}/${pluginType}` : pluginConfig;\n }\n\n const pluginSubpath =\n pluginConfig.register.find((r) => pluginType && r.pluginType === pluginType)\n ?.path ?? pluginType;\n\n return pluginSubpath\n ? `${pluginConfig.name}/${pluginSubpath}`\n : pluginConfig.name;\n};\n"],"mappings":"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","names":["program"]}
|
|
@@ -66,4 +66,4 @@ declare class NotFoundError extends EmmettError {
|
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
export { ConcurrencyError as C, type EmmettPluginsConfig as E, IllegalStateError as I, NotFoundError as N, ValidationError as V, EmmettError as a, type EmmettPluginType as b, type EmmettPlugin as c, type EmmettCliPlugin as d, type ErrorConstructor as e,
|
|
69
|
+
export { ConcurrencyError as C, type EmmettPluginsConfig as E, IllegalStateError as I, NotFoundError as N, ValidationError as V, EmmettError as a, type EmmettPluginType as b, type EmmettPlugin as c, type EmmettCliPlugin as d, type ErrorConstructor as e, ConcurrencyInMemoryDatabaseError as f, type EmmettCliCommand as g, type EmmettCliPluginRegistration as h, type EmmettPluginConfig as i, type EmmettPluginRegistration as j, isErrorConstructor as k, isPluginConfig as l };
|
|
@@ -66,4 +66,4 @@ declare class NotFoundError extends EmmettError {
|
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
export { ConcurrencyError as C, type EmmettPluginsConfig as E, IllegalStateError as I, NotFoundError as N, ValidationError as V, EmmettError as a, type EmmettPluginType as b, type EmmettPlugin as c, type EmmettCliPlugin as d, type ErrorConstructor as e,
|
|
69
|
+
export { ConcurrencyError as C, type EmmettPluginsConfig as E, IllegalStateError as I, NotFoundError as N, ValidationError as V, EmmettError as a, type EmmettPluginType as b, type EmmettPlugin as c, type EmmettCliPlugin as d, type ErrorConstructor as e, ConcurrencyInMemoryDatabaseError as f, type EmmettCliCommand as g, type EmmettCliPluginRegistration as h, type EmmettPluginConfig as i, type EmmettPluginRegistration as j, isErrorConstructor as k, isPluginConfig as l };
|