@codegenie/cli
Version:
Code Genie CLI
210 lines • 6.42 kB
TypeScript
export interface AppDefinition {
alarmNotificationEmail?: string;
apiDomainName?: string;
appDomainName?: string;
appId?: string;
auth?: Auth;
defaultAuthRouteEntityName: string;
description: string;
domainName?: string;
emailDomainName?: string;
entities: Entities;
ignoreOutputPaths?: Array<string>;
name: string;
organizationInviteEmail?: string;
permissionModel: PermissionModel | keyof typeof PermissionModel;
region: AwsRegion;
theme: Theme;
verifyUserEmail?: string;
generators?: Generators;
defaultPermissions?: DefaultPermissions;
}
export interface Generators {
ui?: UiGenerators;
database?: DatabaseGenerators;
}
type UiGenerators = 'Next.js' | 'Remix';
type DatabaseGenerators = 'DynamoDB' | 'PostgreSQL';
export interface Auth {
identityProviders: Array<'Email' | 'SAML' | 'Google'>;
}
type AwsRegion = 'us-east-1' | 'us-east-2' | 'us-west-1' | 'us-west-2' | 'eu-west-1' | 'eu-central-1' | 'ap-northeast-1' | 'ap-northeast-2' | 'ap-southeast-1' | 'ap-southeast-2' | 'ap-south-1' | 'sa-east-1';
export interface Entities {
[entityName: string]: Entity;
}
export interface Entity {
permissions?: Permissions;
description?: string;
database?: EntityDatabase;
parentEntityName?: string;
properties: Properties;
ui?: EntityUi;
dataModelEditorPositionX?: number;
dataModelEditorPositionY?: number;
routeName?: string;
modules?: Array<EntityModule>;
}
export type EntityModule = EntityModuleFeedbackLike | EntityModuleFeedbackReact | EntityModuleFeedbackVote;
export interface EntityModuleBase {
entityName: string;
}
export interface EntityModuleFeedback extends EntityModuleBase {
type: 'Feedback';
countPropertyName?: string;
}
export interface EntityModuleFeedbackLike extends EntityModuleFeedback {
feedbackType: 'Like';
feedbackNotProvidedIcon?: string;
feedbackProvidedIcon?: string;
}
export interface EntityModuleFeedbackReact extends EntityModuleFeedback {
feedbackType: 'React';
feedbackNotProvidedIcon?: string;
feedbackOptions: Array<{
icon: string;
}>;
}
export interface EntityModuleFeedbackVote extends EntityModuleFeedback {
feedbackType: 'Vote';
upvoteNotProvidedIcon: string;
upvoteProvidedIcon: string;
downvoteNotProvidedIcon: string;
downvoteProvidedIcon: string;
}
export interface DefaultPermissions {
create?: DefaultPermission;
list?: DefaultPermission;
get?: DefaultPermission;
update?: DefaultPermission;
delete?: DefaultPermission;
}
export interface Permissions {
create?: Permission;
list?: Permission;
get?: Permission;
update?: Permission;
delete?: Permission;
}
export interface PropertyPermissions {
read?: Permission;
write?: Permission;
}
export type DefaultPermission = 'CreatedByUser' | 'Admin' | 'All' | 'Public';
export type Permission = DefaultPermission | 'Inherit';
export interface EntityDatabase {
indexes?: Array<EntityDatabaseIndex>;
partitionKey?: string;
sortKey?: string;
}
export interface EntityDatabaseIndex {
indexType: 'GSI' | 'LSI';
attributes?: 'ALL';
name: string;
partitionKey?: string;
sortKey?: string;
}
export interface EntityUi {
generateDetailsPage?: boolean;
generateSelectComponent?: boolean;
generateUpsertComponent?: boolean;
generateTableComponent?: boolean;
generateDataComponent?: boolean;
generateDetailsComponent?: boolean;
generateDeleteComponent?: boolean;
generateListComponent?: boolean;
generateCardListComponent?: boolean;
icon?: string;
listView?: 'Table' | 'List' | 'CardList';
nestedTableEntityName?: string;
remainOnCurrentPageOnCreate?: boolean;
showCreatedDateTime?: boolean;
showEditInCardList?: boolean;
showEditInTable?: boolean;
showInParentDetailsPage?: boolean;
listPagePermission?: Permission;
}
export interface Properties {
[propertyName: string]: Property;
}
export interface BaseProperty {
defaultValue?: any;
description?: string;
isIdProperty?: boolean;
/** Allowed to be set during creation, but cannot be modified later. */
isImmutable?: boolean;
isMainImageProperty?: boolean;
isNameProperty?: boolean;
isParentEntityIdProperty?: boolean;
/** Cannot be set by the user. Use `defaultValue` to set a value during creation. */
isReadOnly?: boolean;
isRequired?: boolean;
ui?: PropertyUi;
permissions?: PropertyPermissions;
}
export interface PropertyUi {
showInCardList?: boolean;
showInDetails?: boolean;
showInReadView?: boolean;
showInTable?: boolean;
}
export declare enum DynamicDefault {
CurrentUserId = "$currentUserId"
}
export interface StringProperty extends BaseProperty {
defaultValue?: string | DynamicDefault.CurrentUserId;
format?: 'email' | 'url' | 'multiline' | 'password' | 'color';
maxLength?: number;
minLength?: number;
regexPattern?: string;
relatedEntityName?: string;
relationshipName?: string;
type: 'string';
}
export interface NumberProperty extends BaseProperty {
type: 'number';
defaultValue?: number;
format?: 'money' | 'compact';
isInteger?: boolean;
max?: number;
min?: number;
multipleOf?: number;
}
export interface DateProperty extends BaseProperty {
defaultValue?: '$now';
format?: 'date' | 'date-time' | 'time' | 'timestamp';
type: 'date';
}
interface BooleanProperty extends BaseProperty {
defaultValue?: boolean;
type: 'boolean';
}
interface EnumProperty extends BaseProperty {
defaultValue?: string;
enumOptions: Array<string>;
type: 'enum';
}
export interface ArrayProperty extends BaseProperty {
arrayItems?: Array<string>;
defaultValue?: string;
type: 'array';
relatedEntityName?: string;
relationshipName?: string;
}
interface MapProperty extends BaseProperty {
type: 'map';
}
interface ImageProperty extends BaseProperty {
type: 'image';
format?: 'camera';
}
export type Property = StringProperty | NumberProperty | DateProperty | BooleanProperty | EnumProperty | ArrayProperty | ImageProperty | MapProperty;
interface Theme {
primaryColor: string;
}
export declare enum PermissionModel {
Global = "Global",
Organization = "Organization",
User = "User"
}
export {};
//# sourceMappingURL=types.d.ts.map