import type { namedTypes } from "ast-types"; import * as models from "./models"; import { Lookup, MultiSelectOptionSet, OptionSet } from "./types"; import { DSGResourceData } from "./dsg-resource-data"; import { BuildLogger } from "./build-logger"; import { FileMap, IFile } from "./files"; import { JsonValue } from "type-fest"; export { EnumDataType, EnumEntityAction, EnumEntityPermissionType, EnumMessagePatternConnectionOptions, EnumModuleActionType, EnumModuleDtoType, EnumModuleActionGqlOperation, EnumModuleActionRestVerb, EnumModuleDtoPropertyType, EnumModuleActionRestInputSource, } from "./models"; export declare enum EnumModuleDtoDecoratorType { ObjectType = "ObjectType", InputType = "InputType", ArgsType = "ArgsType" } export type ServiceSettings = Omit, "id">; export type AppInfo = { name: string; description: string; version: string; id: string; url: string; settings: ServiceSettings; codeGeneratorVersionOptions: models.CodeGeneratorVersionOptionsInput; codeGeneratorName?: string; properties?: JsonValue; }; export type Role = Omit; export type EntityPermissionRole = Omit & { resourceRole: Role; }; export type EntityPermissionField = Omit & { field: EntityField; permissionRoles: EntityPermissionRole[] | null; }; export type EntityPermission = Omit & { permissionRoles: EntityPermissionRole[]; permissionFields: EntityPermissionField[]; }; export type EntityField = Omit & { dataType: models.EnumDataType; }; export type LookupResolvedProperties = Lookup & { relatedEntity: Entity; relatedField: EntityField; isOneToOneWithoutForeignKey?: boolean; }; export type EntityLookupField = Omit & { properties: LookupResolvedProperties; }; export type EntityOptionSetField = Omit & { properties: OptionSet; }; export type EntityMultiSelectOptionSetField = Omit & { properties: MultiSelectOptionSet; }; export type Entity = Omit & { fields: EntityField[]; permissions: EntityPermission[]; pluralName: string; }; /** * File is a representation of a file * @deprecated Use IFile instead * @see IFile * @see FileMap */ export type Module = IFile; /** * ModuleMap is a map of module paths to modules * @deprecated Use FileMap instead * @see FileMap */ export declare class ModuleMap extends FileMap { constructor(logger: BuildLogger); /** * Replace all modules paths using a function * @param fn A function that receives a module path and returns a new path */ replaceModulesPath(fn: (path: string) => string): void; /** * Replace all modules code using a function * @param fn A function that receives a module code and returns a new code */ replaceModulesCode(fn: (path: string, code: string) => string): Promise; /** * @returns An array of modules */ modules(): Module[]; } export type ClassDeclaration = namedTypes.ClassDeclaration & { decorators: namedTypes.Decorator[]; }; export type NamedClassDeclaration = ClassDeclaration & { id: namedTypes.Identifier; }; export type NamedClassProperty = namedTypes.ClassProperty & { key: namedTypes.Identifier; typeAnnotation: namedTypes.TSTypeAnnotation; optional?: boolean; }; export type EntityDTOs = { entity: NamedClassDeclaration; createInput: NamedClassDeclaration; updateInput: NamedClassDeclaration; whereInput: NamedClassDeclaration; whereUniqueInput: NamedClassDeclaration; deleteArgs: NamedClassDeclaration; countArgs: NamedClassDeclaration; findManyArgs: NamedClassDeclaration; findOneArgs: NamedClassDeclaration; createArgs?: NamedClassDeclaration; updateArgs?: NamedClassDeclaration; orderByInput: NamedClassDeclaration; listRelationFilter: NamedClassDeclaration; }; export type EntityEnumDTOs = { [dto: string]: namedTypes.TSEnumDeclaration; }; export type DTOs = { [entity: string]: EntityEnumDTOs & EntityDTOs; }; export type ResourceGenerationConfig = { dataServiceGeneratorVersion: string; appInfo: AppInfo; }; export type PropertyTypeDef = Omit & { type: keyof typeof models.EnumModuleDtoPropertyType; dto?: ModuleDto; }; export type PluginInstallation = BlockOmittedFields; export type Package = BlockOmittedFields & { displayName: string; }; export type ResourceSettings = BlockOmittedFields; export type Relation = BlockOmittedFields; export type ModuleContainer = BlockOmittedFields; export type ModuleAction = Omit, "id" | "actionType" | "restVerb" | "gqlOperation" | "inputType" | "outputType" | "restInputSource"> & { id?: string; displayName: string; description: string; actionType: keyof typeof models.EnumModuleActionType; restVerb: keyof typeof models.EnumModuleActionRestVerb; gqlOperation: keyof typeof models.EnumModuleActionGqlOperation; inputType?: PropertyTypeDef; outputType?: PropertyTypeDef; restInputSource?: keyof typeof models.EnumModuleActionRestInputSource; }; export type ModuleDtoProperty = Omit & { propertyTypes: PropertyTypeDef[]; }; export type ModuleDto = Omit, "id" | "dtoType" | "properties"> & { id?: string; description: string; dtoType: keyof typeof models.EnumModuleDtoType; properties?: ModuleDtoProperty[]; decorators?: EnumModuleDtoDecoratorType[]; }; export type ModuleActionDefaultTypesNestedOnly = Extract; export type ModuleActionDefaultTypesWithoutNested = Exclude; export type entityRelatedFieldDefaultActions = { [key in ModuleActionDefaultTypesNestedOnly]?: ModuleAction | undefined; }; export type entityDefaultActions = { [key in ModuleActionDefaultTypesWithoutNested]?: ModuleAction | undefined; }; type defaultDtoTypes = Exclude; type defaultDtoNestedTypes = Extract; export type entityDefaultDtos = { [key in defaultDtoTypes]: ModuleDto; }; export type entityDefaultNestedDtos = { [key in defaultDtoNestedTypes]: ModuleDto | undefined; }; export type entityActions = { entityDefaultActions: entityDefaultActions; relatedFieldsDefaultActions: Record; customActions: ModuleAction[]; }; export type EntityActionsMap = Record; export type ModuleActionsAndDtos = { moduleContainer: ModuleContainer; actions: ModuleAction[]; dtos: ModuleDto[]; }; export type ModuleActionsAndDtosMap = Record; type BlockOmittedFields = Omit; export type clientDirectories = { baseDirectory: string; srcDirectory: string; authDirectory: string; publicDirectory: string; apiDirectory: string; }; export type serverDirectories = { baseDirectory: string; srcDirectory: string; authDirectory: string; scriptsDirectory: string; messageBrokerDirectory: string; }; export type Topic = BlockOmittedFields; export type ServiceTopics = Omit, "patterns"> & { patterns: Array; }; export type BuildContext = { buildId: string; resourceId: string; projectId: string; data: DSGResourceData; }; export type EntityComponent = { name: string; file: namedTypes.File; modulePath: string; }; export type EntityComponents = { new: EntityComponent; list: EntityComponent; edit: EntityComponent; show: EntityComponent; }; export { EnumActionStepStatus, EnumAuthProviderType, EnumBlockType, EnumGitProvider, EnumPendingChangeAction, EnumPendingChangeOriginType, EnumResourceType, CodeGeneratorVersionStrategy, MessagePatternCreateInput, RedesignProjectMovedEntity, RedesignProjectNewService, } from "./models";