import AnalyticsTemplateGenerator from '../generators/analyticsTemplateGenerator'; import ApexClassGenerator from '../generators/apexClassGenerator'; import ApexTriggerGenerator from '../generators/apexTriggerGenerator'; import FlexipageGenerator from '../generators/flexipageGenerator'; import LightningAppGenerator from '../generators/lightningAppGenerator'; import LightningComponentGenerator from '../generators/lightningComponentGenerator'; import LightningEmbeddingGenerator from '../generators/lightningEmbeddingGenerator'; import LightningEventGenerator from '../generators/lightningEventGenerator'; import LightningInterfaceGenerator from '../generators/lightningInterfaceGenerator'; import LightningTestGenerator from '../generators/lightningTestGenerator'; import DigitalExperienceSiteGenerator from '../generators/digitalExperienceSiteGenerator'; import ProjectGenerator from '../generators/projectGenerator'; import StaticResourceGenerator from '../generators/staticResourceGenerator'; import VisualforceComponentGenerator from '../generators/visualforceComponentGenerator'; import VisualforcePageGenerator from '../generators/visualforcePageGenerator'; import UIBundleGenerator from '../generators/uiBundleGenerator'; import { BaseGenerator } from '../generators/baseGenerator'; export type GeneratorClass = new (options: TOptions, context?: GeneratorContext, cwd?: string) => BaseGenerator; /** * Optional context for generators allowing fs and template path injection. * When not provided, defaults to Node's fs and __dirname-based template resolution. * cwd is owned by TemplateService; pass via constructor param. */ export type GeneratorContext = { /** Node-fs-compatible object. Defaults to require('node:fs'). Pass memfs for web. */ readonly fs?: typeof import('node:fs'); /** Absolute path to built-in templates root. Overrides __dirname-based resolution. */ readonly templatesRootPath?: string; }; export type Generators = typeof AnalyticsTemplateGenerator | typeof ApexClassGenerator | typeof ApexTriggerGenerator | typeof FlexipageGenerator | typeof LightningAppGenerator | typeof LightningComponentGenerator | typeof LightningEventGenerator | typeof LightningTestGenerator | typeof LightningInterfaceGenerator | typeof DigitalExperienceSiteGenerator | typeof LightningEmbeddingGenerator | typeof ProjectGenerator | typeof StaticResourceGenerator | typeof VisualforceComponentGenerator | typeof VisualforcePageGenerator | typeof UIBundleGenerator; /** * Available Template types * Each template type must have a corresponding generator class: * - generator class file should locate in generators/ * - generator class file should default export a generator class extending SfGenerator * - generator class file should have a name same as the type name, except with the first letter lowercased */ export declare enum TemplateType { AnalyticsTemplate = 0, ApexClass = 1, ApexTrigger = 2, Flexipage = 3, LightningApp = 4, LightningComponent = 5, LightningEvent = 6, LightningInterface = 7, LightningTest = 8, DigitalExperienceSite = 9, LightningEmbedding = 10, Project = 11, VisualforceComponent = 12, VisualforcePage = 13, StaticResource = 14, UIBundle = 15 } export declare const generators: Map>; export type CreateOutput = { outputDir: string; created: string[]; rawOutput: string; }; /** * Template Options * If not supplied, the apiversion and outputdir use default values. */ export interface TemplateOptions { apiversion?: string; outputdir?: string; } export interface AnalyticsTemplateOptions extends TemplateOptions { templatename: string; } export interface ApexClassOptions extends TemplateOptions { template: 'DefaultApexClass' | 'BasicUnitTest' | 'ApexUnitTest' | 'ApexException' | 'InboundEmailService'; classname: string; } type ApexTriggerEvent = 'before insert' | 'before update' | 'before delete' | 'after insert' | 'after update' | 'after delete' | 'after undelete'; export interface ApexTriggerOptions extends TemplateOptions { triggername: string; triggerevents: ApexTriggerEvent[]; sobject: string; template: 'ApexTrigger'; } export interface LightningAppOptions extends TemplateOptions { appname: string; template: 'DefaultLightningApp'; internal: boolean; } export interface LightningComponentOptions extends TemplateOptions { componentname: string; template: 'default' | 'analyticsDashboard' | 'analyticsDashboardWithStep' | 'typeScript'; type: 'aura' | 'lwc'; internal: boolean; } export interface LightningEventOptions extends TemplateOptions { eventname: string; template: 'DefaultLightningEvt'; internal: boolean; } export interface LightningInterfaceOptions extends TemplateOptions { interfacename: string; template: 'DefaultLightningIntf'; internal: boolean; } export interface LightningTestOptions extends TemplateOptions { template: 'DefaultLightningTest'; testname: string; internal: boolean; } export interface LightningEmbeddingOptions extends TemplateOptions { componentname: string; src: string; sandbox: string; shellTitle: string; internal: boolean; } export interface ProjectOptions extends TemplateOptions { projectname: string; defaultpackagedir: string; /** * namespace * Note that namespace is a reserved keyword for yeoman generator */ ns: string; template: 'standard' | 'empty' | 'analytics' | 'reactinternalapp' | 'reactexternalapp' | 'agent' | 'nativemobile'; manifest: boolean; loginurl: string; lwcLanguage?: 'javascript' | 'typescript'; } export interface VisualforceComponentOptions extends TemplateOptions { componentname: string; label: string; template: 'DefaultVFComponent'; } export interface VisualforcePageOptions extends TemplateOptions { pagename: string; label: string; template: 'DefaultVFPage'; } export interface StaticResourceOptions extends TemplateOptions { resourcename: string; contenttype: string; template: 'empty'; } export interface UIBundleOptions extends TemplateOptions { bundlename: string; template: string; masterlabel?: string; internal?: boolean; } export interface FlexipageOptions extends TemplateOptions { flexipagename: string; template: 'RecordPage' | 'AppPage' | 'HomePage'; flexipageTemplatesGitRepo?: string; forceLoadingRemoteRepo?: boolean; masterlabel?: string; description?: string; internal?: boolean; entityName?: string; primaryField?: string; secondaryFields?: string[]; detailFields?: string[]; } export interface DigitalExperienceSiteOptions extends TemplateOptions { template: string; sitename: string; urlpathprefix: string; adminemail: string; } export {};