Skip to content

Commit 41f66ee

Browse files
committed
refactor: add isAppExtensionType guard and APP_EXTENSION_TYPES const
1 parent 088b167 commit 41f66ee

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

src/cli.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { nodeGenerator } from './generators/node/index.js';
99
import { addOAuth } from './subcommands/addOAuth.js';
1010
import { addAppExtension } from './subcommands/addAppExtension.js';
1111
import type { AppExtensionType } from './generators/interface.js';
12+
import { isAppExtensionType } from './generators/interface.js';
1213

1314
interface NextStepOptions {
1415
nameOrPath: string;
@@ -59,8 +60,9 @@ export async function dispatchSubcommand(argv: string[]): Promise<boolean> {
5960

6061
if (subcommand === 'add-app-extension') {
6162
const appExtIdx = argv.indexOf('--app-extensions');
62-
const appExtensions =
63-
appExtIdx !== -1 ? ([argv[appExtIdx + 1]] as AppExtensionType[]) : undefined;
63+
const appExtValue = appExtIdx !== -1 ? argv[appExtIdx + 1] : undefined;
64+
const appExtensions: AppExtensionType[] | undefined =
65+
appExtValue !== undefined && isAppExtensionType(appExtValue) ? [appExtValue] : undefined;
6466
await addAppExtension(outputDir, appExtensions);
6567
return true;
6668
}

src/generators/interface.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
export type Database = 'postgres' | 'mysql' | 'sqlite';
2-
export type AppExtensionType = 'custom-panel' | 'custom-modal';
2+
3+
export const APP_EXTENSION_TYPES = ['custom-panel', 'custom-modal'] as const;
4+
export type AppExtensionType = (typeof APP_EXTENSION_TYPES)[number];
5+
6+
export function isAppExtensionType(value: string): value is AppExtensionType {
7+
return (APP_EXTENSION_TYPES as readonly string[]).includes(value);
8+
}
39

410
export interface GeneratorOptions {
511
projectName: string;

0 commit comments

Comments
 (0)