@tanstack/cta-engine 0.10.0-alpha.15 → 0.10.0-alpha.17

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 (37) hide show
  1. package/dist/cli.js +24 -25
  2. package/dist/create-app.js +9 -9
  3. package/dist/custom-add-on.js +7 -9
  4. package/dist/index.js +0 -4
  5. package/dist/options.js +14 -12
  6. package/dist/types/cli.d.ts +2 -1
  7. package/dist/types/custom-add-on.d.ts +1 -4
  8. package/dist/types/index.d.ts +0 -6
  9. package/dist/types/options.d.ts +3 -3
  10. package/dist/types/types.d.ts +5 -5
  11. package/package.json +1 -1
  12. package/src/cli.ts +32 -32
  13. package/src/create-app.ts +9 -9
  14. package/src/custom-add-on.ts +8 -10
  15. package/src/index.ts +0 -10
  16. package/src/options.ts +24 -13
  17. package/src/types.ts +5 -5
  18. package/templates/react/add-on/t3env/README.md +16 -0
  19. package/templates/react/add-on/t3env/assets/src/env.ts +39 -0
  20. package/templates/react/add-on/t3env/info.json +10 -0
  21. package/templates/react/add-on/t3env/package.json +6 -0
  22. package/templates/react/base/package.json +1 -0
  23. package/templates/solid/add-on/t3env/README.md +16 -0
  24. package/templates/solid/add-on/t3env/assets/src/env.ts +39 -0
  25. package/templates/solid/add-on/t3env/info.json +10 -0
  26. package/templates/solid/add-on/t3env/package.json +6 -0
  27. package/templates/solid/base/package.json +1 -0
  28. package/tests/snapshots/cra/cr-js-npm.json +1 -1
  29. package/tests/snapshots/cra/cr-ts-npm.json +1 -1
  30. package/tests/snapshots/cra/cr-ts-start-npm.json +1 -1
  31. package/tests/snapshots/cra/fr-ts-npm.json +1 -1
  32. package/tests/snapshots/cra/fr-ts-tw-npm.json +1 -1
  33. package/tests/snapshots/cra/solid-cr-js-npm.json +1 -1
  34. package/tests/snapshots/cra/solid-cr-ts-npm.json +1 -1
  35. package/tests/snapshots/cra/solid-cr-ts-start-npm.json +1 -1
  36. package/tests/snapshots/cra/solid-fr-ts-npm.json +1 -1
  37. package/tests/snapshots/cra/solid-fr-ts-tw-npm.json +1 -1
package/dist/cli.js CHANGED
@@ -7,30 +7,29 @@ import { SUPPORTED_TOOLCHAINS } from './toolchain.js';
7
7
  import runServer from './mcp.js';
8
8
  import { listAddOns } from './add-ons.js';
9
9
  import { DEFAULT_FRAMEWORK, SUPPORTED_FRAMEWORKS } from './constants.js';
10
- import { initAddOn } from './custom-add-on.js';
10
+ // import { initAddOn } from './custom-add-on.js'
11
11
  import { createDefaultEnvironment } from './environment.js';
12
- import { add } from './add.js';
13
12
  export function cli({ name, appName, forcedMode, forcedAddOns, }) {
14
13
  const program = new Command();
15
14
  program.name(name).description(`CLI to create a new ${appName} application`);
16
- program
17
- .command('add')
18
- .argument('add-on', 'Name of the add-on (or add-ons separated by commas)')
19
- .action(async (addOn) => {
20
- await add(addOn.split(',').map((addon) => addon.trim()));
21
- });
22
- program
23
- .command('update-add-on')
24
- .description('Create or update an add-on from the current project')
25
- .action(async () => {
26
- await initAddOn('add-on');
27
- });
28
- program
29
- .command('update-starter')
30
- .description('Create or update a project starter from the current project')
31
- .action(async () => {
32
- await initAddOn('starter');
33
- });
15
+ // program
16
+ // .command('add')
17
+ // .argument('add-on', 'Name of the add-on (or add-ons separated by commas)')
18
+ // .action(async (addOn: string) => {
19
+ // await add(addOn.split(',').map((addon) => addon.trim()))
20
+ // })
21
+ // program
22
+ // .command('update-add-on')
23
+ // .description('Create or update an add-on from the current project')
24
+ // .action(async () => {
25
+ // await initAddOn('add-on')
26
+ // })
27
+ // program
28
+ // .command('update-overlay')
29
+ // .description('Create or update a project overlay from the current project')
30
+ // .action(async () => {
31
+ // await initAddOn('overlay')
32
+ // })
34
33
  program.argument('[project-name]', 'name of the project');
35
34
  if (!forcedMode) {
36
35
  program.option('--template <type>', 'project template (typescript, javascript, file-router)', (value) => {
@@ -49,7 +48,7 @@ export function cli({ name, appName, forcedMode, forcedAddOns, }) {
49
48
  }
50
49
  return value;
51
50
  }, DEFAULT_FRAMEWORK)
52
- .option('--starter [url]', 'initialize this project from a starter URL', false)
51
+ // .option('--overlay [url]', 'add an overlay from a URL', false)
53
52
  .option(`--package-manager <${SUPPORTED_PACKAGE_MANAGERS.join('|')}>`, `Explicitly tell the CLI to use this package manager`, (value) => {
54
53
  if (!SUPPORTED_PACKAGE_MANAGERS.includes(value)) {
55
54
  throw new InvalidArgumentError(`Invalid package manager: ${value}. The following are allowed: ${SUPPORTED_PACKAGE_MANAGERS.join(', ')}`);
@@ -78,13 +77,13 @@ export function cli({ name, appName, forcedMode, forcedAddOns, }) {
78
77
  program.action(async (projectName, options) => {
79
78
  if (options.listAddOns) {
80
79
  await listAddOns(options, {
81
- forcedMode,
80
+ forcedMode: forcedMode,
82
81
  forcedAddOns,
83
82
  });
84
83
  }
85
84
  else if (options.mcp || options.mcpSse) {
86
85
  await runServer(!!options.mcpSse, {
87
- forcedMode,
86
+ forcedMode: forcedMode,
88
87
  forcedAddOns,
89
88
  appName,
90
89
  });
@@ -98,14 +97,14 @@ export function cli({ name, appName, forcedMode, forcedAddOns, }) {
98
97
  if (forcedMode) {
99
98
  cliOptions.template = forcedMode;
100
99
  }
101
- let finalOptions = await normalizeOptions(cliOptions, forcedAddOns);
100
+ let finalOptions = await normalizeOptions(cliOptions, forcedMode, forcedAddOns);
102
101
  if (finalOptions) {
103
102
  intro(`Creating a new ${appName} app in ${projectName}...`);
104
103
  }
105
104
  else {
106
105
  intro(`Let's configure your ${appName} application`);
107
106
  finalOptions = await promptForOptions(cliOptions, {
108
- forcedMode,
107
+ forcedMode: forcedMode,
109
108
  forcedAddOns,
110
109
  });
111
110
  }
@@ -332,9 +332,9 @@ export async function createApp(options, { silent = false, environment, cwd, app
332
332
  }
333
333
  }
334
334
  }
335
- if (options.starter) {
336
- if (options.starter.shadcnComponents) {
337
- for (const component of options.starter.shadcnComponents) {
335
+ if (options.overlay) {
336
+ if (options.overlay.shadcnComponents) {
337
+ for (const component of options.overlay.shadcnComponents) {
338
338
  shadcnComponents.add(component);
339
339
  }
340
340
  }
@@ -433,11 +433,11 @@ export async function createApp(options, { silent = false, environment, cwd, app
433
433
  }
434
434
  // Create the README.md
435
435
  await templateFile(templateDirBase, 'README.md.ejs');
436
- // Adding starter
437
- if (options.starter) {
438
- s?.start(`Setting up starter ${options.starter.name}...`);
439
- await runAddOn(options.starter);
440
- s?.stop(`Starter ${options.starter.name} setup complete`);
436
+ // Adding overlay
437
+ if (options.overlay) {
438
+ s?.start(`Setting up overlay ${options.overlay.name}...`);
439
+ await runAddOn(options.overlay);
440
+ s?.stop(`Overlay ${options.overlay.name} setup complete`);
441
441
  }
442
442
  // Install dependencies
443
443
  s?.start(`Installing dependencies via ${options.packageManager}...`);
@@ -492,6 +492,6 @@ Use the following commands to start your app:
492
492
  % cd ${options.projectName}
493
493
  % ${startCommand}
494
494
 
495
- Please check the README.md for more information on testing, styling, adding routes, react-query, etc.${errorStatement}`);
495
+ Please read the README.md for more information on testing, styling, adding routes, react-query, etc.${errorStatement}`);
496
496
  }
497
497
  }
@@ -9,11 +9,11 @@ import { finalizeAddOns } from './add-ons.js';
9
9
  import { readFileHelper } from './file-helper.js';
10
10
  const INFO_FILE = {
11
11
  'add-on': '.add-on/info.json',
12
- starter: 'starter-info.json',
12
+ overlay: 'overlay-info.json',
13
13
  };
14
14
  const COMPILED_FILE = {
15
15
  'add-on': 'add-on.json',
16
- starter: 'starter.json',
16
+ overlay: 'overlay.json',
17
17
  };
18
18
  const ADD_ON_DIR = '.add-on';
19
19
  const ASSETS_DIR = 'assets';
@@ -76,7 +76,7 @@ export default (parentRoute: RootRoute) => createRoute({
76
76
  .trim();
77
77
  return { url: path, code, name };
78
78
  }
79
- export async function createAppOptionsFromPersisted(json) {
79
+ async function createOptions(json) {
80
80
  return {
81
81
  ...json,
82
82
  chosenAddOns: await finalizeAddOns(json.framework, json.mode, [...json.existingAddOns]),
@@ -154,13 +154,12 @@ To create an add-on, the project must be created with TypeScript.`);
154
154
  : {
155
155
  name: `${persistedOptions.projectName}-${mode}`,
156
156
  version: '0.0.1',
157
- description: mode === 'add-on' ? 'Add-on' : 'Project starter',
157
+ description: mode === 'add-on' ? 'Add-on' : 'Project overlay',
158
158
  author: 'Jane Smith <jane.smith@example.com>',
159
159
  license: 'MIT',
160
160
  link: `https://github.com/jane-smith/${persistedOptions.projectName}-${mode}`,
161
161
  command: {},
162
162
  shadcnComponents: [],
163
- framework: persistedOptions.framework,
164
163
  templates: [persistedOptions.mode],
165
164
  routes: [],
166
165
  warning: '',
@@ -174,7 +173,7 @@ To create an add-on, the project must be created with TypeScript.`);
174
173
  },
175
174
  };
176
175
  const compiledInfo = JSON.parse(JSON.stringify(info));
177
- const originalOutput = await runCreateApp(await createAppOptionsFromPersisted(persistedOptions));
176
+ const originalOutput = await runCreateApp(await createOptions(persistedOptions));
178
177
  const originalPackageJson = JSON.parse(originalOutput.files[resolve(process.cwd(), 'package.json')]);
179
178
  const currentPackageJson = JSON.parse((await readFile('package.json')).toString());
180
179
  for (const script of Object.keys(currentPackageJson.scripts)) {
@@ -202,7 +201,7 @@ To create an add-on, the project must be created with TypeScript.`);
202
201
  // Find altered files
203
202
  const changedFiles = {};
204
203
  await compareFiles('.', IGNORE_FILES, originalOutput.files, changedFiles);
205
- if (mode === 'starter') {
204
+ if (mode === 'overlay') {
206
205
  compiledInfo.files = changedFiles;
207
206
  }
208
207
  else {
@@ -236,8 +235,7 @@ To create an add-on, the project must be created with TypeScript.`);
236
235
  compiledInfo.routes = info.routes;
237
236
  compiledInfo.framework = persistedOptions.framework;
238
237
  compiledInfo.addDependencies = persistedOptions.existingAddOns;
239
- compiledInfo.packageAdditions = info.packageAdditions;
240
- if (mode === 'starter') {
238
+ if (mode === 'overlay') {
241
239
  compiledInfo.mode = persistedOptions.mode;
242
240
  compiledInfo.typescript = persistedOptions.typescript;
243
241
  compiledInfo.tailwind = persistedOptions.tailwind;
package/dist/index.js CHANGED
@@ -1,5 +1 @@
1
1
  export { cli } from './cli.js';
2
- export { getAllAddOns } from './add-ons.js';
3
- export { createApp } from './create-app.js';
4
- export { createAppOptionsFromPersisted } from './custom-add-on.js';
5
- export { createMemoryEnvironment, createDefaultEnvironment, } from './environment.js';
package/dist/options.js CHANGED
@@ -4,7 +4,7 @@ import { DEFAULT_TOOLCHAIN, SUPPORTED_TOOLCHAINS } from './toolchain.js';
4
4
  import { CODE_ROUTER, DEFAULT_FRAMEWORK, FILE_ROUTER } from './constants.js';
5
5
  import { finalizeAddOns, getAllAddOns, loadRemoteAddOn } from './add-ons.js';
6
6
  // If all CLI options are provided, use them directly
7
- export async function normalizeOptions(cliOptions, forcedAddOns) {
7
+ export async function normalizeOptions(cliOptions, forcedMode, forcedAddOns) {
8
8
  // in some cases, if you use windows/powershell, the argument for addons
9
9
  // if sepparated by comma is not really passed as an array, but as a string
10
10
  // with spaces, We need to normalize this edge case.
@@ -23,22 +23,22 @@ export async function normalizeOptions(cliOptions, forcedAddOns) {
23
23
  tailwind = true;
24
24
  }
25
25
  let mode = cliOptions.template === 'file-router' ? FILE_ROUTER : CODE_ROUTER;
26
- const starter = cliOptions.starter
27
- ? (await loadRemoteAddOn(cliOptions.starter))
26
+ const overlay = cliOptions.overlay
27
+ ? (await loadRemoteAddOn(cliOptions.overlay))
28
28
  : undefined;
29
- if (starter) {
30
- tailwind = starter.tailwind;
31
- typescript = starter.typescript;
32
- cliOptions.framework = starter.framework;
33
- mode = starter.mode;
29
+ if (overlay) {
30
+ tailwind = overlay.tailwind;
31
+ typescript = overlay.typescript;
32
+ cliOptions.framework = overlay.framework;
33
+ mode = overlay.mode;
34
34
  }
35
35
  let addOns = false;
36
36
  let chosenAddOns = [];
37
37
  if (Array.isArray(cliOptions.addOns) ||
38
- starter?.dependsOn ||
38
+ overlay?.dependsOn ||
39
39
  forcedAddOns) {
40
40
  addOns = true;
41
- let finalAddOns = Array.from(new Set([...(starter?.dependsOn || []), ...(forcedAddOns || [])]));
41
+ let finalAddOns = Array.from(new Set([...(overlay?.dependsOn || []), ...(forcedAddOns || [])]));
42
42
  if (cliOptions.addOns && Array.isArray(cliOptions.addOns)) {
43
43
  finalAddOns = Array.from(new Set([
44
44
  ...(forcedAddOns || []),
@@ -46,7 +46,9 @@ export async function normalizeOptions(cliOptions, forcedAddOns) {
46
46
  ...cliOptions.addOns,
47
47
  ]));
48
48
  }
49
- chosenAddOns = await finalizeAddOns(cliOptions.framework || DEFAULT_FRAMEWORK, cliOptions.template === 'file-router' ? FILE_ROUTER : CODE_ROUTER, finalAddOns);
49
+ chosenAddOns = await finalizeAddOns(cliOptions.framework || DEFAULT_FRAMEWORK, forcedMode || cliOptions.template === 'file-router'
50
+ ? FILE_ROUTER
51
+ : CODE_ROUTER, finalAddOns);
50
52
  tailwind = true;
51
53
  typescript = true;
52
54
  }
@@ -64,7 +66,7 @@ export async function normalizeOptions(cliOptions, forcedAddOns) {
64
66
  addOns,
65
67
  chosenAddOns,
66
68
  variableValues: {},
67
- starter,
69
+ overlay,
68
70
  };
69
71
  }
70
72
  }
@@ -1,6 +1,7 @@
1
+ import type { Mode } from './types.js';
1
2
  export declare function cli({ name, appName, forcedMode, forcedAddOns, }: {
2
3
  name: string;
3
4
  appName: string;
4
- forcedMode?: 'typescript' | 'javascript' | 'file-router';
5
+ forcedMode?: Mode;
5
6
  forcedAddOns?: Array<string>;
6
7
  }): void;
@@ -1,6 +1,3 @@
1
- import type { Options } from './types.js';
2
- import type { PersistedOptions } from './config-file.js';
3
- type AddOnMode = 'add-on' | 'starter';
4
- export declare function createAppOptionsFromPersisted(json: PersistedOptions): Promise<Required<Options>>;
1
+ type AddOnMode = 'add-on' | 'overlay';
5
2
  export declare function initAddOn(mode: AddOnMode): Promise<void>;
6
3
  export {};
@@ -1,7 +1 @@
1
1
  export { cli } from './cli.js';
2
- export { getAllAddOns } from './add-ons.js';
3
- export { createApp } from './create-app.js';
4
- export { createAppOptionsFromPersisted } from './custom-add-on.js';
5
- export { createMemoryEnvironment, createDefaultEnvironment, } from './environment.js';
6
- export type { AddOn, Framework, Mode } from './types.js';
7
- export type { PersistedOptions } from './config-file.js';
@@ -1,6 +1,6 @@
1
- import type { CliOptions, Options } from './types.js';
2
- export declare function normalizeOptions(cliOptions: CliOptions, forcedAddOns?: Array<string>): Promise<Options | undefined>;
1
+ import type { CliOptions, Mode, Options, TemplateOptions } from './types.js';
2
+ export declare function normalizeOptions(cliOptions: CliOptions, forcedMode?: Mode, forcedAddOns?: Array<string>): Promise<Options | undefined>;
3
3
  export declare function promptForOptions(cliOptions: CliOptions, { forcedAddOns, forcedMode, }: {
4
4
  forcedAddOns?: Array<string>;
5
- forcedMode?: 'typescript' | 'javascript' | 'file-router';
5
+ forcedMode?: TemplateOptions;
6
6
  }): Promise<Required<Options>>;
@@ -16,7 +16,7 @@ export interface Options {
16
16
  chosenAddOns: Array<AddOn>;
17
17
  git: boolean;
18
18
  variableValues: Record<string, string | number | boolean>;
19
- starter?: AddOn | undefined;
19
+ overlay?: AddOn | undefined;
20
20
  }
21
21
  export interface CliOptions {
22
22
  template?: TemplateOptions;
@@ -30,7 +30,7 @@ export interface CliOptions {
30
30
  listAddOns?: boolean;
31
31
  mcp?: boolean;
32
32
  mcpSse?: boolean;
33
- starter?: string;
33
+ overlay?: string;
34
34
  targetDir?: string;
35
35
  }
36
36
  export type Environment = {
@@ -70,7 +70,7 @@ export type AddOn = {
70
70
  id: string;
71
71
  name: string;
72
72
  description: string;
73
- type: 'add-on' | 'example' | 'starter';
73
+ type: 'add-on' | 'example' | 'overlay';
74
74
  link: string;
75
75
  templates: Array<string>;
76
76
  routes: Array<{
@@ -95,8 +95,8 @@ export type AddOn = {
95
95
  files?: Record<string, string>;
96
96
  deletedFiles?: Array<string>;
97
97
  };
98
- export type Starter = AddOn & {
99
- type: 'starter';
98
+ export type Overlay = AddOn & {
99
+ type: 'overlay';
100
100
  version: string;
101
101
  author: string;
102
102
  link: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/cta-engine",
3
- "version": "0.10.0-alpha.15",
3
+ "version": "0.10.0-alpha.17",
4
4
  "description": "Tanstack Application Builder Engine",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/src/cli.ts CHANGED
@@ -9,14 +9,14 @@ import { SUPPORTED_TOOLCHAINS } from './toolchain.js'
9
9
  import runServer from './mcp.js'
10
10
  import { listAddOns } from './add-ons.js'
11
11
  import { DEFAULT_FRAMEWORK, SUPPORTED_FRAMEWORKS } from './constants.js'
12
- import { initAddOn } from './custom-add-on.js'
12
+ // import { initAddOn } from './custom-add-on.js'
13
13
 
14
14
  import { createDefaultEnvironment } from './environment.js'
15
- import { add } from './add.js'
15
+ // import { add } from './add.js'
16
16
 
17
17
  import type { PackageManager } from './package-manager.js'
18
18
  import type { ToolChain } from './toolchain.js'
19
- import type { CliOptions, Framework } from './types.js'
19
+ import type { CliOptions, Framework, Mode, TemplateOptions } from './types.js'
20
20
 
21
21
  export function cli({
22
22
  name,
@@ -26,33 +26,33 @@ export function cli({
26
26
  }: {
27
27
  name: string
28
28
  appName: string
29
- forcedMode?: 'typescript' | 'javascript' | 'file-router'
29
+ forcedMode?: Mode
30
30
  forcedAddOns?: Array<string>
31
31
  }) {
32
32
  const program = new Command()
33
33
 
34
34
  program.name(name).description(`CLI to create a new ${appName} application`)
35
35
 
36
- program
37
- .command('add')
38
- .argument('add-on', 'Name of the add-on (or add-ons separated by commas)')
39
- .action(async (addOn: string) => {
40
- await add(addOn.split(',').map((addon) => addon.trim()))
41
- })
36
+ // program
37
+ // .command('add')
38
+ // .argument('add-on', 'Name of the add-on (or add-ons separated by commas)')
39
+ // .action(async (addOn: string) => {
40
+ // await add(addOn.split(',').map((addon) => addon.trim()))
41
+ // })
42
42
 
43
- program
44
- .command('update-add-on')
45
- .description('Create or update an add-on from the current project')
46
- .action(async () => {
47
- await initAddOn('add-on')
48
- })
43
+ // program
44
+ // .command('update-add-on')
45
+ // .description('Create or update an add-on from the current project')
46
+ // .action(async () => {
47
+ // await initAddOn('add-on')
48
+ // })
49
49
 
50
- program
51
- .command('update-starter')
52
- .description('Create or update a project starter from the current project')
53
- .action(async () => {
54
- await initAddOn('starter')
55
- })
50
+ // program
51
+ // .command('update-overlay')
52
+ // .description('Create or update a project overlay from the current project')
53
+ // .action(async () => {
54
+ // await initAddOn('overlay')
55
+ // })
56
56
 
57
57
  program.argument('[project-name]', 'name of the project')
58
58
 
@@ -90,11 +90,7 @@ export function cli({
90
90
  },
91
91
  DEFAULT_FRAMEWORK,
92
92
  )
93
- .option(
94
- '--starter [url]',
95
- 'initialize this project from a starter URL',
96
- false,
97
- )
93
+ // .option('--overlay [url]', 'add an overlay from a URL', false)
98
94
  .option<PackageManager>(
99
95
  `--package-manager <${SUPPORTED_PACKAGE_MANAGERS.join('|')}>`,
100
96
  `Explicitly tell the CLI to use this package manager`,
@@ -147,12 +143,12 @@ export function cli({
147
143
  program.action(async (projectName: string, options: CliOptions) => {
148
144
  if (options.listAddOns) {
149
145
  await listAddOns(options, {
150
- forcedMode,
146
+ forcedMode: forcedMode as TemplateOptions,
151
147
  forcedAddOns,
152
148
  })
153
149
  } else if (options.mcp || options.mcpSse) {
154
150
  await runServer(!!options.mcpSse, {
155
- forcedMode,
151
+ forcedMode: forcedMode as TemplateOptions,
156
152
  forcedAddOns,
157
153
  appName,
158
154
  })
@@ -164,16 +160,20 @@ export function cli({
164
160
  } as CliOptions
165
161
 
166
162
  if (forcedMode) {
167
- cliOptions.template = forcedMode
163
+ cliOptions.template = forcedMode as TemplateOptions
168
164
  }
169
165
 
170
- let finalOptions = await normalizeOptions(cliOptions, forcedAddOns)
166
+ let finalOptions = await normalizeOptions(
167
+ cliOptions,
168
+ forcedMode,
169
+ forcedAddOns,
170
+ )
171
171
  if (finalOptions) {
172
172
  intro(`Creating a new ${appName} app in ${projectName}...`)
173
173
  } else {
174
174
  intro(`Let's configure your ${appName} application`)
175
175
  finalOptions = await promptForOptions(cliOptions, {
176
- forcedMode,
176
+ forcedMode: forcedMode as TemplateOptions,
177
177
  forcedAddOns,
178
178
  })
179
179
  }
package/src/create-app.ts CHANGED
@@ -529,9 +529,9 @@ export async function createApp(
529
529
  }
530
530
  }
531
531
  }
532
- if (options.starter) {
533
- if (options.starter.shadcnComponents) {
534
- for (const component of options.starter.shadcnComponents) {
532
+ if (options.overlay) {
533
+ if (options.overlay.shadcnComponents) {
534
+ for (const component of options.overlay.shadcnComponents) {
535
535
  shadcnComponents.add(component)
536
536
  }
537
537
  }
@@ -714,11 +714,11 @@ export async function createApp(
714
714
  // Create the README.md
715
715
  await templateFile(templateDirBase, 'README.md.ejs')
716
716
 
717
- // Adding starter
718
- if (options.starter) {
719
- s?.start(`Setting up starter ${options.starter.name}...`)
720
- await runAddOn(options.starter)
721
- s?.stop(`Starter ${options.starter.name} setup complete`)
717
+ // Adding overlay
718
+ if (options.overlay) {
719
+ s?.start(`Setting up overlay ${options.overlay.name}...`)
720
+ await runAddOn(options.overlay)
721
+ s?.stop(`Overlay ${options.overlay.name} setup complete`)
722
722
  }
723
723
 
724
724
  // Install dependencies
@@ -799,6 +799,6 @@ Use the following commands to start your app:
799
799
  % cd ${options.projectName}
800
800
  % ${startCommand}
801
801
 
802
- Please check the README.md for more information on testing, styling, adding routes, react-query, etc.${errorStatement}`)
802
+ Please read the README.md for more information on testing, styling, adding routes, react-query, etc.${errorStatement}`)
803
803
  }
804
804
  }
@@ -12,15 +12,15 @@ import { readFileHelper } from './file-helper.js'
12
12
  import type { Framework, Options } from './types.js'
13
13
  import type { PersistedOptions } from './config-file.js'
14
14
 
15
- type AddOnMode = 'add-on' | 'starter'
15
+ type AddOnMode = 'add-on' | 'overlay'
16
16
 
17
17
  const INFO_FILE: Record<AddOnMode, string> = {
18
18
  'add-on': '.add-on/info.json',
19
- starter: 'starter-info.json',
19
+ overlay: 'overlay-info.json',
20
20
  }
21
21
  const COMPILED_FILE: Record<AddOnMode, string> = {
22
22
  'add-on': 'add-on.json',
23
- starter: 'starter.json',
23
+ overlay: 'overlay.json',
24
24
  }
25
25
 
26
26
  const ADD_ON_DIR = '.add-on'
@@ -102,7 +102,7 @@ export default (parentRoute: RootRoute) => createRoute({
102
102
  return { url: path, code, name }
103
103
  }
104
104
 
105
- export async function createAppOptionsFromPersisted(
105
+ async function createOptions(
106
106
  json: PersistedOptions,
107
107
  ): Promise<Required<Options>> {
108
108
  return {
@@ -198,13 +198,12 @@ To create an add-on, the project must be created with TypeScript.`)
198
198
  : {
199
199
  name: `${persistedOptions.projectName}-${mode}`,
200
200
  version: '0.0.1',
201
- description: mode === 'add-on' ? 'Add-on' : 'Project starter',
201
+ description: mode === 'add-on' ? 'Add-on' : 'Project overlay',
202
202
  author: 'Jane Smith <jane.smith@example.com>',
203
203
  license: 'MIT',
204
204
  link: `https://github.com/jane-smith/${persistedOptions.projectName}-${mode}`,
205
205
  command: {},
206
206
  shadcnComponents: [],
207
- framework: persistedOptions.framework,
208
207
  templates: [persistedOptions.mode],
209
208
  routes: [],
210
209
  warning: '',
@@ -221,7 +220,7 @@ To create an add-on, the project must be created with TypeScript.`)
221
220
  const compiledInfo = JSON.parse(JSON.stringify(info))
222
221
 
223
222
  const originalOutput = await runCreateApp(
224
- await createAppOptionsFromPersisted(persistedOptions),
223
+ await createOptions(persistedOptions),
225
224
  )
226
225
 
227
226
  const originalPackageJson = JSON.parse(
@@ -265,7 +264,7 @@ To create an add-on, the project must be created with TypeScript.`)
265
264
  // Find altered files
266
265
  const changedFiles: Record<string, string> = {}
267
266
  await compareFiles('.', IGNORE_FILES, originalOutput.files, changedFiles)
268
- if (mode === 'starter') {
267
+ if (mode === 'overlay') {
269
268
  compiledInfo.files = changedFiles
270
269
  } else {
271
270
  const assetsDir = resolve(ADD_ON_DIR, ASSETS_DIR)
@@ -303,9 +302,8 @@ To create an add-on, the project must be created with TypeScript.`)
303
302
  compiledInfo.routes = info.routes
304
303
  compiledInfo.framework = persistedOptions.framework
305
304
  compiledInfo.addDependencies = persistedOptions.existingAddOns
306
- compiledInfo.packageAdditions = info.packageAdditions
307
305
 
308
- if (mode === 'starter') {
306
+ if (mode === 'overlay') {
309
307
  compiledInfo.mode = persistedOptions.mode
310
308
  compiledInfo.typescript = persistedOptions.typescript
311
309
  compiledInfo.tailwind = persistedOptions.tailwind
package/src/index.ts CHANGED
@@ -1,11 +1 @@
1
1
  export { cli } from './cli.js'
2
- export { getAllAddOns } from './add-ons.js'
3
- export { createApp } from './create-app.js'
4
- export { createAppOptionsFromPersisted } from './custom-add-on.js'
5
- export {
6
- createMemoryEnvironment,
7
- createDefaultEnvironment,
8
- } from './environment.js'
9
-
10
- export type { AddOn, Framework, Mode } from './types.js'
11
- export type { PersistedOptions } from './config-file.js'