tailar 0.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/LICENSE +22 -0
- package/README.md +183 -0
- package/README.npm.md +183 -0
- package/dist/api/client.d.ts +47 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +329 -0
- package/dist/api/client.js.map +1 -0
- package/dist/auth/browser.d.ts +11 -0
- package/dist/auth/browser.d.ts.map +1 -0
- package/dist/auth/browser.js +46 -0
- package/dist/auth/browser.js.map +1 -0
- package/dist/auth/flow.d.ts +28 -0
- package/dist/auth/flow.d.ts.map +1 -0
- package/dist/auth/flow.js +171 -0
- package/dist/auth/flow.js.map +1 -0
- package/dist/auth/storage.d.ts +30 -0
- package/dist/auth/storage.d.ts.map +1 -0
- package/dist/auth/storage.js +112 -0
- package/dist/auth/storage.js.map +1 -0
- package/dist/commands/add.d.ts +8 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +285 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +230 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +8 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +176 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/installers/dependencies.d.ts +27 -0
- package/dist/installers/dependencies.d.ts.map +1 -0
- package/dist/installers/dependencies.js +185 -0
- package/dist/installers/dependencies.js.map +1 -0
- package/dist/installers/files.d.ts +50 -0
- package/dist/installers/files.d.ts.map +1 -0
- package/dist/installers/files.js +211 -0
- package/dist/installers/files.js.map +1 -0
- package/dist/installers/install-feature.d.ts +20 -0
- package/dist/installers/install-feature.d.ts.map +1 -0
- package/dist/installers/install-feature.js +169 -0
- package/dist/installers/install-feature.js.map +1 -0
- package/dist/installers/post-install.d.ts +18 -0
- package/dist/installers/post-install.d.ts.map +1 -0
- package/dist/installers/post-install.js +228 -0
- package/dist/installers/post-install.js.map +1 -0
- package/dist/installers/templates.d.ts +22 -0
- package/dist/installers/templates.d.ts.map +1 -0
- package/dist/installers/templates.js +62 -0
- package/dist/installers/templates.js.map +1 -0
- package/dist/registry/loader.d.ts +21 -0
- package/dist/registry/loader.d.ts.map +1 -0
- package/dist/registry/loader.js +83 -0
- package/dist/registry/loader.js.map +1 -0
- package/dist/registry/query.d.ts +55 -0
- package/dist/registry/query.d.ts.map +1 -0
- package/dist/registry/query.js +123 -0
- package/dist/registry/query.js.map +1 -0
- package/dist/types/config.d.ts +85 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/registry.d.ts +180 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/registry.js +8 -0
- package/dist/types/registry.js.map +1 -0
- package/dist/types/wizard.d.ts +43 -0
- package/dist/types/wizard.d.ts.map +1 -0
- package/dist/types/wizard.js +59 -0
- package/dist/types/wizard.js.map +1 -0
- package/dist/utils/clack-wizard.d.ts +9 -0
- package/dist/utils/clack-wizard.d.ts.map +1 -0
- package/dist/utils/clack-wizard.js +328 -0
- package/dist/utils/clack-wizard.js.map +1 -0
- package/dist/utils/config.d.ts +49 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +121 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +56 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +93 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/package-manager.d.ts +41 -0
- package/dist/utils/package-manager.d.ts.map +1 -0
- package/dist/utils/package-manager.js +118 -0
- package/dist/utils/package-manager.js.map +1 -0
- package/dist/utils/prompts.d.ts +22 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +142 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/validation.d.ts +50 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +108 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init Command
|
|
3
|
+
*
|
|
4
|
+
* Initialize a new Tailar project or add Tailar to an existing Next.js project.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from "commander";
|
|
7
|
+
import { logger } from "../utils/logger.js";
|
|
8
|
+
import { validateProject, detectProjectStructure, isNextJsProject, } from "../utils/validation.js";
|
|
9
|
+
import { detectPackageManager, } from "../utils/package-manager.js";
|
|
10
|
+
import { readConfig, writeConfig, createInitialConfig, } from "../utils/config.js";
|
|
11
|
+
import { loadRegistry } from "../registry/loader.js";
|
|
12
|
+
import { getFeature } from "../registry/query.js";
|
|
13
|
+
import { installFiles } from "../installers/files.js";
|
|
14
|
+
import { mergeDependencies, runInstall, collectDependencies, } from "../installers/dependencies.js";
|
|
15
|
+
import { executePostInstallSteps } from "../installers/post-install.js";
|
|
16
|
+
import { isAuthenticated, authenticate } from "../auth/flow.js";
|
|
17
|
+
import { checkSubscription } from "../api/client.js";
|
|
18
|
+
import { confirm } from "../utils/prompts.js";
|
|
19
|
+
import { clackTextInput, runGenerationFromWizardConfig, runInitWizard, } from "../utils/clack-wizard.js";
|
|
20
|
+
export const initCommand = new Command("init")
|
|
21
|
+
.description("Initialize Tailar in your Next.js project")
|
|
22
|
+
.option("-y, --yes", "Skip prompts and use defaults")
|
|
23
|
+
.action(async (options) => {
|
|
24
|
+
try {
|
|
25
|
+
logger.header("🚀 Tailar Initialization");
|
|
26
|
+
const projectPath = process.cwd();
|
|
27
|
+
// Check if Next.js project exists
|
|
28
|
+
let isNext = await isNextJsProject(projectPath);
|
|
29
|
+
let actualProjectPath = projectPath;
|
|
30
|
+
let shadcnCreatedProject = false;
|
|
31
|
+
let detectedProjectName;
|
|
32
|
+
let shadcnProjectName; // Project name used for shadcn init
|
|
33
|
+
if (!isNext) {
|
|
34
|
+
// Authenticate and verify purchase before the guided wizard (paid features).
|
|
35
|
+
if (!(await isAuthenticated())) {
|
|
36
|
+
logger.info("A Tailar purchase is required to use the CLI.");
|
|
37
|
+
logger.break();
|
|
38
|
+
await authenticate();
|
|
39
|
+
logger.break();
|
|
40
|
+
}
|
|
41
|
+
const accessCheck = await checkSubscription("feature", "shared");
|
|
42
|
+
if (!accessCheck.accessible) {
|
|
43
|
+
logger.error(`Access denied: ${accessCheck.reason ?? "Active purchase required."}`);
|
|
44
|
+
logger.info("Visit https://tailar.dev/choose-plan to get access.");
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
const wizardState = await runInitWizard();
|
|
48
|
+
if (!wizardState) {
|
|
49
|
+
// Wizard handles its own messaging and cancellation.
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const generationResult = await runGenerationFromWizardConfig(projectPath, wizardState);
|
|
53
|
+
// After generating a new project via the wizard, we are done.
|
|
54
|
+
// Further Tailar initialization (features, registry, etc.) will be added later.
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// Ensure we're in the correct directory
|
|
58
|
+
if (actualProjectPath !== projectPath) {
|
|
59
|
+
process.chdir(actualProjectPath);
|
|
60
|
+
}
|
|
61
|
+
// Validate project (use actualProjectPath which may have changed)
|
|
62
|
+
const validation = await validateProject(actualProjectPath);
|
|
63
|
+
if (!validation.valid) {
|
|
64
|
+
logger.error("Project validation failed:");
|
|
65
|
+
validation.errors.forEach((err) => logger.error(` ${err}`));
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
if (validation.warnings.length > 0) {
|
|
69
|
+
// Filter out the "already initialized" warning if we just created the project
|
|
70
|
+
const relevantWarnings = shadcnCreatedProject
|
|
71
|
+
? validation.warnings.filter((w) => !w.includes("already initialized"))
|
|
72
|
+
: validation.warnings;
|
|
73
|
+
if (relevantWarnings.length > 0) {
|
|
74
|
+
relevantWarnings.forEach((warn) => logger.warn(warn));
|
|
75
|
+
if (!options.yes) {
|
|
76
|
+
const proceed = await confirm("Continue anyway?", false);
|
|
77
|
+
if (!proceed) {
|
|
78
|
+
logger.info("Initialization cancelled");
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Check if already initialized (only if we didn't just create the project)
|
|
85
|
+
const existingConfig = await readConfig(actualProjectPath);
|
|
86
|
+
if (existingConfig && !shadcnCreatedProject && !options.yes) {
|
|
87
|
+
const reinit = await confirm("Tailar is already initialized. Reinitialize?", false);
|
|
88
|
+
if (!reinit) {
|
|
89
|
+
logger.info("Initialization cancelled");
|
|
90
|
+
process.exit(0);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Detect project structure
|
|
94
|
+
const structure = detectProjectStructure(actualProjectPath);
|
|
95
|
+
logger.success(`Project structure detected: ${structure.hasSrcFolder ? "src/" : "root"}`);
|
|
96
|
+
// Detect package manager
|
|
97
|
+
const packageManager = detectPackageManager(actualProjectPath);
|
|
98
|
+
logger.success(`Package manager: ${packageManager}`);
|
|
99
|
+
// Get project name (skip if shadcn created the project - use detected name)
|
|
100
|
+
// Note: shadcnProjectName was already collected before shadcn init if shadcn created the project
|
|
101
|
+
let projectName = detectedProjectName;
|
|
102
|
+
if (!shadcnCreatedProject && !options.yes) {
|
|
103
|
+
projectName = await clackTextInput("Project name (optional):", undefined);
|
|
104
|
+
}
|
|
105
|
+
else if (shadcnCreatedProject) {
|
|
106
|
+
// Use the name we collected before running shadcn init
|
|
107
|
+
projectName = shadcnProjectName;
|
|
108
|
+
}
|
|
109
|
+
// Create config
|
|
110
|
+
const config = createInitialConfig({
|
|
111
|
+
name: projectName,
|
|
112
|
+
hasSrcFolder: structure.hasSrcFolder,
|
|
113
|
+
hasAppFolder: structure.hasAppFolder,
|
|
114
|
+
});
|
|
115
|
+
const context = {
|
|
116
|
+
root: actualProjectPath,
|
|
117
|
+
packageManager,
|
|
118
|
+
structure,
|
|
119
|
+
config,
|
|
120
|
+
};
|
|
121
|
+
// Load registry
|
|
122
|
+
logger.info("Loading registry...");
|
|
123
|
+
const spinner = logger.spinner("Fetching components...");
|
|
124
|
+
const registry = await loadRegistry();
|
|
125
|
+
spinner.succeed("Registry loaded");
|
|
126
|
+
// Install default features (i18n and shared)
|
|
127
|
+
logger.header("📦 Installing default features");
|
|
128
|
+
const featuresToInstall = ["i18n", "shared"];
|
|
129
|
+
const allDeps = [];
|
|
130
|
+
// Check if any default features require subscription
|
|
131
|
+
let needsAuth = false;
|
|
132
|
+
for (const featureName of featuresToInstall) {
|
|
133
|
+
const feature = getFeature(registry, featureName);
|
|
134
|
+
if (feature &&
|
|
135
|
+
feature.requiresSubscription === true &&
|
|
136
|
+
(feature.subscriptionTier || 0) > 0) {
|
|
137
|
+
needsAuth = true;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Authenticate if needed for paid features
|
|
142
|
+
if (needsAuth) {
|
|
143
|
+
if (!(await isAuthenticated())) {
|
|
144
|
+
logger.info("Authentication required for default features.");
|
|
145
|
+
logger.break();
|
|
146
|
+
await authenticate();
|
|
147
|
+
logger.break();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (const featureName of featuresToInstall) {
|
|
151
|
+
const feature = getFeature(registry, featureName);
|
|
152
|
+
if (!feature) {
|
|
153
|
+
logger.warn(`Feature not found: ${featureName}`);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
// Check subscription for this feature
|
|
157
|
+
const requiresSubscription = feature.requiresSubscription === true &&
|
|
158
|
+
(feature.subscriptionTier || 0) > 0;
|
|
159
|
+
if (requiresSubscription) {
|
|
160
|
+
logger.info(`Verifying subscription for ${feature.label}...`);
|
|
161
|
+
const accessCheck = await checkSubscription("feature", featureName, feature);
|
|
162
|
+
if (!accessCheck.accessible) {
|
|
163
|
+
logger.warn(`Skipping ${feature.label}: ${accessCheck.reason || "Subscription required"}`);
|
|
164
|
+
logger.info("You can install it later with: tailar add " + featureName);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
logger.info(`Installing ${feature.label}...`);
|
|
169
|
+
// Install files
|
|
170
|
+
const installSpinner = logger.spinner("Copying files...");
|
|
171
|
+
const result = await installFiles(actualProjectPath, feature.files, context, {}, {
|
|
172
|
+
overwrite: true,
|
|
173
|
+
componentType: "feature",
|
|
174
|
+
componentName: featureName,
|
|
175
|
+
registryEntry: feature, // Pass registry entry to skip auth for free components
|
|
176
|
+
});
|
|
177
|
+
installSpinner.succeed(`Installed ${result.installed.length} files`);
|
|
178
|
+
// Collect dependencies
|
|
179
|
+
const deps = collectDependencies(feature);
|
|
180
|
+
allDeps.push(...deps);
|
|
181
|
+
// Add to config
|
|
182
|
+
config.installed.features.push({
|
|
183
|
+
name: featureName,
|
|
184
|
+
installedAt: new Date().toISOString(),
|
|
185
|
+
});
|
|
186
|
+
// Execute post-install steps
|
|
187
|
+
if (feature.postInstall && feature.postInstall.length > 0) {
|
|
188
|
+
logger.info("Running post-install steps...");
|
|
189
|
+
await executePostInstallSteps(actualProjectPath, feature.postInstall, context);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Merge dependencies
|
|
193
|
+
if (allDeps.length > 0) {
|
|
194
|
+
logger.info("Updating package.json...");
|
|
195
|
+
const depResult = await mergeDependencies(actualProjectPath, allDeps);
|
|
196
|
+
logger.success(`Added ${depResult.added.dependencies.length} dependencies`);
|
|
197
|
+
if (depResult.conflicts.length > 0) {
|
|
198
|
+
logger.warn("Dependency version conflicts:");
|
|
199
|
+
depResult.conflicts.forEach((conflict) => logger.warn(` ${conflict}`));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Write config
|
|
203
|
+
await writeConfig(actualProjectPath, config);
|
|
204
|
+
logger.success("Configuration saved");
|
|
205
|
+
// Run package manager install
|
|
206
|
+
logger.info("Installing dependencies...");
|
|
207
|
+
const installSpinner = logger.spinner(`Running ${packageManager} install...`);
|
|
208
|
+
await runInstall(actualProjectPath, packageManager, { silent: true });
|
|
209
|
+
installSpinner.succeed("Dependencies installed");
|
|
210
|
+
// Success message
|
|
211
|
+
logger.break();
|
|
212
|
+
logger.success("✨ Tailar initialized successfully!");
|
|
213
|
+
logger.break();
|
|
214
|
+
logger.info("Next steps:");
|
|
215
|
+
// Show cd command if we have a project name (especially if created via shadcn)
|
|
216
|
+
if (detectedProjectName || projectName) {
|
|
217
|
+
const projectDir = detectedProjectName || projectName;
|
|
218
|
+
logger.log(` • cd ${projectDir}`);
|
|
219
|
+
}
|
|
220
|
+
logger.log(" • Run `npx tailar list` to see available features");
|
|
221
|
+
logger.log(" • Run `npx tailar add <feature>` to add features");
|
|
222
|
+
logger.log(" • Check out the documentation at https://tailar.dev/docs");
|
|
223
|
+
logger.break();
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
logger.error(`Initialization failed: ${error}`);
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SAqOpB,CAAC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* List Command
|
|
3
|
+
*
|
|
4
|
+
* List all available features, blocks, and components.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from "commander";
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
import { logger } from "../utils/logger.js";
|
|
9
|
+
import { loadRegistry } from "../registry/loader.js";
|
|
10
|
+
import { readConfig, getInstalledItems } from "../utils/config.js";
|
|
11
|
+
export const listCommand = new Command("list")
|
|
12
|
+
.description("List all available features, blocks, and components")
|
|
13
|
+
.option("--features", "List only features")
|
|
14
|
+
.option("--blocks", "List only blocks")
|
|
15
|
+
.option("--components", "List only components")
|
|
16
|
+
.option("--installed", "List only installed items")
|
|
17
|
+
.action(async (options) => {
|
|
18
|
+
try {
|
|
19
|
+
const projectPath = process.cwd();
|
|
20
|
+
// Load registry
|
|
21
|
+
const spinner = logger.spinner("Loading registry...");
|
|
22
|
+
const registry = await loadRegistry();
|
|
23
|
+
spinner.succeed("Registry loaded");
|
|
24
|
+
// Read config to check installed items
|
|
25
|
+
const config = await readConfig(projectPath);
|
|
26
|
+
const installedFeatures = config
|
|
27
|
+
? getInstalledItems(config, "feature")
|
|
28
|
+
: [];
|
|
29
|
+
const installedBlocks = config ? getInstalledItems(config, "block") : [];
|
|
30
|
+
const installedComponents = config
|
|
31
|
+
? getInstalledItems(config, "component")
|
|
32
|
+
: [];
|
|
33
|
+
// Helper to check if installed
|
|
34
|
+
const isItemInstalled = (type, name) => {
|
|
35
|
+
switch (type) {
|
|
36
|
+
case "feature":
|
|
37
|
+
return installedFeatures.includes(name);
|
|
38
|
+
case "block":
|
|
39
|
+
return installedBlocks.includes(name);
|
|
40
|
+
case "component":
|
|
41
|
+
return installedComponents.includes(name);
|
|
42
|
+
default:
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
// Helper to get subscription badge
|
|
47
|
+
const getSubscriptionBadge = (entry) => {
|
|
48
|
+
if (!entry.requiresSubscription ||
|
|
49
|
+
(entry.subscriptionTier || 0) === 0) {
|
|
50
|
+
return "";
|
|
51
|
+
}
|
|
52
|
+
const tierNames = ["FREE", "SOLO", "TEAM", "AGENCY"];
|
|
53
|
+
const tierName = tierNames[entry.subscriptionTier || 0] ||
|
|
54
|
+
`TIER ${entry.subscriptionTier}`;
|
|
55
|
+
// Color code: SOLO = yellow, TEAM = magenta, AGENCY = cyan
|
|
56
|
+
if (entry.subscriptionTier === 1) {
|
|
57
|
+
return chalk.yellow(`[${tierName}]`);
|
|
58
|
+
}
|
|
59
|
+
else if (entry.subscriptionTier === 2) {
|
|
60
|
+
return chalk.magenta(`[${tierName}]`);
|
|
61
|
+
}
|
|
62
|
+
else if (entry.subscriptionTier === 3) {
|
|
63
|
+
return chalk.cyan(`[${tierName}]`);
|
|
64
|
+
}
|
|
65
|
+
return chalk.dim(`[${tierName}]`);
|
|
66
|
+
};
|
|
67
|
+
// Helper to format entry
|
|
68
|
+
const formatEntry = (entry) => {
|
|
69
|
+
const installed = isItemInstalled(entry.type, entry.name);
|
|
70
|
+
const installedBadge = installed ? chalk.green("✓ installed") : "";
|
|
71
|
+
const subscriptionBadge = getSubscriptionBadge(entry);
|
|
72
|
+
const name = chalk.bold(entry.name);
|
|
73
|
+
const label = chalk.dim(`(${entry.label})`);
|
|
74
|
+
const badges = [subscriptionBadge, installedBadge]
|
|
75
|
+
.filter(Boolean)
|
|
76
|
+
.join(" ");
|
|
77
|
+
return ` ${name} ${label} ${badges}\n ${chalk.dim(entry.description)}`;
|
|
78
|
+
};
|
|
79
|
+
// Filter entries if --installed flag is used
|
|
80
|
+
const filterInstalled = (entries, type) => {
|
|
81
|
+
if (!options.installed)
|
|
82
|
+
return entries;
|
|
83
|
+
return entries.filter((e) => isItemInstalled(type, e.name));
|
|
84
|
+
};
|
|
85
|
+
logger.break();
|
|
86
|
+
logger.header("📦 Tailar Components");
|
|
87
|
+
// Show registry metadata
|
|
88
|
+
logger.log(chalk.dim(`Registry version: ${registry.version}`));
|
|
89
|
+
logger.log(chalk.dim(`Last updated: ${new Date(registry.metadata.lastUpdated).toLocaleDateString()}`));
|
|
90
|
+
logger.break();
|
|
91
|
+
// List features
|
|
92
|
+
if (!options.blocks && !options.components) {
|
|
93
|
+
const features = filterInstalled(registry.features, "feature");
|
|
94
|
+
if (features.length > 0) {
|
|
95
|
+
logger.log(chalk.bold.cyan("Features:"));
|
|
96
|
+
features.forEach((feature) => {
|
|
97
|
+
logger.log(formatEntry(feature));
|
|
98
|
+
// Show variants if any
|
|
99
|
+
if (feature.variants && feature.variants.length > 0) {
|
|
100
|
+
logger.log(chalk.dim(` Variants: ${feature.variants
|
|
101
|
+
.map((v) => v.name)
|
|
102
|
+
.join(", ")}`));
|
|
103
|
+
}
|
|
104
|
+
// Show dependencies if any
|
|
105
|
+
if (feature.featureDependencies &&
|
|
106
|
+
feature.featureDependencies.length > 0) {
|
|
107
|
+
logger.log(chalk.dim(` Requires: ${feature.featureDependencies.join(", ")}`));
|
|
108
|
+
}
|
|
109
|
+
logger.break();
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
else if (options.installed) {
|
|
113
|
+
logger.log(chalk.dim("No features installed"));
|
|
114
|
+
logger.break();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// List blocks
|
|
118
|
+
if (!options.features && !options.components) {
|
|
119
|
+
const blocks = filterInstalled(registry.blocks, "block");
|
|
120
|
+
if (blocks.length > 0) {
|
|
121
|
+
logger.log(chalk.bold.cyan("Blocks:"));
|
|
122
|
+
blocks.forEach((block) => {
|
|
123
|
+
logger.log(formatEntry(block));
|
|
124
|
+
logger.break();
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else if (options.installed && !options.features) {
|
|
128
|
+
logger.log(chalk.dim("No blocks installed"));
|
|
129
|
+
logger.break();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// List components
|
|
133
|
+
if (!options.features && !options.blocks) {
|
|
134
|
+
const components = filterInstalled(registry.components, "component");
|
|
135
|
+
if (components.length > 0) {
|
|
136
|
+
logger.log(chalk.bold.cyan("Components:"));
|
|
137
|
+
components.forEach((component) => {
|
|
138
|
+
logger.log(formatEntry(component));
|
|
139
|
+
// Show dependencies if any
|
|
140
|
+
if (component.featureDependencies &&
|
|
141
|
+
component.featureDependencies.length > 0) {
|
|
142
|
+
logger.log(chalk.dim(` Requires: ${component.featureDependencies.join(", ")}`));
|
|
143
|
+
}
|
|
144
|
+
logger.break();
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
else if (options.installed && !options.features && !options.blocks) {
|
|
148
|
+
logger.log(chalk.dim("No components installed"));
|
|
149
|
+
logger.break();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Show totals
|
|
153
|
+
const totalFeatures = registry.features.length;
|
|
154
|
+
const totalBlocks = registry.blocks.length;
|
|
155
|
+
const totalComponents = registry.components.length;
|
|
156
|
+
const total = totalFeatures + totalBlocks + totalComponents;
|
|
157
|
+
logger.log(chalk.dim(`Total: ${total} items (${totalFeatures} features, ${totalBlocks} blocks, ${totalComponents} components)`));
|
|
158
|
+
if (config) {
|
|
159
|
+
const totalInstalled = installedFeatures.length +
|
|
160
|
+
installedBlocks.length +
|
|
161
|
+
installedComponents.length;
|
|
162
|
+
logger.log(chalk.dim(`Installed: ${totalInstalled} items`));
|
|
163
|
+
}
|
|
164
|
+
logger.break();
|
|
165
|
+
// Show usage hint
|
|
166
|
+
logger.log(chalk.dim("Usage:"));
|
|
167
|
+
logger.log(chalk.dim(" tailar add <name> Add a feature, block, or component"));
|
|
168
|
+
logger.log(chalk.dim(" tailar list --installed Show only installed items"));
|
|
169
|
+
logger.break();
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
logger.error(`Failed to list: ${error}`);
|
|
173
|
+
process.exit(1);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Tailar CLI - Entry Point
|
|
4
|
+
*
|
|
5
|
+
* This is the main entry point for the Tailar CLI tool.
|
|
6
|
+
* It sets up Commander.js and registers all available commands.
|
|
7
|
+
*/
|
|
8
|
+
// Load environment variables from .env file if it exists
|
|
9
|
+
import { existsSync, readFileSync } from "fs";
|
|
10
|
+
import { fileURLToPath } from "url";
|
|
11
|
+
import { dirname, join } from "path";
|
|
12
|
+
// Simple .env file parser (no external dependency needed)
|
|
13
|
+
function parseEnvLines(envContent) {
|
|
14
|
+
const out = {};
|
|
15
|
+
for (const line of envContent.split("\n")) {
|
|
16
|
+
const trimmed = line.trim();
|
|
17
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
18
|
+
continue;
|
|
19
|
+
const match = trimmed.match(/^([^=]+)=(.*)$/);
|
|
20
|
+
if (match) {
|
|
21
|
+
const key = match[1].trim();
|
|
22
|
+
let value = match[2].trim();
|
|
23
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
24
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
25
|
+
value = value.slice(1, -1);
|
|
26
|
+
}
|
|
27
|
+
out[key] = value;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
32
|
+
function loadEnvFile() {
|
|
33
|
+
const cwdEnvPath = join(process.cwd(), ".env");
|
|
34
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
35
|
+
const __dirname = dirname(__filename);
|
|
36
|
+
const cliEnvPath = join(__dirname, "../.env");
|
|
37
|
+
// 1) CLI .env — fills API_BASE_URL etc. when present (local registry).
|
|
38
|
+
// 2) Project .env — fills app secrets; keys here override CLI for same name.
|
|
39
|
+
// Previously only the first existing file was loaded (cwd), so inside any
|
|
40
|
+
// project the CLI never saw API_BASE_URL and always hit tailar.dev (hang).
|
|
41
|
+
const cliVars = existsSync(cliEnvPath)
|
|
42
|
+
? parseEnvLines(readFileSync(cliEnvPath, "utf-8"))
|
|
43
|
+
: {};
|
|
44
|
+
const cwdVars = existsSync(cwdEnvPath)
|
|
45
|
+
? parseEnvLines(readFileSync(cwdEnvPath, "utf-8"))
|
|
46
|
+
: {};
|
|
47
|
+
const merged = { ...cliVars, ...cwdVars };
|
|
48
|
+
for (const [key, value] of Object.entries(merged)) {
|
|
49
|
+
if (!process.env[key]) {
|
|
50
|
+
process.env[key] = value;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Load .env file before importing commands
|
|
55
|
+
loadEnvFile();
|
|
56
|
+
import { Command } from "commander";
|
|
57
|
+
import { initCommand } from "./commands/init.js";
|
|
58
|
+
import { addCommand } from "./commands/add.js";
|
|
59
|
+
import { listCommand } from "./commands/list.js";
|
|
60
|
+
// Get package.json for version
|
|
61
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
62
|
+
const __dirname = dirname(__filename);
|
|
63
|
+
const packageJson = JSON.parse(readFileSync(join(__dirname, "../package.json"), "utf-8"));
|
|
64
|
+
const program = new Command();
|
|
65
|
+
program
|
|
66
|
+
.name("tailar")
|
|
67
|
+
.description("CLI tool for scaffolding Next.js features and components")
|
|
68
|
+
.version(packageJson.version);
|
|
69
|
+
// Register commands
|
|
70
|
+
program.addCommand(initCommand);
|
|
71
|
+
program.addCommand(addCommand);
|
|
72
|
+
program.addCommand(listCommand);
|
|
73
|
+
// Global error handler
|
|
74
|
+
process.on("unhandledRejection", (err) => {
|
|
75
|
+
console.error("Unhandled error:", err);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
});
|
|
78
|
+
process.on("uncaughtException", (err) => {
|
|
79
|
+
console.error("Uncaught exception:", err);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
});
|
|
82
|
+
program.parse();
|
|
83
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Manager
|
|
3
|
+
*
|
|
4
|
+
* Handles merging dependencies into package.json and running install commands.
|
|
5
|
+
*/
|
|
6
|
+
import { DependencyMap, PackageManager } from "../types/index.js";
|
|
7
|
+
/**
|
|
8
|
+
* Merge dependencies into package.json
|
|
9
|
+
*/
|
|
10
|
+
export declare function mergeDependencies(projectPath: string, dependencyMaps: DependencyMap[]): Promise<{
|
|
11
|
+
added: {
|
|
12
|
+
dependencies: string[];
|
|
13
|
+
devDependencies: string[];
|
|
14
|
+
};
|
|
15
|
+
conflicts: string[];
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Run package manager install
|
|
19
|
+
*/
|
|
20
|
+
export declare function runInstall(projectPath: string, packageManager: PackageManager, options?: {
|
|
21
|
+
silent?: boolean;
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Collect all dependencies from entry and its variants
|
|
25
|
+
*/
|
|
26
|
+
export declare function collectDependencies(entry: any, selectedVariant?: string): DependencyMap[];
|
|
27
|
+
//# sourceMappingURL=dependencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/installers/dependencies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAqBlE;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,aAAa,EAAE,GAC9B,OAAO,CAAC;IACT,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,EAAE,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC,CAsID;AAcD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GACL,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,GAAG,EACV,eAAe,CAAC,EAAE,MAAM,GACvB,aAAa,EAAE,CAiBjB"}
|