UNPKG

@codegenie/cli

Version:
210 lines 6.42 kB
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