@phantom-pm/cli 1.0.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/README.md +52 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +173 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/stories.d.ts +3 -0
- package/dist/commands/stories.d.ts.map +1 -0
- package/dist/commands/stories.js +119 -0
- package/dist/commands/stories.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1627 -0
- package/dist/index.js.map +1 -0
- package/package.json +70 -0
package/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# @phantom-pm/cli
|
|
2
|
+
|
|
3
|
+
PHANTOM - The invisible force behind every great product.
|
|
4
|
+
|
|
5
|
+
Open-source PM operating system for developers and AI agents.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g @phantom-pm/cli
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Initialize PHANTOM with your project
|
|
17
|
+
phantom context add ./my-project
|
|
18
|
+
|
|
19
|
+
# Generate a PRD in seconds
|
|
20
|
+
phantom prd create "User Authentication System"
|
|
21
|
+
|
|
22
|
+
# Get AI-powered analysis
|
|
23
|
+
phantom swarm "Should we add social login?"
|
|
24
|
+
|
|
25
|
+
# Create user stories
|
|
26
|
+
phantom stories generate "Payment processing"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Features
|
|
30
|
+
|
|
31
|
+
- 🧠 **Context Engine** - Understands your entire codebase
|
|
32
|
+
- 🤖 **Agent Swarm** - 7 specialized PM agents analyze decisions
|
|
33
|
+
- 📦 **Module System** - 40+ installable capabilities
|
|
34
|
+
- 🔒 **100% Local** - Your data never leaves your machine
|
|
35
|
+
- 🌉 **The Bridge** - Translates PM ↔ Dev automatically
|
|
36
|
+
- ⚡ **MCP Integration** - Works with Claude Code, Cursor, VS Code
|
|
37
|
+
|
|
38
|
+
## Documentation
|
|
39
|
+
|
|
40
|
+
- [Getting Started](https://phantom.pm/docs/getting-started)
|
|
41
|
+
- [CLI Reference](https://phantom.pm/docs/cli)
|
|
42
|
+
- [Modules Guide](https://phantom.pm/docs/modules)
|
|
43
|
+
|
|
44
|
+
## Links
|
|
45
|
+
|
|
46
|
+
- Website: https://phantom.pm
|
|
47
|
+
- GitHub: https://github.com/PhantomPM/phantom
|
|
48
|
+
- Discord: https://discord.gg/phantom
|
|
49
|
+
|
|
50
|
+
## License
|
|
51
|
+
|
|
52
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAiMtD"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// PHANTOM CLI - Configuration Commands
|
|
2
|
+
import { getConfig } from '@phantom-pm/core';
|
|
3
|
+
import { input, password } from '@inquirer/prompts';
|
|
4
|
+
export function registerConfigCommands(program) {
|
|
5
|
+
const config = program
|
|
6
|
+
.command('config')
|
|
7
|
+
.description('Manage PHANTOM configuration and API keys');
|
|
8
|
+
config
|
|
9
|
+
.command('set')
|
|
10
|
+
.description('Set configuration values')
|
|
11
|
+
.argument('<key>', 'Configuration key (e.g., apiKey.openai)')
|
|
12
|
+
.argument('<value>', 'Configuration value')
|
|
13
|
+
.action(async (key, value) => {
|
|
14
|
+
const cfg = getConfig();
|
|
15
|
+
// Parse nested keys like apiKey.openai
|
|
16
|
+
const parts = key.split('.');
|
|
17
|
+
if (parts.length === 1) {
|
|
18
|
+
// Top-level config
|
|
19
|
+
cfg.set(key, value);
|
|
20
|
+
}
|
|
21
|
+
else if (parts[0] === 'apiKeys') {
|
|
22
|
+
// API key
|
|
23
|
+
cfg.setAPIKey(parts[1], value);
|
|
24
|
+
}
|
|
25
|
+
console.log(`✅ Set ${key} = ${value.replace(/./g, '*').slice(0, 10)}...`);
|
|
26
|
+
});
|
|
27
|
+
config
|
|
28
|
+
.command('get')
|
|
29
|
+
.description('Get configuration value')
|
|
30
|
+
.argument('[key]', 'Configuration key (e.g., apiKey.openai)')
|
|
31
|
+
.action((key) => {
|
|
32
|
+
const cfg = getConfig();
|
|
33
|
+
if (!key) {
|
|
34
|
+
// Show all config (filter sensitive data)
|
|
35
|
+
const allConfig = cfg.get();
|
|
36
|
+
const filtered = {
|
|
37
|
+
...allConfig,
|
|
38
|
+
apiKeys: Object.keys(allConfig.apiKeys).reduce((acc, k) => ({
|
|
39
|
+
...acc,
|
|
40
|
+
[k]: allConfig.apiKeys[k]
|
|
41
|
+
? '******'
|
|
42
|
+
: undefined
|
|
43
|
+
}), {}),
|
|
44
|
+
};
|
|
45
|
+
console.log(JSON.stringify(filtered, null, 2));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const parts = key.split('.');
|
|
49
|
+
if (parts.length === 1) {
|
|
50
|
+
// Top-level config
|
|
51
|
+
const value = cfg.get()[key];
|
|
52
|
+
console.log(value);
|
|
53
|
+
}
|
|
54
|
+
else if (parts[0] === 'apiKeys') {
|
|
55
|
+
// API key
|
|
56
|
+
const value = cfg.getAPIKey(parts[1]);
|
|
57
|
+
console.log(value ? '******' : '(not set)');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
config
|
|
62
|
+
.command('setup')
|
|
63
|
+
.description('Interactive configuration setup wizard')
|
|
64
|
+
.action(async () => {
|
|
65
|
+
console.log('🔧 PHANTOM Configuration Wizard\n');
|
|
66
|
+
const cfg = getConfig();
|
|
67
|
+
// OpenAI API Key
|
|
68
|
+
const openaiKey = await input({
|
|
69
|
+
message: 'OpenAI API Key (optional, for GPT-4, embeddings):',
|
|
70
|
+
default: cfg.getAPIKey('openai') || '',
|
|
71
|
+
});
|
|
72
|
+
if (openaiKey) {
|
|
73
|
+
cfg.setAPIKey('openai', openaiKey);
|
|
74
|
+
console.log('✅ OpenAI API key saved');
|
|
75
|
+
}
|
|
76
|
+
// Anthropic API Key
|
|
77
|
+
const anthropicKey = await input({
|
|
78
|
+
message: 'Anthropic API Key (optional, for Claude):',
|
|
79
|
+
default: cfg.getAPIKey('anthropic') || '',
|
|
80
|
+
});
|
|
81
|
+
if (anthropicKey) {
|
|
82
|
+
cfg.setAPIKey('anthropic', anthropicKey);
|
|
83
|
+
console.log('✅ Anthropic API key saved');
|
|
84
|
+
}
|
|
85
|
+
// GitHub OAuth
|
|
86
|
+
console.log('\n📦 GitHub Integration (for cloning repos, creating issues):');
|
|
87
|
+
const githubClientId = await input({
|
|
88
|
+
message: 'GitHub OAuth Client ID (optional):',
|
|
89
|
+
default: cfg.getAPIKey('githubClientId') || '',
|
|
90
|
+
});
|
|
91
|
+
const githubClientSecret = await password({
|
|
92
|
+
message: 'GitHub OAuth Client Secret (optional):',
|
|
93
|
+
mask: true,
|
|
94
|
+
});
|
|
95
|
+
if (githubClientId && githubClientSecret) {
|
|
96
|
+
cfg.setAPIKey('githubClientId', githubClientId);
|
|
97
|
+
cfg.setAPIKey('githubClientSecret', githubClientSecret);
|
|
98
|
+
console.log('✅ GitHub OAuth credentials saved');
|
|
99
|
+
}
|
|
100
|
+
// Theme
|
|
101
|
+
const theme = await input({
|
|
102
|
+
message: 'Theme (matrix, cyberpunk, minimal):',
|
|
103
|
+
default: cfg.get().theme || 'matrix',
|
|
104
|
+
validate: (value) => ['matrix', 'cyberpunk', 'minimal'].includes(value)
|
|
105
|
+
? true
|
|
106
|
+
: 'Please choose matrix, cyberpunk, or minimal',
|
|
107
|
+
});
|
|
108
|
+
cfg.set('theme', theme);
|
|
109
|
+
// Save config
|
|
110
|
+
cfg.completeFirstRun();
|
|
111
|
+
console.log('\n🎉 Configuration complete!');
|
|
112
|
+
console.log('You can now use:');
|
|
113
|
+
console.log(' phantom swarm "Should we add dark mode?"');
|
|
114
|
+
console.log(' phantom prd create "New Feature"');
|
|
115
|
+
console.log(' phantom config get');
|
|
116
|
+
});
|
|
117
|
+
config
|
|
118
|
+
.command('clear')
|
|
119
|
+
.description('Clear configuration (including API keys)')
|
|
120
|
+
.option('--api-keys', 'Clear only API keys')
|
|
121
|
+
.action((options) => {
|
|
122
|
+
const cfg = getConfig();
|
|
123
|
+
if (options.apiKeys) {
|
|
124
|
+
cfg.clearAPIKeys();
|
|
125
|
+
console.log('✅ Cleared all API keys');
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Reset to defaults
|
|
129
|
+
const defaultConfig = cfg.get();
|
|
130
|
+
defaultConfig.firstRun = true;
|
|
131
|
+
defaultConfig.integrations = [];
|
|
132
|
+
defaultConfig.projects = [];
|
|
133
|
+
defaultConfig.installedModules = [];
|
|
134
|
+
defaultConfig.apiKeys = {};
|
|
135
|
+
cfg.save();
|
|
136
|
+
console.log('✅ Cleared all configuration (reset to defaults)');
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
config
|
|
140
|
+
.command('env')
|
|
141
|
+
.description('Show environment configuration status')
|
|
142
|
+
.action(() => {
|
|
143
|
+
const cfg = getConfig();
|
|
144
|
+
const configData = cfg.get();
|
|
145
|
+
console.log('🔍 PHANTOM Configuration Status\n');
|
|
146
|
+
console.log('📊 General:');
|
|
147
|
+
console.log(` Version: ${configData.version}`);
|
|
148
|
+
console.log(` Theme: ${configData.theme}`);
|
|
149
|
+
console.log(` Data Mode: ${configData.dataMode}`);
|
|
150
|
+
console.log(` First Run: ${configData.firstRun}`);
|
|
151
|
+
console.log(` Installed Modules: ${configData.installedModules.length}`);
|
|
152
|
+
console.log('\n🔑 API Keys:');
|
|
153
|
+
const apiKeys = configData.apiKeys;
|
|
154
|
+
console.log(` OpenAI: ${apiKeys.openai ? '✅ Set' : '❌ Not set'}`);
|
|
155
|
+
console.log(` Anthropic: ${apiKeys.anthropic ? '✅ Set' : '❌ Not set'}`);
|
|
156
|
+
console.log(` GitHub OAuth: ${apiKeys.githubClientId ? '✅ Set' : '❌ Not set'}`);
|
|
157
|
+
console.log('\n🤖 AI Models:');
|
|
158
|
+
console.log(` Primary: ${configData.primaryModel.provider} (${configData.primaryModel.model})`);
|
|
159
|
+
console.log(` Status: ${configData.primaryModel.status}`);
|
|
160
|
+
if (configData.fallbackModel) {
|
|
161
|
+
console.log(` Fallback: ${configData.fallbackModel.provider} (${configData.fallbackModel.model})`);
|
|
162
|
+
}
|
|
163
|
+
console.log('\n🔗 Integrations:');
|
|
164
|
+
configData.integrations.forEach((integration, i) => {
|
|
165
|
+
console.log(` ${i + 1}. ${integration.name}: ${integration.connected ? '✅ Connected' : '❌ Disconnected'}`);
|
|
166
|
+
});
|
|
167
|
+
console.log('\n💡 Environment Variables:');
|
|
168
|
+
console.log(` OPENAI_API_KEY: ${process.env.OPENAI_API_KEY ? '✅ Set' : '❌ Not set'}`);
|
|
169
|
+
console.log(` ANTHROPIC_API_KEY: ${process.env.ANTHROPIC_API_KEY ? '✅ Set' : '❌ Not set'}`);
|
|
170
|
+
console.log(` GITHUB_CLIENT_ID: ${process.env.GITHUB_CLIENT_ID ? '✅ Set' : '❌ Not set'}`);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stories.d.ts","sourceRoot":"","sources":["../../src/commands/stories.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QAyHvD"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// PHANTOM CLI - Stories Commands
|
|
2
|
+
import { getModuleManager } from '@phantom-pm/core';
|
|
3
|
+
import { theme } from '@phantom-pm/tui';
|
|
4
|
+
export function registerStoriesCommands(program) {
|
|
5
|
+
const stories = program
|
|
6
|
+
.command('stories')
|
|
7
|
+
.description('Generate user stories from feature description or PRD');
|
|
8
|
+
stories
|
|
9
|
+
.command('generate')
|
|
10
|
+
.description('Generate user stories from a feature description')
|
|
11
|
+
.argument('<feature>', 'Feature description')
|
|
12
|
+
.option('-c, --count <number>', 'Number of stories to generate', '5')
|
|
13
|
+
.option('--no-edge-cases', 'Skip edge case stories')
|
|
14
|
+
.option('-o, --output <filename>', 'Output filename', 'user-stories.md')
|
|
15
|
+
.option('--json', 'Output as JSON')
|
|
16
|
+
.action(async (feature, options) => {
|
|
17
|
+
try {
|
|
18
|
+
const moduleManager = getModuleManager();
|
|
19
|
+
// Ensure story-writer module is installed
|
|
20
|
+
if (!moduleManager.isInstalled('story-writer')) {
|
|
21
|
+
console.log('');
|
|
22
|
+
console.log(theme.warning(' Story Writer module not installed. Installing...'));
|
|
23
|
+
await moduleManager.install('story-writer');
|
|
24
|
+
}
|
|
25
|
+
const result = await moduleManager.executeCommand('story-writer', 'stories generate', {
|
|
26
|
+
feature,
|
|
27
|
+
count: parseInt(options.count || '5'),
|
|
28
|
+
includeEdgeCases: options.edgeCases !== false,
|
|
29
|
+
output: options.output,
|
|
30
|
+
_: ['generate', feature],
|
|
31
|
+
});
|
|
32
|
+
if (options.json) {
|
|
33
|
+
console.log(JSON.stringify(result, null, 2));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
console.log('');
|
|
37
|
+
console.log(theme.success(' Stories generated successfully!'));
|
|
38
|
+
console.log(` ${theme.secondary('Feature:')} ${feature}`);
|
|
39
|
+
console.log(` ${theme.secondary('Stories:')} ${result.stories?.length || 0}`);
|
|
40
|
+
console.log(` ${theme.secondary('Total Points:')} ${result.totalPoints || 0}`);
|
|
41
|
+
if (result.filePath) {
|
|
42
|
+
console.log(` ${theme.secondary('Output:')} ${result.filePath}`);
|
|
43
|
+
}
|
|
44
|
+
console.log('');
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
const message = err instanceof Error ? err.message : 'Failed to generate stories';
|
|
48
|
+
if (options.json) {
|
|
49
|
+
console.log(JSON.stringify({ status: 'error', error: message }, null, 2));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log('');
|
|
53
|
+
console.log(theme.error(` ${message}`));
|
|
54
|
+
console.log('');
|
|
55
|
+
}
|
|
56
|
+
process.exitCode = 1;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
stories
|
|
60
|
+
.command('from-prd')
|
|
61
|
+
.description('Generate user stories from a PRD file')
|
|
62
|
+
.argument('<prd-path>', 'Path to PRD file')
|
|
63
|
+
.option('-s, --sprints <number>', 'Number of sprints to plan', '2')
|
|
64
|
+
.option('--json', 'Output as JSON')
|
|
65
|
+
.action(async (prdPath, options) => {
|
|
66
|
+
try {
|
|
67
|
+
const moduleManager = getModuleManager();
|
|
68
|
+
// Ensure story-writer module is installed
|
|
69
|
+
if (!moduleManager.isInstalled('story-writer')) {
|
|
70
|
+
console.log('');
|
|
71
|
+
console.log(theme.warning(' Story Writer module not installed. Installing...'));
|
|
72
|
+
await moduleManager.install('story-writer');
|
|
73
|
+
}
|
|
74
|
+
const result = await moduleManager.executeCommand('story-writer', 'stories from-prd', {
|
|
75
|
+
prdPath,
|
|
76
|
+
sprintCount: parseInt(options.sprints || '2'),
|
|
77
|
+
_: ['from-prd', prdPath],
|
|
78
|
+
});
|
|
79
|
+
if (options.json) {
|
|
80
|
+
console.log(JSON.stringify(result, null, 2));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
console.log('');
|
|
84
|
+
console.log(theme.success(' Stories generated from PRD successfully!'));
|
|
85
|
+
console.log(` ${theme.secondary('PRD Path:')} ${prdPath}`);
|
|
86
|
+
console.log(` ${theme.secondary('Sprints:')} ${result.sprints?.length || 0}`);
|
|
87
|
+
console.log(` ${theme.secondary('Total Stories:')} ${result.totalStories || 0}`);
|
|
88
|
+
if (result.outputPath) {
|
|
89
|
+
console.log(` ${theme.secondary('Output:')} ${result.outputPath}`);
|
|
90
|
+
}
|
|
91
|
+
console.log('');
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
const message = err instanceof Error ? err.message : 'Failed to generate stories from PRD';
|
|
95
|
+
if (options.json) {
|
|
96
|
+
console.log(JSON.stringify({ status: 'error', error: message }, null, 2));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.log('');
|
|
100
|
+
console.log(theme.error(` ${message}`));
|
|
101
|
+
console.log('');
|
|
102
|
+
}
|
|
103
|
+
process.exitCode = 1;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
stories
|
|
107
|
+
.description('Show story generation usage')
|
|
108
|
+
.action(() => {
|
|
109
|
+
console.log('');
|
|
110
|
+
console.log(theme.title(' USER STORY GENERATION'));
|
|
111
|
+
console.log(theme.secondary(' AI-powered user story generation from features or PRDs'));
|
|
112
|
+
console.log('');
|
|
113
|
+
console.log(` ${theme.accent('phantom stories generate "User authentication system"')}`);
|
|
114
|
+
console.log(` ${theme.accent('phantom stories from-prd ./my-product-prd.md')}`);
|
|
115
|
+
console.log(` ${theme.accent('phantom stories generate "Payment processing" --count 8')}`);
|
|
116
|
+
console.log('');
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stories.js","sourceRoot":"","sources":["../../src/commands/stories.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,uDAAuD,CAAC,CAAC;IAExE,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,kDAAkD,CAAC;SAC/D,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;SAC5C,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,EAAE,GAAG,CAAC;SACpE,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SACnD,MAAM,CAAC,yBAAyB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;SACvE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAAiF,EAAE,EAAE;QACnH,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;YAEzC,0CAA0C;YAC1C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,CAAC;gBACjF,MAAM,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC9C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,cAAc,EAAE,kBAAkB,EAAE;gBACpF,OAAO;gBACP,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;gBACrC,gBAAgB,EAAE,OAAO,CAAC,SAAS,KAAK,KAAK;gBAC7C,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;aACzB,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,CAAC;YAChF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC;YAClF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,uCAAuC,CAAC;SACpD,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;SAC1C,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,EAAE,GAAG,CAAC;SAClE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAA6C,EAAE,EAAE;QAC/E,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;YAEzC,0CAA0C;YAC1C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,CAAC;gBACjF,MAAM,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC9C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,cAAc,EAAE,kBAAkB,EAAE;gBACpF,OAAO;gBACP,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC;gBAC7C,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;aACzB,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC,CAAC;YAClF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC,CAAC;YAC3F,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":""}
|