tailar 0.3.0 → 0.4.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.
Files changed (54) hide show
  1. package/README.md +35 -0
  2. package/README.npm.md +35 -0
  3. package/dist/commands/add.d.ts.map +1 -1
  4. package/dist/commands/add.js +40 -16
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +82 -28
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/list.d.ts.map +1 -1
  10. package/dist/commands/list.js +3 -3
  11. package/dist/commands/list.js.map +1 -1
  12. package/dist/commands/playground.d.ts +9 -0
  13. package/dist/commands/playground.d.ts.map +1 -0
  14. package/dist/commands/playground.js +159 -0
  15. package/dist/commands/playground.js.map +1 -0
  16. package/dist/commands/sync.d.ts +9 -0
  17. package/dist/commands/sync.d.ts.map +1 -0
  18. package/dist/commands/sync.js +59 -0
  19. package/dist/commands/sync.js.map +1 -0
  20. package/dist/index.js +14 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/installers/files.d.ts +3 -3
  23. package/dist/installers/files.d.ts.map +1 -1
  24. package/dist/installers/files.js +17 -11
  25. package/dist/installers/files.js.map +1 -1
  26. package/dist/installers/install-feature.d.ts +5 -0
  27. package/dist/installers/install-feature.d.ts.map +1 -1
  28. package/dist/installers/install-feature.js +28 -2
  29. package/dist/installers/install-feature.js.map +1 -1
  30. package/dist/installers/post-install.d.ts +4 -1
  31. package/dist/installers/post-install.d.ts.map +1 -1
  32. package/dist/installers/post-install.js +7 -3
  33. package/dist/installers/post-install.js.map +1 -1
  34. package/dist/registry/loader.d.ts +4 -0
  35. package/dist/registry/loader.d.ts.map +1 -1
  36. package/dist/registry/loader.js +28 -8
  37. package/dist/registry/loader.js.map +1 -1
  38. package/dist/registry/local-mode.d.ts +30 -0
  39. package/dist/registry/local-mode.d.ts.map +1 -0
  40. package/dist/registry/local-mode.js +81 -0
  41. package/dist/registry/local-mode.js.map +1 -0
  42. package/dist/utils/clack-wizard.d.ts +6 -0
  43. package/dist/utils/clack-wizard.d.ts.map +1 -1
  44. package/dist/utils/clack-wizard.js +5 -2
  45. package/dist/utils/clack-wizard.js.map +1 -1
  46. package/dist/utils/init-flags.d.ts +27 -0
  47. package/dist/utils/init-flags.d.ts.map +1 -0
  48. package/dist/utils/init-flags.js +102 -0
  49. package/dist/utils/init-flags.js.map +1 -0
  50. package/dist/utils/local-options.d.ts +7 -0
  51. package/dist/utils/local-options.d.ts.map +1 -0
  52. package/dist/utils/local-options.js +10 -0
  53. package/dist/utils/local-options.js.map +1 -0
  54. package/package.json +2 -1
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Playground Command
3
+ *
4
+ * Create a long-lived app once, with a local Postgres compose file and .env.
5
+ * Later edits use `tailar sync` and do not rebuild this setup.
6
+ */
7
+ import { existsSync, readFileSync, readdirSync, writeFileSync } from "fs";
8
+ import { basename, dirname, isAbsolute, join, resolve } from "path";
9
+ import { Command } from "commander";
10
+ import { logger } from "../utils/logger.js";
11
+ import { addLocalOptions } from "../utils/local-options.js";
12
+ import { enableLocalRegistry } from "../registry/local-mode.js";
13
+ import { runGenerationFromWizardConfig } from "../utils/clack-wizard.js";
14
+ import { buildWizardStateFromFlags } from "../utils/init-flags.js";
15
+ const COMPOSE_FILE = `services:
16
+ postgres:
17
+ image: postgres:16
18
+ environment:
19
+ POSTGRES_USER: postgres
20
+ POSTGRES_PASSWORD: postgres
21
+ POSTGRES_DB: tailar
22
+ ports:
23
+ - "5432:5432"
24
+ volumes:
25
+ - tailar_pg:/var/lib/postgresql/data
26
+
27
+ volumes:
28
+ tailar_pg:
29
+ `;
30
+ const ENV_EXAMPLES = [
31
+ "features/db/shared/env.example",
32
+ "features/emails/resend/env.example",
33
+ "features/auth/organization-based/env.example",
34
+ "features/payments/stripe/shared/env.example",
35
+ ];
36
+ function buildEnvFile(componentsPath) {
37
+ const chunks = [
38
+ "# Generated once by `tailar playground`.",
39
+ "# `tailar sync` does not overwrite this file.",
40
+ "",
41
+ ];
42
+ for (const relativePath of ENV_EXAMPLES) {
43
+ const full = join(componentsPath, relativePath);
44
+ if (!existsSync(full))
45
+ continue;
46
+ chunks.push(readFileSync(full, "utf-8").trim(), "");
47
+ }
48
+ let body = chunks.join("\n");
49
+ body = body.replace(/DATABASE_URL\s*=\s*.*/g, 'DATABASE_URL="postgresql://postgres:postgres@localhost:5432/tailar"');
50
+ body = body.replace(/BETTER_AUTH_SECRET\s*=\s*.*/g, 'BETTER_AUTH_SECRET="dev-only-tailar-playground-secret"');
51
+ body = body
52
+ .split("\n")
53
+ .map((line) => {
54
+ const trimmed = line.trim();
55
+ if (trimmed.startsWith("#") || !trimmed)
56
+ return line;
57
+ if (/^(RESEND_API_KEY|POSTMARK_|SENDGRID_|STRIPE_)/.test(trimmed)) {
58
+ return `# ${trimmed} # optional — pages render without this`;
59
+ }
60
+ return line;
61
+ })
62
+ .join("\n");
63
+ return body.trim() + "\n";
64
+ }
65
+ function writeSupportFiles(projectRoot, componentsPath) {
66
+ const envPath = join(projectRoot, ".env");
67
+ if (!existsSync(envPath)) {
68
+ writeFileSync(envPath, buildEnvFile(componentsPath), "utf-8");
69
+ logger.success("Wrote .env (local Postgres URL and a dev auth secret)");
70
+ }
71
+ else {
72
+ logger.info(".env already exists — left it unchanged");
73
+ }
74
+ const composePath = join(projectRoot, "docker-compose.yml");
75
+ if (!existsSync(composePath)) {
76
+ writeFileSync(composePath, COMPOSE_FILE, "utf-8");
77
+ logger.success("Wrote docker-compose.yml (Postgres)");
78
+ }
79
+ else {
80
+ logger.info("docker-compose.yml already exists — left it unchanged");
81
+ }
82
+ }
83
+ export const playgroundCommand = addLocalOptions(new Command("playground")
84
+ .description("Create a one-time local app for visually checking registry changes")
85
+ .argument("[dir]", "Directory to create", "playground")
86
+ .option("--skip-install", "Skip npm install and post-install commands")
87
+ .option("--verbose", "Show npm install output")).action(async (dir, options) => {
88
+ try {
89
+ const componentsPath = enableLocalRegistry(options.componentsPath);
90
+ const absoluteDir = isAbsolute(dir) ? dir : resolve(process.cwd(), dir);
91
+ const parent = dirname(absoluteDir);
92
+ const projectName = basename(absoluteDir);
93
+ logger.header("Tailar playground");
94
+ logger.info(`Components: ${componentsPath}`);
95
+ const configPath = join(absoluteDir, ".tailar.json");
96
+ if (existsSync(configPath)) {
97
+ logger.info("Playground already exists. Ensuring .env and Postgres compose file.");
98
+ writeSupportFiles(absoluteDir, componentsPath);
99
+ }
100
+ else {
101
+ if (existsSync(absoluteDir)) {
102
+ const existing = readdirSync(absoluteDir).filter((name) => name !== ".git");
103
+ if (existing.length > 0) {
104
+ logger.error(`${absoluteDir} exists and is not a Tailar project. Choose another directory.`);
105
+ process.exit(1);
106
+ }
107
+ }
108
+ const { state, autoNotes } = buildWizardStateFromFlags({
109
+ projectName,
110
+ modules: "database,email,auth,payments",
111
+ db: "postgres",
112
+ email: "resend",
113
+ auth: "organization-based",
114
+ });
115
+ for (const note of autoNotes) {
116
+ logger.info(note);
117
+ }
118
+ await runGenerationFromWizardConfig(parent, state, {
119
+ verbose: options.verbose,
120
+ skipInstall: options.skipInstall,
121
+ skipNextSteps: true,
122
+ beforePostInstall: async (projectRoot) => {
123
+ writeSupportFiles(projectRoot, componentsPath);
124
+ },
125
+ });
126
+ }
127
+ const pm = existsSync(join(absoluteDir, "pnpm-lock.yaml"))
128
+ ? "pnpm"
129
+ : existsSync(join(absoluteDir, "yarn.lock"))
130
+ ? "yarn"
131
+ : existsSync(join(absoluteDir, "bun.lockb"))
132
+ ? "bun"
133
+ : "npm";
134
+ const dev = pm === "yarn"
135
+ ? "yarn dev"
136
+ : pm === "pnpm"
137
+ ? "pnpm dev"
138
+ : pm === "bun"
139
+ ? "bun dev"
140
+ : "npm run dev";
141
+ logger.break();
142
+ logger.success("Playground is ready.");
143
+ logger.info("Start Postgres once, then the app:");
144
+ logger.log(` cd ${projectName}`);
145
+ logger.log(" docker compose up -d");
146
+ logger.log(" npx prisma db push");
147
+ logger.log(` ${dev}`);
148
+ logger.break();
149
+ logger.info("After you edit a feature or component:");
150
+ logger.log(" tailar sync <name> --local --components-path " + componentsPath);
151
+ logger.info("That recopies files into this app and leaves .env alone.");
152
+ logger.break();
153
+ }
154
+ catch (error) {
155
+ logger.error(`Playground setup failed: ${error}`);
156
+ process.exit(1);
157
+ }
158
+ });
159
+ //# sourceMappingURL=playground.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playground.js","sourceRoot":"","sources":["../../src/commands/playground.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Sync Command
3
+ *
4
+ * Recopy one registry entry into an existing project without re-running
5
+ * init, rewriting .env, installing packages that did not change, or Prisma.
6
+ */
7
+ import { Command } from "commander";
8
+ export declare const syncCommand: Command;
9
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,WAAW,SAuDtB,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Sync Command
3
+ *
4
+ * Recopy one registry entry into an existing project without re-running
5
+ * init, rewriting .env, installing packages that did not change, or Prisma.
6
+ */
7
+ import { Command } from "commander";
8
+ import { logger } from "../utils/logger.js";
9
+ import { readConfig } from "../utils/config.js";
10
+ import { detectPackageManager } from "../utils/package-manager.js";
11
+ import { installFeature } from "../installers/install-feature.js";
12
+ import { runInstall } from "../installers/dependencies.js";
13
+ import { addLocalOptions } from "../utils/local-options.js";
14
+ import { enableLocalRegistry, getLocalRegistry, } from "../registry/local-mode.js";
15
+ export const syncCommand = addLocalOptions(new Command("sync")
16
+ .description("Recopy a feature, block, or component into the current project")
17
+ .argument("<name>", "Registry entry to recopy")
18
+ .option("--variant <variant>", "Variant to install")
19
+ .option("--provider <provider>", "Provider answer used to pick a variant")
20
+ .option("--skip-install", "Do not run the package manager even if dependencies changed")).action(async (name, options) => {
21
+ try {
22
+ if (!getLocalRegistry()?.enabled) {
23
+ try {
24
+ enableLocalRegistry(options.componentsPath);
25
+ }
26
+ catch {
27
+ // No sibling components repo: fall back to the API.
28
+ }
29
+ }
30
+ const projectPath = process.cwd();
31
+ const config = await readConfig(projectPath);
32
+ if (!config) {
33
+ logger.error("Tailar not initialized. Run `tailar init` first.");
34
+ process.exit(1);
35
+ }
36
+ logger.header(`Syncing ${name}`);
37
+ const result = await installFeature(projectPath, name, {
38
+ yes: true,
39
+ force: true,
40
+ variant: options.variant,
41
+ provider: options.provider,
42
+ });
43
+ if (result.dependenciesChanged && !options.skipInstall) {
44
+ const packageManager = detectPackageManager(projectPath);
45
+ logger.info("Installing new packages...");
46
+ await runInstall(projectPath, packageManager, { silent: true });
47
+ logger.success("Packages installed");
48
+ }
49
+ logger.break();
50
+ logger.success(`Synced ${name} (${result.postInstallSteps.length} post-install steps skipped).`);
51
+ logger.info(".env was left unchanged.");
52
+ logger.break();
53
+ }
54
+ catch (error) {
55
+ logger.error(`Sync failed: ${error}`);
56
+ process.exit(1);
57
+ }
58
+ });
59
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CACxC,IAAI,OAAO,CAAC,MAAM,CAAC;KAChB,WAAW,CACV,gEAAgE,CACjE;KACA,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;KACnD,MAAM,CAAC,uBAAuB,EAAE,wCAAwC,CAAC;KACzE,MAAM,CACL,gBAAgB,EAChB,6DAA6D,CAC9D,CACJ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAO,EAAE,EAAE;IACvC,IAAI,CAAC;QACH,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACP,oDAAoD;YACtD,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE;YACrD,GAAG,EAAE,IAAI;YACT,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACvD,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC1C,MAAM,UAAU,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,OAAO,CACZ,UAAU,IAAI,KAAK,MAAM,CAAC,gBAAgB,CAAC,MAAM,+BAA+B,CACjF,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -57,6 +57,9 @@ import { Command } from "commander";
57
57
  import { initCommand } from "./commands/init.js";
58
58
  import { addCommand } from "./commands/add.js";
59
59
  import { listCommand } from "./commands/list.js";
60
+ import { syncCommand } from "./commands/sync.js";
61
+ import { playgroundCommand } from "./commands/playground.js";
62
+ import { enableLocalRegistry } from "./registry/local-mode.js";
60
63
  // Get package.json for version
61
64
  const __filename = fileURLToPath(import.meta.url);
62
65
  const __dirname = dirname(__filename);
@@ -66,10 +69,21 @@ program
66
69
  .name("tailar")
67
70
  .description("CLI tool for scaffolding Next.js features and components")
68
71
  .version(packageJson.version);
72
+ program.hook("preAction", (_thisCommand, actionCommand) => {
73
+ const opts = actionCommand.opts();
74
+ if (opts.local || opts.componentsPath) {
75
+ const resolved = enableLocalRegistry(opts.componentsPath);
76
+ if (process.env.TAILAR_QUIET !== "1") {
77
+ console.log(`Using local components: ${resolved}`);
78
+ }
79
+ }
80
+ });
69
81
  // Register commands
70
82
  program.addCommand(initCommand);
71
83
  program.addCommand(addCommand);
72
84
  program.addCommand(listCommand);
85
+ program.addCommand(syncCommand);
86
+ program.addCommand(playgroundCommand);
73
87
  // Global error handler
74
88
  process.on("unhandledRejection", (err) => {
75
89
  console.error("Unhandled error:", err);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * File Installer
3
3
  *
4
4
  * Handles file installation, template substitution, and path resolution.
5
- * Always uses API endpoint for fetching files.
5
+ * Files come from the API, or from disk when local registry mode is on.
6
6
  */
7
7
  import { FileMapping, ProjectContext } from "../types/index.js";
8
8
  /**
@@ -29,8 +29,8 @@ export declare function installFile(sourceContent: string, projectPath: string,
29
29
  strategy?: "override" | "merge";
30
30
  }): Promise<void>;
31
31
  /**
32
- * Install multiple files from file mappings
33
- * Files are always fetched from API endpoint.
32
+ * Install multiple files from file mappings.
33
+ * Local registry mode reads sources from disk and skips purchase checks.
34
34
  */
35
35
  export declare function installFiles(projectPath: string, fileMappings: FileMapping[], context: ProjectContext, variables: Record<string, string> | undefined, options: {
36
36
  overwrite?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/installers/files.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIhE;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACrC,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,MAAM,CAYR;AA8BD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAGT;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACtC,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;CAC5B,GACL,OAAO,CAAC,IAAI,CAAC,CAmCf;AA0BD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,WAAW,EAAE,EAC3B,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAK,EACtC,OAAO,EAAE;IACP,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE;QACd,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,GACA,OAAO,CAAC;IACT,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC,CAiHD"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/installers/files.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKhE;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACrC,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,MAAM,CAYR;AA8BD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAGT;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACtC,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;CAC5B,GACL,OAAO,CAAC,IAAI,CAAC,CAmCf;AA0BD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,WAAW,EAAE,EAC3B,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAK,EACtC,OAAO,EAAE;IACP,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE;QACd,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,GACA,OAAO,CAAC;IACT,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC,CA2HD"}
@@ -2,12 +2,13 @@
2
2
  * File Installer
3
3
  *
4
4
  * Handles file installation, template substitution, and path resolution.
5
- * Always uses API endpoint for fetching files.
5
+ * Files come from the API, or from disk when local registry mode is on.
6
6
  */
7
7
  import { readFile, writeFile, mkdir } from "fs/promises";
8
8
  import { existsSync } from "fs";
9
9
  import { join, dirname } from "path";
10
10
  import { fetchComponentFile, checkSubscription } from "../api/client.js";
11
+ import { getLocalRegistry, readLocalComponentFile } from "../registry/local-mode.js";
11
12
  /**
12
13
  * Resolve template variables in a path
13
14
  */
@@ -135,22 +136,23 @@ async function fetchFileFromAPI(type, name, filePath, variant, requireAuth) {
135
136
  }
136
137
  }
137
138
  /**
138
- * Install multiple files from file mappings
139
- * Files are always fetched from API endpoint.
139
+ * Install multiple files from file mappings.
140
+ * Local registry mode reads sources from disk and skips purchase checks.
140
141
  */
141
142
  export async function installFiles(projectPath, fileMappings, context, variables = {}, options) {
142
143
  const installed = [];
143
144
  const skipped = [];
144
145
  const conflicts = [];
146
+ const local = getLocalRegistry();
145
147
  // Determine if authentication is required based on registry entry
146
148
  // This prevents repeated authentication prompts for paid components
147
- const requireAuth = options.registryEntry?.requiresSubscription === true &&
149
+ const requireAuth = !local?.enabled &&
150
+ options.registryEntry?.requiresSubscription === true &&
148
151
  (options.registryEntry.subscriptionTier || 0) > 0;
149
- // Check subscription before installing
150
- // Note: This is a secondary check - the main check should happen in add.ts
151
- // This is here as a safety net, but we should fail if subscription check fails
152
- // If registryEntry is provided and component is free, skip the check
153
- if (options.componentType && options.componentName) {
152
+ // Check subscription before installing.
153
+ // Local mode is for development and CI and does not talk to the API.
154
+ // If registryEntry is provided and component is free, skip the check.
155
+ if (!local?.enabled && options.componentType && options.componentName) {
154
156
  try {
155
157
  const accessCheck = await checkSubscription(options.componentType, options.componentName, options.registryEntry);
156
158
  if (!accessCheck.accessible) {
@@ -202,8 +204,12 @@ export async function installFiles(projectPath, fileMappings, context, variables
202
204
  mapping.providers.db[dbFeature.variant] ?? mapping.source;
203
205
  }
204
206
  }
205
- // Always fetch from API
206
- sourceContent = await fetchFileFromAPI(options.componentType, options.componentName, effectiveSource, options.variant, requireAuth);
207
+ if (local?.enabled) {
208
+ sourceContent = await readLocalComponentFile(local.componentsPath, options.componentType, options.componentName, effectiveSource);
209
+ }
210
+ else {
211
+ sourceContent = await fetchFileFromAPI(options.componentType, options.componentName, effectiveSource, options.variant, requireAuth);
212
+ }
207
213
  // Install file
208
214
  await installFile(sourceContent, projectPath, targetPath, variables, {
209
215
  overwrite: effectiveOverwrite,
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/installers/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/installers/files.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Programmatic install of a registry feature (same pipeline as tailar add).
3
3
  */
4
+ import type { ProjectConfig } from '../types/index.js';
4
5
  export interface InstallFeatureOptions {
5
6
  yes?: boolean;
6
7
  force?: boolean;
@@ -17,7 +18,11 @@ export interface InstallFeatureOptions {
17
18
  export interface InstallFeatureResult {
18
19
  postInstallSteps: unknown[];
19
20
  hasDependencies: boolean;
21
+ /** True when package.json contents changed. */
22
+ dependenciesChanged: boolean;
20
23
  }
24
+ /** Variant already recorded in .tailar.json, if this entry was installed before. */
25
+ export declare function installedVariantFor(config: ProjectConfig | null | undefined, name: string): string | undefined;
21
26
  /**
22
27
  * Install a single registry entry by name. Caller must install dependencies first if needed.
23
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"install-feature.d.ts","sourceRoot":"","sources":["../../src/installers/install-feature.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,OAAO,EAAE,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAYD;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAgK/B"}
1
+ {"version":3,"file":"install-feature.d.ts","sourceRoot":"","sources":["../../src/installers/install-feature.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,mBAAmB,CAAC;AAMvE,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,OAAO,EAAE,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,+CAA+C;IAC/C,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,EACxC,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CASpB;AAYD;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CA4K/B"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Programmatic install of a registry feature (same pipeline as tailar add).
3
3
  */
4
+ import { readFile } from 'fs/promises';
5
+ import { join } from 'path';
4
6
  import { readConfig, writeConfig, addInstalledItem, } from '../utils/config.js';
5
7
  import { detectPackageManager } from '../utils/package-manager.js';
6
8
  import { detectProjectStructure } from '../utils/validation.js';
@@ -12,7 +14,20 @@ import { mergeDependencies, collectDependencies } from './dependencies.js';
12
14
  import { collectTemplateVariables, extractVariablesFromAnswers, mergeVariables, } from './templates.js';
13
15
  import { isAuthenticated, authenticate } from '../auth/flow.js';
14
16
  import { checkSubscription } from '../api/client.js';
17
+ import { getLocalRegistry } from '../registry/local-mode.js';
15
18
  import { logger } from '../utils/logger.js';
19
+ /** Variant already recorded in .tailar.json, if this entry was installed before. */
20
+ export function installedVariantFor(config, name) {
21
+ if (!config)
22
+ return undefined;
23
+ const items = [
24
+ ...config.installed.features,
25
+ ...config.installed.blocks,
26
+ ...config.installed.components,
27
+ ...(config.installed.templates ?? []),
28
+ ];
29
+ return items.find((item) => item.name === name)?.variant;
30
+ }
16
31
  function defaultAnswersFromQuestions(questions) {
17
32
  const out = {};
18
33
  for (const q of questions) {
@@ -43,7 +58,7 @@ export async function installFeature(projectPath, name, options = {}) {
43
58
  throw new Error(`Entry not found: ${name}`);
44
59
  }
45
60
  const requiresSubscription = entry.requiresSubscription === true && (entry.subscriptionTier || 0) > 0;
46
- if (requiresSubscription) {
61
+ if (requiresSubscription && !getLocalRegistry()?.enabled) {
47
62
  if (!(await isAuthenticated())) {
48
63
  await authenticate();
49
64
  }
@@ -83,10 +98,16 @@ export async function installFeature(projectPath, name, options = {}) {
83
98
  }
84
99
  if (options.variant)
85
100
  answers.variant = options.variant;
101
+ const rememberedVariant = !options.variant && !options.provider && !options.presetAnswers
102
+ ? installedVariantFor(context.config, name)
103
+ : undefined;
86
104
  let selectedVariant;
87
105
  if (options.variant) {
88
106
  selectedVariant = options.variant;
89
107
  }
108
+ else if (rememberedVariant) {
109
+ selectedVariant = rememberedVariant;
110
+ }
90
111
  else if (typeof answers.variant === 'string') {
91
112
  selectedVariant = answers.variant;
92
113
  }
@@ -145,8 +166,13 @@ export async function installFeature(projectPath, name, options = {}) {
145
166
  logger.success(`Installed ${result.installed.length} files for ${entry.label}`);
146
167
  const deps = collectDependencies(entry, selectedVariant);
147
168
  let hasDependencies = false;
169
+ let dependenciesChanged = false;
148
170
  if (deps.length > 0) {
171
+ const packagePath = join(context.root, 'package.json');
172
+ const before = await readFile(packagePath, 'utf-8');
149
173
  await mergeDependencies(context.root, deps);
174
+ const after = await readFile(packagePath, 'utf-8');
175
+ dependenciesChanged = before !== after;
150
176
  hasDependencies = true;
151
177
  }
152
178
  const postInstallSteps = [
@@ -164,6 +190,6 @@ export async function installFeature(projectPath, name, options = {}) {
164
190
  });
165
191
  await writeConfig(context.root, updatedConfig);
166
192
  context.config = updatedConfig;
167
- return { postInstallSteps, hasDependencies };
193
+ return { postInstallSteps, hasDependencies, dependenciesChanged };
168
194
  }
169
195
  //# sourceMappingURL=install-feature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-feature.js","sourceRoot":"","sources":["../../src/installers/install-feature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-feature.js","sourceRoot":"","sources":["../../src/installers/install-feature.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,8 @@ export declare function executePostInstallStep(projectPath: string, step: PostIn
14
14
  * 1. Run commands (deduplicated)
15
15
  * 2. Display next steps section
16
16
  */
17
- export declare function executePostInstallSteps(projectPath: string, steps: PostInstallStep[], context?: ProjectContext): Promise<void>;
17
+ export declare function executePostInstallSteps(projectPath: string, steps: PostInstallStep[], context?: ProjectContext, options?: {
18
+ skipCommands?: boolean;
19
+ skipNextSteps?: boolean;
20
+ }): Promise<void>;
18
21
  //# sourceMappingURL=post-install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-install.d.ts","sourceRoot":"","sources":["../../src/installers/post-install.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGpE;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,eAAe,EAAE,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CA+Ef"}
1
+ {"version":3,"file":"post-install.d.ts","sourceRoot":"","sources":["../../src/installers/post-install.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGpE;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,eAAe,EAAE,EACxB,OAAO,CAAC,EAAE,cAAc,EACxB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GAChE,OAAO,CAAC,IAAI,CAAC,CAoFf"}
@@ -40,7 +40,7 @@ export async function executePostInstallStep(projectPath, step) {
40
40
  * 1. Run commands (deduplicated)
41
41
  * 2. Display next steps section
42
42
  */
43
- export async function executePostInstallSteps(projectPath, steps, context) {
43
+ export async function executePostInstallSteps(projectPath, steps, context, options = {}) {
44
44
  // Separate steps by type
45
45
  const runCommands = [];
46
46
  const envSteps = [];
@@ -72,9 +72,12 @@ export async function executePostInstallSteps(projectPath, steps, context) {
72
72
  throw error;
73
73
  }
74
74
  }
75
- // Execute run-command steps (deduplicated)
75
+ // Execute run-command steps (deduplicated).
76
+ // Skipped in install smoke and `tailar sync` so Prisma is not reset.
76
77
  const executedCommands = new Set();
77
78
  for (const step of runCommands) {
79
+ if (options.skipCommands)
80
+ continue;
78
81
  if (!step.command)
79
82
  continue;
80
83
  // Skip if we've already run this exact command
@@ -92,7 +95,8 @@ export async function executePostInstallSteps(projectPath, steps, context) {
92
95
  }
93
96
  }
94
97
  // Display next steps section
95
- if (envSteps.length > 0 || instructionSteps.length > 0) {
98
+ if (!options.skipNextSteps &&
99
+ (envSteps.length > 0 || instructionSteps.length > 0)) {
96
100
  logger.info("\n");
97
101
  logger.success("Next steps:\n");
98
102
  let stepNumber = 1;