@tanstack/cta-engine 0.10.0-alpha.19 → 0.10.0-alpha.21

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 (69) hide show
  1. package/dist/add-ons.js +5 -14
  2. package/dist/add-to-app.js +118 -74
  3. package/dist/config-file.js +9 -7
  4. package/dist/create-app.js +112 -34
  5. package/dist/custom-add-ons/add-on.js +175 -0
  6. package/dist/custom-add-ons/shared.js +117 -0
  7. package/dist/custom-add-ons/starter.js +84 -0
  8. package/dist/environment.js +59 -12
  9. package/dist/file-helpers.js +108 -2
  10. package/dist/frameworks.js +15 -1
  11. package/dist/index.js +12 -5
  12. package/dist/integrations/shadcn.js +10 -4
  13. package/dist/options.js +9 -0
  14. package/dist/package-json.js +7 -4
  15. package/dist/special-steps/index.js +24 -0
  16. package/dist/special-steps/rimraf-node-modules.js +16 -0
  17. package/dist/template-file.js +3 -13
  18. package/dist/types/add-ons.d.ts +3 -4
  19. package/dist/types/add-to-app.d.ts +16 -3
  20. package/dist/types/config-file.d.ts +4 -3
  21. package/dist/types/create-app.d.ts +1 -7
  22. package/dist/types/custom-add-ons/add-on.d.ts +69 -0
  23. package/dist/types/custom-add-ons/shared.d.ts +15 -0
  24. package/dist/types/custom-add-ons/starter.d.ts +7 -0
  25. package/dist/types/environment.d.ts +2 -1
  26. package/dist/types/file-helpers.d.ts +10 -0
  27. package/dist/types/frameworks.d.ts +2 -0
  28. package/dist/types/index.d.ts +13 -6
  29. package/dist/types/integrations/shadcn.d.ts +1 -1
  30. package/dist/types/options.d.ts +2 -0
  31. package/dist/types/package-json.d.ts +5 -0
  32. package/dist/types/package-manager.d.ts +6 -2
  33. package/dist/types/special-steps/index.d.ts +2 -0
  34. package/dist/types/special-steps/rimraf-node-modules.d.ts +2 -0
  35. package/dist/types/template-file.d.ts +1 -1
  36. package/dist/types/types.d.ts +752 -70
  37. package/dist/types.js +65 -1
  38. package/package.json +9 -3
  39. package/src/add-ons.ts +7 -19
  40. package/src/add-to-app.ts +196 -102
  41. package/src/config-file.ts +16 -13
  42. package/src/create-app.ts +129 -75
  43. package/src/custom-add-ons/add-on.ts +261 -0
  44. package/src/custom-add-ons/shared.ts +161 -0
  45. package/src/custom-add-ons/starter.ts +126 -0
  46. package/src/environment.ts +70 -11
  47. package/src/file-helpers.ts +164 -2
  48. package/src/frameworks.ts +21 -1
  49. package/src/index.ts +46 -11
  50. package/src/integrations/shadcn.ts +14 -4
  51. package/src/options.ts +11 -0
  52. package/src/package-json.ts +13 -6
  53. package/src/special-steps/index.ts +36 -0
  54. package/src/special-steps/rimraf-node-modules.ts +25 -0
  55. package/src/template-file.ts +3 -18
  56. package/src/types.ts +143 -85
  57. package/tests/add-ons.test.ts +5 -5
  58. package/tests/add-to-app.test.ts +358 -0
  59. package/tests/config-file.test.ts +15 -11
  60. package/tests/create-app.test.ts +43 -67
  61. package/tests/custom-add-ons/add-on.test.ts +12 -0
  62. package/tests/custom-add-ons/shared.test.ts +257 -0
  63. package/tests/custom-add-ons/starter.test.ts +58 -0
  64. package/tests/environment.test.ts +19 -0
  65. package/tests/integrations/shadcn.test.ts +48 -63
  66. package/tests/options.test.ts +42 -0
  67. package/tests/setupVitest.ts +6 -0
  68. package/tests/template-file.test.ts +54 -91
  69. package/vitest.config.ts +2 -0
package/dist/index.js CHANGED
@@ -1,10 +1,17 @@
1
1
  export { createApp } from './create-app.js';
2
2
  export { addToApp } from './add-to-app.js';
3
- export { finalizeAddOns, getAllAddOns, loadRemoteAddOn } from './add-ons.js';
3
+ export { finalizeAddOns, getAllAddOns } from './add-ons.js';
4
+ export { loadRemoteAddOn } from './custom-add-ons/add-on.js';
5
+ export { loadStarter } from './custom-add-ons/starter.js';
4
6
  export { createMemoryEnvironment, createDefaultEnvironment, } from './environment.js';
5
7
  export { CODE_ROUTER, CONFIG_FILE, FILE_ROUTER } from './constants.js';
6
- export { DEFAULT_PACKAGE_MANAGER, SUPPORTED_PACKAGE_MANAGERS, getPackageManager, getPackageManagerInstallCommand, getPackageManagerExecuteCommand, getPackageManagerScriptCommand, packageManagerInstall, packageManagerExecute, } from './package-manager.js';
8
+ export { DEFAULT_PACKAGE_MANAGER, SUPPORTED_PACKAGE_MANAGERS, getPackageManager, } from './package-manager.js';
7
9
  export { registerFramework, getFrameworkById, getFrameworkByName, getFrameworks, } from './frameworks.js';
8
- export { formatCommand, jsSafeName, sortObject } from './utils.js';
9
- export { writeConfigFile, readConfigFile } from './config-file.js';
10
- export { readFileHelper, getBinaryFile, relativePath } from './file-helpers.js';
10
+ export { writeConfigFileToEnvironment, readConfigFileFromEnvironment, } from './config-file.js';
11
+ export { cleanUpFiles, cleanUpFileArray, readFileHelper, getBinaryFile, recursivelyGatherFiles, relativePath, } from './file-helpers.js';
12
+ export { formatCommand } from './utils.js';
13
+ export { initStarter, compileStarter } from './custom-add-ons/starter.js';
14
+ export { initAddOn, compileAddOn } from './custom-add-ons/add-on.js';
15
+ export { createAppOptionsFromPersisted, createSerializedOptionsFromPersisted, } from './custom-add-ons/shared.js';
16
+ export { createSerializedOptions } from './options.js';
17
+ export { StarterCompiledSchema, AddOnCompiledSchema, AddOnInfoSchema, IntegrationSchema, } from './types.js';
@@ -1,7 +1,7 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { packageManagerExecute } from '../package-manager.js';
3
- export async function installShadcnComponents(environment, targetDir, options, silent) {
4
- const s = silent ? null : environment.spinner();
3
+ export async function installShadcnComponents(environment, targetDir, options) {
4
+ const s = environment.spinner();
5
5
  if (options.chosenAddOns.find((a) => a.id === 'shadcn')) {
6
6
  const shadcnComponents = new Set();
7
7
  for (const addOn of options.chosenAddOns) {
@@ -19,9 +19,15 @@ export async function installShadcnComponents(environment, targetDir, options, s
19
19
  }
20
20
  }
21
21
  if (shadcnComponents.size > 0) {
22
- s?.start(`Installing shadcn components (${Array.from(shadcnComponents).join(', ')})...`);
22
+ s.start(`Installing shadcn components (${Array.from(shadcnComponents).join(', ')})...`);
23
+ environment.startStep({
24
+ id: 'install-shadcn-components',
25
+ type: 'command',
26
+ message: `Installing shadcn components (${Array.from(shadcnComponents).join(', ')})...`,
27
+ });
23
28
  await packageManagerExecute(environment, resolve(targetDir), options.packageManager, 'shadcn@latest', ['add', '--silent', '--yes', ...Array.from(shadcnComponents)]);
24
- s?.stop(`Installed additional shadcn components`);
29
+ environment.finishStep('install-shadcn-components', 'Shadcn components installed');
30
+ s.stop(`Installed additional shadcn components`);
25
31
  }
26
32
  }
27
33
  }
@@ -0,0 +1,9 @@
1
+ export const createSerializedOptions = (options) => {
2
+ const serializedOptions = {
3
+ ...options,
4
+ chosenAddOns: options.chosenAddOns.map((addOn) => addOn.id),
5
+ framework: options.framework.id,
6
+ starter: options.starter?.id,
7
+ };
8
+ return serializedOptions;
9
+ };
@@ -1,19 +1,19 @@
1
1
  import { FILE_ROUTER } from './constants.js';
2
2
  import { sortObject } from './utils.js';
3
- function mergePackageJSON(packageJSON, overlayPackageJSON) {
3
+ export function mergePackageJSON(packageJSON, overlayPackageJSON) {
4
4
  return {
5
5
  ...packageJSON,
6
6
  dependencies: {
7
7
  ...packageJSON.dependencies,
8
- ...overlayPackageJSON.dependencies,
8
+ ...(overlayPackageJSON?.dependencies || {}),
9
9
  },
10
10
  devDependencies: {
11
11
  ...packageJSON.devDependencies,
12
- ...overlayPackageJSON.devDependencies,
12
+ ...(overlayPackageJSON?.devDependencies || {}),
13
13
  },
14
14
  scripts: {
15
15
  ...packageJSON.scripts,
16
- ...overlayPackageJSON.scripts,
16
+ ...(overlayPackageJSON?.scripts || {}),
17
17
  },
18
18
  };
19
19
  }
@@ -39,6 +39,9 @@ export function createPackageJSON(options) {
39
39
  for (const addOn of options.chosenAddOns.map((addOn) => addOn.packageAdditions)) {
40
40
  packageJSON = mergePackageJSON(packageJSON, addOn);
41
41
  }
42
+ if (options.starter) {
43
+ packageJSON = mergePackageJSON(packageJSON, options.starter.packageAdditions);
44
+ }
42
45
  packageJSON.dependencies = sortObject((packageJSON.dependencies ?? {}));
43
46
  packageJSON.devDependencies = sortObject((packageJSON.devDependencies ?? {}));
44
47
  return packageJSON;
@@ -0,0 +1,24 @@
1
+ import { rimrafNodeModules } from './rimraf-node-modules.js';
2
+ const specialStepsLookup = {
3
+ 'rimraf-node-modules': rimrafNodeModules,
4
+ };
5
+ export async function runSpecialSteps(environment, options, specialSteps) {
6
+ if (specialSteps.length) {
7
+ environment.startStep({
8
+ id: 'special-steps',
9
+ type: 'command',
10
+ message: 'Removing node_modules...',
11
+ });
12
+ for (const step of specialSteps) {
13
+ const stepFunction = specialStepsLookup[step];
14
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
15
+ if (stepFunction) {
16
+ await stepFunction(environment, options);
17
+ }
18
+ else {
19
+ environment.error(`Special step ${step} not found`);
20
+ }
21
+ }
22
+ environment.finishStep('special-steps', 'Special steps complete');
23
+ }
24
+ }
@@ -0,0 +1,16 @@
1
+ import { resolve } from 'node:path';
2
+ const lockFiles = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'];
3
+ export async function rimrafNodeModules(environment, options) {
4
+ environment.startStep({
5
+ id: 'special-steps',
6
+ type: 'command',
7
+ message: 'Removing node_modules...',
8
+ });
9
+ await environment.rimraf(resolve(options.targetDir, 'node_modules'));
10
+ for (const lockFile of lockFiles) {
11
+ const lockFilePath = resolve(options.targetDir, lockFile);
12
+ if (environment.exists(lockFilePath)) {
13
+ await environment.deleteFile(lockFilePath);
14
+ }
15
+ }
16
+ }
@@ -11,7 +11,7 @@ function convertDotFilesAndPaths(path) {
11
11
  .map((segment) => segment.replace(/^_dot_/, '.'))
12
12
  .join('/');
13
13
  }
14
- export function createTemplateFile(environment, options, targetDir) {
14
+ export function createTemplateFile(environment, options) {
15
15
  function getPackageManagerAddScript(packageName, isDev = false) {
16
16
  return formatCommand(getPackageManagerInstallCommand(options.packageManager, packageName, isDev));
17
17
  }
@@ -41,15 +41,6 @@ export function createTemplateFile(environment, options, targetDir) {
41
41
  routes.push(...addOn.routes);
42
42
  }
43
43
  }
44
- const variables = {
45
- ...options.variableValues,
46
- ...options.chosenAddOns.reduce((acc, addOn) => {
47
- return {
48
- ...acc,
49
- ...addOn.variables,
50
- };
51
- }, {}),
52
- };
53
44
  const addOnEnabled = options.chosenAddOns.reduce((acc, addOn) => {
54
45
  acc[addOn.id] = true;
55
46
  return acc;
@@ -68,7 +59,6 @@ export function createTemplateFile(environment, options, targetDir) {
68
59
  addOns: options.chosenAddOns,
69
60
  integrations,
70
61
  routes,
71
- variables,
72
62
  getPackageManagerAddScript,
73
63
  getPackageManagerRunScript,
74
64
  relativePath: (path) => relativePath(file, path),
@@ -113,10 +103,10 @@ export function createTemplateFile(environment, options, targetDir) {
113
103
  target = target.replace(/\.tsx$/, '.jsx').replace(/\.ts$/, '.js');
114
104
  }
115
105
  if (append) {
116
- await environment.appendFile(resolve(targetDir, target), content);
106
+ await environment.appendFile(resolve(options.targetDir, target), content);
117
107
  }
118
108
  else {
119
- await environment.writeFile(resolve(targetDir, target), content);
109
+ await environment.writeFile(resolve(options.targetDir, target), content);
120
110
  }
121
111
  };
122
112
  }
@@ -1,4 +1,3 @@
1
- import type { AddOn, Framework } from './types.js';
2
- export declare function getAllAddOns(framework: Framework, template: string): Array<AddOn>;
3
- export declare function finalizeAddOns(framework: Framework, template: string, chosenAddOnIDs: Array<string>): Promise<Array<AddOn>>;
4
- export declare function loadRemoteAddOn(url: string): Promise<AddOn>;
1
+ import type { AddOn, Framework, Mode } from './types.js';
2
+ export declare function getAllAddOns(framework: Framework, mode: Mode): Array<AddOn>;
3
+ export declare function finalizeAddOns(framework: Framework, mode: Mode, chosenAddOnIDs: Array<string>): Promise<Array<AddOn>>;
@@ -1,4 +1,17 @@
1
1
  import type { Environment } from './types.js';
2
- export declare function addToApp(addOns: Array<string>, { silent, }: {
3
- silent?: boolean;
4
- } | undefined, environment: Environment): Promise<void>;
2
+ import type { PersistedOptions } from './config-file.js';
3
+ export declare function hasPendingGitChanges(environment: Environment, cwd: string): Promise<boolean>;
4
+ export declare function getCurrentConfiguration(environment: Environment, cwd: string): Promise<PersistedOptions | undefined>;
5
+ export declare function writeFiles(environment: Environment, cwd: string, output: {
6
+ files: Record<string, string>;
7
+ deletedFiles: Array<string>;
8
+ }, forced: boolean): Promise<void>;
9
+ export declare function runNewCommands(environment: Environment, originalOptions: PersistedOptions, cwd: string, output: {
10
+ commands: Array<{
11
+ command: string;
12
+ args: Array<string>;
13
+ }>;
14
+ }): Promise<void>;
15
+ export declare function addToApp(environment: Environment, addOns: Array<string>, cwd: string, options?: {
16
+ forced?: boolean;
17
+ }): Promise<void>;
@@ -1,8 +1,9 @@
1
1
  import type { Environment, Options } from './types.js';
2
- export type PersistedOptions = Omit<Partial<Options>, 'addOns' | 'chosenAddOns' | 'framework'> & {
2
+ export type PersistedOptions = Omit<Partial<Options>, 'addOns' | 'chosenAddOns' | 'framework' | 'starter' | 'targetDir'> & {
3
3
  framework: string;
4
4
  version: number;
5
5
  existingAddOns: Array<string>;
6
+ starter?: string;
6
7
  };
7
- export declare function writeConfigFile(environment: Environment, targetDir: string, options: Options): Promise<void>;
8
- export declare function readConfigFile(targetDir: string): Promise<PersistedOptions | null>;
8
+ export declare function writeConfigFileToEnvironment(environment: Environment, options: Options): Promise<void>;
9
+ export declare function readConfigFileFromEnvironment(environment: Environment, targetDir: string): Promise<PersistedOptions | null>;
@@ -1,8 +1,2 @@
1
1
  import type { Environment, Options } from './types.js';
2
- export declare function createApp(options: Options, { silent, environment, cwd, appName, }: {
3
- silent?: boolean;
4
- environment: Environment;
5
- cwd?: string;
6
- name?: string;
7
- appName?: string;
8
- }): Promise<void>;
2
+ export declare function createApp(environment: Environment, options: Options): Promise<void>;
@@ -0,0 +1,69 @@
1
+ import type { PersistedOptions } from '../config-file';
2
+ import type { AddOn, AddOnInfo, Environment } from '../types';
3
+ export declare const ADD_ON_IGNORE_FILES: Array<string>;
4
+ export declare function camelCase(str: string): string;
5
+ export declare function templatize(routeCode: string, routeFile: string): {
6
+ url: string;
7
+ code: string;
8
+ name: string;
9
+ jsName: string;
10
+ };
11
+ export declare function validateAddOnSetup(environment: Environment): Promise<void>;
12
+ export declare function readOrGenerateAddOnInfo(options: PersistedOptions): Promise<AddOnInfo>;
13
+ export declare function generateProject(persistedOptions: PersistedOptions): Promise<{
14
+ info: {
15
+ id: string;
16
+ name: string;
17
+ description: string;
18
+ type: "add-on" | "example" | "starter" | "toolchain";
19
+ modes: string[];
20
+ phase: "add-on" | "setup";
21
+ command?: {
22
+ command: string;
23
+ args?: string[] | undefined;
24
+ } | undefined;
25
+ author?: string | undefined;
26
+ version?: string | undefined;
27
+ link?: string | undefined;
28
+ license?: string | undefined;
29
+ warning?: string | undefined;
30
+ routes?: {
31
+ path: string;
32
+ jsName: string;
33
+ name?: string | undefined;
34
+ url?: string | undefined;
35
+ }[] | undefined;
36
+ packageAdditions?: {
37
+ dependencies?: Record<string, string> | undefined;
38
+ devDependencies?: Record<string, string> | undefined;
39
+ scripts?: Record<string, string> | undefined;
40
+ } | undefined;
41
+ shadcnComponents?: string[] | undefined;
42
+ dependsOn?: string[] | undefined;
43
+ smallLogo?: string | undefined;
44
+ logo?: string | undefined;
45
+ addOnSpecialSteps?: string[] | undefined;
46
+ createSpecialSteps?: string[] | undefined;
47
+ integrations?: {
48
+ type: string;
49
+ path: string;
50
+ jsName: string;
51
+ }[] | undefined;
52
+ readme?: string | undefined;
53
+ };
54
+ output: {
55
+ files: Record<string, string>;
56
+ deletedFiles: Array<string>;
57
+ commands: Array<{
58
+ command: string;
59
+ args: Array<string>;
60
+ }>;
61
+ };
62
+ }>;
63
+ export declare function buildAssetsDirectory(output: {
64
+ files: Record<string, string>;
65
+ }, info: AddOnInfo): Promise<void>;
66
+ export declare function updateAddOnInfo(environment: Environment): Promise<void>;
67
+ export declare function compileAddOn(environment: Environment): Promise<void>;
68
+ export declare function initAddOn(environment: Environment): Promise<void>;
69
+ export declare function loadRemoteAddOn(url: string): Promise<AddOn>;
@@ -0,0 +1,15 @@
1
+ import type { Environment, Options, SerializedOptions } from '../types.js';
2
+ import type { PersistedOptions } from '../config-file.js';
3
+ export declare function createPackageAdditions(originalPackageJson: Record<string, any>, currentPackageJson: Record<string, any>): Record<string, any>;
4
+ export declare function createAppOptionsFromPersisted(json: PersistedOptions): Promise<Options>;
5
+ export declare function createSerializedOptionsFromPersisted(json: PersistedOptions): SerializedOptions;
6
+ export declare function runCreateApp(options: Required<Options>): Promise<{
7
+ files: Record<string, string>;
8
+ deletedFiles: Array<string>;
9
+ commands: Array<{
10
+ command: string;
11
+ args: Array<string>;
12
+ }>;
13
+ }>;
14
+ export declare function compareFilesRecursively(path: string, ignore: (filePath: string) => boolean, original: Record<string, string>, changedFiles: Record<string, string>): Promise<void>;
15
+ export declare function readCurrentProjectOptions(environment: Environment): Promise<PersistedOptions>;
@@ -0,0 +1,7 @@
1
+ import type { PersistedOptions } from '../config-file';
2
+ import type { Environment, Starter, StarterInfo } from '../types';
3
+ export declare function readOrGenerateStarterInfo(options: PersistedOptions): Promise<StarterInfo>;
4
+ export declare function updateStarterInfo(environment: Environment): Promise<void>;
5
+ export declare function compileStarter(environment: Environment): Promise<void>;
6
+ export declare function initStarter(environment: Environment): Promise<void>;
7
+ export declare function loadStarter(url: string): Promise<Starter>;
@@ -1,9 +1,10 @@
1
1
  import type { Environment } from './types.js';
2
2
  export declare function createDefaultEnvironment(): Environment;
3
- export declare function createMemoryEnvironment(): {
3
+ export declare function createMemoryEnvironment(returnPathsRelativeTo?: string): {
4
4
  environment: Environment;
5
5
  output: {
6
6
  files: Record<string, string>;
7
+ deletedFiles: Array<string>;
7
8
  commands: Array<{
8
9
  command: string;
9
10
  args: Array<string>;
@@ -1,5 +1,15 @@
1
+ import type { Environment } from './types';
1
2
  export declare function readFileHelper(path: string): string;
3
+ export declare function isBinaryFile(path: string): boolean;
4
+ export declare function convertBinaryContentsToBase64(contents: any): string;
5
+ export declare function isBase64(content: string): boolean;
2
6
  export declare function getBinaryFile(content: string): string | null;
3
7
  export declare function relativePath(from: string, to: string): string;
4
8
  export declare function isDirectory(path: string): boolean;
5
9
  export declare function findFilesRecursively(path: string, files: Record<string, string>): void;
10
+ export declare function recursivelyGatherFiles(path: string, includeProjectFiles?: boolean): Promise<Record<string, string>>;
11
+ export declare function recursivelyGatherFilesFromEnvironment(environment: Environment, path: string, includeProjectFiles?: boolean): Promise<Record<string, string>>;
12
+ export declare const IGNORE_FILES: string[];
13
+ export declare function createIgnore(path: string, includeProjectFiles?: boolean): (filePath: string) => boolean;
14
+ export declare function cleanUpFiles(files: Record<string, string>, targetDir?: string): Record<string, string>;
15
+ export declare function cleanUpFileArray(files: Array<string>, targetDir?: string): string[];
@@ -1,4 +1,6 @@
1
1
  import type { Framework, FrameworkDefinition } from './types.js';
2
+ export declare function __testRegisterFramework(framework: Framework): void;
3
+ export declare function __testClearFrameworks(): void;
2
4
  export declare function registerFramework(framework: FrameworkDefinition): void;
3
5
  export declare function getFrameworkById(id: string): Framework | undefined;
4
6
  export declare function getFrameworkByName(name: string): Framework | undefined;
@@ -1,13 +1,20 @@
1
1
  export { createApp } from './create-app.js';
2
2
  export { addToApp } from './add-to-app.js';
3
- export { finalizeAddOns, getAllAddOns, loadRemoteAddOn } from './add-ons.js';
3
+ export { finalizeAddOns, getAllAddOns } from './add-ons.js';
4
+ export { loadRemoteAddOn } from './custom-add-ons/add-on.js';
5
+ export { loadStarter } from './custom-add-ons/starter.js';
4
6
  export { createMemoryEnvironment, createDefaultEnvironment, } from './environment.js';
5
7
  export { CODE_ROUTER, CONFIG_FILE, FILE_ROUTER } from './constants.js';
6
- export { DEFAULT_PACKAGE_MANAGER, SUPPORTED_PACKAGE_MANAGERS, getPackageManager, getPackageManagerInstallCommand, getPackageManagerExecuteCommand, getPackageManagerScriptCommand, packageManagerInstall, packageManagerExecute, } from './package-manager.js';
8
+ export { DEFAULT_PACKAGE_MANAGER, SUPPORTED_PACKAGE_MANAGERS, getPackageManager, } from './package-manager.js';
7
9
  export { registerFramework, getFrameworkById, getFrameworkByName, getFrameworks, } from './frameworks.js';
8
- export { formatCommand, jsSafeName, sortObject } from './utils.js';
9
- export { writeConfigFile, readConfigFile } from './config-file.js';
10
- export { readFileHelper, getBinaryFile, relativePath } from './file-helpers.js';
11
- export type { AddOn, Environment, FileBundleHandler, FrameworkDefinition, Mode, Options, Starter, TemplateOptions, Variable, } from './types.js';
10
+ export { writeConfigFileToEnvironment, readConfigFileFromEnvironment, } from './config-file.js';
11
+ export { cleanUpFiles, cleanUpFileArray, readFileHelper, getBinaryFile, recursivelyGatherFiles, relativePath, } from './file-helpers.js';
12
+ export { formatCommand } from './utils.js';
13
+ export { initStarter, compileStarter } from './custom-add-ons/starter.js';
14
+ export { initAddOn, compileAddOn } from './custom-add-ons/add-on.js';
15
+ export { createAppOptionsFromPersisted, createSerializedOptionsFromPersisted, } from './custom-add-ons/shared.js';
16
+ export { createSerializedOptions } from './options.js';
17
+ export { StarterCompiledSchema, StatusEvent, StatusStepType, StopEvent, AddOnCompiledSchema, AddOnInfoSchema, IntegrationSchema, } from './types.js';
18
+ export type { AddOn, Environment, FileBundleHandler, Framework, FrameworkDefinition, Mode, Options, SerializedOptions, Starter, StarterCompiled, } from './types.js';
12
19
  export type { PersistedOptions } from './config-file.js';
13
20
  export type { PackageManager } from './package-manager.js';
@@ -1,2 +1,2 @@
1
1
  import type { Environment, Options } from '../types.js';
2
- export declare function installShadcnComponents(environment: Environment, targetDir: string, options: Options, silent: boolean): Promise<void>;
2
+ export declare function installShadcnComponents(environment: Environment, targetDir: string, options: Options): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import type { Options, SerializedOptions } from './types';
2
+ export declare const createSerializedOptions: (options: Options) => SerializedOptions;
@@ -1,2 +1,7 @@
1
1
  import type { Options } from './types.js';
2
+ export declare function mergePackageJSON(packageJSON: Record<string, any>, overlayPackageJSON?: Record<string, any>): {
3
+ dependencies: any;
4
+ devDependencies: any;
5
+ scripts: any;
6
+ };
2
7
  export declare function createPackageJSON(options: Options): any;
@@ -15,5 +15,9 @@ export declare function getPackageManagerInstallCommand(packagerManager: Package
15
15
  command: "npm" | "yarn" | "pnpm" | "bun" | "deno";
16
16
  args: string[];
17
17
  };
18
- export declare function packageManagerInstall(environment: Environment, cwd: string, packagerManager: PackageManager, pkg?: string): Promise<void>;
19
- export declare function packageManagerExecute(environment: Environment, cwd: string, packagerManager: PackageManager, pkg: string, args: Array<string>): Promise<void>;
18
+ export declare function packageManagerInstall(environment: Environment, cwd: string, packagerManager: PackageManager, pkg?: string): Promise<{
19
+ stdout: string;
20
+ }>;
21
+ export declare function packageManagerExecute(environment: Environment, cwd: string, packagerManager: PackageManager, pkg: string, args: Array<string>): Promise<{
22
+ stdout: string;
23
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { Environment, Options } from '../types.js';
2
+ export declare function runSpecialSteps(environment: Environment, options: Options, specialSteps: Array<string>): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import type { Environment, Options } from '../types.js';
2
+ export declare function rimrafNodeModules(environment: Environment, options: Options): Promise<void>;
@@ -1,2 +1,2 @@
1
1
  import type { Environment, Options } from './types.js';
2
- export declare function createTemplateFile(environment: Environment, options: Options, targetDir: string): (file: string, content: string) => Promise<void>;
2
+ export declare function createTemplateFile(environment: Environment, options: Options): (file: string, content: string) => Promise<void>;