@contentstack/cli-variants
Version:
Variants plugin
300 lines (291 loc) • 7.07 kB
text/typescript
/**
* NOTE: Accessing ExportConfig from the export package is not possible
* because it will create a circular dependency and cause the prepack/build command to fail.
* Therefore, we are duplicating the following types from the export.
*/
import { AnyProperty, Context } from './utils';
export type Modules =
| 'stack'
| 'assets'
| 'locales'
| 'environments'
| 'extensions'
| 'webhooks'
| 'global-fields'
| 'entries'
| 'content-types'
| 'custom-roles'
| 'workflows'
| 'labels'
| 'marketplace-apps'
| 'taxonomies'
| 'personalize'
| 'composable-studio';
export type branch = {
uid: string;
source: string;
};
export type masterLocale = {
code: string;
};
export interface DefaultConfig {
context: Context;
contentVersion: number;
versioning: boolean;
host: string;
cdn?: string;
developerHubUrls: any;
modules: {
types: Modules[];
locales: {
dirName: string;
fileName: string;
requiredKeys: string[];
dependencies?: Modules[];
};
customRoles: {
dirName: string;
fileName: string;
customRolesLocalesFileName: string;
dependencies?: Modules[];
};
'custom-roles': {
dirName: string;
fileName: string;
customRolesLocalesFileName: string;
dependencies?: Modules[];
};
environments: {
dirName: string;
fileName: string;
dependencies?: Modules[];
};
labels: {
dirName: string;
fileName: string;
invalidKeys: string[];
dependencies?: Modules[];
};
webhooks: {
dirName: string;
fileName: string;
dependencies?: Modules[];
};
releases: {
dirName: string;
fileName: string;
releasesList: string;
invalidKeys: string[];
dependencies?: Modules[];
};
workflows: {
dirName: string;
fileName: string;
invalidKeys: string[];
dependencies?: Modules[];
};
globalfields: {
dirName: string;
fileName: string;
validKeys: string[];
dependencies?: Modules[];
};
'global-fields': {
dirName: string;
fileName: string;
validKeys: string[];
dependencies?: Modules[];
};
assets: {
dirName: string;
fileName: string;
// This is the total no. of asset objects fetched in each 'get assets' call
batchLimit: number;
host: string;
invalidKeys: string[];
// no of asset version files (of a single asset) that'll be downloaded parallel
chunkFileSize: number; // measured on Megabits (5mb)
downloadLimit: number;
fetchConcurrency: number;
assetsMetaKeys: string[]; // Default keys ['uid', 'url', 'filename']
securedAssets: boolean;
displayExecutionTime: boolean;
enableDownloadStatus: boolean;
includeVersionedAssets: boolean;
dependencies?: Modules[];
};
content_types: {
dirName: string;
fileName: string;
validKeys: string[];
// total no of content types fetched in each 'get content types' call
limit: number;
dependencies?: Modules[];
};
'content-types': {
dirName: string;
fileName: string;
validKeys: string[];
// total no of content types fetched in each 'get content types' call
limit: number;
dependencies?: Modules[];
};
entries: {
dirName: string;
fileName: string;
invalidKeys: string[];
batchLimit: number;
downloadLimit: number;
// total no of entries fetched in each content type in a single call
limit: number;
dependencies?: Modules[];
exportVersions: boolean;
};
variantEntry: {
dirName: string;
fileName: string;
chunkFileSize: number;
query: {
skip: number;
limit: number;
include_variant: boolean;
include_count: boolean;
include_publish_details: boolean;
} & AnyProperty;
} & AnyProperty;
personalize: {
dirName: string;
baseURL: Record<string, string>;
} & AnyProperty;
extensions: {
dirName: string;
fileName: string;
dependencies?: Modules[];
};
stack: {
dirName: string;
fileName: string;
dependencies?: Modules[];
};
dependency: {
entries: string[];
};
marketplace_apps: {
dirName: string;
fileName: string;
dependencies?: Modules[];
};
'marketplace-apps': {
dirName: string;
fileName: string;
dependencies?: Modules[];
};
'composable-studio': {
dirName: string;
fileName: string;
apiBaseUrl: string;
};
masterLocale: {
dirName: string;
fileName: string;
requiredKeys: string[];
};
taxonomies: {
dirName: string;
fileName: string;
invalidKeys: string[];
dependencies?: Modules[];
};
events: {
dirName: string;
fileName: string;
invalidKeys: string[];
dependencies?: Modules[];
};
audiences: {
dirName: string;
fileName: string;
invalidKeys: string[];
dependencies?: Modules[];
};
attributes: {
dirName: string;
fileName: string;
invalidKeys: string[];
dependencies?: Modules[];
};
};
languagesCode: string[];
apis: {
userSession: string;
globalfields: string;
locales: string;
labels: string;
environments: string;
assets: string;
content_types: string;
entries: string;
users: string;
extension: string;
webhooks: string;
stacks: string;
};
preserveStackVersion: boolean;
fetchConcurrency: number;
writeConcurrency: number;
developerHubBaseUrl: string;
marketplaceAppEncryptionKey: string;
onlyTSModules: string[];
}
export interface ExportConfig extends DefaultConfig {
exportDir: string;
data: string;
management_token?: string;
apiKey: string;
forceStopMarketplaceAppsPrompt: boolean;
auth_token?: string;
branchName?: string;
securedAssets?: boolean;
contentTypes?: string[];
branches?: branch[];
branchEnabled?: boolean;
branchDir?: string;
singleModuleExport?: boolean;
moduleName?: Modules;
master_locale: masterLocale;
headers?: {
api_key?: string;
access_token?: string;
authtoken?: string;
'X-User-Agent': string;
organization_uid?: string;
'X-Project-Uid'?: string;
};
project_id?: string; // To fetch events, audiences & attributes
access_token?: string;
org_uid?: string;
source_stack?: string;
sourceStackName?: string;
personalizationEnabled: boolean;
personalizationHost?: string;
region: any;
}
export interface PersonalizeConfig {
dirName: string;
baseURL: Record<string, string>;
}
export interface EventsConfig {
dirName: string;
fileName: string;
invalidKeys: string[];
}
export interface AudiencesConfig {
dirName: string;
fileName: string;
invalidKeys: string[];
}
export interface AttributesConfig {
dirName: string;
fileName: string;
invalidKeys: string[];
}